如何让 iptables 允许新端口(用于 Web 服务器套接字处理程序)

如何让 iptables 允许新端口(用于 Web 服务器套接字处理程序)

在本地开发服务器中,我没有任何 iptables 规则(在 Mac 上运行)。但是,生产服务器运行 CentOS 6 并设置了某些规则。

我需要添加一条规则,允许客户端连接到1337港口。

这是我当前的 iptables 文件。我必须以特定的顺序位置插入新规则吗?

# Generated by iptables-save v1.4.7 on Tue Jun  4 17:42:56 2013
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [3:412]
-A INPUT -p tcp -m tcp --dport 3306 -m state --state NEW,ESTABLISHED -j ACCEPT
-A INPUT -p tcp -m tcp --dport 80 -j ACCEPT
-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 -p tcp -m tcp --dport 21 -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 11211 -j ACCEPT
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -j REJECT --reject-with icmp-host-prohibited
-A OUTPUT -p tcp -m tcp --sport 3306 -m state --state ESTABLISHED -j ACCEPT
COMMIT
# Completed on Tue Jun  4 17:42:56 2013

答案1

该规则应添加到 INPUT 链中的

-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT

规则和之前

-A INPUT -j REJECT --reject-with icmp-host-prohibited

规则。

您可以通过直接编辑 /etc/sysconfig/iptables 或使用 -I 参数插入规则来执行此操作。我个人会保存防火墙的状态,然后编辑 /etc/sysconfig/iptables,然后重新启动服务

service iptables save
edit the file and add -A INPUT -p tcp -m state --state NEW -m tcp --dport 1337 -j ACCEPT
service iptables restart

如果你想从命令行完成所有操作,那么你可以使用 --line-number 来决定在哪里插入新规则

iptables -L INPUT --line-numberss
Chain INPUT (policy ACCEPT)
num  target     prot opt source               destination
1    ACCEPT     all  --  anywhere             anywhere            state RELATED,ESTABLISHED
2    ACCEPT     icmp --  anywhere             anywhere
3    ACCEPT     all  --  anywhere             anywhere
4    ACCEPT     tcp  --  anywhere             anywhere            state NEW tcp dpt:ssh
5    REJECT     all  --  anywhere             anywhere            reject-with icmp-host-prohibited

现在在位置 2 处插入规则

iptables -I INPUT 2 -p tcp -m state --state NEW -m tcp --dport 1337 -j ACCEPT

如果成功了,不要忘记保存防火墙的状态

service iptables save

答案2

这只是一个命令。考虑到你正在使用 TCP 请求,只需执行以下操作:

iptables -I INPUT -p tcp -m tcp --dport 1337 -j ACCEPT

正如@iain在评论中指出的那样,在命令行上使用这个命令将保证规则在 REJECT 规则之前被评估。如果您直接编辑文件,只需将其放在 REJECT 行之前:

-A INPUT -p tcp -m tcp --dport 1337 -j ACCEPT

答案3

将第二行添加到来自任何地方的所有访问,假设连接使用 tcp 而不是 udp。

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

或者运行以下命令,再次假设协议为 tcp。这将添加与上面显示的手动编辑相同的行,并将规则保存在 /etc/sysconfig/iptables 中。

lokkit -p 1337:tcp

因此,这两个选项是等效的,但 lokkit 会立即应用更改。

相关内容