La cuenta root es la cuenta principal en Linux y otros sistemas operativos tipo Unix. Esta cuenta tiene acceso a todos los comandos y archivos del sistema con permisos completos de lectura, escritura y ejecución. Se usa para realizar cualquier tipo de tarea en un sistema: crear/actualizar/acceder/eliminar cuentas de otros usuarios, instalar/eliminar/actualizar paquetes de software, y mucho más.
Debido a que el usuario root tiene poderes absolutos, cualquier acción que realice es crítica para el sistema. En este sentido, cualquier error del usuario root puede tener enormes implicaciones en el funcionamiento normal de un sistema. Además, esta cuenta también puede ser abusada usándola incorrecta o inapropiadamente, ya sea accidentalmente, maliciosamente o por ignorancia de las políticas.
Por lo tanto, es recomendable deshabilitar el acceso root en tu servidor Linux; en su lugar, crea una cuenta administrativa que debe configurarse para obtener privilegios de usuario root usando el comando
sudo
, para realizar tareas críticas en el servidor.
En este artículo, explicaremos cuatro maneras de deshabilitar el inicio de sesión de la cuenta de usuario root
en Linux.
Atención: Antes de bloquear el acceso a la cuenta root, asegúrate de haber creado una cuenta administrativa, capaz de usar el comando sudo para obtener privilegios de usuario root, con el comando useradd
y dale a esta cuenta de usuario una contraseña segura. La bandera (flag) -m
significa crear el directorio de inicio del usuario y -c
permite especificar un comentario:
useradd -m -c "Usuario Admin" admin
passwd admin
A continuación, agrega este usuario al grupo apropiado de administradores del sistema usando el comando usermod
, donde el interruptor -a
significa agregar la cuenta de usuario y -G
especifica un grupo al que agregar el usuario (wheel
o sudo
dependiendo de tu distribución de Linux):
usermod -aG wheel admin #CentOS/RHEL
usermod -aG sudo admin #Debian/Ubuntu
Una vez que hayas creado un usuario con privilegios administrativos, cambia a esa cuenta para bloquear el acceso root.
su admin
Los siguientes comandos asumen un entorno estándar de Linux (distribuciones comunes como Ubuntu, CentOS, Debian). Algunas distribuciones pueden tener configuraciones específicas (por ejemplo, Ubuntu deshabilita
root
por defecto).
#1. Cambiar el Shell del Usuario Root
El método más simple para deshabilitar el inicio de sesión del usuario root es cambiar su shell de /bin/bash
(o cualquier otro shell que permita el inicio de sesión del usuario) a /sbin/nologin
, en el archivo /etc/passwd
, que puedes abrir para editarlo usando cualquiera de tus editores de línea de comandos favoritos como se muestra.
sudo vim /etc/passwd
Cambia la línea:
root:x:0:0:root:/root:/bin/bash
a
root:x:0:0:root:/root:/sbin/nologin
Guarda el archivo y ciérralo.
De ahora en adelante, cuando el usuario root inicie sesión, obtendrá el mensaje “Esta cuenta no está disponible actualmente“. Este es el mensaje predeterminado, pero puedes cambiarlo y establecer un mensaje personalizado en el archivo /etc/nologin.txt
.
Este método solo es efectivo con programas que requieren un shell para el inicio de sesión del usuario; de lo contrario, sudo
, ftp
y los clientes de correo electrónico pueden acceder a la cuenta root.
#2. Deshabilitar el Inicio de Sesión Root a través del Dispositivo de Consola (TTY)
El segundo método utiliza un módulo PAM llamado pam_securetty
, que permite el acceso root solo si el usuario está iniciando sesión en un TTY “seguro”, como se define en la lista en /etc/securetty
.
El archivo anterior te permite especificar en qué dispositivos TTY se permite el inicio de sesión del usuario root; vaciar este archivo impide el inicio de sesión root en cualquier dispositivo conectado al sistema informático.
Para crear un archivo vacío, ejecuta:
sudo mv /etc/securetty /etc/securetty.orig
sudo touch /etc/securetty
sudo chmod 600 /etc/securetty
Este método tiene algunas limitaciones, solo afecta a programas como login
, administradores de pantalla (es decir, gdm
, kdm
y xdm
) y otros servicios de red que inician un TTY. Programas como su
, sudo
, ssh
y otras herramientas openssh
relacionadas tendrán acceso a la cuenta root.
#3. Deshabilitar el Inicio de Sesión Root a través de SSH
La forma más común de acceder a servidores remotos o VPS es a través de SSH y para bloquear el inicio de sesión del usuario root en él, necesitas editar el archivo /etc/ssh/sshd_config
.
sudo vim /etc/ssh/sshd_config
Luego, descomenta (si está comentado) la directiva PermitRootLogin
y establece su valor en no
como se muestra.
Una vez que hayas terminado, guarda y cierra el archivo. Luego, reinicia el servicio sshd
para aplicar el cambio reciente en las configuraciones.
sudo systemctl restart sshd
O,
sudo service sshd restart
Como ya sabrás, este método solo afecta al conjunto de herramientas openssh
; los programas como ssh
, scp
, sftp
estarán bloqueados para acceder a la cuenta root.
#4. Restringir el Acceso Root a los Servicios a través de PAM
Los Módulos de Autenticación Enchufables (PAM en resumen) son un método centralizado, enchufable, modular y flexible de autenticación en sistemas Linux. PAM, a través del módulo /lib/security/pam_listfile.so
, permite una gran flexibilidad para limitar los privilegios de cuentas específicas.
El módulo anterior se puede usar para hacer referencia a una lista de usuarios a los que no se les permite iniciar sesión a través de algunos servicios de destino, como login
, ssh
y cualquier programa compatible con PAM.
En este caso, queremos deshabilitar el acceso del usuario root a un sistema, restringiendo el acceso a los servicios login
y sshd
. Primero abre y edita el archivo para el servicio de destino en el directorio /etc/pam.d/
como se muestra.
sudo vim /etc/pam.d/login
O
sudo vim /etc/pam.d/sshd
A continuación, agrega la configuración a continuación en ambos archivos.
auth required pam_listfile.so \
onerr=succeed item=user sense=deny file=/etc/ssh/deniedusers
Cuando hayas terminado, guarda y cierra cada archivo. Luego, crea el archivo simple /etc/ssh/deniedusers
que debe contener un elemento por línea y no ser legible para el mundo.
Agrega el nombre root
en él, luego guarda y ciérralo.
sudo vim /etc/ssh/deniedusers
También establece los permisos requeridos en esto.
sudo chmod 600 /etc/ssh/deniedusers
Este método solo afecta a los programas y servicios que son compatibles con PAM. Puedes bloquear el acceso root al sistema a través de clientes ftp
y de correo electrónico y más.
Para obtener más información, consulta las páginas de manual relevantes.
man pam_securetty
man sshd_config
man pam
#5. Bloquear la Contraseña del Usuario Root
Un método adicional y sencillo para deshabilitar el inicio de sesión del usuario root es bloquear su contraseña utilizando el comando passwd
. Este enfoque impide que la cuenta root sea utilizada para iniciar sesión mediante autenticación basada en contraseña.
Para bloquear la contraseña del usuario root, ejecuta el siguiente comando:
sudo passwd -l root
Este comando modifica el archivo /etc/shadow
, agregando un prefijo !
o !!
al campo de la contraseña de la cuenta root, lo que la inhabilita para autenticaciones basadas en contraseña. Por ejemplo, la entrada en /etc/shadow
cambiará de algo como:
root:$6$abc...def:19412:0:99999:7:::
a:
root:!$6$abc...def:19412:0:99999:7:::
Efecto: A partir de este momento, cualquier intento de iniciar sesión como root usando una contraseña (por ejemplo, en una consola TTY, SSH o con su root
) fallará. Sin embargo, este método no afecta otros métodos de acceso, como conexiones SSH basadas en claves públicas (si están configuradas) o accesos en modo de recuperación.
Para revertir este cambio y desbloquear la cuenta root, puedes usar:
sudo passwd -u root
Este comando elimina el prefijo !
o !!
del archivo /etc/shadow
, restaurando la capacidad de autenticación. Si la cuenta root no tenía una contraseña válida previamente, deberás establecer una nueva con:
sudo passwd root
Atención: Este método solo es efectivo para inicios de sesión basados en contraseñas. Si el acceso SSH está configurado con claves públicas y PermitRootLogin
está habilitado en /etc/ssh/sshd_config
, root aún podría iniciar sesión mediante SSH. Para una protección completa, combina este método con la deshabilitación del acceso root a través de SSH (método 3).
Limitaciones: Este método no bloquea accesos que no dependan de la contraseña, como el modo de recuperación del sistema o accesos físicos. Asegúrate de tener una cuenta administrativa con privilegios
sudo
para gestionar el sistema y desbloquear la cuenta root si es necesario.
Para más información, consulta la página de manual correspondiente:
man passwd
¡Eso es todo! En este artículo, hemos explicado cinco maneras de deshabilitar el inicio de sesión (o cuenta) del usuario root en Linux. Si tienes algún comentario, sugerencia o pregunta, no dudes en contactarnos a través del formulario de comentarios a continuación.
¿Qué te parece?
Es bueno conocer tu opinión. Deja un comentario.