ファイアウォールフィルター一致条件について
ファイアウォールフィルターの用語を定義する前に、用語で指定した一致条件がどのように処理されるか、および目的のフィルタリング結果を得るためにさまざまなタイプの一致条件を指定する方法を理解する必要があります。一致条件は、一致条件を定義する文字列(一致ステートメントと呼ばれる)で構成されます。一致条件とは、パケットに含める必要のある値またはフィールドです。
フィルター一致条件
ファイアウォールフィルター条件の from
ステートメントでは、then
ステートメントのいずれかでアクションをトリガーするパケット条件を指定します。thenthen interfaceまたはthen vlanさまざまなオプションがあります。この from
ステートメントの条件は、実行するアクションに一致する必要があります。一致が発生するためにはパケットが項内のすべての条件に一致する必要があるため、一致条件を指定する順序は重要ではありません。
条件に一致条件を指定しない場合、その条件はすべてのパケットに一致します。
from
ステートメント内の個々の条件に値のリストを含めることはできません。たとえば、数値範囲や複数の送信元アドレスまたは宛先アドレスを指定することはできません。
from
ステートメント内の個々の条件を否定することはできません。否定条件は明示的な不一致です。
数値フィルター一致条件
数値フィルター条件は、ポート番号やプロトコル番号などの数値で識別されるパケット フィールドに一致します。数値フィルター一致条件では、条件を識別するキーワードと、パケット内のフィールドが一致する必要がある単一の値を指定します。
数値は、以下のいずれかの方法で指定できます。
単一番号 - フィールドの値が数値と一致する場合、一致が発生します。たとえば、以下のように表示されます。
source-port 25;
1 つの数値のテキスト シノニム - フィールドの値がシノニムに対応する数値と一致する場合、一致が発生します。たとえば、以下のように表示されます。
source-port http;
フィルター項目に複数の値を指定するには、独自の match ステートメント(一致条件を定義する文字列)に各値を入力します。たとえば、 vlan の値が 10 または 30 の場合、次の項で一致が発生します。
[edit firewall family family-name filter filter-name term term-name from] vlan 10; vlan 30;
数値フィルター一致条件には、以下の制限が適用されます。
値の範囲は指定できません。
カンマ区切り値のリストを指定することはできません。
数値フィルター一致条件で特定の値を除外することはできません。たとえば、一致条件が特定の値と等しくない場合にのみ一致する条件を指定することはできません。
インターフェイスフィルター一致条件
インターフェイスフィルター一致条件は、パケット内のインターフェイス名の値と一致することができます。インターフェイスフィルター一致条件の場合は、インターフェイスの名前を指定します。例::
[edit firewall family family-name filter filter-name term term-name from] user@switch# set interface ge-0/0/1
ポートおよびVLANインターフェイスは、論理ユニット番号を使用しません。ただし、ルーター インターフェイスに適用されるファイアウォール フィルターでは、インターフェイス フィルター一致条件で論理ユニット番号を指定できます。次に例を示します。
[edit firewall family family-name filter filter-name term term-name from] user@switch# set interface ge-0/1/0.0
次のように、インターフェイス名の一部として * ワイルドカードを含めることができます。
[edit firewall family family-name filter filter-name term term-name from] user@switch# set interface ge-0/*/1 user@switch# set interface ge-0/1/* user@switch# set interface ge-*
IPアドレスフィルター一致条件
アドレスフィルター一致条件は、IP送信元プレフィックスや宛先プレフィックスなどのパケット内のプレフィックス値に一致させることができます。アドレスフィルター一致条件では、フィールドを識別するキーワードと、パケットが一致する必要があるそのタイプのプレフィックスを1つ指定します。
アドレスは単一のプレフィックスで指定します。フィールドの値がプレフィックスと一致する場合、一致が発生します。たとえば、以下のように表示されます。
[edit firewall family family-name filter filter-name term term-name from] user@switch# set destination-address 10.2.1.0/28;
各プレフィックスには暗黙的な 0/0 except ステートメントが含まれています。つまり、指定されたプレフィックスに一致しないプレフィックスは、明示的に一致しないと見なされます。
アドレス プレフィックスを指定するには、プレフィックス/プレフィックス長の表記を使用します。prefix-length を省略した場合、デフォルトは /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 ステートメントに入力します。例えば、 source-address フィールドの値が以下の送信元アドレス プレフィックスのいずれかに一致する場合、次の項で一致が発生します。
[edit firewall family family-name filter filter-name term term-name from] user@switch# set source-address 10.0.0.0/8 user@switch# set source-address 10.1.0.0/16
MAC アドレス フィルター一致条件
MACアドレスフィルター一致条件は、パケット内の送信元と宛先のMACアドレス値に一致させることができます。MAC アドレス フィルター一致条件では、フィールドを識別するキーワードと、パケットが一致する必要があるそのタイプの値を 1 つ指定します。
以下の形式で、MAC アドレスを 16 進数6 バイトで指定できます。
[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 00:11:22:33:44:55
[edit firewall family family-name filter filter-name term term-name from] user@switch# set destination-mac-address 001122334455
フィルター条件に複数のMACアドレスを指定するには、それぞれのMACアドレスを独自の match ステートメントに入力します。たとえば、 source-mac-address フィールドの値が次のいずれかのアドレスと一致する場合、次の用語で一致が発生します。
[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フラグ、およびIPフラグメント化フィールドを照合できます。ビットフィールドフィルター一致条件では、フィールドを識別するキーワードを指定し、オプションがフィールドに存在するかどうかをテストします。
一致させるビットフィールド値を指定するには、値を二重引用符で囲みます。たとえば、TCP フラグ フィールドの RST ビットが設定されている場合、一致が発生します。
[edit firewall family family-name filter filter-name term term-name from] user@switch# set tcp-flags "rst"
通常、テストするビットはキーワードを使用して指定します。ビットフィールド一致キーワードは、常に 1 つのビット値にマップされます。また、ビット フィールドを 16 進数または 10 進数で指定することもできます。
複数のビットフィールド値を照合するには、 表 1で説明されている論理演算子を使用します。演算子は、優先順位の高いものから低いものの順にリストされています。操作は左結合です。
論理演算子 |
説明 |
---|---|
! |
否定。 |
& |
論理AND。 |
| |
論理OR。 |
一致を無効にするには、値の前に感嘆符を付けます。例えば、TCP フラグ フィールドの RST ビットが設定されていない場合にのみ、一致が発生します。
[edit firewall family family-name filter filter-name term term-name from] user@switch# set tcp-flags "!rst"
以下の論理 AND 演算の例では、パケットが TCP セッションの最初のパケットである場合に一致が発生します。
[edit firewall family family-name filter filter-name term term-name from] user@switch# set tcp-flags "syn&!ack"
以下の論理OR演算の例では、パケットTCPセッションの確立または破棄の一部である場合に一致が発生します
[edit firewall family family-name filter filter-name term term-name from] user@switch# set tcp-flags "syn|fin"
論理 OR 演算の場合、1 つの項に最大 2 つの一致条件を指定できます。論理 OR 演算で 2 つ以上のビットフィールド値を一致させる必要がある場合は、同じ一致条件を追加のビットフィールド値を使用して連続して設定します。次の例では、設定されている 2 つの条件が TCP フラグ フィールドの SYN、ACK、FIN、または RST ビットと一致します。
[edit firewall family family-name filter filter-name term term-name1 from] user@switch# set tcp-flags "syn|ack" [edit firewall family family-name filter filter-name term term-name2 from] user@switch# set tcp-flags "fin|rst"
テキスト同義語を使用して、一般的なビットフィールド一致を指定できます。これらの一致を 1 つのキーワードとして指定します。以下のテキスト同義語の例では、パケットがTCPセッションの最初のパケットである場合に一致が発生します。
[edit firewall family family-name filter filter-name term term-name from] user@switch# set tcp-flags tcp-initial