Desactivando el acceso root en un servidor Linux

Últimamente estoy informándome mucho sobre temas de seguridad en charlas a las que asisto y también leyendo mucho por Internet. Es un tema que me gusta bastante y sobre el que no publico demasiado en Geeky Theory.

Voy a enseñaros un pequeño truco de seguridad para servidores GNU/Linux que siempre hay que implementar al montar una máquina y darle acceso por Internet. Se trata de desactivar el acceso root a dicho servidor para que nadie tenga acceso como superusuario por defecto.

A menos que sea estrictamente necesario, nunca debemos hacer login directamente como superusuario.

Si queremos introducir un comando que requiera de permisos, es preferible ejecutarlo con sudo siempre que sea posible.

Paso 1: Crear un nuevo usuario

Antes de desactivar el acceso root, tenemos que crear un nuevo usuario. Si desactivamos el acceso superusuario sin crear uno nuevo, no podremos entrar al servidor.

$ sudo adduser nombredeusuario

Nos pedirá la contraseña del nuevo usuario. A continuación, damos permisos sudo a este nuevo usuario, ya que si no, no podremos ejecutar ningún comando con permisos que no sean los del propio usuario. Para ello, editamos el archivo de configuración:

$ sudo /usr/sbin/visudo

Dejamos esta parte así:

# User privilege specification root ALL=(ALL:ALL) ALL nombredeusuario ALL=(ALL:ALL) ALL

Lo que acabamos de hacer es darle permisos a nombredeusuario para que pueda ejecutar comandos con sudo.

Paso 2: Desactivar el acceso del usuario root

Una vez creado el nuevo usuario, vamos a desactivar el acceso del usuario root. Antes de nada, probad que tenéis acceso SSH con el nuevo usuario y, una vez dentro, haced un update y upgrade con sudo para comprobar que todo funciona:

$ ssh nombredeusuario@servidor$ sudo apt-get update && sudo apt-get upgrade

Una vez comprobado que el nuevo usuario puede ejecutar instrucciones sin ningún problema, modificamos el archivo /etc/ssh/sshd_config para desactivar el login con root:

$ sudo nano /etc/ssh/sshd_config

Tenemos dos opciones para hacer esto y ambas dan el mismo resultado.

  • Opción 1: modificar el parámetro PermitRootLogin.

Dejamos el parámetro así:

PermitRootLogin no

  • Opción 2: filtrar por usuarios.

Este método es igual que el anterior, pero en este caso vamos a filtrar por usuarios. Denegamos el acceso a root y se lo permitimos al nuevo usuario. En la zona de # Authentication: ponemos lo siguiente:

DenyUsers root AllowUsers nombredeusuario

Para aplicar los cambios, introducimos el siguiente comando:

$ sudo service ssh restart

Os dejo un vídeo del proceso:

¡Saludos!