
サーバーをブロックする必要がある開始するリモート サーバーへの接続。
ただし、接続されたクライアントを介して開始された接続からサーバーが応答できるようにする必要があります。
つまり、他のユーザーがサーバーに接続できるようにしたいが、サーバーが他のサーバーへのリモート接続を開始できないようにしたいのです。
どうやってやるの?
私は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 のメイン ペインで、[送信:拒否] をクリックするだけです。