Como bloquear usuários após 5 tentativas de login sem sucesso?

10

Como bloquear usuários depois de 5 tentativas de login sem sucesso?

Reuni algumas distribuições / versões para fazer isso, mas não posso testá-lo.

RHEL4 : adicionando o:

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

para:

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

RHEL4 :

SLES9 : adicionando o:

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

para:

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

SLES11 ou SLES10 : adicionando o:

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

para:

/etc/pam.d/common-auth

E adicionando o:

account required pam_tally.so

para:

/etc/pam.d/common-account

PERGUNTA : Alguém pode, por favor, confirmar que esta é a melhor maneira de bloquear usuários após 5 tentativas de login sem sucesso? OU COMO FAZER ISSO?

p.s .:

/sbin/pam_tally --user USERNAME --reset

é uma coisa útil para fazer antes de fazer isso? Posso bloquear o usuário root com isso? Editar o PAM é uma coisa muito delicada, porque as pessoas podem se bloquear do servidor (eu estou ex: o usuário root). Alguma dica ao fazer isso?

    
por gasko peter 04.06.2013 / 14:33

2 respostas

16

Você pode querer dar uma olhada no fail2ban. Ele pode ser configurado para bloquear uma conta após um número definido de tentativas mal-sucedidas e depois desbloquear após um período de tempo definido.

link

Se você realmente quiser usar pam_tally , provavelmente desejará usar pam_tally2 . Deve ser instalado com qualquer pacote PAM que esteja atualizado. Você pode fazer um man pam_tally2 para ver como usá-lo.

Aqui está um exemplo para você começar. Adicione o seguinte ao início da seção auth no arquivo pam, /etc/pam.d/password-auth :

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

No mesmo arquivo, adicione isso à seção da conta:

account     required      pam_tally2.so

Os parâmetros acima são os seguintes:

  • file=/var/log/tallylog - O arquivo de log padrão é usado para manter as contagens de login.
  • deny=3 - Negar acesso após 3 tentativas e bloquear usuário.
  • even_deny_root - A política também se aplica ao usuário root.
  • unlock_time=1200 - 20 min. (60 seg. * 20 min. = 1200 seg.)

Se você não quiser bloquear a raiz, altere even_deny_root para magic_root .

É questionável se você deseja bloquear a conta root. Você pode querer fazer algo assim em vez disso, em que a conta raiz pode ser bloqueada, mas apenas por um período mais curto do que outras contas:

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

Isso só irá bloquear a conta root por um minuto, todos os 1200 segundos normais.

Um arquivo de log de amostra teria a seguinte aparência:

$ 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

Você pode perguntar sobre contas bloqueadas usando o comando pam_tally2:

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

Você pode desbloquear a restrição assim:

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

Agora, a conta aparece em pam_tally2 assim:

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

Referências

por 04.06.2013 / 21:58
2

pam_tally2 inicialmente me confundiu, mas descobri depois 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

o texto acima é um pouco confuso, porque você só adiciona a linha pam_tally2.so .

para que você possa editar /etc/pam.d/login e adicioná-lo abaixo de todas as outras auth lines:

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

ou se você tiver /etc/pam.d/system-auth , pode adicioná-lo lá.

não é necessário reinicializar ou recarregar qualquer serviço - ele fica ativo imediatamente para novos logins locais.

observação: se você quiser que pam_tally2 se aplique a sshd ou a outros serviços remotos, você também precisará adicionar a linha a /etc/pam.d/sshd e / ou /etc/pam.d/password-auth

para verificar se está funcionando, faça uma tentativa de login com falha com um usuário válido e execute pam_tally2

por exemplo, para um usuário chamado jacob run:

  $ sudo pam_tally2 -u jacob

e será exibido algo como:

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

se muitas tentativas de login falharem e a conta estiver bloqueada, você poderá desbloquear manualmente a conta:

  $ sudo pam_tally2 -u jacob --reset
    
por 10.11.2016 / 15:05