打开本地主机上的所有端口以进行内部通信

打开本地主机上的所有端口以进行内部通信

目前,我必须允许我想要从本地主机连接到本地主机 ( ) 的每个端口iptables -A INPUT -i lo -p tcp -m tcp --dport 8888 -j ACCEPT,这 a) 每次都有点烦人,b) 对于更改本地端口的服务来说通常是不可能的。

我正在netcatdebian 上测试这个:

nc -vv -l -s 127.0.0.1 -p 8888

正在侦听 127.0.0.1 接口的端口 8888。正在尝试连接

nc 127.0.0.1 8888

导致连接被拒绝,直到我手动添加上面的规则。我怎样才能做到这一点?

我尝试允许环回接口上的所有流量,但无济于事:

-A INPUT -i lo -j ACCEPT
-A OUTPUT -o lo -j ACCEPT

并且还允许以下所有内容127.0.0.1

-A INPUT -s 127.0.0.1 -j ACCEPT

这不应该起作用吗,因为netstat将其列为来自 127.0.0.1:

tcp        0      0 127.0.0.1:8888          0.0.0.0:*               LISTEN      15338/nc

这是我目前的规则:

# Generated by iptables-save v1.6.0 on Thu Jan 25 08:01:28 2018
*nat
:PREROUTING ACCEPT [0:0]
:INPUT ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
:POSTROUTING ACCEPT [0:0]
-A POSTROUTING -s 172.20.0.0/24 -j MASQUERADE
COMMIT
# Completed on Thu Jan 25 08:01:28 2018
# Generated by iptables-save v1.6.0 on Thu Jan 25 08:01:28 2018
*filter
:INPUT DROP [0:0]
:FORWARD DROP [0:0]
:OUTPUT DROP [0:0]
:port-scan - [0:0]
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -p tcp -m tcp --dport 22 -m state --state NEW,ESTABLISHED -j ACCEPT
-A INPUT -p tcp -m tcp --dport 80 -m state --state NEW,ESTABLISHED -j ACCEPT
-A INPUT -p tcp -m tcp --dport 443 -m state --state NEW,ESTABLISHED -j ACCEPT
-A INPUT -i eth0 -p udp -m udp --dport 67:68 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 587 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 25 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 2368 -j ACCEPT
-A INPUT -i eth0 -p tcp -m tcp --dport 143 -m state --state NEW,ESTABLISHED -j ACCEPT
-A INPUT -i eth0 -p tcp -m tcp --dport 993 -m state --state NEW,ESTABLISHED -j ACCEPT
-A INPUT -i eth0 -p udp -m udp --dport 9987 -j ACCEPT
-A INPUT -i lo -p tcp -m tcp --dport 3306 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 1666 -j ACCEPT
-A INPUT -p icmp -m icmp --icmp-type 8 -j ACCEPT
-A INPUT -p icmp -m icmp --icmp-type 8 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 80 -m limit --limit 25/min --limit-burst 100 -j ACCEPT
-A INPUT -m limit --limit 5/min -j LOG --log-prefix "iptables denied: " --log-level 7
-A INPUT -j REJECT --reject-with icmp-port-unreachable
-A INPUT -i eth0 -p udp -m udp --sport 53 -j ACCEPT
-A INPUT -i eth0 -p tcp -m tcp --sport 53 -j ACCEPT
-A INPUT -s 127.0.0.1/32 -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -j DROP
-A FORWARD -i wintap0 -j ACCEPT
-A FORWARD -i eth0 -o eth1 -j ACCEPT
-A FORWARD -j REJECT --reject-with icmp-port-unreachable
-A OUTPUT -j ACCEPT
-A OUTPUT -o lo -j ACCEPT
-A OUTPUT -o eth0 -j ACCEPT
-A OUTPUT -o tun0 -j ACCEPT
-A port-scan -p tcp -m tcp --tcp-flags FIN,SYN,RST,ACK RST -m limit --limit 1/sec -j RETURN
-A port-scan -j DROP

注意:我显然不希望端口对外界可见,而只能在内部可见。

答案1

问题几乎肯定出在这一行:

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

由于它位于允许流量进入并且没有过滤器的规则之前lo,因此永远不会查看最后四个规则:

-A INPUT -j REJECT --reject-with icmp-port-unreachable
-A INPUT -i eth0 -p udp -m udp --sport 53 -j ACCEPT
-A INPUT -i eth0 -p tcp -m tcp --sport 53 -j ACCEPT
-A INPUT -s 127.0.0.1/32 -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -j DROP

您不必担心人们能够连接到仅侦听接口lo(127.0.0.1/8) 的服务:这是一个仅供内部使用的接口。

答案2

与通过附加以下内容来不断添加行相反:

-A INPUT -i lo -j ACCEPT
-A OUTPUT -o lo -j ACCEPT

尝试通过输入以下内容来持久添加该行:

-I INPUT -i lo -j ACCEPT
-I OUTPUT -o lo -j ACCEPT

这会将规则放置在 INPUT 链的前端而不是末尾。这

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

正在阻止读取规则。

相关内容