segunda-feira, 25 de junho de 2012

Monitore e bloqueie ataques de força-bruta com Fail2Ban

Quem administra um servidor na Internet, como um wervidor web ou de e-mail, já deve ter reparado que constantemente esse servidor é vítima de uma tentativa de invasão através de um ataque de força bruta.

Se você, que administra esse tipo de servidor, nunca prestou atenção a isso, ou não sabe o que é um ataque de força-bruta, você está mal.

Um ataque de força bruta é a tentativa de descobrir a senha de um serviço através de tentativa e erro. Em um minuto, é possível testar milhares de combinações de usuário e senha. Se o teu servidor possui senhas fáceis, como palavras de um dicionário, em apenas uma noite é possível descobrir a senha. E sem muito esforço! Basta o atacante rodar um programa antes de ir dormir, e pela manhã a senha já terá sido descoberta.

Uma breve olhada no arquivo /var/log/auth.log mostra essa tentativa de invasão.

Jun 24 07:11:43 fpasrv053 sshd[13322]: Failed password for root from 193.104.68.200 port 47832 ssh2
Jun 24 07:11:52 fpasrv053 sshd[13331]: Failed password for root from 193.104.68.200 port 50149 ssh2
Jun 24 07:11:56 fpasrv053 sshd[13334]: Failed password for root from 193.104.68.200 port 52343 ssh2
Jun 24 07:12:01 fpasrv053 sshd[13336]: Failed password for root from 193.104.68.200 port 53371 ssh2
Jun 24 07:12:05 fpasrv053 sshd[13374]: Failed password for root from 193.104.68.200 port 54521 ssh2
Jun 24 07:12:09 fpasrv053 sshd[13376]: Failed password for root from 193.104.68.200 port 55599 ssh2
Jun 24 07:12:14 fpasrv053 sshd[13379]: Failed password for root from 193.104.68.200 port 56627 ssh2
Jun 24 07:12:18 fpasrv053 sshd[13382]: Failed password for root from 193.104.68.200 port 57748 ssh2
Jun 24 07:12:22 fpasrv053 sshd[13384]: Failed password for root from 193.104.68.200 port 58770 ssh2
Jun 24 07:12:26 fpasrv053 sshd[13387]: Failed password for root from 193.104.68.200 port 59630 ssh2
Jun 24 07:12:30 fpasrv053 sshd[13390]: Failed password for root from 193.104.68.200 port 60586 ssh2
Jun 24 07:12:34 fpasrv053 sshd[13392]: Failed password for root from 193.104.68.200 port 1633 ssh2
Jun 24 07:12:38 fpasrv053 sshd[13394]: Failed password for root from 193.104.68.200 port 2598 ssh2
Jun 24 07:12:43 fpasrv053 sshd[13396]: Failed password for root from 193.104.68.200 port 3601 ssh2
Jun 24 07:12:47 fpasrv053 sshd[13399]: Failed password for root from 193.104.68.200 port 4635 ssh2
Jun 24 07:12:52 fpasrv053 sshd[13404]: Failed password for root from 193.104.68.200 port 5725 ssh2
Jun 24 07:12:55 fpasrv053 sshd[13406]: Failed password for root from 193.104.68.200 port 6758 ssh2
Jun 24 07:13:00 fpasrv053 sshd[13409]: Failed password for root from 193.104.68.200 port 7586 ssh2
Jun 24 07:13:04 fpasrv053 sshd[13414]: Failed password for root from 193.104.68.200 port 8666 ssh2
Jun 24 07:13:07 fpasrv053 sshd[13452]: Failed password for root from 193.104.68.200 port 9680 ssh2
Jun 24 07:13:12 fpasrv053 sshd[13454]: Failed password for root from 193.104.68.200 port 10524 ssh2

Neste exemplo vemos o ip 193.104.68.200 tentando descobrir a senha do root através de uma conexão ssh. Repare também que ele tenta uma senha a cada 4 segundos, algo até lento para esse tipo de ataque.

O Fail2Ban trabalha lendo vários arquivos de log, como o auth.log, o daemon.log, o proftpd.log, e muitos outros, procurando por evidências de um ataque, e bloqueia o endereço de origem do ataque através do Iptables.

Para instalá-lo, use o apt-get install fail2ban. Seus arquivos de configuração estão localizados em /etc/fail2ban, embora sua configuração padrão funcione muito bem.