iptablesを使用して発信接続をブロックする

iptablesを使用して発信接続をブロックする

シェルアクセス(ルートではない)を持つ外部スポンサーを持つ(非プロダクション)マシンがあります。私は彼らがこのコンピュータから私たちのネットワークにもはやiptablesを使用するのを防ぎたいと思います。

「一般」ファイアウォールGUIは着信トラフィックのみをブロックします。 「すべての着信トラフィック(および応答)を許可しますが、特定の宛先に発信する新しいトラフィックのみを許可します(たとえば、サーバーのsnmp-trap監視)」などのルールをどのように設定しますか?

オペレーティングシステムはCentOS 5です。

答え1

着信TCPトラフィックのみを許可すると仮定すると、次の規則を使用して確立されたTCP接続(外部から開始する必要があります)とLAN外のIPアドレスに送信されるトラフィックを制限できます。

iptables -A INPUT -p tcp -i lo -j ACCEPT
iptables -A INPUT -p tcp -p 22 -j ACCEPT   # repeat for other ports you want to allow
iptables -P INPUT -j DENY
iptables -A OUTPUT -o lo -j ACCEPT
iptables -A OUTPUT -p tcp \! -d 10.0.0.0/8 -j ACCEPT  # replace by your LAN's network(s)
iptables -A OUTPUT -p tcp \! --syn -j ACCEPT
iptables -P OUTPUT -j DENY

要件に応じて、サポーターが実行するプロセスに特別にいくつかの規則を適用することを好むかもしれません。supportersグループに属していると仮定すると、次の規則は、LAN内の志願者(および志願者のみ)のすべての接続(受信または発信)を拒否します。

iptables -I INPUT \! -i lo -s 10.0.0.0/8 -m owner --gid-owner supporters -j DENY
iptables -I OUTPUT \! -o lo -d 10.0.0.0/8 -m owner --gid-owner supporters -j DENY

gid-ownerテストプロセスに注意を払うFSGID、これはほぼ常に有効なGID。プロセスを実行しない限り設定または、有効なGIDを次に切り替えます。補足グループ、ユーザーのデフォルトグループ(たとえば、ユーザーデータベースに書き込まれます/etc/passwd)が適用されます。

答え2

「承認済み」として明示的に定義したトラフィックを除いて、発信するすべてのトラフィックを削除する方法は2つあります。 1 つ目は、OUTPUT チェーンの廃棄の基本ポリシーを設定することです。

iptables -P OUTPUT DROP

このアプローチの欠点は、チェーンがリフレッシュされると(すべてのルールを削除する)、すべてのアウトバウンドトラフィックが破棄されることです。別の方法は終わりチェーン。

iptables -A OUTPUT -j DROP

あなたが必要とするものを正確に知らなければ、何を受け入れるべきかについてのアドバイスをすることはできません。私が個人的に使用する方法は、チェーンの末尾にデフォルトのDROPルールを配置することです。 GUI がルールを設定する方法を調べる必要があるかもしれません。そうしないと、起動時にルールを復元する既存のCLI方式(例:/etc/sysconfig/iptables)と競合する可能性があります。

答え3

インストールを検討してください桟橋の壁ファイアウォールビルダーとして。単一のインターフェイス例を開始点として使用し、不要な発信アクセスルールを提供しないでください。必要なICMPタイプを許可します。

少なくとも、発信DNS(名前検索)およびNTP(時刻同期)アクセスルールを提供する必要があります。

関連情報