嗨,任何人都可以帮助我理解为什么行15失败据说在我的iptables文件。 我正在使用CentOS 6。
当我尝试重新启动iptables服务时,获取以下内容:
[root@dbserver ~]# service iptables restart iptables: Flushing firewall rules: [ OK ] iptables: Setting chains to policy ACCEPT: filter [ OK ] iptables: Unloading modules: [ OK ] iptables: Applying firewall rules: iptables-restore: line 15 failed [FAILED]
我的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 #-A RH-Firewall-1-INPUT -m tcp -p tcp --dport 80 -j ACCEPT -A RH-Firewall-1-INPUT -m tcp -p tcp --dport 53 -j ACCEPT -A RH-Firewall-1-INPUT -m udp -p tcp --dport 53 -j ACCEPT -A RH-Firewall-1-INPUT -m tcp -p tcp --dport 443 -j ACCEPT -A RH-Firewall-1-INPUT -m tcp -p tcp --dport 25 -j ACCEPT -A RH-Firewall-1-INPUT -s 192.168.1.1/254 -m state --state NEW -p tcp --dport 22 -j ACCEPT -A RH-Firewall-1-INPUT -m state --state NEW -p tcp --dport 21 -j ACCEPT
我只是真的试图允许目前从本地networking访问机器。
任何帮助将不胜感激。 谢谢。
编辑:
根据第一个答案,已将COMMIT移到文件结尾,但仍然收到错误…
# 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 -A RH-Firewall-1-INPUT -m tcp -p tcp --dport 80 -j ACCEPT -A RH-Firewall-1-INPUT -m tcp -p tcp --dport 53 -j ACCEPT -A RH-Firewall-1-INPUT -m udp -p tcp --dport 53 -j ACCEPT -A RH-Firewall-1-INPUT -m tcp -p tcp --dport 443 -j ACCEPT -A RH-Firewall-1-INPUT -m tcp -p tcp --dport 25 -j ACCEPT -A RH-Firewall-1-INPUT -s 192.168.1.0/255 -m state --state NEW -p tcp --dport 22 -j ACCEPT -A RH-Firewall-1-INPUT -m state --state NEW -p tcp --dport 21 -j ACCEPT COMMIT
错误:
[root@dbserver ~]# service iptables restart iptables: Flushing firewall rules: [ OK ] iptables: Setting chains to policy ACCEPT: filter [ OK ] iptables: Unloading modules: [ OK ] iptables: Applying firewall rules: iptables-restore: line 13 failed [FAILED]
简单 – 您需要将您的COMMIT下移到文件末尾。
COMMIT告诉iptables你已经完成了你的声明,并且想把你的configuration发送到内核。 它结束你的声明。 你告诉iptables COMMIT,然后你给没有新的声明新的规则,因此你的错误。
编辑以包含顺风评论的内容:
下面是你的configuration更新和工作(不一定是最佳)的版本: http : //gist.github.com/3818123 。 我将总结一些问题:
除了jgoldschrafe提到的COMMIT问题之外,您正在尝试将行添加到不存在的规则( RH-Firewall-1-INPUT )。
您将需要添加一条线
:RH-Firewall-1-INPUT - [0:0]
正下方
:OUTPUT ACCEPT [0:0]
这将宣布链,从而允许你添加规则。 但链条仍然没有效果,因为这个名字没有任何魔力,三个主链( INPUT , OUTPUT和FORWARD )都没有发送任何数据FORWARD它。 当然,你可以在INPUT链上添加一条规则来将stream量发送到你的新链,但是请不要采取这种错误的方式 – 我注意到它说在该文件的顶部
不推荐手动定制这个文件。
这是有原因的。 尽一切办法忽略这一点,并对其进行编辑,但在学习正确的时候,可能会使系统的安全性或可用性出现一些相当大的漏洞。
编辑:我怀疑第19行的问题是指定为192.168.1.0/255 ,这是无效的地址范围。 如果你想要指定192.168.1.0和192.168.1.255之间的所有地址,你需要192.168.1.0/24 。
我恳求你的赦免,但是你真的不是那些了解防火墙和networking的人,而且 – 假设这是一个你专业维护的服务器 – 可能不是学习这个东西的最好的地方。
一般来说,它通过iptables添加规则,然后将它们转储到一个文件与iptables保存,以防万一你想用它来通过iptables恢复加载,例如当你的系统重新启动,因为很简单,因为iptables的保存知道它自己的先决条件比你好。
尝试把两条线
-A INPUT -j REJECT --reject-with icmp-host-prohibited -A FORWARD -j REJECT --reject-with icmp-host-prohibited
在COMMIT之前的文件末尾。
是啊,伙计,/ 24 …斜线表示法。 谷歌斜杠符号转换。 看着你的第一个例子桌子让我喘不过气来。
多年来我已经多次被告知同样的事情,但是你已经过了头。 如何在不知道斜线符号的情况下手动编辑iptables规则? 它被用在很多…到处都是。
就像大家所说的那样,重要与否,这是一个服务器 – 这不是一个可以玩的地方。 如果安全性不重要,它在防火墙后面,而不是暴露在互联网上,请closuresiptables('#service iptables stop; #chkconfig iptables off')…并在家玩。
这样,当东西不起作用时,你不必为此而奇怪。