我有下一个 / etc / sysconfig / iptables 规则(安装后的默认设置):
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [92:28264]
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -j REJECT --reject-with icmp-host-prohibited
COMMIT
添加这样的角色后:
iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT
此时端口80应该打开吗? 在我保存iptables之后:
service iptables save
我得到了
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [92:28264]
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A INPUT -p tcp -m state --state NEW -m tcp --dport 80 -j ACCEPT
-A FORWARD -j REJECT --reject-with icmp-host-prohibited
COMMIT
哪个不起作用,我预计新规则要高一行,你怎么看? 我正在使用centOS。另外,这里最好的做法是什么,如果我只是更改文件并重新启动iptables,那会更好吗? 非常感谢你。
答案 0 :(得分:0)
-A INPUT
表示附加到链INPUT,因此规则结束。您希望-I INPUT 4
在REJECT规则之前将规则插入链中。
答案 1 :(得分:0)
更改文件/etc/sysconfig/iptables
后,必须重新启动iptables:
/etc/init.t/iptables restart
OR
service iptables restart
但是当你在bash中编写iptables命令时,你必须这样做:
/etc/init.d/iptables save
OR
service iptables save
尝试将/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 --protocol icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -m state --state NEW -m tcp --protocol tcp --dport 22 -j ACCEPT
-A INPUT -m state --state NEW -m tcp --protocol tcp --dport 80 -j ACCEPT
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -j REJECT --reject-with icmp-host-prohibited
COMMIT
在bash中输入iptables命令也是正确的:
iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT
如果您使用的是基于debian或任何发行版,建议您在bash(终端)中输入iptables命令,因为/etc/sysconfig/iptables
仅在 redhat 的发行版中存在...
如果你想在bash终端中运行iptables命令,最好先删除你的规则......你可以运行这个bash脚本:
#!/bin/bash
iptables -F
iptables -X
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -p icmp -j ACCEPT
iptables -A INPUT -i lo -j ACCEPT
iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT
iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
iptables -A INPUT -j REJECT --reject-with icmp-host-prohibited
iptables -A FORWARD -j REJECT --reject-with icmp-host-prohibited
/etc/init.d/iptables save