Como limitar um ataque de força bruta no Linux

Hoje estava navegando na blogosfera e vi um artigo muito bacana, que chama a atenção para algo que acontece com freqüência e que muitos relapsos administradores de sistema acabam por deixar para lá por questões técnicas (preguiça), ataque de força bruta via ssh.

O que me chamou a atenção no artigo foram:

  • importância do assunto;
  • qualidade do artigo;
  • facilidade da solução.

Bem, vamos a ele. Aqui falaremos sobre uma forma de evitar ataques de força bruta via SSH. Se você usa sessões telnet, pode estar adaptando para sua necessidade. Uma das opções que faço é não utilizar o SSH na porta padrão.

Sintoma:

Um exemplo do que acontece quando adolescentes desocupados com pais irresponsáveis ou profissionais que querem ganhar um dinheiro fácil acharcando dinheiro via web pode ser visto no auth.log. Abaixo temos um exemplo.

jul 28 21:32:16 impala sshd[10855]: Illegal user office from 213.191.74.219
Jul 28 21:32:16 impala sshd[10855]: Failed password for illegal user office from 213.191.74.219 port 53033 ssh2
Jul 28 21:32:16 impala sshd[10857]: Illegal user samba from 213.191.74.219
Jul 28 21:32:16 impala sshd[10857]: Failed password for illegal user samba from 213.191.74.219 port 53712 ssh2
Jul 28 21:32:16 impala sshd[10859]: Illegal user tomcat from 213.191.74.219
Jul 28 21:32:16 impala sshd[10859]: Failed password for illegal user tomcat from 213.191.74.219 port 54393 ssh2
Jul 28 21:32:16 impala sshd[10861]: Illegal user webadmin from 213.191.74.219
Jul 28 21:32:16 impala sshd[10861]: Failed password for illegal user webadmin from 213.191.74.219 port 55099 ssh2

É o sintoma que alguém está prospectando seu sistema com um login/senha aleatória.

Ferramenta:

A ferramenta multi-uso iptables pode ser usada para dar um basta neste problema. O iptables é o firewall que acompanha o linux desde o kernel 2.4. Ele substituiu o antigo ipchains, tem uma estrutura de comandos parecida, mas é muito mais poderoso.

Aqui não tenho a pretensão de explicar a fundo sobre o iptables, apenas uma pequena introdução sobre ele para quem não conhecimento sobre esta ferramenta.

Ele é um firewall a nível de pacotes, e é muito flexível quanto ao que deve ser liberado ou bloqueado no computador/rede que protege. Ele trabalha com 3 regras básicas na tabela filter, chamadas de INPUT, OUTPUT e FORWARD, trabalhando na entrada e saída do computador que esta rodando o firewall, e o FORWARD trata da rede que traféga por este. Alem disto podemos trabalhar com os pacotes em nat (Network Adress Translator) da rede com as regras de PREROUTING e POSTROUTING na tabela nat. Com estas regras podemos fazer redirecionamentos de portas e compartilhamentos de links. Além disto existe a tabela mangle na qual podemos marcar pacotes específicos e trabalhar com eles.

Para quem quer ter ainda mais controle sobre o que pde ser feito com este poderoso firewall, existe o patch-o-matic, mais conhecido como pom. Com ele você consegue estender as funções do seu firewall para poder ter mais controle sobre tráfego peer-to-peer (p2p).

Agora que já conhecemos um poquinho nossa ferramenta, vamos ao uso dela.

Antídoto:

Para combatermos este tipo de ataque, vamos utilizar apenas duas regrinhas:

sudo iptables -A INPUT -i eth0 -p tcp --dport 22 -m state --state NEW -m recent --set --name SSH
sudo iptables -A INPUT -i eth0 -p tcp --dport 22 -m state --state NEW -m recent --update --seconds 60 --hitcount 8 --rttl --name SSH -j DROP

Obs.: A regra se refere a interface de rede que você utiliza o link, se ela for diferente da eth0 é só ajustar a regra para a interface correta.

Com estas regras, a sessão SSH ficará limitada a apenas 8 tentativas por minuto. O registro continuará aparecendo no auth.log, e vc terá mais tempo para agir se precisar.

Para facilitar a vida do administrador de sistemas existe o arquivo rc.local. Lá você pode colocar esta regra para ela ser iniciada junto com o seu sabor preferido do Linux.

Source: TechBlog, escrito por Kevin van Zonneveld



2 Comentários on “Como limitar um ataque de força bruta no Linux”

  1. Fausto disse:

    Prefiro usar o fail2ban.

  2. Everson disse:

    Gosto não se discute, mas que essa implementação diminui a quantidade de lixo que seu servidor precisa responder também não se discute.


Deixe um comentário

Este site utiliza o Akismet para reduzir spam. Saiba como seus dados em comentários são processados.