![すべての送信接続をブロックするにはどうすればよいですか?](https://rvso.com/image/1452893/%E3%81%99%E3%81%B9%E3%81%A6%E3%81%AE%E9%80%81%E4%BF%A1%E6%8E%A5%E7%B6%9A%E3%82%92%E3%83%96%E3%83%AD%E3%83%83%E3%82%AF%E3%81%99%E3%82%8B%E3%81%AB%E3%81%AF%E3%81%A9%E3%81%86%E3%81%99%E3%82%8C%E3%81%B0%E3%82%88%E3%81%84%E3%81%A7%E3%81%99%E3%81%8B%3F.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 などの特定のトラフィックを許可することで、ルールをよりスマートにすることができます。これは、次の 2 つの方法で実現できます。
一致をより複雑にします。1 つまたは 2 つの「ホワイトリスト」項目で十分です。例:
# 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 のメイン ペインで、[送信:拒否] をクリックするだけです。