Guía Hardening – Gestion de usuarios y grupos

Una de los aspectos más críticos como administrador de sistemas puede ser la gestión de usuarios, y esto depende en muchas ocasiones más por el número de usuarios a gestionar que por su complejidad “técnica”. En un principio en toda instalación se crea habitualmente el usuario Root y un usuario sin privilegios, hasta aquí todo bien, es más se crean automáticamente los grupos de sistema y sus privilegios, por lo que generalmente no solemos encontrar ningún problema con la gestión de usuarios, pero todo esto se convierte en auténticos quebraderos de cabeza cuando el número aumenta e incluso te ves limitado por un $Hyperboss como lo llamaría el maestro wardog.
Como he dicho técnicamente la gestión es sencilla y para el que no tenga mucha idea daré unos ejemplos sencillos a continuación.

Creación de usuarios

# adduser nombre de usuario

Modificación de usuarios

# usermod nombre de usuario

Eliminación de usuarios

# deluser nombre de usuario

Cambiar contraseña

# passwd nombre de usuario

Bloquear o desbloquear una cuenta de usuario

# passwd -l nombre de usuario
# passwd -u nombre de usuario

Bloquear cuantas inactivas pasados 30 dias

# useradd -D -f 30

Creación de grupos

# addgroup nombre de grupo

Modificación de grupos

# groupmod nombre de grupo

Eliminación de grupos

# groupdel nombre del grupo

Añadir usuarios a un grupo

# adduser nombre de usuario nombre de grupo

Quitar usuarios de un grupo

# deluser nombre de usuario nombre de grupo

Para todos los ejemplos y comandos citados arriba recomiendo echar un vistazo a su ayuda para ampliar su uso según necesidades, que pueden ser muy variadas y cambiar muchos aspectos de cada usuario, podemos cambiar el home, o la shell con la que interactúa el usuario entre otras muchas opciones.

PERMISOS

Este apartado es algo que debemos tener muy claro y DOCUMENTADO, es muy importante, y según el número de usuarios y grupos con los que trabajemos, las necesidades de cada usuario a la hora de acceder o editar ciertos ficheros, o la entrada y salida de trabajadores, se puede convertir en un aspecto muy variable y siempre se puede topar esta necesidad, con la seguridad, caballo de batalla en el mundo empresarial, que hoy en día todavía cuesta de explicar y hacer entender a ciertas personas.
Cada usuario y grupo de usuarios tiene que tener una política muy clara y concisa sobre sus permisos, esto lo debemos tener muy documentado y actualizado, y es que aquí nos jugamos mucho, no solo por mantener una seguridad externa, si no como en muchas casos a ocurrido, el acceso sin control a cierta documentación o archivos por trabajadores descontentos (con motivo o sin el), pueden acabar en manos de la competencia o en el peor de los casos en manos  de alguien que puede conseguir acceso a nuestros sistemas.
Y aquí es cuando entra en juego CHMOD, necesario para cambiar estos permisos, llegados a este punto todos deberíamos conocer como funciona,  pero si todavía queda algún despistado, aquí una ayuda sobre el comando.
Si ya tenemos unas políticas de usuarios definidas y los permisos de usuarios y grupos al día podemos pasar a verificar posibles vectores de seguridad.

Verificar Permisos y propietarios en /etc/passwd.

Verificamos
# ls -l /etc/passwd
 -rw-r--r-- 1 root root 1658 OCT 13 10:50 /etc/passwd
Cambiamos permiso si es necesario
# chmod 644 /etc/passwd
Cambiamos propietario si no es correcto
# chown root:root /etc/passwd

Verificar Permisos  y propietarios /etc/shadow.

# ls -l /etc/shadow
 -rw-r----- 1 root shadow 1061 oct 13 10:50 /etc/shadow
Cambiamos si es necesario
# chmod 640 /etc/shadow
Cambiamos propietario si no es correcto
# chown root:shadow /etc/shadow

Verificar Permisos  y propietarios /etc/group.

# ls -l /etc/group
 -rw-r--r-- 1 root root 885 oct 13 10:50 /etc/group
Cambiamos si es necesario
# chmod 644 /etc/group
Cambiamos propietario si no es correcto
# chown root:root /etc/group

También podemos hacer estas comprobaciones en archivos y carpetas de usuarios.

CONTRASEÑAS

En la primer capítulo de esta guía de hardenig  ya hablamos de la importancia de ella y dimos algunos enlaces para crear nuestras contraseñas, en este punto de la gestión de usuarios y grupos,  debemos tratar con el mismo o mayor cuidado este aspecto, y adaptarnos si así nos lo imponen, ya sabemos que cuanto más complejas sean estas mucho mejor, pero se puede dar el caso de que nos exijan que no superen lo 6 u 8 caracteres y que solo contengan números y letras, si, ya se, pero la vida es así y es lo que toca en muchas ocasiones.
Por otro lado debemos documentar y guardar esta contraseñas, podemos utilizar cualquier plataforma, aplicación o sistema que más nos guste, pero con un mino de seguridad, deben de estar cifradas, protegidas, siempre accesibles y una copia de seguridad de ellas por cualquier imprevisto, a partir de aquí vale todo (excel, keepass, lastpass, 1password, etc, etc…) yo no soy el que te dirá cual es mejor o peor, o cual utilizar.

Otro parte de la gestión, al igual que con usuarios y grupos, es la verificación de las contraseñas y aplicar una política concreta sobre ellas, aquí unos ejemplos.

Asegurar que los campos de contraseña no estén vacíos

Comprobamos si hay algun usuario sin contraseña
# cat /etc/shadow | /usr/bin/awk -F: '($2 == "" ) { print $1 " does not have a password "}'
Bloqueamos usuario hasta comprobar la causa y eliminamos si es necesario
# passwd -l nombre de usuario
# deluser nombre de usuario

 

Establecer días de caducidad de contraseña

Comprobamos
# grep PASS_MAX_DAYS /etc/login.defs 
 PASS_MAX_DAYS 60
# chage --list usuario
 Maximum number of days between password change:    60
Cambiamos si es necesario
# vim /etc/login.defs
PASS_MAX_DAYS 30
# chage --maxdays 30 usuario

Configurar el cambio de contraseña Número mínimo de días

Comprobamos
# grep PASS_MIN_DAYS /etc/login.defs 
 PASS_MIN_DAYS 14
# chage --list usuario
 Minimun number of days between password change:    14
Cambiamos si es necesario
# vim /etc/login.defs
PASS_MIN_DAYS 7
# chage --mindays 7 usuario

Definir días de advertencia de caducidad de la contraseña

# grep PASS_WARN_DAYS /etc/login.defs 
 PASS_MIN_DAYS 14
# chage --list usuario
 Number of days of warning before password expires:    14
Cambiamos si es necesario
# vim /etc/login.defs
PASS_WARN_AGE 7
# chage --warndays 7 usuario


Como hemos visto hoy tener unas políticas, tanto de usuario y grupos como de contraseñas, es una parte muy importante, ya sea en un entorno particular o empresarial, y si a esto le unimos la comprobación y actualización periódica de estas políticas, tendremos un sistema mucho más seguro.

Como regalo dejo aquí un tuit del gran Daboblog, que encontré entre mis notas mientras repasaba para escribir esta entrada, espero que también os sirva de ayuda.

¡¡Hasta la próxima parte de la guía, saludos!!

4 opiniones en “Guía Hardening – Gestion de usuarios y grupos”

Deja un comentario