直接编辑该文件
/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。
这是非常简单的操作。但该文件表示不建议手动编辑。
我为什么要听从建议?
答案1
system-config-firewall
因为名为(或基于 ncurses 的兄弟)的工具system-config-firewall-tui
管理此文件。每次您使用此工具创建新的 iptables 规则时,它都会覆盖/etc/sysconfig/iptables
.
相关联机帮助页:28.1.16。 /etc/sysconfig/iptables-config
这就是为什么不推荐但也不推荐的原因禁止。使用 CentOS 或任何其他 EL 版本 6 保存规则的最佳方法是在内存中添加一些规则后使用 iptables 服务:
# service iptables save
相关问题:为什么 iptables 不从 CentO 上的 /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
持久存在。 - 因为文档我说过了红帽建议这是使用其防火墙基础设施的最佳方法。
“覆盖我的防火墙规则”mindf*** 的另一种解决方案是完全禁用这些脚本并依赖于管理防火墙的自定义方法,例如金发姑娘。
答案2
但在文件的最顶部它说..
嗯,这很奇怪。我的顶部写着:
# Manual customization of this file is strongly encouraged.
一定有人更改了它;)事实上,甚至将其移出,/etc/sysconfig
这样它就不会被包管理器或其他任何东西“自动取消定制”;);)
我认为此类配置文件的要点是,如果您不知道自己在做什么,请不要这样做。有时还会出现警告,表明该文件偶尔会被系统覆盖。这可能是由包管理器在升级时完成的——尽管有时 PM 会注意到文件已被手动更改并且不会覆盖它,或保存副本等——并且可能是负责此配置的其他工具特别是(见恩维尔德纳的回答)。
“知道自己在做什么”的一部分就是要注意这样的角度。我还为 iptables 定制了 init 服务,以使用不同的位置来存放配置文件,最重要的是:我是唯一使用这台电脑的人。
假设还有其他人具有 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 服务配置为最初加载)。这样我就可以动态修改内容,同时维护系统启动的参考点。
如果您确实想使用包含此类警告的配置,这给我们带来了重要的一点:始终首先创建原始副本的备份副本。