我知道有一个 /etc/sysconfig/iptables 文件,其中包含 iptables 规则(以及它与 /etc/sysconfig/iptables-config 的实际区别是什么?)。
我安装了 CSF 和 LFD。您可以在 /etc/csf/csf.conf 中配置端口,但 /etc/sysconfig/iptables 文件不存在。iptables 和 csf 守护程序正在运行。
这是什么意思?防火墙不执行任何操作?
实际上,CSF 和 iptables 是如何协同工作的?
答案1
如果记忆不错的话,/etc/sysconfig/iptables-config
该文件描述了启动 rhel iptables init 脚本时使用的选项。它没有明确的规则。/etc/sysconfig/iptables
另一方面,该文件做包含这些规则。它按照命令的输出进行格式化iptables-save
;事实上,当您运行时,service iptables save
它就是这样创建文件的。
您的另一个问题的简短版本是“最后启动的那个具有优先权”。
为了清楚起见,我将在这个答案的上下文中做一个“不被业界接受”的语言抽象,如下所示:
- /etc/init.d/iptables、/etc/sysconfig/iptables* 及其它文件将被称为“rhel-iptables”,因为它们是 redhat 创建的 iptables 支持脚本。
- /sbin/iptables*,内核中的防火墙模块和朋友将被称为“netfilter”,因为它们是由 netfilter 团队提供的,用于支持内核中的 iptables。
rhel-iptables 和 CSF 脚本都利用 netfilter 框架和命令将防火墙规则放入内核空间。它们两个 (*) 在启动时都会将内核规则表重置为空。因此,如果在 rhel-iptables 之后启动或重新启动 CSF,则其规则和配置将优先。对于在 CSF 之后启动或重新启动的 rhel-iptables,情况正好相反;CSF 规则将被清除,rhel-iptables 规则将接管。
虽然这看起来很傻,但这可能没问题,只要您只处理要运行的规则集,并且您已验证要运行的规则集(可能是 CSF,因为您花时间安装了它)最后运行,并且如果您不小心重新启动了 iptables 服务,请确保重新启动它。您可以通过假设您的默认运行级别ls -1 /etc/rc.d/rc3.d
为 3 来检查它们的启动顺序,在没有图形的 rhel/centos 上,通常情况如此(图形为 5)。如果 S 后面的数字较大,则启动较晚。
为什么你要同时运行两者?好吧,如果你的/etc/sysconfig/iptables
规则是有效的,那么它几乎肯定会在任何联网服务之前出现,这意味着防火墙保护在网络启动和任何服务暴露之前就开始了。该文件中列出的规则对系统变化具有很强的适应性,而 CSF 可能会对此做出不良反应,例如,你的脚本解释器或内核版本会略微更新,从而破坏脚本语法或模块名称,或者更有可能的是,你尝试从其主页更新 CSF,但它自己却崩溃了。如果 CSF 在清除你的规则之前失败了,你的 rhel-iptables 规则仍然有效,可以作为后备规则集保护你的潜在易受攻击的服务。
如果您希望禁用 rhel-iptables 脚本,可以运行以下命令:
chkconfig iptables off
(*)刷新内核规则表是两个脚本的默认设置;我相信两者都可以配置为不执行此操作而仅附加。