El manual que verás a continuación,
es una adaptación libre y con algunas modificaciones del apartado User Management incluido 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:
- Ejecuta
el siguiente comando para asignar una nueva contraseña a la cuentaroot:
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 comandosudo 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
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.
0 Comentarios