web-dev-qa-db-ja.com

すべてのアウトバウンド接続をブロックするにはどうすればよいですか?

開始リモートサーバーへの接続からサーバーをブロックする必要があります。

ただし、接続したクライアントを介して開始された接続からサーバーが応答できるようにしたいのですが。

つまり、他のサーバーがサーバーに接続できるようにしたいのですが、サーバーが他のサーバーへのリモート接続を開始できないようにしたいのです。

どうやってやるの?

私はUbuntuを使用しています。

5
Joehot200

すべての発信接続をブロックすると、オンラインリポジトリからソフトウェアをインストールしたり、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などの特定のトラフィックを許可することで、ルールをよりスマートにすることができます。これは、次の2つの方法で実現できます。

  1. 試合をより複雑にします。 1つまたは2つの「ホワイトリスト」アイテムには問題ありません。例:

      # 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
    

Ubuntuに組み込まれているファイアウォールはufwです。 Gufwと呼ばれるGUIを使用して制御できます。 Gufwのメインペインで、[送信:拒否]をクリックするだけです。

3
Humpity