Introdução
Este artigo visa apresentar o conceito por trás deste tipo de ataque. Brute-force pode ser traduzido como “força bruta” que faz total sentido ao seu uso, consiste em forçar a autentificação em determinado serviço na base da força bruta, tentando senha por senha até encontrar a senha certa.
Este tipo de ataque demanda bastante tempo, e sorte, o método e bastante simples ira testar todas as combinações de caracteres possíveis até obter a senha certa levando em conta a variação de senhas possíveis existentes, por exemplo uma tentativa de brute-force em um servidor de ftp, digamos que a senha do ftp seja do tipo $a@DF4O9%2K3) imagina só, o tempo que levaria para quebrar uma senha complexa como essa!
Além do grande tempo gasto nesses ataques, quase sempre os servidores estarão configurados para evitá-los, tornando bastante inviável esse ataque. Por causa da demorar em ir tentando senha/login por senha/login os ataques costumam utilizar ataques de dicionários, que utilizam arquivos que contenha strings(palavras) de possíveis senhas que serão usadas para obter acesso ao serviço, alguma das palavras pode vir a funcionar ou não.
Ferramentas para ataques brute-force
Segue abaixo uma lista com diversas ferramentas de brute-force, ambas escritas em python.
smtpbrute.py
ftpbrute.py
imapbrute.py
nntpbrute.py
snmp_brute.py
sshbrute.py
telnetbrute.py
Evitando brute-force
Não é difícil evitar um ataque brute-force, existem diversas configurações que lhe fornecem proteção contra esse tipo de ataque, é bastante comum os administradores de sistemas usarem no iptables:
#iptables -A INPUT -p tcp -s $IPDEORIGEM -d $IPSERVER --dport ssh -j ACCEPT
#iptables -A INPUT -m state --state ESTABLISHED -j ACCEPT
#iptables -A INPUT -p tcp --dport ssh -m recent --update --seconds 180 -j DROP
#iptables -A INPUT -p tcp --dport ssh --tcp-flags syn,ack,rst syn -m recent --set -j ACCEPT
No ssh costumam usar essa configuração no sshd_config:
MaxStartups 5:50:10
Em conjunto da mudança da porta padrão(que a porta 22) para outra qualquer, que já melhora bastante a segurança, também e comum o uso de ferramentas como BFD (Brute Force Detect) ou Fail2ban. Limitar o inicio das sessões SYN, no iptables pode ser feito da seguinte forma:
#iptables -A INPUT -m state --state ESTABLISHED -j ACCEPT
#iptables -A INPUT -p tcp --dport ssh -m recent --update --seconds 120 -j DROP
#iptables -A INPUT -p tcp --dport ssh --tcp-flags syn,ack,rst syn -m recent --set -j ACCEPT
Também não podemos esquecer de utilizar senhas seguras nos seus servidores, senhas com caracteres especiais, letras maiúsculas e minúsculas, números e um comprimento de pelo menos 14 caracteres. Sempre monitorar os logs procurando por tentativas de login que falharam muitas vezes.
Links:
Instalando fail2ban
Instalando block hosts
Instalando BFD
Artigo da CERT defesa contra força-bruta.
[]‘s
Últimos Comentários