динамический черный список:

динамический черный список:

Я пытаюсь заблокировать icmp-пинги с сервера, если количество пакетов больше 2 в секунду (количество пакетов уменьшено для тестирования). Я попробовал эти 2 правила по отдельности, но они, похоже, не помогают:

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

что не так с этими правилами?

Я отправляю пинг с другого сервера, используя следующую команду, но пинг продолжает приносить ответы -

ping -n -i 0.2 192.168.2.86

также, когда я проверяю вывод iptables -nvL - количество пакетов для правила не увеличивается ...

Используемая машина — Centos 6.8

Некоторый прогресс: я добавил правило удаления по умолчанию в конец таблицы:

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

а затем добавление этого правила отбрасывало пинги, которые превышали лимит

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

все еще не удалось полностью заблокировать сервер.

решение1

Вот так, добавляем вторичную цепь ICMPSCAN (и помещаем правило перехода в первую позицию цепи 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

Примечание: оба правила установки/обновления можно было бы задать в INPUT без вторичного, но я предпочитаю помещать такие правила в отдельные цепочки.

Примечание 2: можно добавить дополнительное правило после --set для регистрации события...

динамический черный список:

Теперь, чтобы добавить постоянный динамический черный список на основе триггера недавнего количества посещений, мы можем воспользоваться функцией ipset. ipset доступен для centos 6.x, а iptables поддерживает ipset, но вам может потребоваться сначала установить его.

Вот правила iptables/ipset, которые соответствуют вашим потребностям:

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

Вы можете просмотреть текущее содержимое списка забаненных, используя ipset list, например:

# 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

и управлять списком настроек, например, для удаления IP-адреса, например:

# ipset del banned_hosts 192.168.122.1

Смотрите также эту страницу:http://www.linuxjournal.com/content/advanced-firewall-configurations-ipset

Связанный контент