iptables不closures端口3000?

我想在我的服务器上configurationiptables,只有特定的端口是打开的。 尽pipe如此,我可以访问,如端口3000,如果我运行一个Web应用程序。 可能是3000开放的原因是什么?

这是命令iptables -nv -L INPUT

  pkts bytes target prot opt in out source destination 0 0 DROP tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp flags:0x3F/0x00 0 0 DROP tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp flags:!0x17/0x02 state NEW 0 0 DROP tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp flags:0x3F/0x3F 670 302K ACCEPT all -- lo * 0.0.0.0/0 0.0.0.0/0 0 0 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:80 187 136K ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:443 33 1968 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:22 0 0 ACCEPT tcp -- eth0 * 0.0.0.0/0 0.0.0.0/0 tcp spt:25 state ESTABLISHED 

在我看来,上面的表格显示只有80,443,22和25端口是开放的,但显然我错过了一些东西。

UPD。 /etc/sysconfig/iptables

 # Generated by iptables-save v1.4.21 on ... *filter :INPUT ACCEPT [11:812] :FORWARD ACCEPT [0:0] :OUTPUT ACCEPT [7:2120] -A INPUT -p tcp -m tcp --tcp-flags FIN,SYN,RST,PSH,ACK,URG NONE -j DROP -A INPUT -p tcp -m tcp ! --tcp-flags FIN,SYN,RST,ACK SYN -m state --state NEW -j DROP -A INPUT -p tcp -m tcp --tcp-flags FIN,SYN,RST,PSH,ACK,URG FIN,SYN,RST,PSH,ACK,URG -j DROP -A INPUT -i lo -j ACCEPT -A INPUT -p tcp -m tcp --dport 80 -j ACCEPT -A INPUT -p tcp -m tcp --dport 443 -j ACCEPT -A INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT -A INPUT -i eth0 -p tcp -m tcp --sport 25 -m state --state ESTABLISHED -j ACCEPT -A OUTPUT -o eth0 -p tcp -m tcp --sport 25 -m state --state NEW,ESTABLISHED -j ACCEPT -A OUTPUT -o eth0 -p tcp -m tcp --dport 25 -m state --state NEW,ESTABLISHED -j ACCEPT COMMIT # Completed on ... # Generated by iptables-save v1.4.21 on ... *mangle :PREROUTING ACCEPT [6775:1045434] :INPUT ACCEPT [6183:992008] :FORWARD ACCEPT [0:0] :OUTPUT ACCEPT [3415:5301713] :POSTROUTING ACCEPT [3415:5301713] COMMIT # Completed on ... # Generated by iptables-save v1.4.21 on ... *nat :PREROUTING ACCEPT [671:58811] :POSTROUTING ACCEPT [3:243] :OUTPUT ACCEPT [3:243] COMMIT # Completed on ... # Generated by iptables-save v1.4.21 on ... *raw :PREROUTING ACCEPT [6775:1045434] :OUTPUT ACCEPT [3415:5301713] COMMIT 

UPD。 感谢您的答案,@akhfa和@Iain! 两者都为我工作。 看来,拒绝的select是好一点的(例如,鉴于这种比较 ),所以我把它标为公认的。

PS现在我有一个问题,我不能再从我的服务器上ping谷歌,但这可能超出了原来的问题的范围。 PPS没关系,最后我通过在开头添加下列规则来解决互联网接入问题:

 sudo iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT sudo iptables -A OUTPUT -p udp --dport 53 -m state --state NEW,ESTABLISHED -j ACCEPT sudo iptables -A INPUT -p udp --sport 53 -m state --state ESTABLISHED -j ACCEPT sudo iptables -A OUTPUT -p tcp --dport 53 -m state --state NEW,ESTABLISHED -j ACCEPT sudo iptables -A INPUT -p tcp --sport 53 -m state --state ESTABLISHED -j ACCEPT sudo iptables -A INPUT -p icmp -j ACCEPT 

您没有任何规则阻止端口3000.您的策略是接受,所以端口3000(如其他所有)是打开的。 您可以尝试在规则的末尾添加默认的拒绝/拒绝,这很常见

 iptables -A INPUT -j REJECT --reject-with icmp-port-unreachable 

并应该做任何工作,因为任何得到这个远的数据包都将被拒绝,而远端会认为注意力正在聆听那部分。

您可以将INPUT中的默认策略更改为DROP

 iptables -P INPUT DROP 

然后您可以删除INPUT链中的所有DROP规则。 如果进行此更改,则必须在要打开的每个端口中添加“接受”规则。