動態黑名單:

動態黑名單:

如果封包計數每秒大於 2 個(為了測試而減少封包計數),我會嘗試封鎖來自伺服器的 icmp ping。我分別嘗試了這兩條規則,但它們似乎沒有幫助:

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,但 ping 繼續得到回應 -

ping -n -i 0.2 192.168.2.86

另外,當我檢查 iptables -nvL 輸出時 - 規則的資料包計數沒有增加...

使用的機器是centos 6.8

一些進展:我在表末尾添加了預設刪除規則:

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

然後新增此規則會丟棄超出限制的 ping

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

相關內容