iptables, bloqueando grandes números de endereços IP

5

Estou tentando bloquear os endereços IP de forma relativamente automatizada, se eles parecem ser um conteúdo de "screen scraping" dos sites que hospedamos. No passado isso foi conseguido por alguns engenhosos scripts perl e pelo pf do OpenBSD. O pf é ótimo porque você pode fornecer boas tabelas de endereços IP e lidar com o bloqueio de maneira eficiente com base nelas. No entanto, por várias razões (antes do tempo), eles decidiram mudar para o CentOS. O iptables não fornece nativamente a capacidade de bloquear grandes números de endereços (foi-me dito que não era incomum estar bloqueando mais de 5000), e estou um pouco cauteloso ao adicionar muitas regras em um iptable.

O ipt_recent seria ótimo para fazer isso, além de fornecer muita flexibilidade para diminuir o acesso severamente, mas há um bug no kernel do CentOS que está me impedindo de usá-lo (reportado, mas aguardando correção). / p>

Usar o ipset envolveria a compilação de uma versão mais atualizada do iptables do que com o CentOS que, embora seja perfeitamente capaz de fazê-lo, prefiro não fazer uma perspectiva de correção, segurança e consistência.

Diferente dos dois, parece que o nfblock é uma alternativa razoável. Alguém está ciente de outras maneiras de conseguir isso? As minhas preocupações sobre vários milhares de endereços IP no iptables como regras individuais são infundadas?

    
por Twirrim 06.03.2010 / 23:48

4 respostas

4

iptables é a ferramenta userland para manipular o netfilter. netfilter é o código no kernel que manipula a filtragem de pacotes. Contextualmente, alterar a ferramenta userland só mudaria sua experiência e não o modo como a filtragem funciona.

Eu nunca encontrei uma limitação no Linux com a quantidade de regras especificadas e tenho usado o Linux para firewall, já que a ferramenta userland era ipfwadm . É notável que o Netfilter não foi introduzido no Linux até que o kernel 2.4.xe ipfwadm fosse a interface para o ipfw não netfilter. O OpenBSD é ótimo para um firewall se você puder continuar usando-o em seu ambiente.

A limitação provavelmente será uma limitação física com base nos recursos do sistema, com foco na quantidade de RAM disponível. Se você encontrar problemas, talvez seja necessário ajustar as configurações máximas de conexão IP do Linux no kernel. É improvável que você encontre uma dessas situações no hardware moderno com uma distribuição Linux moderna.

Se você gostaria de discutir os detalhes mais sutis do netfilter, talvez seja melhor promover este diálogo nas listas de discussão do netfilter, já que eles serão os especialistas no assunto.

Se isso não responder à sua pergunta, fique à vontade para esclarecer e ficaremos felizes em revisá-la.

O usuário do Netfilter atinge limitações de memória limitando os limites do netfilter

    
por 07.03.2010 / 20:30
2

A melhor maneira de bloquear uma grande quantidade de endereços IP sem causar muita pressão sobre o kernel é nulo roteando-os com o comando:

root@machine# ip route add blackhole 192.168.1.1/32

iptables não é adequado para muitas regras.

link

    
por 28.08.2012 / 11:50
1

Eu acho que o bug que ele referenciou está no código netfilter, especificamente no módulo ipt_recent. Eu pareço limitado a 4k (32 bits) e 8k (64 bits).

veja:

link

    
por 28.08.2012 / 10:15
0

5000 regras não são um problema, no entanto, existe um link que se sai muito bem em lidar com um enorme número de regras.

    
por 10.03.2010 / 15:56