ファイアウォールフィルター一致条件について
ファイアウォールフィルターの用語を定義する前に、用語内の条件がどのように処理されるか、および目的のフィルター結果を得るためにインターフェイス、数値、アドレス、およびビットフィールドフィルターの一致条件を指定する方法を理解する必要があります。
フィルター一致条件
ファイアウォールフィルター条件の from
ステートメントでは、実行する then
ステートメントのアクションにパケットが一致する必要がある条件を指定します。アクションを実装するには、すべての条件が一致する必要があります。一致が発生するためにはパケットが項内のすべての条件に一致する必要があるため、一致条件を指定する順序は重要ではありません。
同じ条件に複数の値を指定した場合、それらの値のいずれかが一致すると、その条件に一致します。例えば、 source-address
ステートメントを使用して複数の IP 送信元アドレスを指定すると、それらの IP 送信元アドレスのいずれかを含むパケットが条件に一致します。場合によっては、次のように、可能な値を角括弧で囲むことで、同じ条件に複数の値を指定できます。
[edit firewall family family-name filter filter-name term term-name from] user@switch# set protocol (icmp | udp)
それ以外の場合は、次のように複数のステートメントを入力する必要があります。
[edit firewall family family-name filter filter-name term term-name from] user@switch# set source-address 10.1.1.1 user@switch# set source-address 10.1.1.2
条件に一致条件を指定しない場合、その条件はすべてのパケットに一致します。
従来のJunos OSファイアウォールフィルターとは異なり、条件ステートメントで except
を使用して条件を無効にすることはできません。
数値フィルター一致条件
ポート番号やプロトコル番号など、数値で識別される数値フィルター一致条件を指定できます。数値フィルター一致条件では、一致と見なされるためにパケット内のフィールドに含める必要のある条件と単一の値を指定します。
数値は、以下のいずれかの方法で指定できます。
単一番号 - フィールドの値が数値と一致する場合、一致が発生します。たとえば、Telnet トラフィックを照合するには、次のようにします。
[edit firewall family family-name filter filter-name term term-name from] user@switch# set source-port 23
1 つの数値のテキスト シノニム - フィールドの値がシノニムに対応する数値と一致する場合、一致が発生します。たとえば、Telnet トラフィックを照合するには、次のようにします。
[edit firewall family family-name filter filter-name term term-name from] user@switch# set source-port telnet
フィルター項目内の同じ一致条件に複数の値を指定するには、それぞれの値を独自の 一致ステートメントに入力します。例えば、パケットの送信元ポートの値が22または23の場合、次の項で一致が発生します。
[edit firewall family family-name filter filter-name term term-name from] user@switch# set source-port 22 user@switch# set source-port 23
インターフェイスフィルター一致条件
パケットを受信または送信するインターフェイスに一致するインターフェイスフィルター一致条件を指定できます。たとえば、VLAN にフィルターを適用する場合、VLAN に属する一部のインターフェイスではフィルターを一致させ、VLAN 内の他のインターフェイスでは一致させないようにすることができます。インターフェイス名を指定する場合、論理ユニットを含める必要があります。
[edit firewall family family-name filter filter-name term term-name from] user@switch# set interface ge-0/0/6.0
この例では、最後の文字 (0
) が論理ユニットを指定します。インターフェイス名の一部としてワイルドカード(*
)を含めることができます。たとえば、以下のように表示されます。
[edit firewall family family-name filter filter-name term term-name from] user@switch# set interface ge-0/*/6.0 user@switch# set interface ge-0/1/*.0 user@switch# set interface ge-0/0/6.*
論理ユニットの値またはワイルドカードを指定する必要があることに注意してください。
IPアドレスフィルター一致条件
アドレスフィルター一致条件を指定して、パケット内の IP 送信元または宛先アドレス、またはプレフィックスを一致させることができます。アドレスまたはプレフィックスタイプと、アドレスまたはプレフィックス自体を指定します。たとえば、以下のように表示されます。
[edit firewall family family-name filter filter-name term term-name from] user@switch# set destination-address 10.2.1.0/24;
プレフィックス長を省略すると、デフォルトで /32
になります。たとえば、以下のように表示されます。
[edit firewall family family-name filter filter-name term term-name from] user@switch# set destination-address 10 [edit firewall family family-name filter filter-name term term-name from] user@switch# show destination-address { 10.0.0.0/32; }
フィルター条件に複数の IP アドレスまたはプレフィックスを指定するには、それぞれのアドレスまたはプレフィックスを独自の match ステートメントに入力します。例えば、パケットの送信元アドレスが以下のプレフィックスのいずれかと一致する場合、次の項で一致が発生します。
[edit firewall family family-name filter filter-name term term-name from] user@switch# set source-address 10.1.0.0/16 user@switch# set source-address 10.2.0.0/16
MAC アドレス フィルター一致条件
送信元または宛先の MAC アドレスに一致する MAC アドレス フィルター一致条件を指定できます。パケットが一致と見なされるには、アドレスタイプと値を含める必要があります。
MAC アドレスは、次のいずれかの形式で 16 進数 6 バイトで指定できます。
[edit firewall family family-name filter filter-name term term-name from] user@switch# set destination-mac-address 00:11:22:33:44:55
[edit firewall family family-name filter filter-name term term-name from] user@switch# set destination-mac-address 0011.2233.4455
[edit firewall family family-name filter filter-name term term-name from] user@switch# set destination-mac-address 001122334455
使用する形式に関係なく、システムはアドレスを標準形式 (この場合は 00:11:22:33:44:55) に解決します。
フィルター条件に複数のMACアドレスを指定するには、それぞれのMACアドレスを独自の match ステートメントに入力します。例えば、MAC送信元アドレスの値が以下のアドレスのいずれかと一致する場合、次の項で一致が発生します。
[edit firewall family family-name filter filter-name term term-name from] user@switch# set source-mac-address 00:11:22:33:44:55 user@switch# set source-mac-address 00:11:22:33:20:15
ビットフィールドフィルタ一致条件
ビットフィールドフィルター一致条件を指定して、イーサネットフレームやIP、TCP、UDP、ICMPヘッダーの特定のフィールド内の特定のビットを一致させることができます。通常、一致と見なされるためにパケットに設定する必要があるフィールドとフィールド内のビットを指定します。
ほとんどの場合、キーワードを使用して、照合するビットを指定できます。たとえば、TCP SYN パケットで照合するには、次のように syn
と入力します。
[edit firewall family family-name filter filter-name term term-name from] user@switch# set tcp-flags syn
SYN ビットは 8 ビット tcp-flags フィールドの 3 番目に最下位ビットであるため、 0x02
と入力することもできます。
[edit firewall family family-name filter filter-name term term-name from] user@switch# set tcp-flags 0x02
複数のビットフィールド値を照合するには、 表 1で説明されている論理演算子を使用します。演算子は、優先順位の高いものから低いものの順にリストされています。操作は左から右に評価されます。
論理演算子 |
説明 |
---|---|
|
否定 |
|
論理AND |
|
論理OR論理 |
論理演算子を使用する場合は、値を引用符で囲み、スペースは含めないでください。たとえば、次のステートメントは TCP ハンドシェイクの 2 番目のパケットと一致します。
[edit firewall family family-name filter filter-name term term-name from] user@switch# set tcp-flags "syn&ack"
一致を無効にするには、値の前に感嘆符を付けます。たとえば、次のステートメントは TCP ハンドシェイクの最初のパケットにのみ一致します。
[edit firewall family family-name filter filter-name term term-name from] user@switch# set tcp-flags "syn&!ack"
テキスト同義語を使用して、一般的なビットフィールド一致を指定できます。たとえば、次のステートメントは TCP ハンドシェイクの最初のパケットとも一致します。
[edit firewall family family-name filter filter-name term term-name from] user@switch# set tcp-initial