Eu adicionei a linha
auth required pam_tally2.so deny=3 unlock_time=180
para o meu /etc/pam.d/login
arquivo, e tudo bem em tty, após 3 tentativas testuser
é suspenso.
No entanto, essa mesma linha /etc/pam.d/sshd
não produz efeito.
xieerqi:$ ssh testuser@localhost
Password:
Password:
Password:
Permission denied (publickey,keyboard-interactive).
xieerqi:$ ssh testuser@localhost
Password:
Password:
Password:
Permission denied (publickey,keyboard-interactive).
Como você pode ver, após três tentativas malsucedidas, o usuário ainda pode tentar inserir a senha.
Como faço para ssh
banir um usuário após 3 strikes?
Responder1
Para SSH talvez seja melhor usar algo diferente do pam, existe uma ótima solução feita através do iptables e do sshd_config
arquivo. Esta é apenas uma maneira de conseguir o que você deseja, também com base na documentação, geralmente é recomendado usar chaves SSH em vez de uma verificação do método de autenticação de senhahttps://help.ubuntu.com/community/SSH/OpenSSH/Configurando.
Você precisaria alterar a
/etc/ssh/sshd_config
adição da linhaMaxAuthTries 1
Você precisa criar as seguintes regras de firewall
Crie uma nova cadeia
iptables -N SSHATTACK iptables -A SSHATTACK -j LOG --log-prefix "Possible SSH attack! " --log-level 7 iptables -A SSHATACK -j DROP
Bloqueie por 120 segundos cada endereço IP que estabeleça mais de três conexões em 120 segundos. No caso da quarta tentativa de conexão, a solicitação é delegada à cadeia SSHATTACK, que é responsável por registrar o possível ataque ssh e finalmente descarta a solicitação.
iptables -A INPUT -i eth0 -p tcp -m state --dport 22 --state NEW -m recent --set iptables -A INPUT -i eth0 -p tcp -m state --dport 22 --state NEW -m recent --update --seconds 120 --hitcount 4 -j SSHATTACK
Você pode verificar as tentativas feitas no arquivo
/var/log/syslog
.
Responder2
A prática comum é usar fail2ban
o que funciona no nível da rede em vez do nível pam e que economiza seus recursos para toda a criptografia feita pelo sshd
.
De qualquer forma, você tentou depois daquela falha na autenticação inserir a senha correta? É aceito? O que está logado /var/log/auth.log
?
sshd
O servidor sempre executa toda a pilha pam mesmo que o usuário não exista, esteja suspenso ou bloqueado para eliminar ataques usando canais laterais (identificação de usuários existentes, por exemplo). Este é o problema que você parece estar enfrentando. Pode funcionar, mas você não pode ver ssh
por causa da segurança.
Responder3
Tente alterar a ordem das linhas, o PAM execute-as 1 por 1.
Por exemplo:
/etc/pam.d/common-auth
auth required pam_tally2.so deny=3 onerr=fail unlock_time=300 debug
auth [success=1 default=ignore] pam_unix.so nullok
auth requisite pam_deny.so
auth required pam_permit.so
auth optional pam_cap.so
funciona para mim.