La administración de usuarios es una de la partes más importantes de la configuración y mantenimiento de un servidor, además de estar directamente relacionada con la seguridad de un sistema Linux, pues los permisos otorgados a cada uno de los usuarios de un sistema son la clave al momento de establecer unas políticas de seguridad efectivas.
El manual que verás a continuación, es una adaptación libre y con algunas modificaciones del apartado User Management incluído en la documentación oficial de Ubuntu Server publicada por Canonical para la versión para servidores de su distribución Ubuntu Linux.
- ¿Dónde está root?
- Añadiendo y eliminando usuarios
- Seguridad de perfil de usuario
- Políticas de contraseña
- Otras consideraciones de seguridad
¿Dónde está root?
Los desarrolladores de Ubuntu han optado por deshabilitar
el uso de la cuenta administrativa root
por razones de seguridad, y en su lugar, animan a los usuarios
de Ubuntu a utilizar sudo para elevar los permisos de
los usuarios del sistema hasta un nivel administrativo usando
su propia contraseña durante un periodo determinado de tiempo.
Esta característica permite al administrador del sistema ejercer un control más preciso sobre cómo y cuando los usuarios del sistema pueden acceder a ciertas características del sistema, otorgando responsabilidades a cada una de las acciones llevadas a cabo por cada uno de los usuarios.
Si aún estás interesado en utilizar la cuenta root
en tu servidor, sigue los pasos descritos a continuación:
-
Ejecuta el siguiente comando para asignar una nueva
contraseña a la cuenta
root
:
sudo passwd
-
sudo preguntará por tu contraseña y posteriormente te pedirá
que ingreses una nueva contraseña para
root
como se muestra a continuación:
[sudo] password for username: (ingresa tu propia contraseña) Enter new UNIX password: (ingresa una nueva contraseña para root) Retype new UNIX password: (repite la nueva contraseña para root) passwd: password updated successfully
-
Para deshabilitar la cuenta
root
, ejecuta el siguiente comando:
sudo passwd -l root
Para conocer más acerca de sudo, te recomiendo leer el manual
ejecutando el comando sudo man
.
De forma predeterminada, Ubuntu crear el usuario inicial
configurado durante el proceso de instalación con permisos de
administración gracias a la inclusión de este en el grupo de
administradores admin
. Si por alguna razón deseas
dar permisos de administración a otro usuario, lo único que
debes hacer es ingresar este nuevo usuario en el grupo admin
.
Añadiendo y eliminando usuarios
El proceso para administrar los usuarios locales y los grupos
es sencillo y difiere muy poco de las demás distribuciones
Linux. Ubuntu y otras distribuciones basadas en Debian
animan al usuario a utilizar el paquete adduser
para la administración de cuentas de usuario.
Para agregar un usuario nuevo en Ubuntu Server
debes utilizar la siguiente sintaxis del paquete adduser
y proveer la información solicitada para la creación de la
cuenta como el nombre completo del usuario, su número
telefónico, etc.
sudo adduser usuario
Para eliminar una cuenta de usuario y su grupo primario utiliza el siguiente comando:
sudo deluser usuario
Eliminar una cuenta no elimina su directorio personal ni los archivos almacenados en este. Por lo tanto, otros usuarios pueden ingresar a este directorio y ver el contenido almacenado en el mismo sin restricción alguna, a menos que hayas tomado las precauciones necesarias con anterioridad.
Es recomendable cambiar los valores del UID/GID a algo más
apropiado como la cuenta root
y cambiar la
ubicación del directorio para prohibir el acceso no autorizado
a esa información y evitar futuros conflictos por medio de los
siguientes comandos.
sudo chown -R root:root /home/usuario/ sudo mkdir /home/usuarios_archivados/ sudo mv /home/usuario /home/usuarios_archivados/
Si por el contrario, desea eliminar el usuario y el directorio personal asociado a este, utilice la siguiente sintaxis:
sudo userdel -r usuario
Para bloquear o desbloquear una cuenta de usuario temporalmente utilice la siguiente sintaxis respectivamente:
sudo passwd -l usuario sudo passwd -u usuario
Para añadir o eliminar un grupo personalizado utilice la siguiente sintaxis respectivamente:
sudo addgroup grupo sudo delgroup grupo
Para añadir un usuario a un grupo específico utilice la siguiente sintaxis:
sudo adduser usuario grupo
Para añadir a un usuario a varios grupos al mismo tiempo utilice la siguiente sintaxis:
sudo usermod -a -G grupo1,grupo2,grupo3 usuario
Seguridad de perfil de usuario
Cuando se crea un nuevo usuario, la utilidad adduser
crea un nuevo directorio nombrado /home/usuario
.
El perfil predeterminado es modelado a partir del contenido
del directorio /etc/skel
, el cual incluye las
características básicas del perfil.
Si tu servidor va a albergar varios usuarios, debes poner especial atención a los permisos de los directorios personales con la intención de mantener la confidencialidad. Por defecto, los directorios personales en Ubuntu son creados con permisos de lectura y ejecución globales. Esto significa que a los usuarios se les permite navegar y acceder a los directorios y archivos almacenados en los directorios personales de cada uno de los usuarios en el servidor, lo cual puede llegar a ser contraproducente para tus necesidades específicas.
Para verificar los permisos de los directorios personales de cada uno de los usuarios utiliza la siguiente sintaxis:
ls -ld /home/usuario
La siguiente salida muestra que el directorio /home/usuario
posee permisos de lectura globales:
drwxr-xr-x 2 usuario usuario 4096 2007-10-02 20:03 usuario
Puedes eliminar los permisos de escritura globales utilizando la siguiente sintaxis:
sudo chmod 0750 /home/usuario
Algunas personas tienden a utilizar la opción recursiva (-R
)
de forma indiscriminada, la cual modifica todos los
directorios hijos y los archivos ubicados en estos, pudiendo
llevar a resultados indeseados y problemas adicionales.
Modificar los permisos del directorio padre solamente, es
suficiente evitar el acceso no autorizado a todo el contenido
que se encuentre dentro de este.
Una forma más eficiente de realizar esta tarea, es modificando
los valores predeterminados de la aplicación adduser para que
establezca los permisos de lectura y ejecución de los
directorios personales al momento de la creación de un nuevo
usuario. Para lograr esto, debemos modificar la variable DIR_MODE
en el archivo /etc/adduser.conf
a algo más
apropiado para las necesidades específicas de nuestro sistema
y que todos los nuevos directorios reciban los permisos
correctos.
DIR_MODE=0750
Después de haber corregidos los permisos de los directorios habiendo utilizado cualquiera de los anteriores métodos, utiliza la siguiente sintaxis para verificar los resultados obtenidos:
ls -ld /home/usuario
El resultado obtenido muestra que los permisos de lectura y ejecución globales han sido eliminados:
drwxr-x--- 2 usuario usuario 4096 2007-10-02 20:03 usuario
Políticas de contraseña
Una política de contraseñas fuerte es uno de los aspectos más importantes en cuanto a seguridad se trata. La mayoría de los ataques exitosos involucran simples ataques de fuerza bruta o ataques de diccionario contra contraseñas débiles. Si planeas ofrecer algún tipo de acceso remoto a tu sistema que involucre el uso de tu sistema local de contraseñas, asegúrate de contar con requerimiento para la complejidad de las contraseñas, vida útil máxima de las contraseñas, y auditorías frecuentes de tus sistemas de autenticación.
Longitud mínima de la contraseña
De forma predeterminada, Ubuntu requiere un mínimo de 6
caracteres para la creación de una contraseña, además de
algunas verificaciones de entropía. Estos valores son
controlados por el archivo /etc/pam.d/common-password
que se describe a continuación:
password [success=2 default=ignore] pam_unix.so obscure sha512
Si por ejemplo quieres cambiar el mínimo de caracteres para la
contraseña de 6 a 8, entonces cambia el valor de la variable
correspondiente a min=8
como se muestra en el
siguiente ejemplo:
password [success=2 default=ignore] pam_unix.so obscure sha512 min=8
Las verificaciones básicas de entropía y las reglas de longitud mínima no aplican al administrador que esté usando sudo para la creación de un nuevo usuario.
Caducidad de las contraseñas
Cuando creas nuevos usuarios, deberías establecer una política que indique un mínimo y un máximo de tiempo para la duración de las contraseñas, obligando al usuario a cambiarla una vez este tiempo se haya agotado.
Para conocer fácilmente el estado actual de una cuenta de usuario, utiliza la siguiente sintaxis:
sudo chage -l usuario
La salida obtenida presenta interesantes datos acerca de la cuenta de usuario, observando que no existen políticas aplicadas:
Last password change : Jan 20, 2008 Password expires : never Password inactive : never Account expires : never Minimum number of days between password change : 0 Maximum number of days between password change : 99999 Number of days of warning before password expires : 7
Para establecer cualquiera de estos valores, utiliza la siguiente sintaxis, y sigue cada uno de los mensajes interactivos:
sudo chage usuario
El siguiente es un ejemplo de cómo puedes cambiar manualmente
la fecha de expiración (-E
) a 01/31/2008,
una duración mínima de la contraseña (-m
)
de 5 días, una duración máxima de la contraseña (-M
)
de 90 días, un periodo de inactividad (-I
)
de 5 días después de la fecha de expiración de la contraseña,
y una advertencia con (-W
) 14 días de
anticipación antes de la expiración de la contraseña:
sudo chage -E 01/31/2011 -m 5 -M 90 -I 30 -W 14 usuario
Para verificar los cambios realizado utiliza la misma sintaxis mencionada anteriormente:
sudo chage -l usuario
La salida presentada a continuación muestra las nuevas políticas que han sido establecidas para la cuenta de usuario:
Last password change : Jan 20, 2008 Password expires : Apr 19, 2008 Password inactive : May 19, 2008 Account expires : Jan 31, 2008 Minimum number of days between password change : 5 Maximum number of days between password change : 90 Number of days of warning before password expires : 14
Otras consideraciones de seguridad
Algunas aplicaciones utilizan métodos de autenticación alternativos que pueden ser fácilmente pasados por alto incluso por administradores de sistemas con experiencia. Por lo tanto, es importante entender y controlar cómo los usuarios se autentican y obtiene acceso a los servicios y aplicaciones en tu servidor.
Acceso SSH por usuarios deshabilitados
Deshabilitar o bloquear una cuenta de usuario no
necesariamente previene que un usuario se conecte de forma
remota a tu servidor si previamente ha configurado una
autenticación de clave pública RSA. Ellos aún podrán acceder
al servidor a través del shell sin necesidad de una
contraseña. Recuerda verificar los directorios principales de
los usuarios en busca de archivos que permitan este tipo de
autenticación SSH tales como /home/username/.ssh/authorized_keys
.
Elimina o renombra el directorio /.ssh
en el
directorio principal del usuario para evitar posibles
capacidades de autenticación SSH en un futuro.
Asegúrate de verificar si existe cualquier conexión SSH establecida por el usuario deshabilitado, ya que es posible que este tenga conexiones de salida o entrada preexistentes y mata cualquiera que encuentres.
Para conocer el PID
las conexiones SSH existentes
y posteriormente matarlas utiliza la siguiente sintaxis:
sudo ps -ef|grep pts/0
Restringe el acceso SSH a solo las cuentas de usuario que
deberían tenerlo. Por ejemplo, puedes crear un grupo llamado “sshlogin
”
y añadir el nombre del grupo como valor asociado a la variable AllowGroups
localizada en el archivo /etc/ssh/sshd_config
.
AllowGroups sshlogin
Luego añade los usuarios con permiso de conexión SSH al grupo “sshlogin
”
y reinicia el servidor SSH:
sudo adduser username sshlogin sudo service ssh restart
Autenticación de usuario con base de datos externa
La mayoría de las redes empresariales requieren autenticación centralizada y control de acceso para todos los recursos del sistema. Si tienes configurado tu servidor para autenticar usuarios en bases de datos externas, asegurate de deshabilitar las cuentas de usuario externa y localmente, así te aseguras que la autenticación de forma local no es posible.
Espero que con estas indicaciones aprendas a controlar los usuarios en tu servidor y gestionar correctamente unas políticas de usuario que lleven a un sistema seguro.