Quem tem servidor WEB sempre sofre com alguns brute-forces que são feitos em FTP ou SSH(Linux), em um ambiente compartilhado, não há como limitar o acesso FTP a um cliente ou a vários clientes, imagina um cliente com Velox, GVT ou qualquer coisa que dê um IP dinâmico toda hora, é impraticável! Fim do mundo? Não, é ai que entra o Fail2Ban... ah tah, mas o que ele faz? Simples! Ele lê um arquivo que contenham as autenticações do sistema ou do serviço e baseado na política de tentativas de logins, irá banir um IP de continuar a tentar entrar no seu servidor. Vamos a prática.
(Sempre utilizo CentOS, então...)
1 - Instalação
# rpm -Uvh http://download.fedora.redhat.com/pub/epel/5/i386/epel-release-5-4.noarch.rpm
yum install fail2ban
2 - Configuração inicial
vim /etc/fail2ban/jail.conf
Dentro deste arquivo contém vários serviços a serem monitorados (Não significa que ele seja limitado, como expliquei o serviço feito pelo fail2ban é muito simples.)
No nosso caso iremos habilitar para SSH e VSFTPD
Procure a sessão ssh-iptables e edite da seguinte forma
[ssh-iptables]
enabled = true
filter = sshd
action = iptables[name=SSH, port=22, protocol=tcp]
sendmail-whois[name=SSH_Brute_Force, dest=root, sender=SEUEMAIL@SEUPROVEDOR.COM.BR]
logpath = /var/log/secure #Log que o Fail2Ban irá ler para encontrar falhas de login.
maxretry = 3 #Tentativas com erro máxima, caso muitas pessoas acessem, considere aumentar para 10.
Caso utilize o SSH em outra porta basta colocar port=PORTA, exemplo: Sua porta é 2234 port=2234
Para o VSFTP
[vsftpd-notification]
enabled = true
filter = vsftpd
action = sendmail-whois[name=VSFTPD_Brute_Force, dest=SEUEMAIL]
logpath = /var/log/secure
maxretry = 10
bantime = 6000
[vsftpd-iptables]
enabled = true
filter = vsftpd
action = iptables[name=VSFTPD, port=ftp, protocol=tcp]
sendmail-whois[name=VSFTPD_Brute_Force, dest=SEUEMAIL]
logpath = /var/log/secure
maxretry = 10
bantime = 6000
Após efetuar todas as configurações basta executar /etc/init.d/fail2ban restart em outro momento explico mais sobre o Fail2Ban.