18.3. iptablesコマンドで使用するオプション

パケットをフィルタリングする規則は、iptablesコマンドを使用して配置されます。以下のようなパケットの要点が基準としてよく使用されます:

このようなパケットを扱う特定のオプションに関する詳細は、 項18.3.4及び項18.3.5を参照してください。

一定の iptables規則で使用されるオプションは、規則を有効にする為に、規則全体の目的と条件を元にして論理的にグループ化する必要があります。これ以降のセクションでは iptablesコマンドによく使われるオプションを説明していきます。

18.3.1. iptablesオプションの構成

多くのiptablesコマンドの構成は、次のようになります。

iptables [-t <table-name>] <command> <chain-name> <parameter-1> \
         <option-1> <parameter-n> <option-n>

<table-name>オプションは、 コマンドで使用するために、ユーザーがデフォルトのfilter テーブル以外のテーブルを選択することができます。 <command>オプションは、 <chain-name>オプションで指定される 規則を追加する/削除するなど、実行する特定のアクションを指示します。 以下の<chain-name>は、 パケットが規則と合致したときに何を行なうか(アクション)を定義するパラメータとオプションの組み合わせです。

iptablesコマンドの構成を見てみると、他の殆どのコマンドとは異なり、iptablesコマンドの長さと複雑性はその目的に基づいて変更出来ることを認識しておくことが大切です。チェーンから規則の1つを削除するコマンドは、とても短くできますが、特定のサブネットから送信されたさまざまな特定パラメータとオプションを使用するパケットをフィルタするように設計したコマンドは、かなり長くなります。iptablesコマンドを作成する時、幾つかのパラメータとオプションは、さらに以前のオプションの要求を指定するために、他のパラメータとオプションを必要とする可能性があることを認識しておくと役に立ちます。有効な規則を構成するには、他のオプションセットを要求するパラメータとオプションがすべて満足されるまで継続する必要があります。

iptables -hと入力すると、iptablesコマンドの構成の総合一覧が表示されます。

18.3.2. コマンドオプション

コマンドオプションは、iptablesが特定の動作を行なうよう 指示します。 1つのiptablesコマンドにつき使用できるコマンドオプションは 1つだけです。ヘルプコマンドを除くすべてのコマンドは大文字で作成します。

iptablesのコマンドには、次のようなものがあります:

18.3.3. iptablesパラメータオプション

特定のチェーンにおける規則の追加、削除、挿入、交換などの規則を含む一定のiptables コマンドを指定すると、パケットフィルタリング規則を構築するためのパラメータが必要になります。

18.3.4. iptables照合オプション

異なるネットワークプロトコルは、特別な照合オプションを用意して、そのプロトコルを使用して特定のパケットと一致するように設定できます。ただし、このプロトコルは最初に、iptablesコマンドに指定される必要があります。-p tcp <protocol-name>で、指定されたプロトコル用のオプションを利用できるようにします(ここで <protocol-name>はターゲットプロトコルです)。

18.3.4.1. TCPプロトコル

TCPプロトコル(-p tcp)では、以下の照合オプションを使用できます。

  • --dport — パケットの送信先ポートを設定します。ネットワークサービス名 (wwwsmtpなど)、ポート番号、ポート番号の範囲のいずれかを 使用できます。ネットワークサービスの名前や、エイリアスとそのネットワークサービスが使用するポート番号を閲覧するには、/etc/servicesファイルを参照してください。 --destination-portの照合オプションは、--dportと同義と なります。

    ポート番号の範囲を指定するには、-p tcp --dport 3000:3200のように2つの番号をコロン(:)で区切ります。最大の有効範囲は、0:65535です。

    --dportオプションの後で感嘆符(!)を使用して、そのネットワークサービスあるいはポートを使用しない すべてのパケットを照合します。

  • --sport--dportと同じオプションを使用して、パケットの 送信元ポートを設定します。--source-portの照合オプションは--sportと同義です。

  • --syn—一般にSYNパケットと呼ばれる、通信を開始するよう設計されたすべてのTCPパケットを規則の対象にします。データを伝送するパケットは影響を受けません。--syn オプションの後で感嘆符(!)をフラグとして使用すると、SYNパケット以外のすべてのパケットが対象になります。

  • --tcp-flags — 特定のビットセットやフラグを持つTCP パケットを規則に照合する様にします。--tcp-flagsの 照合オプションは2つのパラメータを受け付けます。1番目のパラメータはマスクで、 パケット内でフラグが検査されるようにします。2番目のパラメータでは、一致する ように設定する必要のあるフラグを指定します。

    使用できるフラグは以下のようになります:

    • ACK

    • FIN

    • PSH

    • RST

    • SYN

    • URG

    • ALL

    • NONE

    たとえば、-p tcp --tcp-flags ACK,FIN,SYN SYNと指定されている iptables規則は、SYNフラグが設定されていてACKフラグとFINフラグは設定されていないTCPパケットのみを照合します。

    感嘆符(!)を--tcp-flagsの後で使用すると、照合 オプションの対応が逆転されます。

  • --tcp-option—特定のパケットで設定できるTCP特有のオプションを照合しようとします。感嘆符(!)を使用すると、意味を反対にすることができます。

