我已经设置了一个 Centos 7 服务器来运行 Nagios。默认情况下,操作系统有非常严格的 iptables 规则,这里的一个人建议通过输入以下命令来解决这个问题:
iptables -A IN_public_allow -p tcp --dport 80 -j ACCEPT
这工作正常,直到我重新启动服务器,此时我必须再次输入命令,否则服务器将再次无法访问。
这是 iptables 的正常行为吗?我可以做些什么来修复它吗?
我已经设置了一个 Centos 7 服务器来运行 Nagios。默认情况下,操作系统有非常严格的 iptables 规则,这里的一个人建议通过输入以下命令来解决这个问题:
iptables -A IN_public_allow -p tcp --dport 80 -j ACCEPT
这工作正常,直到我重新启动服务器,此时我必须再次输入命令,否则服务器将再次无法访问。
这是 iptables 的正常行为吗?我可以做些什么来修复它吗?
CentOS 7 默认使用firewalld来管理防火墙。
您可以简单地将端口添加到 firewalld:
这肯定会“修复”“相当严厉的规则”——但会在您的系统中造成一个重大的安全漏洞,并且远非有效。
实际上,您应该在链的开头插入 2 条规则 - 第一条规则应该允许相关和已建立的数据包进入(任何端口),一个允许新数据包进入端口 80。
除非您真的知道自己在做什么,否则直接使用 iptables 是个坏主意。防火墙在启动时从 /etc/sysconfig/iptables-config 加载。除非您真的知道自己在做什么,否则编辑它是个坏主意。
如果您阅读手册,那么您会知道您可以通过运行使 iptables 更改保持
/sbin/service iptables save
不变,但这取决于手动更改 iptables 规则。我没有方便检查的 centos 机器,但如果它是 RHEL 的直接克隆,那么它应该有一个名为 firewall-config 的 GUI 工具,它允许在不破坏内容的情况下进行更改。