A segurança tem se tornado a cada ano um requisito de suma importância para um bom funcionamento dos serviços online, onde administradores de sistemas devem tomar muito cuidado quanto a sua correta configuração e também nos mecanismos que garantam toda a segurança necessária para o sistema.
Em meio a esse cenário, foi criado um projeto chamado de
Fail2ban tendo como seu principal objetivo o desenvolvimento de uma ferramenta onde auxilia na prevenção de ataques de força bruta em serviços.
A Fail2ban fica regularmente monitorando os logs dos mais diversos serviços, mas pode ser configurado para atender aos serviços especificados com mais agilidade.
Abaixo descrevo de forma sucinta o procedimento de instalação do Fail2ban e sua integração com o serviço
Postfix.
Como instalar o Fail2ban
A instalação pode ser feita por sourcecode ou via apt-get no
Ubuntu e seus derivados, irei demostrar os passos oficiais contidos no manual de instalação na página do projeto.
Requisitos:
- Python 2.4 ou superior para suporte à ferramenta que é desenvolvida em Python
- iptables
- tcp-wrappers
- Gamin (é um monitor de alterações de arquivos)
Você vai precisar de obter a última versão do código-fonte para compilar Fail2ban. Depois de ter feito isso, altere para o diretório onde você fez o download do código-fonte e execute o seguinte comando:
# tar xvjf fail2ban-xxxtar.bz2
Feito isso terá o código-fonte extraído para um diretório sob o diretório de trabalho atual. Você deve agora passar para o novo diretório onde o Fail2ban foi descompactado e executar o seguinte script de instalação:
# ./setup.py install
Fail2ban agora foi instalado em
/usr/share/fail2ban/ e em
/usr/bin/. Agora você está pronto para usar o aplicativo.
Mas como integrar Fail2ban na inicialização?
Vá para a pasta/arquivos onde você extraiu os fontes:
# cd /usr/local/src/fail2ban-0.8.1/files
E copie o script de inicialização de acordo com a sua distribuição para
/etc/init.d:
# cp suse-initd /etc/init.d/fail2ban
# chmod 755 /etc/init.d/fail2ban
O Debian script padrão está faltando no branch master de arquivos atualmente; mas poderia ser obtido a partir da filial Debian:
Finalmente depois de copiar/editar o arquivo init, ajuste os caminhos para o cliente Fail2ban e execute chkconfig fail2ban-server ou update-rc.d ou mesmo crie os links simbólicos manualmente:
# chkconfig -a fail2ban
Ou:
# update-rc.d fail2ban defaults
Ou:
# ln -s /etc/init.d/fail2ban /etc/rc2.d/S20fail2ban
Integrar Fail2ban em logrotate
Criar o arquivo
/etc/logrotate.d/fail2ban:
/var/log/fail2ban.log {
weekly
rotate 7
missingok
compress
postrotate
/usr/local/bin/fail2ban-client set logtarget /var/log/fail2ban.log >/dev/null
endscript
}
Tem casos que o caminho para o cliente Fail2ban pode precisar de ser ajustado. Veja com o comando:
# whereis fail2ban-client
De acordo com o site oficial há um bug com os atuais (0.8.4-27) Fedora e Red Hat o que impedirá chroot de iniciar a menos que o SELinux esteja desativado. Em um servidor sem alterações de configuração não será iniciado e será gerado um arquivo de log do Fail2ban (pesquisar por "logtarget" em fail).
Logo após vamos configurar alguns parâmetros para o serviço Postfix. Ir no arquivo de configuração
/etc/fail2ban/jail.conf e fazer a seguinte alteração nos campos:
[postfix-tcpwrapper]
enabled = true
filter = postfix
action = hostsdeny[file=/etc/hosts.deny]
sendmail[name=Postfix, dest=you@yourdomain.com]
logpath = /var/log/postfix.log
bantime = -1
ignoreip = 127.0.0.1/8
FindTime = 300
maxretry = 5
Estes são os parâmetros e seus significados:
- enable - ativa o filtro através do boolean verdadeiro ou falso.
- action - que medidas está a tomar. Aqui o IP será bloqueado via tcp-wrappers e um e-mail será enviado para mim.
- logpath - caminho para o arquivo de log.
- bantime - a quantidade de tempo que deseja banir o IP, o valor deve ser em segundos, como 300, valor negativo significa proibição permanente.
ignoreip - lista de IPs a ignorar, garantir que você adicione o seu próprio.
FindTime - a quantidade de tempo em que as conexões serão feitas após qual o IP fica bloqueado.
maxretry - número de tentativas até que a conexão seja bloqueada.
Agora adicione o filtro abaixo em <em>/etc/fail2ban/filter.d/postfix.conf</em>. Abaixo quaisquer filtros atuais:
failregex = warning: (.*)[]: SASL LOGIN authentication failed
Isto diz ao Fail2ban para verificar esta linha particular e proibir o IP anfitrião. Feito isso o Fail2ban está pronto para trabalhar auxiliando os administradores de sistemas.