18.3.4.2. UDPプロトコル

UDPプロトコル(-p udp)では、以下の照合オプションを使用 できます。

  • --dport — サービス名、ポート番号、ポート番号の範囲のどれかを使用して、UDPパケットの送信先ポートを指定します。--destination-port の照合オプションは--dport と同義となります。

  • --sport — サービス名、ポート番号、ポート番号の範囲などの いずれかを使用して UDP パケットの送信元ポートを指定します。--source-port の照合オプションは--sportと同義です。

18.3.4.3. ICMPプロトコル

ICMP(Internet Control Message Protocol)には(-p icmp)、次の照合オプションが使用できます。

  • --icmp-type — 規則を満たす ICMP タイプの番号か名前を設定します。有効な ICMP 名の一覧は、iptables -p icmp -h というコマンドを実行すると表示されます。

18.3.4.4. その他の照合オプションモジュール

その他の照合オプションも iptablesコマンドによってロードされるモジュールで利用できます。比較オプションモジュールを使用するには、-m <module-name> などの-m オプションを使用して、名前の指定でモジュールをロードする必要があります(<module-name> はモジュールの名前で入れ換えます)。

デフォルトで多くのモジュールが利用できるようになっています。 追加機能を提供するモジュールを作成することもできます。

以下に、よく使われるモジュールのいくつかを挙げてみました。

  • limitモジュール — 特定の規則を満たすパケットの数に 制限を設けます。大量の一致パケットが繰り返しのメッセージでシステムログを一杯にしたり、システムのリソースを使いきってしまうことがないようにすることができるため、 LOGターゲットと共に使用するとき特に便利です。

    limitモジュールは以下のようなオプションを有効にします:

    • --limit—特定の時間帯に照合する回数を設定します。<number>/<time>という形式で回数と時間モディファイアを配置して指定します。たとえば、 --limit 5/hourと指定すると、1時間に5回だけ規則が比較されます。

      回数と時間を指定しない場合は、デフォルト値の 3/hour が使用されます。

    • --limit-burst—同時に照合できるパケットの数を制限します。このオプションは、--limitオプションとともに使用してください。このオプションでは、同時に比較できるパケットの最大数を指定します。

      値を指定しない場合、5つのパケットだけが規則を満たすことができます。

  • stateモジュール — 接続状態について照合を有効にします。

    stateモジュールは以下のようなオプションを有効にします:

    • --state — 以下の接続状態についてパケットを照合します:

      • ESTABLISHED—確立された接続内にある他のパケットに関係があるパケットが規則を満たします。

      • INVALID—既知の接続に結び付けられないパケットが規則を満たします。

      • NEW—新しい接続を作成しているパケットか、あるいはそれまでになかった双方向接続の一部となっているパケットが規則を満たします。

      • RELATED—既存の接続と何らかの関係がある新しい接続を開始するパケットが規則を満たします。

      これらの接続状態を複数組み合わせて使用するには、-m state --state INVALID,NEWのようにカンマで区切ります。

  • macモジュール — ハードウェアMACアドレスの照合を有効にします。

    macモジュールは以下のようなモジュールを有効にします:

    • --mac-source — パケットの送信元であるネットワークインターフェースカードの MAC アドレスを照合します。ある規則から MAC アドレスを除外 するには、--mac-source照合オプションの後に感嘆符(!)を付けます。

他のモジュールで使用できる照合オプションを確認するには、 iptablesの manページを参照して下さい。

18.3.5. ターゲットオプション

パケットが特定の規則を満たすと、規則はそのパケットのさまざまな行方を決定し場合によっては追加動作をさせることも可能です。各チェーンにはデフォルトのターゲットがあり、そのチェーンの規則を満たすパケットが ない場合か、あるいはパケットが満たした規則のいずれもがターゲットを指定していない場合に使用されます。

標準(デフォルト)のターゲットには以下のようなものがあります:

これらの標準ターゲットのほかに、ターゲットモジュール と呼ばれる拡張機能で各種のターゲットを使用できます。照合オプションモジュールの詳細については、項18.3.4.4を参照してください。

多くの拡張ターゲットモジュールがありますが、ほとんどは特定のテーブルか状況のみに適用されます。デフォルトでRed Hat Enterprise Linuxに含まれているターゲットモジュールでよく使用されるものには、次のようなものがあります。

natテーブルを使用した IPマスカレード、又は mangleテーブルを使用したパケット変更で役にたつものなど、その他のターゲット拡張の幾つかは、iptables の manページを参照してください。

18.3.6. リストオプション

デフォルトのリストコマンド iptables -Lは、デフォルトのフィルタテーブルの現在のチェーンについて非常に基本的な概要情報を提供します。追加のオプションは更に詳細情報を提供します: