我試圖僅阻止到特定 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
發生時才允許。