'iptables' redirecionando endereços IP específicos

3

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 ?

    
por Bradley 12.03.2012 / 13:26

5 respostas

7

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.

    
por 12.03.2012 / 13:49
5

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.

    
por 12.03.2012 / 13:29
4

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.

    
por 12.03.2012 / 13:58
1

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 .

    
por 09.07.2012 / 00:49
0

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.

    
por 09.07.2012 / 01:45

Tags