Tabela de conteúdo |
O Fail2Ban é uma ferramenta que analisa as tentativas em portas, como por exemplo o SSH, quando um certo IP tenta realizar muitas conexões em uma porta sem sucesso, como se estivesse testando em um intervalo de tempo muito pequeno, existem grandes chances de um invasor esteja executando um software de força bruta contra os o serviço, é neste contexto que o Fail2Ban entra, ele vai detectar isso e banir este IP por um período de tempo usando o Iptables.
Para instalar o fail2ban no Debian Lenny e Ubuntu Server, basta instalar o pacote correspondente:
# apt-get install fail2ban
por padrão ele só vem ativo para olhar a porta 22.
Podemos escrever expressões regulares e filtrar quaisquer tipos de portas que sejam necessárias, contudo, dependendo do serviço desejado já existem configurações que podem vir a nos atender, veja os serviços que são oferecidos por padrão (/etc/fail2ban/fail2ban.conf):
[ssh-ddos] enabled = true [apache] enabled = true [apache-overflows] enabled = true [vsftpd] enabled = true [postfix] enabled = true [named-refused-udp] enabled = true [named-refused-tcp] enabled = true
a entrada enable pode ser true ou false, o ideal é deixar true somente os serviços que o servidor estiver efetivamente executando.
Crie o arquivo com a expressão regular que vai buscar as tentativas e com isso gerar as regras de bloqueio, com o seguinte conteúdo:
# vim /etc/fail2ban/filter.d/dovecot-pop3imap.conf [Definition] failregex = (?: pop3-login|imap-login): (?:Authentication failure|Aborted login \(auth failed|Aborted login \ \(tried to use disabled|Disconnected \(auth failed).*rip=(?P<host>\S*),.* ignoreregex =
e depois adicione a entrada que vai ativar nossa expressão regular ao arquivo de configuração:
# vim /etc/fail2ban/jail.conf [dovecot-pop3imap] enabled = true filter = dovecot-pop3imap action = iptables-multiport[name=dovecot-pop3imap, port="pop3,imap,pop3s,imaps", protocol=tcp] logpath = /var/log/mail.log maxretry = 20 findtime = 1200 bantime = 1200
reinicialize o serviço do fail2ban para ativar as novas configurações:
# /etc/init.d/fail2ban restart
pronto, nosso POP3 e IMAP estão mais seguros.
Edite o arquivo de interpretação de datas do fail2bain para que ele compreenda a saída de timestamp do Snort:
# vim /usr/share/fail2ban/server/datedetector.py
e adicione o seguinte:
# snort 08/23-20:03:12.062498
template = DateStrptime()
template.setName("Month/Day-Hour:Minute:Second[.Millisecond]")
template.setRegex("\d{2}/\d{2}-\d{2}:\d{2}:\d{2}")
template.setPattern("%m/%d-%H:%M:%S")
self.__templates.append(template)
isso vai casar com o padrão do alert_csv que definimos no Snort. Vamos agora criar a regra dentro do fail2ban:
# vim /etc/fail2ban/filter.d/p2p.conf [Definition] failregex = ,<HOST> ignoreregex =
e a regra no jail.conf:
# vim /etc/fail2ban/jail.conf [p2p] enabled = enable protocol = tcp port = 1:65535 filter = p2p logpath = /var/log/snort/p2p maxretry = 5
reinicialize o fail2ban para garantir que nosso ambiente vai estar de fato filtrando as entradas:
# /etc/init.d/fail2ban restart
pronto, nosso filtro em tempo real de P2P está configurado.
Podemos, como já sabemos, instalar tanto compilando pelo Ports, como pelos pacotes pré-compilados, vamos usar os pacotes pré-compilados por comodidade:
# pkg_add -r py26-fail2ban
se você não tiver todas as dependências, o pkg_add vai buscá-las, a principal dependência no caso é o Python. Vamos supor que você está com um sistema limpo e vai precisar instalar todos os pacotes necessários, então:
# pkg_add -r py26-sqlite3 py26-bsddb py26-gdbm
Uma vez instalado os pacotes, precisamos ativar o fail2ban que foi instalado por padrão em /usr/local como os outros ports externos aos programas oficiais. Vamos ativá-lo então:
# /usr/local/etc/rc.d/fail2ban rcvar >> /etc/rc.conf
edite o /etc/rc.conf e altere a entrada do fail2ban para:
# fail2ban fail2ban_enable="YES"
note que os arquivos de configuração no FreeBSD são um pouco diferentes no sentido de qual firewall utilizar. No nosso caso, como o FreeBSD não tem iptables e sim o ipfw, ative a linha relativa a ele em /usr/local/etc/fail2ban/jail.conf:
[ssh-ipfw] enabled = true
agora vamos testar inicializando o fail2ban:
# /usr/local/etc/rc.d/fail2ban start
pronto, nosso ambiente agora também tem o fail2ban executando.
Será necessário instalar o repositório do DAG, pois no padrão não existe o pacote fail2ban, depois de configurar este repositório, vamos instalar o seu pacote:
# yum install fail2ban
Podemos escrever expressões regulares e filtrar quaisquer tipos de portas que sejam necessárias, contudo, dependendo do serviço desejado já existem configurações que podem vir a nos atender, veja os serviços que são oferecidos por padrão (/etc/fail2ban.conf):
[Apache] enabled = false [SSH] enabled = true
sugerimos apenas ativar os módulos que interessam, diferente do Debian/Ubuntu, só temos 2 módulos por padrão, mas é mais simples editar uma mensagem para o usuário que for bloqueado, veja a entrada [MAIL], se você tiver um servidor de e-mail local, pode-se deixar ativado pois um e-mail será enviado para o administrador toda vez que um novo IP for bloqueado, em servidores com alto tráfego contudo, pode não ser interessante, já que o número de IPs bloqueados por dia pode ser grande.
--Brivaldo 08h59min de 23 de maio de 2011 (AMT)