¿Cómo bloquear a los usuarios después de 5 intentos fallidos de inicio de sesión?

12

¿Cómo bloquear a los usuarios después de 5 intentos fallidos de inicio de sesión?

Reuní algunas distribuciones / versiones sobre cómo hacerlo, pero no puedo probarlo.

RHEL4 : agregando el:

auth        required      /lib/security/$ISA/pam_tally.so no_magic_root
account     required      /lib/security/$ISA/pam_tally.so deny=5 reset no_magic_root

a:

/etc/pam.d/system-auth
/etc/pam.d/login
/etc/pam.d/sshd

RHEL4 : ???

SLES9 : agregando el:

auth required pam_tally.so no_magic_root
account required pam_tally.so deny=5 reset no_magic_root

a:

/etc/pam.d/login
/etc/pam.d/sshd

SLES11 o SLES10 : agregando:

auth required pam_tally.so deny=5 onerr=fail per_user no_lock_time

a:

/etc/pam.d/common-auth

Y agregando el:

account required pam_tally.so

a:

/etc/pam.d/common-account

PREGUNTA : ¿Alguien puede confirmar que esta es la mejor manera de bloquear a los usuarios después de 5 intentos fallidos de inicio de sesión? ¿O CÓMO HACER ESTO?

PD:

/sbin/pam_tally --user USERNAME --reset

Qué es útil hacer antes de hacer esto? ¿Puedo bloquear al usuario root con estos? La edición de PAM es una cuestión muy delicada, ya que las personas podrían bloquearse del servidor (me refiero, por ejemplo, al usuario root). ¿Alguna pista al hacer esto?

Gasko Peter
fuente
el módulo de conteo es la forma de hacerlo, pero recomendaría pam_tally2 ya que el original está bastante roto y no es intuitivo. Además, la raíz está abierta para bloquearse de esa manera, pero debe habilitarla a través deno_magic_root
Bratchley
Por cierto, no recomendaría realizar ningún bloqueo en la cuenta raíz, esa es su trampilla de escape en caso de que algo salga mal (como, por ejemplo, con el bloqueo de la cuenta) y los atacantes no deberían tener ningún vector directo de todos modos.
Bratchley
¿SLES10 también necesita no_magic_root?
Gasko Peter
Todas las distribuciones de GNU / Linux se basan en el mismo conjunto básico de proyectos ascendentes, por lo que a menos que Novell se haya esforzado por cambiar su versión del módulo pam_tally de manera que confunda a las personas, debería ser lo mismo en SuSE que en otras distribuciones.
Bratchley
1
¿Estás seguro de que es una buena idea? De esta forma, todos los usuarios pueden evitar fácilmente que cualquier otro usuario inicie sesión. Usar una gran demora es IMO más práctico, pero decídalo usted mismo.
Marco

Respuestas:

17

Es posible que desee echar un vistazo a fail2ban. Se puede configurar para bloquear una cuenta después de un número determinado de intentos fallidos y luego desbloquearla después de un período de tiempo establecido.

http://www.fail2ban.org/wiki/index.php/Downloads

Si realmente te tomas en serio el uso pam_tally, probablemente quieras usarlo pam_tally2en su lugar. Debe instalarse con cualquier paquete PAM que sea actual. Puede hacer un hombre pam_tally2 para ver cómo usarlo.

Aquí hay un ejemplo para comenzar. Agregue lo siguiente al comienzo de la sección de autenticación en el archivo pam /etc/pam.d/password-auth:

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

En el mismo archivo, agregue esto a la sección de cuenta:

account     required      pam_tally2.so

Los parámetros anteriores son los siguientes:

  • file=/var/log/tallylog - El archivo de registro predeterminado se utiliza para mantener los recuentos de inicio de sesión.
  • deny=3 - Denegar el acceso después de 3 intentos y bloquear al usuario.
  • even_deny_root - La política también se aplica al usuario root.
  • unlock_time=1200 - 20 min. (60 seg. * 20 min. = 1200 seg.)

Si no desea bloquear la raíz, cambie even_deny_root a magic_root .

Es cuestionable si desea bloquear la cuenta raíz. Es posible que desee hacer algo como esto, donde la cuenta raíz puede bloquearse, pero solo por un período más corto que otras cuentas:

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

Esto solo bloqueará la cuenta raíz por un minuto, todos los demás los 1200 segundos normales.

Un archivo de registro de muestra tendría el siguiente aspecto:

$ ssh me@somemachine
me@somemachine's password:
Permission denied, please try again.
me@somemachine's password:
Permission denied, please try again.
me@somemachine's password:
Account locked due to 4 failed logins
Account locked due to 5 failed logins
Last login: Mon Jun 4 21:21:06 2013 from someothermachine

Puede consultar sobre cuentas bloqueadas con el comando pam_tally2:

$ pam_tally2 --user=me
Login           Failures  Latest    failure     From
me                   5    06/04/13  21:21:06    someothermachine

Puede desbloquear la restricción así:

pam_tally2 --user=me --reset
Login           Failures  Latest    failure     From
me                  5     06/04/13  21:21:06    someothermachine

Ahora la cuenta aparece en pam_tally2 así:

$ pam_tally2 --user=me
Login           Failures   Latest   failure     From
me                 0

Referencias

slm
fuente
2

pam_tally2Inicialmente me confundió, pero lo he descubierto después de seguir man pam_tally2-

  EXAMPLES
   Add the following line to /etc/pam.d/login to lock the account after 4 failed logins.
   Root account will be locked as well. The accounts will be automatically unlocked after
   20 minutes. The module does not have to be called in the account phase because the
   login calls pam_setcred(3) correctly.

   auth     required       pam_securetty.so
   auth     required       pam_tally2.so deny=4 even_deny_root unlock_time=1200
   auth     required       pam_env.so
   auth     required       pam_unix.so

la redacción anterior es un poco confusa, porque en realidad solo agrega la pam_tally2.solínea.

para que pueda editarlo /etc/pam.d/loginy agregarlo debajo de todas las otras authlíneas:

   auth     required       pam_tally2.so deny=4 even_deny_root unlock_time=1200

o si lo /etc/pam.d/system-authtienes puedes agregarlo allí.

no es necesario reiniciar ni volver a cargar ningún servicio; se activa de inmediato para nuevos inicios de sesión locales.

nota: si también desea pam_tally2solicitar sshdu otros servicios remotos, también deberá agregar la línea /etc/pam.d/sshdy / o/etc/pam.d/password-auth


para comprobar que funciona, haga un intento de inicio de sesión fallido con un usuario válido y luego ejecute pam_tally2

por ejemplo, para un usuario llamado jacobejecutar:

  $ sudo pam_tally2 -u jacob

y generará algo como:

  Login           Failures Latest   failure     From
  jacob           1        01/01/01 11:00:00    tty1

Si fallan demasiados intentos de inicio de sesión y la cuenta está bloqueada, puede desbloquearla manualmente:

  $ sudo pam_tally2 -u jacob --reset
infinito-etcétera
fuente