iptables ファイアウォールは、パケット フィルタリングと NAT ルールを管理するために使用されます。 IPTables はすべての Linux ディストリビューションに付属しています。 iptables のセットアップと構成の方法を理解すると、Linux ファイアウォールを効果的に管理するのに役立ちます。
iptables ツールは、Linux ファイアウォール ルールの管理に使用されます。一見すると、iptables は複雑に見えるかもしれません (または混乱することさえあります)。しかし、iptables の仕組みと構造の基本を理解すれば、iptables ファイアウォール ルールの読み書きは簡単になります。
この記事は、進行中の iptables チュートリアル シリーズの一部です。これは、そのシリーズの最初の記事です。
この記事では、iptables がどのように構造化されているかを説明し、iptables のテーブル、チェーン、およびルールに関する基本事項について説明します。
高レベルでは、iptables に複数のテーブルが含まれる場合があります。テーブルには複数のチェーンが含まれる場合があります。チェーンは、組み込みまたはユーザー定義にすることができます。チェーンには複数のルールが含まれる場合があります。パケットのルールが定義されています。
したがって、構造は次のとおりです。iptables -> テーブル -> チェーン -> ルール。これは次の図で定義されています。
図 :IPTables テーブル、チェーン、およびルール構造
繰り返しますが、テーブルは一連のチェーンであり、チェーンは一連のファイアウォール ルールです。
I. IPTABLES テーブルとチェーン
IPTables には、次の 4 つの組み込みテーブルがあります。
1.テーブルのフィルター
Filter は iptables のデフォルトのテーブルです。したがって、独自のテーブルを定義しない場合は、フィルター テーブルを使用することになります。 iptables のフィルター テーブルには、次の組み込みチェーンがあります。
- INPUT チェーン – ファイアウォールへの着信。ローカル サーバーに着信するパケット。
- OUTPUT チェーン – ファイアウォールからの発信。ローカルで生成され、ローカル サーバーから送信されるパケット。
- FORWARD チェーン – ローカル サーバー上の別の NIC のパケット。ローカル サーバー経由でルーティングされるパケットの場合
2. NAT テーブル
iptable の NAT テーブルには、次の組み込みチェーンがあります。
- PREROUTING チェーン – ルーティング前にパケットを変更します。つまり、パケットの変換は、パケットがシステムに到着した直後 (およびルーティングの前) に行われます。これは、パケットの宛先 IP アドレスを、ローカル サーバー上のルーティングと一致するものに変換するのに役立ちます。これは DNAT (宛先 NAT) に使用されます。
- POSROUTING チェーン – ルーティング後にパケットを変更します。つまり、パケットの変換は、パケットがシステムを離れるときに発生します。これは、パケットの送信元 IP アドレスを宛先サーバーのルーティングと一致する可能性があるものに変換するのに役立ちます。これは SNAT (ソース NAT) に使用されます。
- OUTPUT チェーン – ファイアウォール上でローカルに生成されたパケットの NAT
3.マングルテーブル
iptables の Mangle テーブルは、特殊なパケット変更用です。これにより、TCP ヘッダーの QOS ビットが変更されます。 Mangle テーブルには、次の組み込みチェーンがあります。
- PREROUTING チェーン
- 出力チェーン
- FORWARD チェーン
- INPUT チェーン
- ポスティング チェーン
4.生テーブル
iptable の Raw テーブルは、構成の例外用です。 Raw テーブルには、次の組み込みチェーンがあります。
- PREROUTING チェーン
- 出力チェーン
次の図は、iptables の 3 つの重要なテーブルを示しています。
図 :IPTables 組み込みテーブル
II. IPTABLES ルール
以下は、iptables ルールについて覚えておくべき重要なポイントです。
- ルールには基準と目標が含まれます。
- 条件が一致した場合、ターゲットで指定されたルールに進みます (または) ターゲットで指定された特別な値を実行します。
- 条件が一致しない場合、次のルールに進みます。
目標値
以下は、ターゲットで指定できる特別な値です。
- ACCEPT – ファイアウォールはパケットを受け入れます。
- DROP – ファイアウォールはパケットをドロップします。
- QUEUE – ファイアウォールはパケットをユーザー空間に渡します。
- RETURN – ファイアウォールは、このパケットに対する現在のチェーン内の次の一連のルールの実行を停止します。コントロールは呼び出しチェーンに返されます。
iptables –list (または) service iptables status を実行すると、システムで利用可能なすべてのファイアウォール ルールが表示されます。次の iptable の例は、このシステムにファイアウォール ルールが定義されていないことを示しています。ご覧のとおり、デフォルトの入力チェーン、フォワード チェーン、および出力チェーンを含むデフォルトの入力テーブルが表示されます。
# iptables -t filter --list Chain INPUT (policy ACCEPT) target prot opt source destination Chain FORWARD (policy ACCEPT) target prot opt source destination Chain OUTPUT (policy ACCEPT) target prot opt source destination
mangle テーブルを表示するには、次の手順を実行します。
# iptables -t mangle --list
nat テーブルを表示するには、次の手順を実行します。
# iptables -t nat --list
生のテーブルを表示するには、次の操作を行います。
# iptables -t raw --list
注:-t オプションを指定しない場合、デフォルトのフィルター テーブルが表示されます。したがって、次のコマンドはどちらも同じです。
# iptables -t filter --list (or) # iptables --list
次の iptable の例は、フィルター テーブルの入力チェーン、転送チェーン、および出力チェーンで定義されたいくつかのルールがあることを示しています。
# iptables --list Chain INPUT (policy ACCEPT) num target prot opt source destination 1 RH-Firewall-1-INPUT all -- 0.0.0.0/0 0.0.0.0/0 Chain FORWARD (policy ACCEPT) num target prot opt source destination 1 RH-Firewall-1-INPUT all -- 0.0.0.0/0 0.0.0.0/0 Chain OUTPUT (policy ACCEPT) num target prot opt source destination Chain RH-Firewall-1-INPUT (2 references) num target prot opt source destination 1 ACCEPT all -- 0.0.0.0/0 0.0.0.0/0 2 ACCEPT icmp -- 0.0.0.0/0 0.0.0.0/0 icmp type 255 3 ACCEPT esp -- 0.0.0.0/0 0.0.0.0/0 4 ACCEPT ah -- 0.0.0.0/0 0.0.0.0/0 5 ACCEPT udp -- 0.0.0.0/0 224.0.0.251 udp dpt:5353 6 ACCEPT udp -- 0.0.0.0/0 0.0.0.0/0 udp dpt:631 7 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:631 8 ACCEPT all -- 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED 9 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:22 10 REJECT all -- 0.0.0.0/0 0.0.0.0/0 reject-with icmp-host-prohibited
iptables –list コマンド出力のルールには、次のフィールドが含まれます:
- num – 特定のチェーン内のルール番号
- target – 上で説明した特別なターゲット変数
- prot – プロトコル。 tcp、udp、icmp など
- opt – 特定のルールの特別なオプション
- source – パケットの送信元 IP アドレス
- destination – パケットの宛先 IP アドレス