iptablesの概念と設定方法を調べました。
iptablesとは iptablesとはパケットをフィルタリングするためのツールです。 また、NATとしても使えます。
iptablesの用語 iptablesを理解するにあたって必要な用語をまとめました。
TARGETS iptablesのルールを設定する際に、targetを指定します。 targetはユーザー定義のものと特別なtargetである、ACCEPT, DROP, QUEUE or RETURNがあります。 パケットに対してどんな操作をするかを定義します。
代表的なtargetです。
ACCEPT パケットを通す DROP パケットを破棄する QUEUE パケットをキューにためる RETURN チェインを辿るのをストップして、評価を行う REJECT パケットを破棄し、エラーパケットを返す DNAT 送信先IPアドレスを変更する SNAT 送信元IPアドレスを変更する MASQUERADE 複数の送信元IPアドレスを変更(マスカレード)する LOG ログを出力する
Chain iptablesを設定する際にchainを指定します。 chainにはビルトインchainとユーザー定義chainがあります。 chainはパケットに対する実行条件を定義します。
ビルトインchainは以下です。
INPUT FORWARD OUTPUT PREROUTING POSTROUTING
TABLES 一般的にはフィルタリングとして使われることが多いiptablesですが、他にも様々な機能があります。 iptablesにはそれをtableという概念で扱っており、5つのtableがあります。
filter パケットのフィルタリングを設定するためのテーブルです。 デフォルトのテーブルです。tableオプションを明示的に指定しない場合は、filterが指定されたことになります。 INPUT、FORWARD、OUTPUTのChainを含みます。
nat IPアドレスの変換を設定するためのテーブルです。 PREROUTING、POSTROUTING のChainを含みます。
mangle パケットの書き換えを設定するためのテーブルです。
raw 接続の追跡の除外の設定をするためのテーブルです。
security アクセスコントロールの設定をするためのテーブルです。
OPTIONS iptablesのコマンドにオプションを指定できます。 オプションはいくつかのグループに区別されます。
COMMANDS iptablesに実行してほしいコマンドを指定します。 以下のようなコマンドがあります。
-A, –append 選択したチェインにルールを追加します。
-C, –check 指定したチェインにルールが存在するかをチェックします。
-D, –delete チェインからルールを消します。
詳細はiptablesのmanをご覧ください。
PARAMETERS ルールを作成する際に指定するパラメーターです。
-p, –protocol ルールの対象となるプロトコルを指定します。
-j, –jump ルールの対象となるtargetを指定します。
-s, –source ルールの対象となるアドレスを指定します。 例えば、IPアドレス、ホスト名、ネットワーク名などを指定します。
詳細はiptablesのmanをご覧ください。
OTHER OPTIONS 追加オプションです。
-v, –verbose 詳細表示のオプションです。
詳細はiptablesのmanを参照ください。
iptablesの基本的な構文 基本的には以下のように指定します。
1 iptables [-t table ] command
例えば、ローカルホストからのping(icmp)を許可する場合は以下となります。
1 iptables -A INPUT -p icmp -j ACCEPT
iptablesの基本的な読み方 現在のiptablesの設定を表示するには、iptables -L コマンドを使います。
1 2 3 4 5 6 7 8 9 10 11 12 Example: Input Chain Rule Table Listing Chain INPUT (policy DROP ) target prot opt source destination ACCEPT all ACCEPT all DROP all UDP udp TCP tcp ICMP icmp REJECT udp REJECT tcp REJECT all
1行目がChainの名前で、次にデフォルトポリシーが表示されています(DROP)。 2行目がカラム名です。
target : target名prot : プロトコル名。例えば、tcp, udp, icmp, or allopt : めったに使われません。source : 接続元のIPアドレス or サブネット or anywheredestination : 接続先のIPアドレス or サブネット or anywhere
iptablesコマンドの使い方 いくつかの例を紹介します。
特定のサーバーからのhttp通信を許可する 1 2 3 # iptables -A INPUT -p tcp -s 192.168.1.1 --dport 80 -j ACCEPT # 設定を保存 # service iptables save
ルールを消す iptables -D ルール で消すことができます。iptables -S
でルール一覧がでるので、そのルールを指定すれば簡単です。
1 2 # iptables -S -A INPUT -s 157.7 .105 .69 /32 -p tcp -m tcp --dport 80 -j ACCEPT
以下のコマンドで消します。
1 iptables -D INPUT -s 157.7 .105 .69 /32 -p tcp -m tcp --dport 80 -j ACCEPT
参考文献