Cambiar contraseñas y ajustar la duración de las contraseñas para las cuentas de usuarios locales

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 🙂

Leave a Reply

Your email address will not be published. Required fields are marked *