Atualizações manuais do iptables são boas, se forem apenas alguns endereços IP.
Se houver muitos deles, dê uma olhada em Fail2Ban para atualizações automáticas do firewall , de um script python que analisa seu arquivo de log do Apache, por exemplo.
Eu gerencio vários websites de alto tráfego e sofro de usuários abusivos.
Gostaria de firewallizá-los e direcioná-los para dizer apache
on port 8080
exibindo uma mensagem como
You have been blocked, contact blabla
Isso é possível com iptables
?
Atualizações manuais do iptables são boas, se forem apenas alguns endereços IP.
Se houver muitos deles, dê uma olhada em Fail2Ban para atualizações automáticas do firewall , de um script python que analisa seu arquivo de log do Apache, por exemplo.
Claro.
/sbin/iptables -t nat -A PREROUTING -p tcp --dport 80 -s w.x.y.z -j DNAT --to-destination a.b.c.d:8080
em que w.x.y.z
é um endereço hostil e a.b.c.d
é o seu próprio endereço.
O cjc ofereceu a você fail2ban
, que é uma excelente ferramenta.
Você não especificou o que é "alto tráfego" e se seus servidores da Web usam muita CPU ou não. Se você tem alguns ciclos de CPU para gravar, o mod_security também é excelente para bloquear visitantes indesejados. Ele pode bloquear os endereços IP conhecidos na lista negra imediatamente e também pode bloquear solicitações que contenham algumas coisas desagradáveis.
mod_security contém muitos conjuntos de regras prontos para uso e você pode fazer o download de mais informações na rede e / ou criar suas próprias regras. Considere-o como um SpamAssassin para o tráfego HTTP.
Dependendo de suas necessidades, mod_security pode ser um exagero para você e fail2ban
é uma solução melhor. Dê uma olhada no mod_security e decida por si mesmo.
Existe alguma razão para não usar o próprio Apache?
<Directory />
Allow from any
Deny from 198.51.100.37
Order allow,deny
</Directory>
O resultado de um usuário vindo de 198.51.100.37 é um erro 403
.
Como outros sugeriram, você pode usar fail2ban, mod_security, mod_evasive e até redirecioná-los para outro host (o último é simplesmente inútil porque você desperdiçará recursos).
Minha abordagem é um pouco diferente - normalmente, limito o máximo de conexões que um IP pode ter para uma porta específica por segundo. Por exemplo, defino em algum lugar perto de 20 a 30 conexões por segundo por IP:
iptables -p tcp --dport 80 -m connlimit --connlimit-above 20 -j DROP
Então, se alguém está inundando seu servidor, isso ajudará a pará-lo. Também recomendaria usar o fail2ban, pois é a melhor ferramenta que você encontraria. Ele poderia analisar praticamente todo tipo de log que você jogue nele e você pode personalizar as ações que o fail2ban executará contra os usuários.
P.S. Você também pode verificar minha resposta a uma pergunta DoS / DDoS semelhante aqui o que poderia ajudá-lo.
Tags iptables