Asegurar el acceso a nuestros equipos GNU/Linux es sumamente importante hoy en día. Muchas máquinas están expuestas a Internet o en grandes redes propensas a ser atacadas por usuarios ajenos al sistema. Los sistemas GNU/Linux son muy populares y suelen accederse a todos ellos a través de la consola de SSH. Bloquear y desbloquear usuarios de forma automática es muy sencillo gracias al módulo de PAM llamado pam_tally2.
Seguid leyendo y os enseñaré controlar y bloquear los accesos indeseados a través de SSH a vuestros servidores...
¿QUÉ ES PAM_TALLY2?
El módulo de PAM, llamado pam_tally2, se utiliza para bloquear y gestionar los accesos SSH de las cuentas de usuario, tras un cierto número de accesos fallidos a través de SSH. Pam_Tally2 guarda un registro de intentos de acceso y accesos fallidos de login. Pam_Tally2 se basa en el módulo PAM y se puede utilizar para examinar y manipular el archivo del contador. Se puede mostrar el contador de intentos de inicio de sesión de los usuarios, establecer recuentos de forma individual y también se permite desbloquear todos los contadores de acceso de usuarios.
Pam_tally2 permite securizar los accesos a nuestros equipos GNU/Linux
1.- ELEMENTOS NECESARIOS PARA ESTE TUTORIAL
- Un PC con GNU/Linux Debian/Ubuntu
- Conexión a Internet (recomendado)
2.- BLOQUEAR Y DESBLOQUEAR CUENTAS DE USUARIO
Pam_tally2 está instalado por defecto en en casi todas las distribuciones de GNU/Linux al depender del paquete PAM de autenticación. En función de la distribución que usemos, los ficheros de configuración pueden cambiar. En las distribuciones Debian/Ubuntu/Mint el fichero de configuración es "/etc/pam.d/common-auth".
Para controlar los accesos de "usuarios normales" del sistema, editaremos el fichero citado anteriormente y añadiremos la siguiente línea al principio del fichero:
auth required pam_tally2.so file=/var/log/tally.log onerr=fail deny=3 unlock_time=900 audit
Donde:
- file=/var/log/tally.log : ruta del fichero de log de Pam_Tally2
- onerr=fail : En caso de error, mostrar un error
- deny=3 : Después de 3 intentos fallidos, la cuenta del usuario se bloqueará
- unlock_time=900 : La cuenta se desbloqueará de forma automática cuando pasen 900 segundos (15 minutos)
- audit : Para generar el fichero audit.log
Una vez hecho el cambio, reiniciaremos el servicio de sshd:
raul@debian:~$ sudo systemctl restart sshd
Si queremos que el control de acceso también se aplique al usuario root, añadiremos la línea siguiente:
auth required pam_tally2.so file=/var/log/tally.log onerr=fail deny=3 unlock_time=900 audit even_deny_root root_unlock_time=900
Donde:
- file=/var/log/tally.log : ruta del fichero de log de Pam_Tally2
- onerr=fail : En caso de error, mostrar un error
- deny=3 : Después de 3 intentos fallidos, la cuenta del usuario se bloqueará
- unlock_time=900 : La cuenta se desbloqueará de forma automática cuando pasen 900 segundos (15 minutos)
- audit : Para generar el fichero audit.log
- even_deny_root : Bloquear la cuenta de root tras 3 intentos fallidos de login
- root_unlock_time=900 : La cuenta de root se bloqueará durante 900 segundos (15 minutos)
Una vez hecho el cambio, reiniciaremos el servicio de sshd:
raul@debian:~$ sudo systemctl restart sshd
3.- PROBAR PAM_TALLY2
Para probar si está funcionando correctamente Pam_Tally2, intentaremos acceder con un usuario del sistema a través de SSH pero con una contraseña incorrecta:
raul@debian:~$ ssh raul@127.0.0.1
raul@127.0.0.1's password:
Permission denied, please try again.
Para ver si está funcionando correctamente Pam_Tally, ejecutaremos el siguiente comando para ver los intentos de acceso fallidos del usuario raul, la hora del intento y desde que equipo se ha hecho la conexión:
raul@debian:~$ sudo pam_tally2 --user raul
Login Failures Latest failure From
raul 1 05/02/21 12:35:24 127.0.0.1
Ahora intentaremos hacer otros 2 intentos fallidos de login (para llegar al máximo de 3):
raul@debian:~$ ssh raul@127.0.0.1
raul@127.0.0.1's password:
raul@debian:~$ ssh raul@127.0.0.1
raul@127.0.0.1's password:
Ahora mismo al cuenta debería estar bloqueada durante 900 segundos al haber fallado 3 veces en el login:
raul@debian:~$ sudo pam_tally2 --user raul
Login Failures Latest failure From
raul 3 05/02/21 12:36:06 127.0.0.1
Ahora, si intentamos hacer login con el usuario y a contraseña correcta, vemos que no funciona porque la cuenta está bloqueada 15 minutos desde el último intento de acceso:
raul@debian:~$ ssh raul@127.0.0.1
raul@127.0.0.1's password:
Permission denied, please try again.
raul@127.0.0.1's password:
Si queremos resetear (desbloquear) la cuenta, ejecutaremos el siguiente comando:
raul@debian:~$ sudo pam_tally2 --user raul --reset
Login Failures Latest failure From
raul 4 05/02/21 12:36:37 127.0.0.1
Comprobamos que el contador de intentos de login está a 0, por tanto, ahora si podremos hacer login:
raul@debian:~$ sudo pam_tally2 --user raul
Login Failures Latest failure From
raul 0
Acceso correcto tras desbloquear la cuenta:
raul@debian:~$ ssh raul@127.0.0.1
raul@127.0.0.1's password:
Linux debian 4.19.0-6-amd64 #1 SMP Debian 4.19.67-2+deb10u2 (2019-11-11) x86_64
The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.
Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
Last login: Thu Apr 22 09:42:24 2021 from 192.168.1.46
ENJOY!