Ir al contenido principal

Administración de usuarios en Ubuntu Server

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?

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:

  1. 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

Usuarios en Ubuntu 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.