IPtables 鏈號持久性 - 我怎麼能將第一條規則保持在首位?

IPtables 鏈號持久性 - 我怎麼能將第一條規則保持在首位?

概括

我試圖了解如何將規則保持在 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

所以你有兩種可能性來做到這一點:

  1. 要麼建立另一個鏈(例如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. 指定鏈中自己的規則編號(預設為 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 將在您進行變更後啟動)。

相關內容