Red Hat Enterprise Linuxにはネットワーク用の高度なツールパケットフィルタリングがインストールされています。 — カーネル内でネットワークスタック へネットワークパケットが進入、通過、退出するのを制御するプロセス。 バージョン2.4以前のカーネルはパケットフィルタリングをipchainsに依存しており、フィルタリングプロセスの各ステップでパケットに適用される 規則の一覧を使用していました。バージョン2.4の到来により、iptables(ネットフィルタとも呼ばれる)がもたらされました。 これはipchainsと似ていますが、ネットワークパケットの フィルタリングに利用できる範囲や制御が大幅に拡張しています。
この章では、パケットフィルタリングの基礎に焦点をおき、ipchainsとiptablesの違いを明確にして、iptablesコマンドで使用できるさまざまなオプションを説明します。 また、システムを再起動する際にフィルタリング規則を保持する方法を説明しています。
iptablesの規則の作成とこれらの規則に基づくファイアウォールの設定については、 項17.7を参照してください。
![]() | 警告 |
---|---|
2.4カーネル下でデフォルトのファイアーウォール機能はiptablesです。しかし、ipchainsが既に起動しているなら、iptablesを使う事ができません。ipchainsがシステム起動時に存在すると、カーネルはエラーを表示しiptablesの起動に失敗します。 これらのエラーメッセージはipchainsの機能に影響を与えるものではありません。 |
Linuxカーネルにはパケットをフィルタリングする機能が組み込まれているので、 一部のパケットだけが システムに入ってくるようにすることができます。2.4カーネルのネットフィルタには3つの組込み型テーブル、 すなわち規則一覧が含まれています。以下のようなものです。
filter — ネットワークパケットを処理する デフォルトのテーブル。
nat — 新規接続を作成するパケットの変更、 及びNetwork Address Translation (NAT)に使用。
mangle — パケット変更の特定のタイプに使用。
![]() | ヒント |
---|---|
これら組込みのテーブルの他に、専用のテーブルを/lib/modules/<kernel-version>/kernel/net/ipv4/netfilter/ディレクトリに作成して保存することができます (<kernel-version>は、バージョンカーネル番号 になります)。 |
各テーブルは組込み型のチェーンのグループを持ち、それぞれがネットフィルタによってパケット上で実行されるアクションに相当 します。
フィルタテーブル用の組込み型チェーンは以下のようになります:
INPUT — ホスト用のターゲットとされている ネットワークパケットに適用します。
OUTPUT — ローカル生成のネットワークパケットに適用します。
FORWARD — ホストを通ってルーティングした ネットワークパケットに適用します。
natテーブル用の組込み型チェーンは以下のようになります:
PREROUTING — ネットワークパケットが到着すると それを変更します。
OUTPUT — ローカル生成のネットワークパケットを 送信される前に変更します。
POSTROUTING — ネットワークパケットが送信される前に それを変更します。
mangleテーブルの組込み型チェーンは以下の様になります:
INPUT — ホスト用にターゲットされているネットワーク パケットを変更します。
OUTPUT — ローカル生成のネットワークパケットを 送信される前に変更します。
FORWARD — ホストを通してルーティングした ネットワークパケットを変更します。
PREROUTING — 着信のネットワークパケットを ルーティングされる前に変更します。
POSTROUTING — ネットワークパケットが送信される前に それを変更します。
Linux システムで受信/送信されたすべてのネットワークパケットは 少くとも1つのテーブルに従います。しかし、チェーンの最後に現われる前に、 各テーブル内の複数の規則に従うこともあります。これらの規則の構成や目的は 異なりますが、通常、特定のプロトコール及びネットワークサービスを使用するときに、 特定のIPアドレスまたは複数セットのIPアドレスと送受信するパケットを識別するために 使用されます。
その目的地に関係なく、パケットがあるテーブルの特定の規則に適合すると、 あるターゲット、すなわちアクションがパケットに適用されます。 規則が適合するパケットにACCEPTターゲットを指定している場合、 パケットは規則チェックの残りの部分をスキップして、その目的地に進むことを許可されます。 規則がDROPターゲットを指定している場合、 パケットはシステムへのアクセスを拒否されてパケットを発信したホストには何も返信されません。 規則がQUEUEターゲットを指定している場合、 パケットはユーザースペースへパスされることになります。 規則がオプションのREJECTターゲットを指定している場合、 パケットはドロップされますが、エラーパケットがパケットの発信元へ送られます。
それぞれのチェーンはACCEPT、 DROP、REJECT、 QUEUEのいずれかのデフォルトポリシーを持っています。このチェーン内の規則のどれも パケットに適応しない場合、パケットはデフォルトポリシーに従って扱われます。
iptablesコマンドはこれらのテーブルを設定するだけでなく、必要であれば、 新しいテーブルのセットアップもします。