324.4 netfilter/iptables
324.4 netfilter/iptables
重要度 5
説明 iptablesの使用方法と設定に精通していること。
主要な知識範囲
・iptables を使用したパケットフィルタリング及び NAT(Network Address Translation)機能
重要なファイル、用語、ユーティリティ
- iptables
- iptables-save/iptables-restore
iptables
iptablesは、パケットフィルタリング、ファイアウォール、ネットワークアドレス変換(NAT)機能をもつコマンド
書式
iptables [-t テーブル] -[AD] チェイン ルール詳細 [オプション]
iptables [-t テーブル] -[LFZ] チェイン [オプション]
iptables [-t テーブル] -I チェイン [ルール番号] ルール詳細 [オプション]
iptables [-t テーブル] -N チェイン
iptables [-t テーブル] -X チェイン
主なテーブル
filter | パケットの許可・破棄を設定するためのもので、フィルタリングのために使用。INPUT、FORWARD、OUTPUTチェインを利用可 |
nat | 新しいセッションを開くパケットの送信元フィールドや、宛先フィールドの変換のために使用。OUTPUT、PREROUTING、POSTROUTINGチェインを利用可 |
mangle | TTLの設定・変更やMARK付けなどの、パケットの内容を変更するために利用。 カーネル2.4.17までは、POSTROUTING、OUTPUTチェインを利用可。 カーネル2.4.18からは、INPUT、FORWARD、POSTROUTINGチェインも利用可。 |
主なコマンド
-A [チェイン] [ルールの詳細] または –append [チェイン] [ルールの詳細] | 選択されたチェインの最後のルールを追加 |
-D [チェイン] [ルールの詳細] または –delete [チェイン] [ルールの詳細] | 選択されたチェインを削除 |
-F [チェイン] または –flush [チェイン] | 選択されたチェイン(何も指定しなければテーブル内の全てのチェイン)の内容を消去 |
-I [チェイン] [ルール番号]< [ルールの詳細] または –insert[チェイン] [ルール番号]< [ルールの詳細] | 選択されたチェインにルール番号を指定してルールを挿入 |
-L [チェイン] [オプション] または –list [チェイン] [オプション] | 選択されたチェインにある全てのルールを一覧表示。チェインの指定がなければ全てを表示 |
-N [チェイン] または –new-chain [チェイン] | 指定された名前のユーザー定義チェインを作成 |
-X [チェイン] または –delete-chain [チェイン] | 指定したユーザー定義チェインを削除 |
-Z [チェイン] または –zero [チェイン] | すべてのチェックインのパケットカウンタとバイトカウンタを0に設定 |
チェイン
チェインとは、iptablesでは特定条件に当てはまるパケットに対して処理ルールを定義すること
INPUT | 入力(受信)パケットに対して適用 |
OUTPUT | 出力(送信)パケット に対して適用 |
FORWARD | 転送(フォワード)するパケットに対して適用 |
PREROUTING | ルーティング前に適用。転送時に使用。受信時を宛先アドレスを変換するチェイン |
POSTROUTING | ルーティング後に適用。マスカレード時に使用。送信時に送信元アドレスを変換するチェイン |
ターゲット
ターゲットは、パケットがマッチした際のアクションを指定
ACCEPT | パケットの受け入れる |
DROP | パケットを破棄 |
REJECT | パケットを拒否し、パケット送信先にICMPエラーメッセージを送信 |
RETRUN | チェーン内のルール評価を終了する |
MASQUERADE | 「-t nat」と「-A POSTROUTING」と同時に用いて送信元IPとポート番号を書き換える |
PREROUTING | 特定ポートにリダイレクト |
LOG | Logを採取する |
SNAT | パケットの送信元アドレスを修正する。natテーブルでpostroutingチェーンでのみ利用できる。 |
DNAT | パケットの送信先アドレスを修正する。natテーブルでpostroutingチェーンでのみ利用できる。 |
主なコマンドの主なパラメータ
-s [アドレス] または –souce [アドレス] | 送信元を指定 |
-d [アドレス] または –destination [アドレス] | 送信先を指定 |
-i [インターフェイス名] または –in-interface [インターフェイス名] | パケットを受信するインターフェイス名を指定 |
-j [ターゲット] または –jump [ターゲット] | ルールのターゲットを、つまり、パケットをマッチした場合の処理 |
-o [インターフェイス名] または –out-interface [インターフェイス名] | パケットを受信するインターフェイス名を指定 |
-p [プロトコル] または –protocol [プロトコル] | ルールで使用されるプロトコル、またはチェックされているパケットのプロトコル。 tcp, udp, icmp, all のいずれかを指定。tcp,udpの場合は以下のオプションを指定可能 |
-sport [ポート番号] または –souce-port [ポート番号] | 送信元ポートまたはポート範囲を指定 |
-dport [ポート番号] または –destination -port [ポート番号] | 送信先ポートまたはポート範囲を指定 |
例
・192.168.0.50 から送信された全てのトラフィックを破棄
# iptables -A INPUT -s 192.168.0.50 -j DROP
・外部からのHTTP(ポート番号:80)へのアクセスを許可
# iptables -A INPUT -p tcp --dport 80 -j ACCEPT
・IPアドレス192.168.0.50からのポート番号22への接続を許可
# iptables -A INPUT -s 192.168.0.50 -p tcp --dpot 22 -j ACCEPT
iptables-save
iptablesコマンドで設定した内容は,メモリーに格納されて動作します。そのため,再起動した際には,それまで設定した全ての内容が失われてしまいます。
現在設定されているルールをファイルに書き出して保存しておくツールが iptables-save です
書式
iptables-save [オプション]
[]省略可能
オプション
-c または –counters | すべてのパケとカウンタとバイトカウンタの値を出力 |
-t [テーブル名] または –teble [テーブル名] | 出力テーブルに制限する。指定しなければ全テーブルを出力 |
例
・IPテーブル情報をファイルに出力
# iptables-save > /tmp/iptables.txt
iptables-restore
ルールを変更した場合などに iptables-save で保存したファイルを読み込んで変更を元に戻すツールが iptables-restore です
書式
iptables-restore [オプション]
[]省略可能
オプション
-c または –counters | すべてのパケとカウンタとバイトカウンタの値を復元 |
-n または –noflush | これまでのテーブルの内容を削除しない。指定しなければこれまでの各IPテーブルの内容を全て削除 |
例
・iptables-saveコマンドで保存したファイルからIPテーブル情報を復元
# iptables-restore < /tmp/iptables.txt
ディスカッション
コメント一覧
まだ、コメントがありません