開始リモートサーバーへの接続からサーバーをブロックする必要があります。
ただし、接続したクライアントを介して開始された接続からサーバーが応答できるようにしたいのですが。
つまり、他のサーバーがサーバーに接続できるようにしたいのですが、サーバーが他のサーバーへのリモート接続を開始できないようにしたいのです。
どうやってやるの?
私はUbuntuを使用しています。
すべての発信接続をブロックすると、オンラインリポジトリからソフトウェアをインストールしたり、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
Ubuntuに組み込まれているファイアウォールはufwです。 Gufwと呼ばれるGUIを使用して制御できます。 Gufwのメインペインで、[送信:拒否]をクリックするだけです。