Este este capitulo veremos como configurar y personalizar el modo en el que se generan y mantienen las claves de usuarios dentro del sistema, dentro de las múltiples tareas que debemos realizar, no sólo la seguridad de la contraseña, es estar muy al tanto de la caducidad de las contraseñas de los usuarios que gestionamos y que pertenecen a nuestro dominio ya que este aspecto ayuda a mejorar la seguridad del sistema y de la información de cada usuario; ya que es una de de las prácticas recomendadas para el examen, con ello podemos incrementar la seguridad a nivel de acceso y autenticación (Con un tiempo razonable de tiempo).
Los comandos más usados como administradores para la gestión de contraseñas de usuarios son:
- passwd
- chage
En esta oportunidad vamos a hablar sobre el comando chage el que nos ayuda con la labor de establecer un límite de tiempo a las contraseñas.
- Especificar la cantidad de días en que debe ser renovada la contraseña
- Establecer una fecha de caducidad manualmente
- Listar cuentas de información, entre otras tareas.
Toda la información sobre usuarios, grupos y contraseñas se guarda en los archivos:
- /etc/passwd (información sobre usuarios)
- /etc/group (información sobre grupos)
- /etc/shadow (contraseñas cifradas)
- /etc/gshadow (contraseñas cifradas de los grupos) [normalmente no se usa este fichero]
Un pequeño diagrama de los parametros de contraseñas. Cuales pueden ser ajustados usando chage para la implementacion de politicas de contraseñas
chage –d 0 username forza la contraseña en el siguiente logeo
chage –l username lista los nombres de los usuarios actuales
chage -E YYYY-MM-DD Expirará una cuenta en un día específico
Veamos la sintaxis con el comando chage -l
[root@localhost ~]# chage -l Modo de uso: chage [opciones] USUARIO Opciones: -d, --lastday ÚLTIMO_DÍA establece el día del último cambio de la contraseña a ÚLTIMO_DÍA -E, --expiredate FECHA_CAD establece la fecha de caducidad a FECHA_CAD -h, --help muestra este mensaje de ayuda y termina -I, --inactive INACTIVA deshabilita la cuenta después de INACTIVA días de la fecha de caducidad -l, --list muestra la información de la edad de la cuenta -m, --mindays DÍAS_MIN establece el número mínimo de días antes de cambiar la contraseña a DÍAS_MIN -M, --maxdays DÍAS_MAX establece el número máximo de días antes de cambiar la contraseña a DÍAS_MAX -R, --root CHROOT_DIR directory to chroot into -W, --warndays DÍAS_AVISO establece los días de aviso de expiración a DÍAS_AVISO
El comando date puede ser usado para calcular un fecha en el futuro
[root@localhost ~]# date -d "+30 days" jue jul 27 08:49:48 PYT 2017 [root@localhost ~]#
El comando usermod puede bloquear un acceso con la opcion -L
[root@localhost ~]# usermod -L zeus [root@localhost ~]# chage -l zeus Último cambio de contraseña :jun 27, 2017 La contraseña caduca : nunca Contraseña inactiva : nunca La cuenta caduca : nunca Número de días mínimo entre cambio de contraseña : 0 Número de días máximo entre cambio de contraseña : 99999 Número de días de aviso antes de que caduque la contraseña : 7
Comprobamos
login as: zeus zeus@172.16.1.98's password: Access denied
Como ven el ususario queda bloquedo, para volver habilitarlo es con laopcion chage -U username o con usermod -U
login as: zeus zeus@172.16.1.98's password: Access denied
Este metodo previene cuando un empleado por ejemplo fue despedido de la compañia para sacarlo de todos los accesos a los Equipos de Dessarrolo
Otro metodo mas eficaz podria ser no permitir al usuario establecer un login, estableciendo o cambiando su shell a /sbin/nologin
[root@localhost ~]# usermod -s /sbin/nologin zeus [root@localhost ~]# su zeus This account is currently not available. [root@localhost ~]#
Observacion: Usando el metodo nologin shell impide que el usuario interactue con el sistema, pero NO previene todos los accesos, un usuario aun puede autenticarse y actualizar o destruir a travez de aplicaciones web, transferir archivos de progrmas, o direcciones de correo.
Bloquearemos al usuario hades
[root@rhel ~]# usermod -L hades
Comprobamos accediendo desde otra terminal
login as: hades hades@172.16.1.98's password: Access denied:
Desbloquemos y probamos de vuelta
[root@rhel ~]# usermod -U hades login as: hades hades@172.16.1.98's password: Last failed login: Tue Jun 27 09:55:18 PYT 2017 from informatica-152.mopc.local on ssh:notty There were 2 failed login attempts since the last successful login. Last login: Tue Jun 27 09:54:23 2017 [hades@rhel ~]$
Funciona a la perfeccion, veamos ahora las Politicas de contraseña. El usuario hades cambiara su clave cada 90 dias
[root@rhel ~]# chage -M 90 hades [root@rhel ~]# chage -l hades Último cambio de contraseña :jun 27, 2017 La contraseña caduca : sep 25, 2017 Contraseña inactiva : nunca La cuenta caduca : nunca Número de días mínimo entre cambio de contraseña : 0 Número de días máximo entre cambio de contraseña : 90 Número de días de aviso antes de que caduque la contraseña : 7 [root@rhel ~]#
Forsamos la contraseña en el primer inicio de sesion para el acceso del usuario hades
[root@rhel ~]# chage -d 0 hades
Comprobamos
login as: hades hades@172.16.1.98's password: You are required to change your password immediately (root enforced) Last login: Tue Jun 27 10:07:14 2017 from informatica-76.mopc.local WARNING: Your password has expired. You must change your password now and login again! Cambiando la contraseña del usuario hades. Cambiando la contraseña de hades. (actual) contraseña de UNIX:
Como ven ya nos pide una nueva contraseña de acceso, aqui podemos cambiar a nuestro gusto.
Ahora veremos como hacer que nuestra contraseña expire en una fecha exacta futura.
[root@rhel ~]# date +%x 27/06/17 [root@rhel ~]# date -d "+180 days" dom dic 24 12:29:58 PYST 2017 [root@rhel ~]# chage -E 2017-12-24 hades [root@rhel ~]# chage -l hades Último cambio de contraseña :jun 27, 2017 La contraseña caduca : sep 25, 2017 Contraseña inactiva : nunca La cuenta caduca : dic 24, 2017 Número de días mínimo entre cambio de contraseña : 0 Número de días máximo entre cambio de contraseña : 90 Número de días de aviso antes de que caduque la contraseña : 7 [root@rhel ~]#
Como ven con date +%x muestra mi fecha actual, date -d “+180 days” quiero que mi contraseña expire en 180 dias desde la fecha, y con chage -E 2017-12-24 hades establesco la fecha exacta, como pueden apreciar la parte donde dice La contraseña caduca : sep 25, 2017 será la fecha que me pedira cambiarla
Si quiere modificar un tiempo predeterminado en la caducidad de las contraseñas de los usuarios recién creados, por ejemplo; que la contraseña deba cambiarse cada 30 días. Entonces debes de hacer los cambios correspondientes en el archivo /etc/login.defs
PASS_MAX_DAYS: Número máximo de días en que se puede utilizar una contraseña. Si la contraseña es anterior, se producirá un cambio de contraseña.
PASS_MIN_DAYS: Número mínimo de días permitidos entre los cambios de contraseña. Cualquier cambio de contraseña intentado antes que éste será rechazado
PASS_WARN_AGE: Número de días de aviso dado antes de que expire una contraseña. Un cero significa advertencia se da sólo al día de la expiración, un valor negativo significa que no se da ninguna advertencia. Si no se especifica, no se proporcionará ninguna advertencia
[root@rhel ~]# vi /etc/login.defs # # Please note that the parameters in this configuration file control the # behavior of the tools from the shadow-utils component. None of these # tools uses the PAM mechanism, and the utilities that use PAM (such as the # passwd command) should therefore be configured elsewhere. Refer to # /etc/pam.d/system-auth for more information. # # *REQUIRED* # Directory where mailboxes reside, _or_ name of file, relative to the # home directory. If you _do_ define both, MAIL_DIR takes precedence. # QMAIL_DIR is for Qmail # #QMAIL_DIR Maildir MAIL_DIR /var/spool/mail #MAIL_FILE .mail # Password aging controls: # # PASS_MAX_DAYS Maximum number of days a password may be used. # PASS_MIN_DAYS Minimum number of days allowed between password changes. # PASS_MIN_LEN Minimum acceptable password length. # PASS_WARN_AGE Number of days warning given before a password expires. # PASS_MAX_DAYS 30 PASS_MIN_DAYS 0 PASS_MIN_LEN 5 PASS_WARN_AGE 7 # # Min/max values for automatic uid selection in useradd ....................................................... .....................................................
Esto es Todo, espero que les sirva y cualquier duda pueden dejar sus comentarios 🙂
Muchas gracias por tu completo tutorial, me ha sido de gran ayuda.