Como bloquear IP no ssh

Como bloquear IP no ssh

Um indivíduo muito insistente está tentando continuamente obter acesso (não autorizado) ao meu sistema nos últimos dias... Há um zilhão de entradas, como em /var/log/auth.log:

Jun 21 03:55:15 cloudy sshd[32487]: pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=116.31.116.20  user=root
Jun 21 03:55:16 cloudy sshd[32487]: Failed password for root from 116.31.116.20 port 30629 ssh2
Jun 21 03:55:19 cloudy sshd[32487]: Failed password for root from 116.31.116.20 port 30629 ssh2
Jun 21 03:55:21 cloudy sshd[32487]: Failed password for root from 116.31.116.20 port 30629 ssh2
Jun 21 03:55:21 cloudy sshd[32487]: Received disconnect from 116.31.116.20: 11:  [preauth]
Jun 21 03:55:21 cloudy sshd[32487]: PAM 2 more authentication failures; logname= uid=0 euid=0 tty=ssh ruser= rhost=116.31.116.20  user=root

Gostaria de pedir alguns conselhos sobre como impedir que esse indivíduo consuma recursos do computador. Existe a possibilidade de "bloquear" o IP até mesmo de abrir uma conexão ssh? Observe que eu uso o Debian 8 como sistema operacional.

Responder1

Responder2

Você também pode usariptables

Crie um arquivo com endereços IP que você deseja bloquearblocked.ips.txt

Agora crie e execute um script contendo o seguinte:

blocked=$(egrep -v -E "^#|^$" ./blocked.ips.txt)
for ip in $blocked
do
    iptables -I INPUT -s $ip -p tcp --dport ssh -j DROP
done

A execução iptables -Ldeve fornecer saída de pacotes descartados

Responder3

A abordagem do iptables é a maneira mais direta. Erik Handriks propôs isso como um roteiro.

Dois mas-s: - o script teria que ser iniciado após cada reinicialização (se as tabelas não tivessem backup interno com iptables). - chamar o script como está, duas ou mais vezes duplicará as entradas.

Tente simplesmente acertar o bandido com:

iptables -I INPUT -s BAD_IP -p tcp --dport ssh -j DROP

Na maioria das distribuições, o iptables possui mecanismo próprio de regras, salvamento e restauração. Veja se '/var/lib/iptables/rules-save' está presente. Para sua distro, ela pode estar em outro lugar (gentoo aqui).

Depois de adicionar cada IP RUIM, tente:

iptables-save > /var/lib/iptables/rules-save

Após reiniciar, verifique com 'iptables -L' o que há por aí...

Responder4

No meu servidor (Ubuntu 16.04) eu uso UFW (UncomplicatedFireWall), uma camada de simplificação sobre iptables) que parece ser um problema padrão em servidores Ubuntu (mas deve estar disponível para outras distros). Para esses casos eu uso:

ufw insert 1 deny from nnn.nnn.nnn.nnn

UFW também permite limitar o número de conexões

ufw limit ssh/tcp

Observe que isso também se aplica a conexões bem-sucedidas, portanto, se você usar scripts que usam vários comandos ssh, será necessário desabilitar esse limite para o seu IP emitindo:

ufw insert 1 allow in from nnn.nnn.nnn.nnn

informação relacionada