概括
我試圖了解如何將規則保持在 IPtables 中的鏈之上。我想將我的自訂鏈(作為規則)保留在 INPUT 鏈的頂部,即作為鏈中的第一條規則。
設定
- 自訂鏈(我想將其保留在 INPUT 鏈的頂部)
- fail2ban 根據禁令狀態產生(我認為建立和刪除)鏈
當前行為:
在設定自訂鏈時,我可以將其設定為規則 1。
感謝您的幫忙!如果這個問題已經得到解答,我深表歉意。不幸的是,我在建議的問題中找不到它。
答案1
Fail2ban 由於這行(例如在 中iptables-multiport
)將在鏈中的第一個 plaice 處新增規則INPUT
,該規則通常會插入此行(例如簡單的 sshd監獄、IPv4 等):
# <iptables> -I <chain> -p <protocol> -m multiport --dports <port> -j f2b-<name>
iptables -I INPUT -p tcp -m multiport --dports ssh -j f2b-sshd
所以你有兩種可能性來做到這一點:
- 要麼建立另一個鏈(例如
F2B
),將其新增至 INPUT 中的第一個鏈之後,並在fail2ban 配置中指定其名稱,而不是 INPUT。例如建立新的/etc/fail2ban/action.d/iptables-common.localchain
並用您自己的所有fail2ban鏈覆蓋:
[Init]
chain = F2B
或在 中指定其名稱jail.local
,例如在預設部分或每個監獄中:
[DEFAULT]
banaction = %(known/banaction)s[chain=F2B]
banaction_allports = %(known/banaction_allports)s[chain=F2B]
- 指定鏈中自己的規則編號(預設為 1)。因此,不要將鏈設置為
F2B
,而是在本地通用配置中使用chain = INPUT 2
,或像這裡一樣jail.local
:
[DEFAULT]
banaction = %(known/banaction)s[chain="INPUT 2"]
banaction_allports = %(known/banaction_allports)s[chain="INPUT 2"]
在這種情況下,fail2ban將插入上述新增規則(對於sshd監獄),如下所示:
- iptables -I INPUT -p tcp -m multiport --dports ssh -j f2b-sshd
+ iptables -I INPUT 2 -p tcp -m multiport --dports ssh -j f2b-sshd
在這兩種情況下,請確保(例如使用服務相依性)該鍊F2B
和您自己的鏈已新增至 iptables 中(fail2ban 將在您進行變更後啟動)。