如何阻止所有出站連線?

如何阻止所有出站連線?

我需要阻止我的伺服器發起與遠端伺服器的任何連接。

但是,我仍然希望伺服器能夠從連接的客戶端發起的連線回應。

換句話說,我希望其他人能夠連接到該伺服器,但該伺服器無法發起與其他伺服器的遠端連線。

我怎樣才能做到這一點?

我正在使用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)來使規則更加智慧。您可以透過兩種方式實現這一目標:

  1. 讓比賽變得更加複雜。對於一兩個「白名單」項目就可以了。例子:

      # Only forbid non-UDP traffic
    iptables -t filter -I OUTPUT 1 -m state --state NEW \! -p udp -j DROP
    
  2. 與某些所需服務相符的前置規則,這些服務允許從具有“-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 的主窗格中,只需按一下「傳出:拒絕」。

相關內容