在 CentOS 7 上,我一直在嘗試不同的firewalld規則和iptables指令,現在想重新做一遍,但只使用firewalld。
問題
如何將所有規則重設為 CentOS 7 的 firewalld 附帶的預設值?
答案1
以下程式碼可能對您有幫助。
for srv in $(firewall-cmd --list-services);do firewall-cmd --remove-service=$srv; done firewall-cmd --add-service={ssh,dhcpv6-client} firewall-cmd --runtime-to-permanent
問候,
阿默·曼蘇爾
答案2
如果你真的想像約翰·阿什普爾(John Ashpool)所說的那樣刪除所有內容
rm -rf /etc/firewalld/zones
或 /usr/etc/firewalld/zones 取決於您的發行版
和
iptables -X
iptables -F
iptables -Z
加
systemctl restart firewalld
然後你就有了一套新的規則和區域;)
答案3
/etc/firewalld/zones
您可以簡單地從(或/usr/etc/firewalld/zones
,取決於發行版)中刪除包含自訂區域規則的檔案。之後,firewalld
使用重新加載firewall-cmd --complete-reload
,它應該開始使用預設設定。當您變更區域規則時,檔案將再次出現在該目錄中。
至於iptables
,您可以使用 重置所有規則iptables -F
。除非您實施了某種持久性,否則重新啟動也有效。請注意,它firewalld
可能被配置為用作iptables
其後端,這意味著它將iptables
根據您在其區域規則中指定的內容自行新增或刪除規則。
答案4
zones
發行版附帶的任何預設值(如果進行了修改)都會複製到/etc/firewalld/zones
包含這些修改的目錄中。
這也意味著區域文件的來源default
不是該目錄,並且重新安裝不知道該目錄(/etc/firewalld/zones
)下的文件,因此這些文件將untouched
透過重新安裝來獲得。除非這些檔案被刪除,否則firewalld 會繼續從此目錄載入您的修改。
您可以備份並(安全地)刪除所有這些文件,/etc/firewalld/zones
然後重新啟動firewalld,然後防火牆將返回預設發行版安裝的區域配置。
從某種意義上來說是安全的,預設分發區域配置預設允許 SSH。但是,如果您透過 22 以外的 SSH 連接埠或透過 SSH 以外的任何其他方式登入此伺服器,那麼您需要小心,從
/etc/firewalld/zones
sudo cp -pR /etc/firewalld/zones /etc/firewalld/zones.bak
sudo rm -f /etc/firewalld/zones/*
sudo systemctl restart firewalld
如果修改了任何其他設定文件,可以重新安裝firewalld本身,但需要下載firewalld RPM才能重新安裝。
安裝yum-downloadonly
插件:
(RHEL5)
# yum install yum-downloadonly
(RHEL6, RHEL7)
# yum install yum-plugin-downloadonly
在使用該插件之前,請檢查並/etc/yum/pluginconf.d/downloadonly.conf
確認該插件是enabled=1
# yum install --downloadonly --downloaddir=/tmp firewalld
# rpm -ivh --force /tmp/firewalld*.rpm
BTW
yum reinstall firewalld
不會替換修改後的設定檔。