/ Debian

Capítulo sexto de la guía de 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.

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

Guía Hardening – Gestion de usuarios y grupos