![如何阻止所有出站連線?](https://rvso.com/image/1452893/%E5%A6%82%E4%BD%95%E9%98%BB%E6%AD%A2%E6%89%80%E6%9C%89%E5%87%BA%E7%AB%99%E9%80%A3%E7%B7%9A%EF%BC%9F.png)
我需要阻止我的伺服器發起與遠端伺服器的任何連接。
但是,我仍然希望伺服器能夠從連接的客戶端發起的連線回應。
換句話說,我希望其他人能夠連接到該伺服器,但該伺服器無法發起與其他伺服器的遠端連線。
我怎樣才能做到這一點?
我正在使用Ubuntu。
答案1
阻止所有傳出連線不是一個好主意,因為這會阻止您從線上儲存庫安裝軟體、進行DNS 搜尋(這在大多數環境中會很糟糕)、使用NTP 保持時鐘更新等。想要要做到這一點,請嘗試以下操作:
# Drop all connections initiated from this host
iptables -t filter -I OUTPUT 1 -m state --state NEW -j DROP
# Additionally, log the event (optional)
iptables -t filter -I OUTPUT 1 -m state --state NEW -j LOG --log-level warning \
--log-prefix "Attempted to initiate a connection from a local process" \
--log-uid
您可以透過允許某些流量(例如 DNS)來使規則更加智慧。您可以透過兩種方式實現這一目標:
讓比賽變得更加複雜。對於一兩個「白名單」項目就可以了。例子:
# Only forbid non-UDP traffic iptables -t filter -I OUTPUT 1 -m state --state NEW \! -p udp -j DROP
與某些所需服務相符的前置規則,這些服務允許從具有“-j ACCEPT”目標的本地主機啟動。例子:
# Run this after the "DROP" rule to allow connection to ports #+ 80 and 443, mostly used for HTTP and HTTPS traffic iptables -t filter -I OUTPUT 1 -p udp -m multiport --ports 80,443 -j ACCEPT
答案2
Ubuntu 內建的防火牆是 ufw。您可以使用名為 Gufw 的 GUI 來控制它。在 Gufw 的主窗格中,只需按一下「傳出:拒絕」。