ファイアウォール フィルター一致条件について
ファイアウォールフィルターの条件を定義する前に、条件の条件がどのように処理されるか、およびインターフェイス、数値、アドレス、およびビットフィールドフィルター一致条件を指定して、目的のフィルター結果を達成する方法を理解する必要があります。
フィルター一致条件
from
ファイアウォールフィルター条件の ステートメントでは、 ステートメント内の アクションにパケットが一致する必要がある条件をthen
指定します。実装するアクションでは、すべての条件が一致する必要があります。一致条件を指定する順序は重要ではありません。パケットは一致を発生させるために条件内のすべての条件に一致する必要があるためです。
同じ条件に複数の値を指定した場合、それらの値のいずれか1つに一致すると、その条件に一致します。例えば、 ステートメントを使用して複数のIPソースアドレスを source-address
指定した場合、これらの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
にすることはできません。
数値フィルター一致条件
ポート番号やプロトコル番号など、数値によって識別される数値フィルター一致条件を指定できます。数値フィルター一致条件の場合、一致と見なされるためにパケット内のフィールドに含める必要がある条件と単一の値を指定します。
数値は、以下のいずれかの方法で指定できます。
1 つの番号 — フィールドの値が数値と一致した場合、一致が発生します。例えば、Telnet トラフィックを照合するには、以下を行います。
[edit firewall family family-name filter filter-name term term-name from] user@switch# set source-port 23
単一番号のテキスト シノニム — フィールドの値がシノニムに対応する番号と一致する場合、一致が発生します。例えば、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 アドレスまたはプレフィックスを指定するには、独自の一致ステートメントに各アドレスまたはプレフィックスを入力します。例えば、パケットの送信元アドレスが次のいずれかのプレフィックスに一致する場合、次の条件で一致が発生します。
[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 アドレスは、以下のいずれかの形式で 6 16 進バイトとして指定できます。
[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アドレスを独自の一致ステートメントに入力します。例えば、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 フラグ フィールドの 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