我试图仅阻止到特定 IP 地址的出站连接,但我想允许来自相同 IP 地址的入站连接。
根据我对阻止出站连接的理解,他们不应该如果入站连接已成功建立,则阻止。
我基本上设置了这样的规则:
--append OUTPUT --jump DROP --destination x.x.x.x
并允许已建立的连接:
--append INPUT --in-interface eth0 --match state --state RELATED,ESTABLISHED --jump ACCEPT
我希望当此 IP 地址尝试连接到服务器时允许连接,但是当我的服务器尝试建立出站连接时,它不应该能够建立连接。
我想阻止服务器的完全访问以进行出站连接x.x.x.x
。然而,当来自该 IP 的用户希望访问服务器时,他们应该能够访问某些端口上的站点。
答案1
您尝试的防火墙规则即将完成。以下是允许来自主机的入站流量10.10.10.10
同时阻止到该地址的出站流量所需的内容:
- 允许入站(可能是任何端口)
- 允许对已建立的入站连接进行出站回复
- 阻止剩余的出站流量
所以,
iptables -A INPUT --src 10.10.10.10 --jump ACCEPT
iptables -A OUTPUT --match state --state RELATED,ESTABLISHED --jump ACCEPT
iptables -A OUTPUT --dst 10.10.10.10 --jump DROP
您实际上并不需要该INPUT
规则,除非您有以后的规则达到DENY
/REJECT
或者您的策略是这样设置的。
答案2
你误会了!这是我的理解:
首先,看看你的input
规则。它应该允许输入state
,但是什么意思state
呢?这意味着流量out
之前已从您的服务器流向此地址!因此,如果您output
完全阻止(针对该地址),则该规则将永远不会匹配。
这就是为什么你的全部努力是不可能的,state
只能在input
.
可能有一些 hacky 解决方案。但使用给定的选项这是不可能的。
聚苯乙烯
在你提出问题后,我再次检查了一个旧主题,你猜怎么着。再次阅读您的帖子后,它让我震惊,这正是您想要的。看着端口敲门。
它为您的请求添加了一个组件,这使得它变得更好;随机性。
只需配置一个敲门方案,不仅允许output
连接,而且input
仅在正确knocking
发生时才允许。