iptables
出典: フリー百科事典『ウィキペディア(Wikipedia)』
iptablesは、Linuxに実装されたパケットフィルタリング機能、またはその操作をするコマンドのこと。
目次 |
[編集] Linuxのバージョンとパケットフィルタ
Linuxカーネル2.4以降では、netfilterというパケット処理のためのフレームワークをもっており、これを制御するツールの実装がiptablesとなっている。
Linuxカーネル2.2系列以前ではipchainsまたはipfwadmといった実装が使われていた。netfilterとiptablesはこれらを完全に置き換えるものである。
[編集] iptablesの構成
iptablesでは、フィルタリングする対象を選ぶ「テーブル」と、各テーブルにおいて、どのタイミングで処理するかを示す「チェイン」で構成されている。
- filterテーブルはパケットの出入り自体を制御できる
- natテーブルはパケットの中身を書き換えることを制御できる、主にIPマスカレード(LinuxのNAPT実装)向けに用いられる。
filterテーブルでは、初期状態で次のチェインが用意されている。
- パケットが入る際に利用するINPUTチェイン
- パケットが出ていく際に利用するOUTPUTチェイン
- インターフェース間をまたぐ際に利用するFORWARDチェイン
natテーブルでは、主にパケットを書換えるタイミングに影響する次のチェインが用意されている。これらのチェインは管理者であれば自由に追加、削除が可能となっている。
- PREROUTINGチェイン
- POSTROUTINGチェイン
[編集] チェインの編集
iptablesは各テーブル内のチェインを書換えることにより、パケットフィルタリングができる。
[編集] チェインの編集例
チェインを編集するには例えば、次のようにiptablesコマンドを用いる。
iptables -t filter -I INPUT -p tcp -s 123.123.123.123 --dport 80 -j DROP
- -t filter でfilterテーブルを操作
- -I INPUT でINPUTチェインに追加(-Iでチェイン内ルールの先頭に、-Aで末尾に)
- -p tcp でTCPプロトコル限定
- -s 123.123.123.123 で送信元IPを指定、
- --dport 80 で 80番ポート(80/tcp = http)を指定
- 上記ルールにマッチしたパケットを-j DROPで破棄
まとめるとfilterテーブルのINPUTチェインの先頭に以下のルールを追加:IP 123.123.123.123から80/tcp(http)に入ろうとしているパケットは送信元(123.123.123.123)に通知することなく破棄(DROP)ということになる。