如何使用 iptables 拒绝从本地主机到本地主机的所有端口(除一个端口之外)?

如何使用 iptables 拒绝从本地主机到本地主机的所有端口(除一个端口之外)?

我遇到了 iptables 问题,无法从 localhost 连接到 localhost。基本上,我希望丢弃所有传入数据包(目的地为 SSH 和端口 9000 的数据包除外)。目的地为 localhost:9000 的数据包必须具有等于端口 8000 的源端口。

够简单吗?

为什么这不适用于以下规则?请注意,这是在 Vagrant 实例 (hashicorp/precise64) 内部。

Chain INPUT (policy DROP)
target     prot opt source               destination         
ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:ssh
ACCEPT     tcp  --  anywhere             anywhere             tcp spt:8000 dpt:9000

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination         

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination         
ACCEPT     tcp  --  anywhere             anywhere             tcp spt:ssh state ESTABLISHED

我尝试使用以下命令:

# nc -p 8000 localhost 9000

-p 设置源端口。

什么也不做。

我也尝试过对 8000 不做源端口要求,只匹配目标端口,结果相同。

我添加如下规则:

匹配 dpt 和 spt:

iptables -A INPUT -p tcp --sport 8000 --dport 9000 -j ACCEPT

仅匹配 dpt:

iptables -A INPUT -p tcp --dport 9000 -j ACCEPT

如上所述,两者都不起作用。

将 INPUT 上的策略更改为 ACCEPT 可以使其工作,但是当我有此特定规则允许它时,为什么它不能以 DROP 作为默认策略工作?

我认为这无关紧要,但这里的用例是用于端口敲击。我知道我必须使用 /etc/knockd.conf 来实际打开和关闭端口——到目前为止,我只是在调试。如果我无法手动从命令行使其工作,它将永远无法与 knockd 一起工作。

根据要求,这里有更详细的信息:

# iptables -nvL --line-numbers
Chain INPUT (policy DROP 17 packets, 1164 bytes)
num   pkts bytes target     prot opt in     out     source               destination         
1    42847 1832K ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0            tcp dpt:22
2        3   180 ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0            tcp spt:8000 dpt:9000

Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
num   pkts bytes target     prot opt in     out     source               destination         

Chain OUTPUT (policy ACCEPT 21 packets, 1420 bytes)
num   pkts bytes target     prot opt in     out     source               destination         
1    38138 3415K ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0            tcp spt:22 state ESTABLISHED


# iptables -t nat -nvL --line-numbers 
Chain PREROUTING (policy ACCEPT 0 packets, 0 bytes)
num   pkts bytes target     prot opt in     out     source               destination         

Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
num   pkts bytes target     prot opt in     out     source               destination         

Chain OUTPUT (policy ACCEPT 0 packets, 0 bytes)
num   pkts bytes target     prot opt in     out     source               destination         

Chain POSTROUTING (policy ACCEPT 0 packets, 0 bytes)
num   pkts bytes target     prot opt in     out     source               destination         

答案1

您可以在这里找到答案:

https://superuser.com/questions/808496/difference-between-iptables-default-policy-to-drop-and-inserting-a-seperate-po

iptables -I INPUT 1 -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT

相关内容