Cómo usar Pam_Tally2 para gestionar los intentos fallidos de acceso en SSH

Recientemente he tenido que gestionar en un cliente el bloqueo de ciertos usuarios, cuando querían acceder a diferentes servidores de un entorno vía SSH. Esto era debido a que, seguramente, habían puesto de forma incorrecta la contraseña en el usuario de alguna aplicación, y tenían hasta 44000 intentos fallidos registrados. Esto hacía que el sistema bloquease su acceso. Para solventarlo pordemos utilizar la herramienta Pam_tally2, de la que ahora os daré algún detalle.

Gestionar los intengos fallidos en SSH con Pam_Tally2

Esta módulo se encarga de hacer un recuerto de intentos de acceso, que se pueden resetear si así lo deseamos, a la par que puede denegar el acceso si se fallan demasiados intentos.

Pam_Tally2 tiene dos partes: pam_tally2.so y pam_tally2 El primero es el módulo PAM y el segundo un programa independiente.

pam_tally2, es una aplicación que se puede utilizar para interrogar y manifpular el archivo del contador. La podemos utilizar para mostrar el recuento de intentos fallidos de los usuarios, establecer recuentos indivisuales o borrar todos los recuentos.

Se puede utilizar, por ejemplo, si queremos resetear el recuentos todas las noches mediante un trabajo de cron.

En la mayoría de distribuciones GNU/Linux este módulo ya viene instalado y habilitado. En esta entrada vamos a ver diferentes ejemplos de uso.

¿Cómo bloqueo o desbloqueo cuentas de usuario?

Debemos utilizar el fichero de configuración /etc/pam.d/passwd-auth, por lo menos a lo que se refiere sistemas Red Hat Enterprise Linux, Centos y similares, de versiones recientes; para así configurar los intentos de acceso de inicio de sesión. Debemos editar este fichero y agregar la siguiente línea de configuración AUTH al comeienzo de la sección «auth»

auth        required      pam_tally2.so  \
file=/var/log/tallylog deny=3 even_deny_root unlock_time=1200

Y a continuación añadimos, en la sección llamada «account»:

account     required      pam_tally2.so

Explicamos un poco los parámetros:

  • file=/var/log/tallylog, se refiere a la ubicación del fichero de registros predeterminado que se utiliza para mantener los recuentos de inicio de sesión.
  • deny=3, el máximo de intentos para bloquear al usuario.
  • even_deny_root, la política también se usa con el usuario root.
  • unlock_time=1200, la cuenta se bloqueará hasta los 20 minutos. Si  eliminamos este parámetro el usuario estará bloqueado hasta que lo desbloqueemos de forma manual.

Una vez realizada esta configuración, sino la teníamos ya, vamos a realizar una prueba, en mi caso sobre un servidor con Centos, con un usuario recién creado para la ocasión, llamado «usertestpam».

Para verificar los intentos de un mismo usuario, lo haríamos de esta manera:

pam_tally2 --user=usertestpam

Para resetear el contador del usuario utilizamos el parámetro --reset, de la siguiente manera:

pam_tally2 --user=usertestpam --reset

Y esto es todo en esta pequeña entrada, que espero que os sea de utilidad en algún momento.

Fuentes consultadas

Página de man de pam_tally2