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


9

Digamos que se deseje ter uma lista de endereços IP bloqueados.

Eu vi o seguinte exemplo de script:

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 milhares de linhas, que se transformam em milhares de entradas de tabelas de ip, sãs?

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


2
Parece que você encontrou a resposta para sua pergunta. Nesse caso, você deve retirar a resposta da sua pergunta e usar o botão "Responda à sua pergunta" e postar a resposta lá. Então, você pode aceitar sua resposta e as coisas serão muito mais bem organizadas.
Scott Severance

@ScottSeverance feito como você sugere, no entanto, leva 4 horas até que alguém possa aceitar a resposta automática.
Tzury Bar Yochay

Respostas:


8

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 contém milhares de itens, o desempenho do iptables diminui (na verdade, o desempenho do netfilter, assim que o iptables é apenas uma ferramenta para gerenciar o firewall). Sua carga de CPU também pode aumentar. Felizmente, existe uma solução perfeita - ipsets

O IPSet é a ferramenta perfeita se você deseja:

  • Armazene vários endereços IP ou números de porta e combine com a coleção por iptables de uma só vez;
  • Atualize dinamicamente as regras do iptables em endereços IP ou portas sem penalização de desempenho;
  • Expresse conjuntos de regras complexos baseados em endereço IP e portas com uma única regra de tabelas de ip e se beneficie da velocidade dos conjuntos de IP

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

Em seguida, execute o seguinte

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

Adicione-o à sua cadeia de iptables. Pode variar dependendo das configurações do firewall. Aqui usamos cadeia de etina.

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

Agora você pode adicionar todos os IPs ruins ao seu ipset. Por exemplo, você tem um arquivo de texto chamado bots.txt com um IP por linha. Portanto, 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

obrigado pela resposta. Aqui está um rápido tutorial sobre ipset para aqueles que não estão familiarizados com ipset (como eu 8-) - linuxjournal.com/content/advanced-firewall-configurations-ipset
Tzunghsing David Wong
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.