lista negra dinâmica:

lista negra dinâmica:

Estou tentando bloquear pings icmp de um servidor se a contagem de pacotes for maior que 2 por segundo (contagem de pacotes reduzida para teste). Tentei essas 2 regras separadamente, mas elas não parecem ajudar:

iptables -A INPUT -p icmp --icmp-type echo-request -m recent --update --seconds 1 --hitcount 2 -j DROP

iptables -A INPUT -p icmp --icmp-type echo-request -j ACCEPT --match limit --limit 2/s --limit-burst 2

o que há de errado com essas regras?

Estou executando ping em outro servidor usando o comando abaixo, mas o ping continua recebendo respostas -

ping -n -i 0.2 192.168.2.86

também quando verifico a saída iptables -nvL - a contagem de pacotes da regra não está aumentando ...

Máquina usada é centos 6.8

Algum progresso: adicionei uma regra de eliminação padrão no final da tabela:

iptables -A INPUT -p icmp -m icmp -j DROP

e, em seguida, adicionar esta regra eliminou pings que excederam o limite

iptables -A INPUT -p icmp -m icmp --icmp-type 8 -m limit --limit 2/second -j ACCEPT -m comment --comment "icmprule1"

ainda não consegui bloquear o servidor completamente.

Responder1

Aqui vai, adicionando uma cadeia ICMPSCAN secundária (e colocando a regra de salto na primeira posição da cadeia INPUT):

iptables -N ICMPSCAN
iptables -I INPUT -p icmp -m icmp --icmp-type echo-request -j ICMPSCAN 
iptables -A ICMPSCAN -m recent --set --name badicmp --rsource 
iptables -A ICMPSCAN -m recent --update --seconds 1 --hitcount 2 --name badicmp --rsource -j DROP

Nota: ambas as regras de configuração/atualização podem ser definidas em INPUT sem o secundário, mas prefiro colocar essas regras em cadeias distintas.

Nota2: uma regra adicional após --set pode ser adicionada para registrar o evento...

lista negra dinâmica:

Agora, para adicionar uma lista negra dinâmica permanente com base no acionador de contagem de acessos recente, podemos aproveitar as vantagens do recurso ipset. ipset está disponível para centos 6.x e iptables reconhece ipset, mas pode ser necessário instalá-lo primeiro.

Aqui estão as regras do iptables/ipset para atender à sua necessidade:

iptables -F ICMPSCAN
iptables -N ICMPSCAN
ipset -N banned_hosts iphash
iptables -I INPUT -p icmp -m icmp --icmp-type echo-request -j ICMPSCAN 
iptables -A ICMPSCAN -m recent --set --name badicmp --rsource 
iptables -A ICMPSCAN -m recent --update --seconds 1 --hitcount 2 --name badicmp --rsource -j SET --add-set banned_hosts src
iptables -A ICMPSCAN -m set --set banned_hosts src -j DROP

Você pode listar o conteúdo atual da lista de banidos usando a lista ipset, por exemplo:

# ipset list banned_hosts
Name: banned_hosts
Type: hash:ip
Header: family inet hashsize 1024 maxelem 65536
Size in memory: 8284
References: 2
Members:
192.168.122.1

e gerenciar o set list, por exemplo, para remover um endereço IP como:

# ipset del banned_hosts 192.168.122.1

Veja também esta página:http://www.linuxjournal.com/content/advanced-firewall-configurations-ipset

informação relacionada