我在 CentOS 6.4 上使用 iptables 为 HTTP 打开端口 80 我通常使用 vim 编辑 /etc/sysconfig/iptables 但这次我使用 /sbin/iptables 命令。
# /sbin/iptables -A INPUT -p tcp -m state --state NEW -m tcp --dport 80 -j ACCEPT
# service iptables save
# service iptables restart
Run Code Online (Sandbox Code Playgroud)
当我列出规则时,我可以看到这样的 http:
ACCEPT tcp -- anywhere anywhere state NEW tcp dpt:ssh
REJECT all -- anywhere anywhere reject-with icmp-host-prohibited
ACCEPT tcp -- anywhere anywhere state NEW tcp dpt:http
Run Code Online (Sandbox Code Playgroud)
但是我无法从其他机器连接到 Web 服务器我检查了 iptables 文件,看到的内容如下:
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [88:9264]
-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
Run Code Online (Sandbox Code Playgroud)
我不得不手动放置该行:
-A INPUT -p tcp -m state --state NEW -m tcp --dport 80 -j ACCEPT
Run Code Online (Sandbox Code Playgroud)
前
-A INPUT -j REJECT --reject-with icmp-host-prohibited
Run Code Online (Sandbox Code Playgroud)
然后当我重新启动 iptables 服务时。有效!
那么如何以正确的方式附加新规则呢?谢谢!
lar*_*sks 19
-A
iptables的命令只是“附加”一个规则。因此,如果您现有的规则集如下所示:
ACCEPT tcp -- anywhere anywhere state NEW tcp dpt:ssh
REJECT all -- anywhere anywhere reject-with icmp-host-prohibited
Run Code Online (Sandbox Code Playgroud)
你运行:
# /sbin/iptables -A INPUT -p tcp -m state --state NEW -m tcp --dport 80 -j ACCEPT
Run Code Online (Sandbox Code Playgroud)
那么当然这将在REJECT
规则之后结束(因为你告诉它把规则附加到现有的规则集)。你有几个选择:
/etc/sysconfig/iptables
手动编辑,插入您想要的规则,然后运行service iptables restart
.lokkit
工具来修改防火墙。例如,lokkit -p 80:tcp
。这将自动更新/etc/sysconfig/iptables
以及活动防火墙。-I <num>
标志 toiptables
在列表中的指定位置插入规则。该--line-numbers
标志可用于确定<num>
应该是什么。您需要service iptables save
在以这种方式进行更改后运行。如果您真的希望能够仅使用附加命令来执行此类操作,则需要先执行一些设置。创建一个新链(称为,也许,allow_services
):
iptables -N allow_services
Run Code Online (Sandbox Code Playgroud)
并INPUT
在适当的位置向您的链添加一条规则以跳转到此新链:
iptables -I INPUT 5 -j allow_services
Run Code Online (Sandbox Code Playgroud)
从那时起,您可以简单地将新服务附加到allow_services
链中:
iptables -A allow_services -p tcp -m state --state NEW -m tcp --dport 80 -j ACCEPT
Run Code Online (Sandbox Code Playgroud)
假设您将跳转规则(-j
选项)放在决赛之前,REJECT
这将满足您的要求。
归档时间: |
|
查看次数: |
28578 次 |
最近记录: |