Quantas instruções podem ser colocadas no iptables sem perder a sanidade do sistema?

8

Digamos que alguém deseje ter uma lista de endereços IP bloqueados.

Eu vi o seguinte script de exemplo:

BLOCKDB="/path/to/ip.blocked.file"
# omit comments lines
IPS=$(grep -Ev "^#" $BLOCKDB)
for i in $IPS
do
    iptables -A INPUT -s $i -j DROP
    iptables -A OUTPUT -d $i -j DROP
done

São vários milhares de linhas, que se transformam em milhares de entradas no iptables, são?

Qual é o limite máximo, além do qual a eficiência do sistema será significativamente afetada?

    
por Tzury Bar Yochay 04.11.2011 / 08:57

1 resposta

6

Acho que encontrei uma solução através deste artigo e o IPSet parece ser a resposta

Em suma:

Se o conjunto de endereços IP contiver milhares de itens, o desempenho do iptables diminuirá (na verdade, o desempenho do netfilter, assim que o iptables for apenas uma ferramenta para gerenciar o firewall). Sua carga de CPU pode aumentar também. Felizmente, há uma solução perfeita - ipsets

O IPSet é a ferramenta perfeita se você quiser:

  • Armazene vários endereços IP ou números de portas e compare com o coleção pelo iptables de uma só vez;
  • Atualize dinamicamente o iptables regras contra endereços IP ou portas sem penalidade de desempenho;
  • Expresse conjuntos de regras de endereço IP e portas complexas com um único iptables regem e se beneficiam da velocidade dos conjuntos de IPs

A instalação do ipset é direta sudo apt-get install ipset

Em seguida, execute o seguinte

ipset -N autoban iphash ––hashsize 4096 ––probes 2 ––resize 50

Adicione à sua cadeia de iptables. Pode diferir dependendo das configurações do seu firewall. Aqui nós usamos a cadeia ethin.

iptables -I ethin 2 -p tcp -m multiport ––dport 80,443 -m set ––match-set autoban src -j DROP

Agora você pode adicionar todo o IP incorreto ao seu ipset. Por exemplo, você tem um arquivo de texto chamado bots.txt com um IP por linha. Então você pode adicioná-los ao ipset usando o script bash simples:

for i in $( cat /tmp/bots.txt ) ; do ipset -A autoban $i ; done

Para verificar a execução:

ipset -L autoban
    
por Tzury Bar Yochay 06.11.2011 / 04:09

Tags