Bloqueio de repetidas tentativas de login ao seu Linux
Esse artigo mostra como implementar um sistema de segurança para bloqueio de ataques brute-force em seu servidor SSH. Ao mesmo tempo também mostra como criar um esquema para permitir acesso remoto (para manutenção) a partir de qualquer IP da internet.
O problema
Trabalho em um órgão público e aqui temos uma rede
'não-muito-confiável' atendida por links ADSL e para variar, temos
que fazer a manutenção remota de vez em sempre e pra variar também,
nunca do mesmo local. Alguns dos admins usam linha discada de outros
locais da cidade e até do estado para acessar e bloquear este tipo de
acesso no firewall ficou fora de cogitação.
Desabilitar a autenticação login/senha e colocar no lugar autenticação por chaves também foi descartado.
Então, como fazer um eficiente controle de segurança do acesso externo de usuários legítimos e ainda assim bloquear na medida do possível os ataques de script-kidies que atualmente estão infestando os logs de qualquer servidor aberto na internet?
Procurei na internet algumas horas e achei duas soluções diferentes que atendem dois diferentes tipos de configuração:
Desabilitar a autenticação login/senha e colocar no lugar autenticação por chaves também foi descartado.
Então, como fazer um eficiente controle de segurança do acesso externo de usuários legítimos e ainda assim bloquear na medida do possível os ataques de script-kidies que atualmente estão infestando os logs de qualquer servidor aberto na internet?
Procurei na internet algumas horas e achei duas soluções diferentes que atendem dois diferentes tipos de configuração:
- Um conjunto de regras que limitam o número de novas conexões pelo SSH em um determinado intervalo de tempo;
- Um pacote feito em Python que monitora os logs e detecta tentativas
frustradas de login no servidor SSH (Apache também e segundo o autor,
pode ser estendido a qualquer outro tipo de serviço que gere logs em texto
plano) e adiciona regras de bloqueio por um tempo determinado no firewall.
Por fim, as regras clássicas, porém não menos importantes, para informar ao administrador do site QUEM se logou QUANDO e ONDE (hosts.allow, hosts.deny).
Eu gostaria de citar outros dois softwares que utilizo para bloquear IP´s de atacantes em meu servidor:
APF Firewall
http://www.rfxnetworks.com/apf.php
Descrição: Firewall baseado em IPTables de fácil configuração e muito eficiente. A configuração é feita através de um .conf simples onde são informadas as portas a serem liberadas/bloqueadas, além de outras funcionalidades tanto para portas tcp como udp, além de bloquear ataques via ICMP (Denial of Service por exemplo) pois possui embutido um "anti-DOS". Utiliza a lista negras de IP´s que é atualizada frequentemente através do site www.dshiel.org (Distributed Intrusion Detection System), onde constam os IP´s utilizados com maior frequência para fins ilícitos.
-------------------------------------------
BFD - Brute Force Detect
http://www.rfxnetworks.com/bfd.php
Descrição: Em conjunto com o APF Firewall, detecta tentativas de acesso não autorizada a serviços como SSH, Apache, EXIM, FTP, etc. Após 5 tentativas de acesso sem sucesso, o IP de origem é "dropado" no IpTables e o administrador do servidor pode ser avisado por e-mail.
Ambos são desenvolvidos pelo RFX Networks e são free e de uso irrestrito. Não é preciso manjar de IpTables, basta saber quais portais você quer liberar/fechar e eles fazem o trabalho.
É isso ai!
Abraço, Fernando.