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


12

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

Reuni algumas distribuições / versões de como fazê-lo, 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 confirmar que esta é a maneira correta / eficaz de bloquear usuários após 5 tentativas malsucedidas de login? OU COMO FAZER ISSO?

ps:

/sbin/pam_tally --user USERNAME --reset

é uma coisa útil a se fazer antes de fazer isso? Posso bloquear o usuário root com eles? A edição do PAM é uma coisa muito sensível, porque as pessoas podem se bloquear do servidor (quero dizer, ex .: o usuário root). Alguma dica ao fazer isso?


o módulo de registro é o caminho para fazê-lo, mas eu recomendaria o pam_tally2, pois o original é bastante quebrado e não é intuitivo. Além disso, a raiz é aberto a ser fechado em forma de um, mas você tem que habilitá-lo viano_magic_root
Bratchley

BTW, eu não recomendaria fazer nenhum bloqueio na conta raiz; essa é a sua porta de escape se algo der errado (como por exemplo, com bloqueio de conta) e os invasores não devem ter nenhum vetor direto sobre ela.
Bratchley

O SLES10 também precisa de no_magic_root?
Gasko peter

Todas as distros do GNU / Linux são baseadas no mesmo conjunto básico de projetos upstream, portanto, a menos que a Novell faça um esforço para mudar sua versão do módulo pam_tally de uma maneira que confunda as pessoas, deve ser a mesma no SuSE e em outras distros.
Bratchley

1
Tem certeza de que é uma boa ideia? Dessa forma, todo usuário pode impedir facilmente que outro usuário efetue login. Usar um atraso alto é IMO mais prático, mas decida-se.
Marco

Respostas:


17

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

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

Se você realmente leva a sério o uso pam_tally, provavelmente deseja usá-lo pam_tally2. Deve ser instalado com qualquer pacote PAM atual. Você pode fazer um homem 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 o usuário.
  • even_deny_root - A política também se aplica ao usuário root.
  • unlock_time=1200 - 20 minutos (60 segundos * 20 minutos = 1200 segundos)

Se você não deseja bloquear o root, altere even_deny_root para magic_root .

É questionável se você deseja bloquear a conta root. Você pode fazer algo assim, em que a conta raiz pode ser bloqueada, mas apenas por um período menor 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 bloqueará apenas a conta raiz por um minuto, e todos os demais, por 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 obter informações 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 da seguinte maneira:

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 da seguinte forma:

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

Referências


2

pam_tally2inicialmente 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 na verdade você apenas adiciona a pam_tally2.solinha.

então você pode editar /etc/pam.d/logine adicioná-lo abaixo de todas as outras authlinhas:

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

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

não é necessário reiniciar ou recarregar nenhum serviço - ele se torna ativo imediatamente para novos logins locais.

nota: se você deseja pam_tally2aplicar a sshdou a outros serviços remotos, também precisará adicionar a linha ae /etc/pam.d/sshd/ ou/etc/pam.d/password-auth


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

por exemplo, para um usuário chamado jacobrun:

  $ sudo pam_tally2 -u jacob

e ele produzirá 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
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.