Introdução e Instalação do fail2ban Introdução
O aplicativo fail2ban, é um agente que monitora os logs, e verifica a quantidade de tentativas de conexão sem sucesso, bloqueando o IP suspeito, após determinado número de insucessos.
O fail2ban pode monitorar a tentativa de login nos serviços ssh, pam, xinetd, apache, vsftpd, proftpd, wuftpd, postfix, couriersmtp, courierauth, sasl e named, e em uma ação pró-ativa bloquear o possível ataque, adicionando uma regra no firewall.
O fail2ban é eficaz em parar ataques de força bruta (brute force), que são comum a hosts conectados à Internet, de maneira elegante, confiável e funcional, sem causar prejuízos aos usuários autênticos dos sistemas e serviços oferecidos.
Este aplicativo pode ser encontrado em sua página oficial Apenas usuários registrados e ativados podem ver os links., Clique aqui para se cadastrar..., ele é desenvolvido na linguagem python, que o torna portável para praticamente todo sistema operacional.
Em seu site oficial, na seção de downloads (Apenas usuários registrados e ativados podem ver os links., Clique aqui para se cadastrar...), encontra-se a lista de distribuições que já possuem pacotes para seus fontes. No momento em que este artigo foi escrito, as distribuições eram: Gentoo, Debian, Ubuntu, Fedora, Red Hat/CentOS, Gral Linux, Ipcop, Mandriva, SUSE, openSUSE, ArchLinux, Slackware, FreeBSD e Mac OS X.
Instalação do fail2ban
Requisitos: python-2.3 ou superior (Apenas usuários registrados e ativados podem ver os links., Clique aqui para se cadastrar...).
Requisitos Opcionais: gamin-0.0.21 ou superior (Apenas usuários registrados e ativados podem ver os links., Clique aqui para se cadastrar...).
Instalação pelos fontes:
$ wget Apenas usuários registrados e ativados podem ver os links., Clique aqui para se cadastrar...
$ tar xvfj fail2ban-0.8.4.tar.bz2 -C /tmp
$ cd /tmp/fail2ban-0.8.4
# python setup.py install
Instalação em Debian-like:
# aptitude install fail2ban
Instalação em RedHat-like:
1º baixe o rpm adequando para versão Enterprise Linux(EL) utilizada:
EL6:
$ wget Apenas usuários registrados e ativados podem ver os links., Clique aqui para se cadastrar...
EL5:
$ wget Apenas usuários registrados e ativados podem ver os links., Clique aqui para se cadastrar...
EL4:
$ wget Apenas usuários registrados e ativados podem ver os links., Clique aqui para se cadastrar...
2º Considerando Centos 5.5, proceda com o comando abaixo para configurar o repositório EPEL:
$ wget Apenas usuários registrados e ativados podem ver os links., Clique aqui para se cadastrar...
# rpm -ivh epel-release-5-3.noarch.rpm
3º e ultimo passo, instalar o fail2ban:
# yum install fail2ban
Configuração para fail2ban
Após a instalação o fail2ban disponibilizará o diretório de configuração "/etc/fail2ban".
# ls /etc/fail2ban/
action.d fail2ban.conf filter.d jail.conf
Os arquivos interessantes para configuração são os "fail2ban.conf" e "jail.conf", vejamos primeiro o fail2ban.conf.
Código:
... [Definition] # Option: loglevel # Notes.: Set the log level output. # 1 = ERROR # 2 = WARN # 3 = INFO # 4 = DEBUG # Values: NUM Default: 3 # loglevel = 3 # Option: logtarget # Notes.: Set the log target. This could be a file, SYSLOG, STDERR or STDOUT. # Only one log target can be specified. # Values: STDOUT STDERR SYSLOG file Default: /var/log/fail2ban.log # logtarget = /var/log/fail2ban.log
As linhas importantes deste arquivo são a "loglevel = 3" e "logtarget = /var/log/fail2ban.log", que definem o nível de informação no log e o arquivo de log do fail2ban, para acompanhamento e possíveis correções.
Já no arquivo "/etc/jail.conf", é onde tem-se a maior parte da configuração.
Código:
... [DEFAULT] # "ignoreip" can be an IP address, a CIDR mask or a DNS host ignoreip = 127.0.0.1 bantime = 600 maxretry = 3 ...
ignoreip : É listado os endereços de IP (ex.: 127.0.0.1), ou Mascara CIDR-Classless Inter Domain Routing (ex.: 192.168.12.0/23, onde 192.168.12.0/23 = 192.168.12.0/24 + 192.168.13.0/24), ou DNS host (ex.: perfumes.incolume.com.br ou brito.blog.incolume.com.br), que deverão ser ignorados pelo fail2ban;
bantime : É definido o tempo em segundos, que o IP ofensor ficará banido e/ou bloqueado para o serviço;
maxretry : É definido a quantidade máxima de tentativas de acesso.
Código:
... # Destination email address used solely for the interpolations in # jail.{conf,local} configuration files. destemail = root@localhost # ...
Código:
... # Default banning action (e.g. iptables, iptables-new, # iptables-multiport, shorewall, etc) It is used to define # action_* variables. Can be overriden globally or per # section within jail.local file banaction = iptables-multiport ...
Código:
... [ssh] enabled = true port = ssh filter = sshd logpath = /var/log/auth.log maxretry = 6 sendmail-whois[name=SSH, dest=brito@incolume.com.br, sender=perfumes@incolume.com.br] ...
Finalmente a definição de segurança para os serviços, os quais estão destacados entre colchetes como no fragmento acima, [ssh], [pam-generic], e assim sucessivamente. Estre trecho conterá as mesmas diretivas, para qualquer serviço configurado.
enabled : habilita ou desabilita a verificação do serviço;
port : a porta na qual o serviço esculta;
filter : padrão que será utilizada para identificação do filtro;
logpath : arquivo de log com caminho completo;
maxretry : quantidade máxima de tentativas de acesso;
sendmail-whois : a configuração de notificação por email, sender=remetente, dest = destinatário e name = Assunto.
Comment