在 CentOS 7 上,我一直在尝试不同的 Firewalld 规则和 iptables 命令,现在想重新做一遍,但只使用 Firewalld。
问题
如何将所有规则重置为 CentOS 7 的防火墙附带的默认规则?
答案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
顺便说一句,
yum reinstall firewalld
不会替换修改后的配置文件。