
我正在尋找與ufw default deny
firewalld等效的東西;這個想法是,當我透過 SSH 登入我的新伺服器後,我想阻止所有傳入的新連接,以便我有時間更新和保護系統。我使用帶有firewalld的CentOS7。
答案1
要實施在預設區域上製定的豐富規則,以丟棄任何和所有 IPv4 流量:
firewall-cmd --zone=$(firewall-cmd --get-default-zone) \
--add-rich-rule='rule family=ipv4 source address=0.0.0.0/0 drop'
這模仿了ufw default deny
行為;若要改為發送 ICMP 拒絕訊息,請將 變更drop
為reject
。上述規則特定於 IPv4;對於 IPv6,請使用:
firewall-cmd --zone=$(firewall-cmd --get-default-zone) \
--add-rich-rule='rule family=ipv6 source address=::/0 drop'
經過調查,這會在 iptables 中新增一個條目後「接受相關且已建立」的連接,因此它不會破壞您現有的 ssh 會話。在我的測試中,產生的 iptables“鏈”(對於預設區域“public”):
INPUT -> INPUT_ZONES -> IN_public -> IN_public_deny
如果您希望在更新過程中重新啟動,請新增該--permanent
標誌。
如果您不希望在更新過程中重新啟動,則可以使用該--timeout
標誌,它接受諸如5s
、10m
或 之類的值15h
,分別表示「5 秒」、「10 分鐘」或「15 小時」。此類規則將在該超時期限後被刪除。
當您想要刪除已新增的規則時,只需firewall-cmd
像以前一樣運行,但替換--add-rich-rule
為--remove-rich-rule
;以 IPv4 為例:
firewall-cmd --zone=$(firewall-cmd --get-default-zone) \
--remove-rich-rule='rule family=ipv4 source address=0.0.0.0/0 accept'
參考:http://www.firewalld.org/documentation/man-pages/firewalld.richlanguage.html