(/ etc / sysconfig / iptables)“不建议手动自定义此文件。”为什么?


20

直接编辑此文件

/etc/sysconfig/iptables 

可以为我省去那么多头痛,那么多时间等等...

但它在文件的最上方说:

Manual customization of this file is not recommended.

这是全新的centos 6.4云服务器附带的'/ etc / sysconfig / iptables'。

# Firewall configuration written by system-config-firewall
# Manual customization of this file is not recommended.
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -j REJECT --reject-with icmp-host-prohibited
COMMIT

打开80端口,我可以简单地复制线路。

    -A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT

然后将“ 22”更改为“ 80”,然后保存此文件,然后重新引导整个系统。

这将为我打开端口80。

这是非常简单的操作。但是文件不建议手动编辑。

我为什么要听从建议?

Answers:


18

因为称为system-config-firewall(或基于ncurses的brother system-config-firewall-tui)的工具管理此文件。每次使用此工具创建新的iptables规则时,它将被覆盖/etc/sysconfig/iptables

相关手册页:28.1.16。/ etc / sysconfig / iptables-config

这就是为什么不推荐但不禁止这样做的原因。在内存上添加一些规则后,使用CentOS或任何其他EL版本6保存规则的最佳方法是使用iptables服务:

# service iptables save

相关问题:为什么iptables无法在centOs上从/ etc / sysconfig / iptables获取信息?

/etc/sysconfig/iptables直接编辑此文件()的原因:

  • 因为它是一个自动生成的文件。它的内容来自script / daemon /etc/init.d/iptables
  • 诸如重置或停止iptables守护程序之类的某些操作可能会导致数据丢失,因为它将覆盖文件。关于此主题的有趣变量:IPTABLES_SAVE_ON_STOP=""IPTABLES_SAVE_ON_RESTART=""/etc/sysconfig/iptables-config文件内部。也许,调整这些内容会使您的更改/etc/init.d/iptables持久化。
  • 因为文档是这样说的,所以 Red Hat建议这是使用其防火墙基础结构的最佳方法。

解决这种“覆盖防火墙规则”问题的替代解决方案是完全禁用这些脚本,并依靠自定义的方法来管理防火墙,例如goldilocks公开的方法


这听起来更像是反对混合和直接使用该system-config-firewall工具编辑文件以及添加规则的论点。您能否解释为什么代替使用该工具来编辑文件很糟糕?
米歇尔

添加了其他信息。感谢小费@Michelle

8

但它在文件的最上方说:

嗯,这很奇怪。在我的顶部,它说:

# Manual customization of this file is strongly encouraged.

一定有人更改过它;)实际上,甚至将其移出了它,/etc/sysconfig这样它就不会被包管理器或其他任何东西“自动取消定制”;);)

我认为这类配置文件的要点通常是,如果您不知道自己在做什么,就不要这样做。有时也有警告,文件确实偶尔会被系统覆盖。这可以由软件包管理器进行升级-尽管有时PM会注意到文件已被手动更改,而不是覆盖它,或保存副本等-并且它可能是负责此配置的其他一些工具。特别的(请参阅nwildner的答案)。

“知道自己在做什么”的一部分是要注意这样的角度。我还为iptables定制了初始化服务,以使配置文件使用其他位置,最重要的是:我是唯一使用此计算机的人。

假设还有其他人具有root用户访问权限,除非有比“我喜欢这种方式”更好的理由,否则我不会在我负责的服务器上执行此操作,因为这可能会导致混乱并使其他人头痛在某一点。但是,如果您是唯一的用户,并且没有其他人依赖系统,那么您可以自由地执行所需的操作。我用于配置防火墙的“首选方法”如下所示:

#!/bin/bash

if [[ ! -n "$IPTSET_FILE" ]]; then
        IPTSET_FILE=/etc/iptables.current
fi

if [[ ! -e $IPTSET_FILE ]]; then
        echo "$IPTSET_FILE does not exist!"
        exit 1
fi

vim $IPTSET_FILE
iptables-restore < $IPTSET_FILE

/etc/iptables.current是在引导时通过复制/etc/iptables(将iptables服务配置为初始加载)创建的。通过这种方式,我可以在保持系统启动参考点的同时即时修改内容。

如果您确实想弄混包含以下警告的配置,那么这将使我们很重要:请始终先创建原始文档的备份副本。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.