2.8.9.2.4. iptables マッチングオプション
異なるネットワークプロトコルは、そのプロトコルを使用して特定のパケットと一致するように設定できる特殊なマッチングオプションを提供します。ただし、プロトコルは最初に iptables コマンドで指定する必要があります。たとえば、は、指定されたプロトコルのオプションを
-p <protocol-name>
有効にします。プロトコル名の代わりにプロトコル ID を使用することもできます。以下の例を参照してください。各例は、同じ効果を持ちます。
~]# iptables -A INPUT -p icmp --icmp-type any -j ACCEPT ~]# iptables -A INPUT -p 5813 --icmp-type any -j ACCEPT
サービス定義は
/etc/services
ファイルで提供されます。読みやすくするため、ポート番号ではなくサービス名を使用することが推奨されます。
警告
/etc/services
ファイルを保護し、承認されていない編集を防ぎます。このファイルを編集すると、攻撃者はそれを使用して、他の方法で閉じているマシンのポートを有効にすることができます。このファイルを保護するには、root で以下のコマンドを実行します。
~]# chown root.root /etc/services ~]# chmod 0644 /etc/services ~]# chattr +i /etc/services
これにより、ファイルの名前変更や削除、またはリンクの作成ができなくなります。
2.8.9.2.4.1. TCP プロトコル
これらの一致オプションは TCP プロトコル(
-p tcp
)で利用できます。
--dport
: パケットの宛先ポートを設定します。このオプションを設定するには、ネットワークサービス名(www、smtp など)、ポート番号、またはポート番号を使用します。ポート番号の範囲を指定するには、2 つの数字をコロン(:
)で区切ります。例:-p tcp --dport 3000:3200
.許容できる最大有効範囲はです0:65535
。--dport
オプションの後に感嘆符(!
)を使用して、ネットワークサービスまたはポートを使用し ない すべてのパケットに一致させます。ネットワークサービスの名前とエイリアス、およびそれらが使用するポート番号を参照するには、/etc/services
ファイルを表示します。--destination-port
match オプションは、と同一のものです--dport
。--sport
: と同じオプションを使用して、パケットのソースポートを設定し--dport
ます。--source-port
match オプションは、と同一のものです--sport
。--syn
: 通信を開始するために設計されたすべての TCP パケット(通常は SYN パケット )に適用されます。データペイロードを伝送するパケットはいずれも伝送されません。--syn
オプションの前に感嘆符(!
)を使用して、すべての SYN パケットに一致させます。--tcp-flags <tested flag list> <set flag list>
: 特定のビット(フラグ)が設定されている TCP パケットをルールに一致させることができます。--tcp-flags
match オプションは、2 つのパラメーターを受け入れます。最初のパラメーターはマスクで、パケットで調べるフラグのコンマ区切りリストです。2 番目のパラメーターは、ルールが一致するように設定する必要のあるフラグのコンマ区切りリストです。可能なフラグは次のとおりです。ACK
FIN
PSH
RST
SYN
URG
ALL
NONE
たとえば、以下の仕様が含まれる iptables ルールは、SYN フラグセットを持つ TCP パケットのみと一致し、ACK フラグおよび FIN フラグが設定されていません。--tcp-flags ACK,FIN,SYN SYNの後--tcp-flags
に感嘆符(!
)を使用して、match オプションの効果を元に戻します。--tcp-option
: 特定のパケット内で設定できる TCP 固有のオプションとの照合を試みます。この match オプションは、オプションの後に感嘆符(!
)を使用して元に戻すこともできます。
2.8.9.2.4.2. UDP プロトコル
UDP プロトコル(
-p udp
)には、これらの一致オプションを使用することができます。
--dport
: サービス名、ポート番号、またはポート番号の範囲を使用して、UDP パケットの宛先ポートを指定します。--destination-port
match オプションは、と同一のものです--dport
。--sport
: サービス名、ポート番号、またはポート番号の範囲を使用して、UDP パケットのソースポートを指定します。--source-port
match オプションは、と同一のものです--sport
。
--dport
および --sport
オプションには、ポート番号の範囲を指定するには、2 つの数字をコロン(:)で区切ります。例: -p tcp --dport 3000:3200
.許容できる最大有効範囲はです 0:65535
。
2.8.9.2.4.3. ICMP プロトコル
以下の match オプションは、Internet Control Message Protocol(ICMP)で利用でき
-p icmp
ます。
--icmp-type
: ルールと一致するように ICMP タイプの名前または数を設定します。iptables -p icmp -h コマンドを入力して、有効な ICMP 名の一覧を取得できます。
2.8.9.2.4.4. 追加の一致オプションモジュール
その他の一致オプションは、iptables コマンドで読み込まれるモジュールで利用できます。
一致するオプションモジュールを使用するには、を使用して名前でモジュールを読み込みます。ここで
-m <module-name>
、<module-name> はモジュールの名前になります。
多くのモジュールがデフォルトで利用できます。モジュールを作成して、追加機能を提供することもできます。
以下は、最も一般的に使用されるモジュールの一部です。
limit
module: 特定のルールに一致するパケット数の制限を配置します。LOG ターゲットと併用すると、limit
モジュールは一致するパケットが繰り返し発生するメッセージでシステムログを埋めたり、システムリソースを使用したりすることを防ぐことができます。LOG ターゲット 「ターゲットオプション」 の詳細はを参照してください。limit
モジュールは、以下のオプションを有効にします。--limit
:<value>/<period>
ペアとして指定された特定の期間の最大一致数を設定します。たとえば、を使用--limit 5/hour
すると、1 時間あたり 5 つのルールに一致することができます。期間は秒単位、分、時間、または日で指定できます。数値および時間修飾子を使用しない場合は、のデフォルト値が想定3/hour
されます。--limit-burst
: 一度にルールに一致できるパケット数の制限を設定します。このオプションは整数として指定されており、--limit
オプションとともに使用する必要があります。値の指定がない場合は、デフォルト値の 5(5)が想定されます。
state
module: 状態一致を有効にします。state
モジュールは、以下のオプションを有効にします。--state
: 以下の接続状態を持つパケットを照合します。ESTABLISHED
: 一致するパケットは、確立された接続内の他のパケットと関連付けられます。クライアントとサーバー間の接続を維持する場合は、この状態を受け入れる必要があります。INVALID
: 一致するパケットは既知の接続に関連付けられません。NEW
: 一致するパケットは新しい接続を作成するか、以前確認されていない双方向接続の一部です。サービスへの新規接続を許可する場合は、この状態を受け入れる必要があります。RELATED
: 一致するパケットは、既存の接続に関連する新しい接続を開始します。たとえば、制御トラフィック(ポート 21)に 1 つの接続を使用する FTP と、データ転送に個別の接続(ポート 20)が使用されています。
これらの接続状態は、などのコンマで区切ることにより、相互に使用することができ-m state --state INVALID,NEW
ます。
mac
module - ハードウェアの MAC アドレス一致を有効にします。mac
モジュールは、以下のオプションを有効にします。--mac-source
: パケットを送信するネットワークインターフェースカードの MAC アドレスを照合します。ルールから MAC アドレスを除外するには、--mac-source
match オプションの後に感嘆符(!
)を付けます。
モジュールで利用可能な他の一致オプションについては、iptables man ページを参照してください。