viernes, 15 de agosto de 2014

Administrar Politicas de Seguridad de las Contraseñas en Linux

                
La administración de usuarios es una de la partes más importantes de la configuración y mantenimiento de un servidor, además de estar directamente relacionada con la seguridad de un sistema Linux, pues los permisos otorgados a cada uno de los usuarios de un sistema son la clave al momento de establecer unas políticas de seguridad efectivas.
Por defecto, cuando creamos un usuario y contraseña ésta son “para toda la vida” a no ser que un día decidamos cambiarla o que hagamos uso de la caducidad de contraseñas, es decir, que sean válidas durante un tiempo determinado y una vez transcurrido dejan de serlo y hay que modificarlas.
Uno de los comandos que nos permiten hacer esto es chage, con el cual podremos definir y obligarnos u obligar a otros usuarios del sistema a cambiar su contraseña cada X tiempo.
Si consultamos el manual de el comando chage, nos muestra las siguientes opciones
$ chage --help
Modo de uso: chage [opciones] [USUARIO]

Opciones:
  -d, --lastday ULTIMO_DÍA      establece el último cambio de clave a
                                ULTIMO_DÍA
  -E, --expiredate FECHA_EXP    establece la fecha de caducidad de la
                                cuenta a FECHA_EXP
  -h, --help                    muestra este mensaje de ayuda y termina
  -I, --inactive INACTIV        desactiva la cuenta después de INACTIV
                                días desde la fecha de expiración
  -l, --list                    muestra la información de envejecimiento
                                de la cuenta
  -m, --mindays DÍAS_MIN        establece el número mínimo de días antes
                                de cambiar la clave a DÍAS_MIN
  -M, --maxdays DÍAS_MAX        establece el número máximo de días antes
                                de cambiar la clave a DÍAS_MAX
  -W, --warndays DÍAS_AVISO     establece el número de días de aviso
                                a DÍAS_AVISO
Ahora vamos a obtener información de un usuario cualquiera:
chage -l usuario 
Último cambio de contraseña     :dic 30, 2011
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ñas  : 99999
Número de días de aviso antes de que expire la contraseña : 7
quí podemos ver cuando fue la última vez que cambió su contraseña, cuando caduca, cuando la contraseña quedará inactiva, cuando caducará la cuenta, días mínimos que han de transcurrir para poder modificarla, el número de días que la contraseña es válida y con cuantos días de antelación nos avisará antes de que llegue la fecha de caducidad.
¿Qué pasa si un password de un usuario expira?
Si establecemos como días inactivos 5 desde que la contraseña caducó y el usuario no se loguea durante esos 5 días, y lo hace 10 días después la cuenta será bloqueada y será root quien tenga que desbloquearla, pero si llega la fecha de caducidad y nos logueamos dentro de esos 5 días sí podremos acceder pero deberemos cambiar la contraseña.
¿Cómo definir los requisitos de longitud de passwords y complejidad para todos los usuarios?
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
Por lo que si se desea establecer una contraseña según políticas establecidas, podemos especificar las opciones siguientes: 
Establecer una mínima de longitud de la contraseña (minlen = N)
Forzar el uso mínimo de N números en la contraseña (dcredit=-N)
Forzar el uso mínimo de N letras mayúsculas ( ucredit=-N )
Forzar el uso mínimo de N letras minúsculas ( lcredit=-N )
Forzar el uso mínimo de N símbolos ( ocredit=-N )
Forzar un mínimo de N caracteres diferentes de la contraseña actual ( difok=N )

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
Ahora si lo que queremos es establecer la complejidad de la contraseña lo haremos con los parámetros ucredit, lcredit, dcredit y ocredit en una línea que contenga "password" y "pam_cracklib.so":
 password   requisite    pam_cracklib.so retry=3 minlen=10 difok=3 ucredit=-1 lcredit=-2 dcredit=-1 ocredit=-1
Al asignar los valores: "ucredit=-1 lcredit=-2 dcredit=-1 ocredit=-1" forzará a incluir al menos un caŕacter en mayúscula (ucredit), dos en minúscula (lcredit), uno numérico (dcredit) y un símbolo (ocredit).
¿Cómo activar el historial de passwords para evitar que un usuario utilice dos veces el mismo password?
Para activar el historial de passwords ejecutamos el siguiente comando: 
 password sufficient pam_unix.so sha512 shadow nullok try_first_pass use_authtok remember=5
¿Cómo activar el bloqueo de cuentas para un usuario que intenta entrar varias veces a una cuenta con una contraseña erronea? Supongamos 5 veces
Para establecer el bloqueo de cuentas para un usuario despues de determinados intentos utilizamos el siguiente comando: 
  password requisite pam_cracklib.so try_first_pass retry=5  

No hay comentarios:

Publicar un comentario