El fortalecimiento del servidor Linux es una de las tareas importantes para los administradores de sistemas cuando se trata de servidores de producción. Se recomienda habilitar la política de intentos de inicio de sesión o ssh, lo que significa que la cuenta del usuario debe bloquearse automáticamente después de n números de intentos fallidos (o incorrectos) de inicio de sesión o ssh.
En distribuciones de Linux como CentOS, RHEL y Fedora, esto se logra mediante el uso del módulo pam “pam_faillock ” y para distribuciones similares a Debian, esto se puede lograr usando “pam_tally2 ” módulo pam.
En este tutorial, aprenderemos cómo bloquear cuentas de usuario después de n intentos fallidos de inicio de sesión en CentOS, RHEL, Fedora, Debian y Ubuntu
Para CentOS/RHEL/Fedora
Agregue las siguientes líneas en dos archivos /etc/pam.d/password-auth &/etc/pam.d/system-auth,
auth required pam_faillock.so preauth silent audit deny=3 unlock_time=600 auth [default=die] pam_faillock.so authfail audit deny=3 unlock_time=600 account required pam_faillock.so
Dónde,
- Auditoría:> habilitará los registros de auditoría para el intento de inicio de sesión del usuario en un archivo de registro seguro
- Denegar=3 –> bloqueará al usuario después de 3 intentos fallidos de inicio de sesión, puede cambiar este número según sus requisitos
- unlock_time=600 –> significa que la cuenta del usuario permanecerá bloqueada durante 10 minutos (600 segundos), si desea que la cuenta del usuario se bloquee para siempre, configure este parámetro como "unlock_time=never"
Nota :para bloquear la cuenta raíz también después de n inicios de sesión incorrectos, agregue "even_deny_root ” parámetro en las líneas de la sección de autenticación, el ejemplo se muestra a continuación
auth required pam_faillock.so preauth silent audit even_deny_root deny=3 unlock_time=600 auth [default=die] pam_faillock.so authfail audit even_deny_root deny=3 unlock_time=600
Como podemos ver arriba, tenemos dos líneas para la sección de autenticación y una línea para la sección de cuenta, el orden es muy importante al agregar estas líneas a los archivos. El ejemplo se muestra a continuación donde se deben agregar estas líneas,
[[email protected] ~]# vi /etc/pam.d/password-auth
[[email protected] ~]# vi /etc/pam.d/system-auth
Después de realizar cambios en ambos archivos, reinicie el servicio ssh usando el siguiente comando systemctl,
[[email protected] ~]# systemctl restart sshd
Probemos si la cuenta de usuario se bloqueará después de tres intentos fallidos de inicio de sesión o no.
Supongamos que tenemos una cuenta local con el nombre "pkumar", intentaremos hacer ssh en nuestro sistema Linux con esta cuenta con contraseñas incorrectas,
$ ssh [email protected] [email protected]'s password: [email protected]'s password: [email protected]'s password: Permission denied (publickey,gssapi-keyex,gssapi-with-mic,password).
Ahora vea registros seguros usando el comando tail,
[[email protected] ~]# tail /var/log/secure
Los registros anteriores confirman que la cuenta se ha bloqueado después de tres intentos de inicio de sesión incorrectos, verifiquemos también desde el comando de bloqueo por falla,
[[email protected] ~]# faillock --user pkumar pkumar: When Type Source Valid 2019-12-15 01:50:39 RHOST 192.168.29.157 V 2019-12-15 01:50:43 RHOST 192.168.29.157 V 2019-12-15 01:50:47 RHOST 192.168.29.157 V [[email protected] ~]#
Para vaciar o borrar estos intentos fallidos de inicio de sesión, ejecute el siguiente comando de bloqueo de fallas,
[[email protected] ~]# faillock --user pkumar --reset [[email protected] ~]# faillock --user pkumar pkumar: When Type Source Valid [[email protected] ~]#
Pasemos a una distribución similar a Debian (Ubuntu, Linux Mint y Debian)
Para Debian, Ubuntu y Linux Mint
Agregue la siguiente línea en el archivo “/etc/pam.d/common-auth”,
auth required pam_tally2.so onerr=fail deny=3 unlock_time=600 audit
si desea bloquear la cuenta raíz también después de tres inicios de sesión incorrectos, agregue la siguiente línea,
auth required pam_tally2.so onerr=fail deny=3 unlock_time=600 audit even_deny_root root_unlock_time=600
donde:
- Onerr=fail –> En caso de error, emita un fail
- deny=3 –> Después de tres intentos fallidos de inicio de sesión, la cuenta se bloqueará
- unlock_time=600 –> Significa que la cuenta permanecerá bloqueada durante 10 minutos o 600 segundos
- auditoría –> Significa auditar los registros en el archivo audit.log
- even_deny_root –> Bloquear la cuenta raíz después de tres inicios de sesión incorrectos
- root_unlock_time=600 –> La cuenta raíz permanecerá bloqueada durante 10 minutos o 600 segundos después de 3 intentos fallidos de inicio de sesión
Agreguemos la línea de discusión anterior en el archivo “/etc/pam.d/common-auth ” usando el editor vi,
[email protected]:~$ sudo vi /etc/pam.d/common-auth
Después de realizar los cambios anteriores, guarde y salga del archivo y reinicie el servicio ssh usando el siguiente comando,
[email protected]:~$ sudo systemctl restart sshd
Probemos si las cuentas están bloqueadas después de 3 inicios de sesión ssh incorrectos,
Supongamos que tenemos un usuario "devops" local, intentaremos hacer ssh en el sistema Ubuntu con contraseñas incorrectas
$ ssh [email protected] [email protected]'s password: [email protected]'s password: d [email protected]'s password: Permission denied (publickey,password).
Ahora vea el archivo de registro de autenticación para ver si los intentos de inicio de sesión incorrectos se capturan o no,
[email protected]:~$ tail /var/log/auth.log
Los registros anteriores confirman que la cuenta ha sido bloqueada, verifiquemos desde el comando pam_tally2,
[email protected]:~$ sudo pam_tally2 -u devops Login Failures Latest failure From devops 6 12/15/19 07:45:02 192.168.29.157 [email protected]:~$
Para borrar estos intentos fallidos de inicio de sesión, use el siguiente comando pam_tally2,
[email protected]:~$ sudo pam_tally2 -u devops --reset Login Failures Latest failure From devops 6 12/15/19 07:45:02 192.168.29.157 [email protected]:~$ [email protected]:~$ sudo pam_tally2 -u devops Login Failures Latest failure From devops 0 [email protected]:~$
Con eso concluye el artículo, no dude en compartir sus comentarios y opiniones.