ステートフルファイアウォール
Junos Network Secure の概要
ルーターは、ファイアウォールを使用してトラフィックのフローを追跡および制御します。アダプティブ サービスとマルチサービス PIC では、と呼ばれるファイアウォールが採用されています。パケットを単独で検査するファイアウォールとは対照的に、ステートフルファイアウォールは、過去の通信やその他のアプリケーションから得られた状態情報を使用して、新しい通信試行を動的に制御することで、追加のセキュリティレイヤーを提供します。
ACXシリーズルーターでは、ステートフルファイアウォール構成はACX500屋内ルーターでのみサポートされています。
に関連するステートフルファイアウォールグループ .フローは、次の 5 つのプロパティによって識別されます。
送信元アドレス
送信元ポート
宛先アドレス
宛先ポート
プロトコル
一般的な伝送制御プロトコル (TCP) またはユーザー データグラム プロトコル (UDP) の会話は、開始フローと応答側フローの 2 つのフローで構成されます。ただし、FTP 会話などの一部の会話は、2 つの制御フローと多数のデータ フローで構成される場合があります。
ファイアウォールルールは、会話の確立を許可するかどうかを制御します。メッセージ交換が許可されると、メッセージ交換のライフ サイクル中に作成されたフローを含め、メッセージ交換内のすべてのフローが許可されます。
ステートフルファイアウォールは、強力なルール主導の会話処理パスを使用して設定します。A は、方向、送信元アドレス、送信元ポート、宛先アドレス、宛先ポート、IP プロトコル値、およびアプリケーション プロトコルまたはサービスで構成されます。設定した特定の値に加えて、ルールオブジェクト、アドレス、またはポートに値を割り当てることで、任意の入力値 any
に一致させることができます。最後に、オプションでルールオブジェクトを否定して、タイプ固有の一致の結果を無効にすることができます。
ファイアウォールルールは方向性があります。新しいカンバセーションごとに、ルーター ソフトウェアは、ルールで指定された方向に一致する開始フローをチェックします。
ファイアウォールルールが順序付けられます。ソフトウェアは、設定にルールを組み込んだ順序でルールをチェックします。ファイアウォールが初めて一致を検出すると、ルーターはそのルールで指定されたアクションを実装します。まだチェックされていないルールは無視されます。
Junos OS リリース 14.2 以降、MS-MPC および MS-MIC インターフェイス カードは、Junos ネットワーク セキュア ステートフル ファイアウォールの IPv6 トラフィックをサポートします。
詳細については、 ステートフルファイアウォールルールの設定を参照してください。
アプリケーションプロトコルに対するステートフルファイアウォールのサポート
アプリケーションプロトコルデータを検査することで、ASまたはマルチサービスPICファイアウォールは、セキュリティポリシーをインテリジェントに適用し、必要最小限のパケットトラフィックのみがファイアウォールを通過できるようにします。
ファイアウォールルールは、インターフェイスに関連して設定されます。デフォルトでは、ステートフルファイアウォールは、インターフェイスの背後にあるホストから開始されたすべてのセッションがルーターを通過することを許可します。
ステートフルファイアウォールALGは、ACX500ルーターではサポートされていません。
ステートフルファイアウォールの異常チェック
ステートフルファイアウォールは、以下のイベントを異常として認識し、処理のために IDS ソフトウェアに送信します。
IP異常:
IP バージョンが正しくありません。
IP ヘッダー長フィールドが小さすぎます。
IP ヘッダー長は、パケット全体よりも大きく設定されます。
ヘッダーのチェックサムが正しくありません。
IP 全長フィールドがヘッダー長より短くなっています。
パケットの IP オプションが正しくありません。
インターネット制御メッセージ プロトコル(ICMP)パケット長エラー。
TTL(Time-to-live)は0になります。
IP アドレスの異常:
IP パケット送信元がブロードキャストまたはマルチキャストである。
陸上攻撃(送信元IPは宛先IPと等しい)。
IP フラグメント化異常:
IP フラグメントのオーバーラップ。
IP フラグメントが欠落しています。
IP フラグメント長エラー。
IP パケットの長さが 64 キロバイト (KB) を超えています。
小さなフラグメント攻撃。
TCP 異常:
TCP ポート 0。
TCP シーケンス番号 0 およびフラグ 0。
TCP シーケンス番号 0 と FIN/PSH/RST フラグが設定されています。
間違った組み合わせのTCPフラグ(TCP FIN/RST または SYN/(URG|フィン|RST)。
TCP チェックサムが正しくありません。
UDP異常:
UDP 送信元または宛先ポート 0。
UDP ヘッダー長のチェックに失敗しました。
UDPチェックサムが正しくありません。
ステートフルTCPまたはUDPチェックで検出された異常:
SYNの後に、イニシエータからのACKのないSYN-ACKパケットが続きます。
SYNの後にRSTパケットが続きます。
SYN-ACK を使用しない SYN。
非 SYN ファースト フロー パケット。
SYN パケットの ICMP 到達不能エラー。
UDP パケットの ICMP 到達不能エラー。
ステートフルファイアウォールルールに従ってパケットを破棄。
ACX500ルーターは、IPフラグメント化異常をサポートしていません。
ステートフルな異常検知をステートレスな検知と組み合わせて採用すると、IDS は以下のような幅広い攻撃に対して早期警告を出すことができます。
TCPまたはUDPネットワークプローブとポートスキャン
SYNフラッド攻撃
IPフラグメント化ベースの攻撃(ティアドロップ、ボンク、ボインクなど)
ステートフルファイアウォールルールの設定
ステートフルファイアウォールルールを設定するには、 階層レベルで ステートメントを含め rule rule-name
ます [edit services stateful-firewall]
。
[edit services stateful-firewall] rule rule-name { match-direction (input | output | input-output); term term-name { from { application-sets set-name; applications [ application-names ]; destination-address (address | any-ipv4 | any-ipv6 | any-unicast) <except>; destination-address-range low minimum-value high maximum-value <except>; destination-prefix-list list-name <except>; source-address (address | any-ipv4 | any-ipv6 | any-unicast) <except>; source-address-range low minimum-value high maximum-value <except>; source-prefix-list list-name <except>; } then { (accept <skip-ids>| discard | reject); allow-ip-options [ values ]; syslog; } } }
ACX500ルーターは、[edit services stateful-firewall rule rule-name term term-name from
]階層レベルのアプリケーションとアプリケーションセットをサポートしていません。
ACX500ルーターでsyslogを有効にするには、[]階層レベルでCLIステートメントを含め stateful-firewall-logs
ますedit services service-set service-set-name syslog host local class
。
edit services stateful-firewall
階層はSRXシリーズではサポートされていません。
各ステートフルファイアウォールルールは、 階層レベルで設定された [edit firewall]
フィルターに類似した一連の条件で構成されています。用語は以下で構成されます。
from
ステートメント:含めるおよび除外する一致条件とアプリケーションを指定します。このfrom
ステートメントは、ステートフルファイアウォールルールではオプションです。then
statement—ルーターソフトウェアが実行するアクションとアクション修飾子を指定します。このthen
ステートメントは、ステートフルファイアウォールルールでは必須です。
ACX500シリーズルーターは、ステートフルファイアウォールルールの構成時に以下をサポートしていません。
match-direction
(output | input-output)post-service-filter
インターフェイス サービスの入力階層レベルで有効にします。IPv6 送信元アドレスと宛先アドレス
application-sets
、application
、allow-ip-options
を [edit services stateful-firewall
] 階層レベルで指定します。アプリケーション層ゲートウェイ(ALG)。
マルチサービスモジュラーインターフェイスカード(MS-MIC)内およびインラインサービス(-si)とのサービスのチェイニング。
サービス クラス
次の
show services stateful-firewall
CLI コマンドはサポートされていません。show services stateful-firewall conversations
—会話を表示するshow services stateful-firewall flow-analysis
- フローテーブルエントリを表示show services stateful-firewall redundancy-statistics
- 冗長性統計情報を表示しますshow services stateful-firewall sip-call
- SIP コール情報の表示show services stateful-firewall sip-register
- SIPレジスタ情報を表示show services stateful-firewall subscriber-analysis
- サブスクライバ テーブルのエントリを表示します。
次のセクションでは、ステートフルファイアウォールルールのコンポーネントを設定する方法について説明します:
ステートフルファイアウォールルールの一致方向の設定
各ルールには、 match-direction
ルールの一致を適用する方向を指定するステートメントを含める必要があります。一致を適用する場所を設定するには、 階層レベルで ステートメントを含め match-direction
ます [edit services stateful-firewall rule rule-name]
。
[edit services stateful-firewall rule rule-name] match-direction (input | output | input-output);
ACX500 シリーズ ルーターは、 をサポートしていません match-direction (output | input-output)
。
を設定する match-direction input-output
と、両方向から開始されたセッションがこのルールに一致する可能性があります。
一致方向は、ASまたはマルチサービスPICを通過するトラフィックフローに関して使用されます。パケットがPICに送信されると、方向情報も一緒に伝送されます。
インターフェイス サービス セットでは、パケットの方向は、パケットがサービス セットが適用されているインターフェイスに入るか出るかによって決まります。
ネクストホップ サービス セットでは、パケットの方向は、AS またはマルチサービス PIC へのパケットのルーティングに使用されるインターフェイスによって決まります。内部インターフェイスを使用してパケットをルーティングする場合は、パケットの方向が入力されます。外部インターフェイスを使用してパケットをPICに誘導する場合、パケットの方向が出力されます。内部インターフェイスと外部インターフェイスの詳細については、 サービス インターフェイスに適用されるサービス セットの設定を参照してください。
PIC では、フロー ルックアップが実行されます。フローが見つからない場合は、ルール処理が実行されます。このサービス セット内のルールは、一致が見つかるまで順番に考慮されます。ルールの処理中に、パケットの方向がルールの方向と比較されます。パケットの方向と一致する方向情報を持つルールのみが考慮されます。ほとんどのパケットは、双方向フローの作成につながります。
ステートフルファイアウォールルールでの一致条件の設定
ステートフルファイアウォールの一致条件を設定するには、 階層レベルで ステートメントを含め from
ます [edit services stateful-firewall rule rule-name term term-name]
。
[edit services stateful-firewall rule rule-name term term-name] from { application-sets set-name; applications [ application-names ]; destination-address (address | any-ipv4 | any-ipv6 | any-unicast) <except>; destination-address-range low minimum-value high maximum-value <except>; destination-prefix-list list-name <except>; source-address (address | any-ipv4 | any-ipv6 | any-unicast) <except>; source-address-range low minimum-value high maximum-value <except>; source-prefix-list list-name <except>; }
ACX500ルーターは、[edit services stateful-firewall rule rule-name term term-name from
]階層レベルのアプリケーションとアプリケーションセットをサポートしていません。
送信元アドレスと宛先アドレスは、IPv4 または IPv6 のいずれかです。
ファイアウォールフィルターを設定するのと同じ方法で、送信元アドレスまたは宛先アドレスのいずれかを一致条件として使用できます。詳細については 、「 ルーティングポリシー、ファイアウォールフィルター、およびトラフィックポリサーユーザーガイド」を参照してください。ワイルドカード値 any-unicast
を使用できます。これはすべてのユニキャスト アドレスの一致を示し、 any-ipv4
はすべての IPv4 アドレスの一致を示し、 はすべての IPv6 アドレス any-ipv6
の一致を示します。
または、 階層レベルで ステートメントを設定しprefix-list
、ステートフルファイアウォールルールに または ステートメントを含めるdestination-prefix-list
source-prefix-list
ことで、送信元または[edit policy-options]
宛先のプレフィックスのリストを指定することもできます。例については、 例:ステートフルファイアウォールルールの設定を参照してください。
この用語を省略 from
すると、ステートフルファイアウォールはすべてのトラフィックを受け入れ、デフォルトのプロトコルハンドラが有効になります。
ユーザー データグラム プロトコル(UDP)、伝送制御プロトコル(TCP)、およびインターネット制御メッセージ プロトコル(ICMP)は、予測された逆方向フローを持つ双方向フローを作成します。
IP は単方向フローを作成します。
階層レベルで設定した [edit applications]
アプリケーション プロトコル定義を含めることもできます。詳細については、「 アプリケーションのプロパティの構成」を参照してください。
1 つ以上の特定のアプリケーション プロトコル定義を適用するには、階層レベルでステート
applications
メントを記述します[edit services stateful-firewall rule rule-name term term-name from]
。定義したアプリケーションプロトコル定義の1つ以上のセットを適用するには、階層レベルでステートメント
application-sets
を含めます[edit services stateful-firewall rule rule-name term term-name from]
。メモ:アプリケーション プロトコルを指定するステートメントの 1 つを含めると、ルーターは 階層レベルの対応する設定
[edit applications]
からポートとプロトコルの情報を取得します。これらのプロパティを一致条件として指定することはできません。
ステートフルファイアウォールルールでのアクションの設定
ステートフルファイアウォールアクションを設定するには、 階層レベルで ステートメントを含め then
ます [edit services stateful-firewall rule rule-name term term-name]
。
[edit services stateful-firewall rule rule-name term term-name] then { (accept | discard | reject); allow-ip-options [ values ]; syslog; }
次のいずれかのアクションを含める必要があります。
accept
- パケットは受理され、宛先に送信されます。accept skip-ids
- パケットは受理され、宛先に送信されますが、MS-MPC に設定された IDS ルール処理はスキップされます。discard
- パケットは受理されず、それ以降は処理されません。reject
- パケットは受理されず、拒否メッセージが返されます。UDP は ICMP 到達不能コードを送信し、TCP は RST を送信します。拒否されたパケットは、ログに記録またはサンプリングできます。
ACX500屋内ルーターは、 アクション accept skip-ids
をサポートしていません。
オプションで、 階層レベルで ステートメント[edit services stateful-firewall rule rule-name term term-name then]
を含めるsyslog
ことで、システムロギング機能に情報を記録するようにファイアウォールを設定できます。このステートメントは、syslog
サービスセットまたはインターフェイスのデフォルト設定に含まれる設定を上書きします。
IP オプション処理の設定
オプションで、 階層レベルで ステートメント[edit services stateful-firewall rule rule-name term term-name then]
を含めるallow-ip-options
ことで、IP ヘッダー情報を検査するようにファイアウォールを構成できます。このステートメントを設定すると、 ステートメントで指定されたfrom
基準に一致するすべてのパケットに、追加の一致基準が適用されます。パケットは、そのすべてのIPオプションタイプがステートメントの値allow-ip-options
として設定されている場合にのみ受け入れられます。を設定しallow-ip-options
ない場合、IPヘッダーオプションのないパケットのみが受け入れられます。
ACX500屋内ルーターは、 ステートメントの設定 allow-ip-options
をサポートしていません。
追加の IP ヘッダー オプションのインスペクションは、 accept
および reject
ステートフル ファイアウォール アクションにのみ適用されます。この設定は、アクションには影響しません discard
。IP ヘッダー インスペクションが失敗した場合、リジェクト フレームは送信されません。この場合、アクション reject
は と同じ discard
効果を持ちます。
IP オプション パケットがステートフル ファイアウォールで受け入れられると、IP オプション ヘッダーのないパケットと同様に、NAT(ネットワーク アドレス変換)と IDS(侵入検知サービス)が適用されます。IP オプションの構成は、ステートフル ファイアウォール規則にのみ表示されます。NAT は、IP オプションの有無にかかわらずパケットに適用されます。
IP オプション インスペクションに失敗したためにパケットがドロップされた場合、この例外イベントは IDS イベントとシステム ログ メッセージの両方を生成します。イベントタイプは、拒否された最初のIPオプションフィールドによって異なります。
表 1 に、この allow-ip-options
ステートメントに指定できる値をリストします。範囲または数値のセット、あるいは事前定義された IP オプション設定の 1 つ以上を含めることができます。オプション名またはそれに相当する数値のいずれかを入力できます。詳細については、「 http://www.iana.org/assignments/ip-parameters」を参照してください。
IP オプション名 |
数値 |
コメント |
---|---|---|
|
|
任意のIPオプション |
|
|
– |
|
|
– |
|
|
– |
|
|
– |
|
|
– |
|
|
– |
|
|
– |
関連項目
ステートフルファイアウォールルールセットの設定
ステートメントはrule-set
、ルーターソフトウェアがデータストリーム内のパケットに対して実行するアクションを決定するステートフルファイアウォールルールのコレクションを定義します。各ルールを定義するには、ルール名を指定し、用語を設定します。次に、階層レベルの rule
ステートメントと各ルールのステートメント[edit services stateful-firewall]
を含めてrule-set
、ルールの順序を指定します。
[edit services stateful-firewall] rule-set rule-set-name { rule rule-name; }
ルーター ソフトウェアは、設定で指定した順序でルールを処理します。ルール内の条件がパケットに一致する場合、ルーターは対応するアクションを実行し、ルールの処理は停止します。パケットに一致するルール内の用語がない場合、ルール セット内の次のルールに処理が続行されます。パケットに一致するルールがない場合、パケットはデフォルトで破棄されます。
例:ステートフルファイアウォールルールの設定
次の例は、ステートフルファイアウォール構成に、指定されたアプリケーションセットでの入力照合用と、指定された送信元アドレスでの出力照合用の2つのルールが含まれています。
[edit services] stateful-firewall { rule Rule1 { match-direction input; term 1 { from { application-sets Applications; } then { accept; } } term accept { then { accept; } } } rule Rule2 { match-direction output; term Local { from { source-address { 10.1.3.2/32; } } then { accept; } } } }
次の例では、2 つの条件を持つ 1 つのルールがあります。最初の条件は、指定された送信元アドレスから発信されたすべてのトラフィック my-application-group
を拒否し、拒否されたパケットの詳細なシステムログレコードを提供します。第 2 条件は、任意のユーザーから指定された宛先アドレスへのハイパーテキスト転送プロトコル(HTTP)トラフィックを受け入れます。
[edit services stateful-firewall] rule my-firewall-rule { match-direction input-output; term term1 { from { source-address 10.1.3.2/32; application-sets my-application-group; } then { reject; syslog; } } term term2 { from { destination-address 10.2.3.2/32; applications http; } then { accept; } } }
以下の例では、送信元と宛先のプレフィックスリストの使用方法を示します。これには、2 つの個別の構成項目が必要です。
プレフィックスリストは、 [edit policy-options]
階層レベルで設定します。
[edit] policy-options { prefix-list p1 { 10.1.1.1/32; 10.2.2.0/24; } prefix-list p2 { 10.3.3.3/32; 10.4.4.0/24; } }
ステートフルファイアウォールルールで設定されたプレフィックスリストを参照します。
[edit] services { stateful-firewall { rule r1 { match-direction input; term t1 { from { source-prefix-list { p1; } destination-prefix-list { p2; } } then { accept; } } } } }
これは、次の構成と同等です。
[edit] services { stateful-firewall { rule r1 { match-direction input; term t1 { from { source-address { 10.1.1.1/32; 10.2.2.0/24; } destination-address { 10.3.3.3/32; 10.4.4.0/24; } } then { accept; } } } } }
次の例のように、プレフィックスリストとともに修飾子を使用できます except
。この場合、修飾子は except
プレフィックスリスト p2
に含まれるすべてのプレフィックスに適用されます。
[edit] services { stateful-firewall { rule r1 { match-direction input; term t1 { from { source-prefix-list { p1; } destination-prefix-list { p2 except; } } then { accept; } } } } }
ステートフルファイアウォールの設定を他のサービスや仮想プライベートネットワーク(VPN)ルーティングおよび転送(VRF)テーブルと組み合わせたその他の例については、設定例を参照してください。
サービスセットを定義し、インターフェイススタイルまたはネクストホップスタイルとして割り当てることができます。
関連項目
例:BOOTP アドレスとブロードキャスト アドレス
次の例では、ブートストラップ プロトコル(BOOTP)とブロードキャスト アドレスをサポートしています。
[edit applications] application bootp { application-protocol bootp; protocol udp; destination-port 67; } [edit services] stateful-firewall bootp-support { rule bootp-allow { direction input; term bootp-allow { from { destination-address { any-unicast; 255.255.255.255; } application bootp; } then { accept; } } } }
例:2つのPICでのレイヤー3サービスとサービスSDKの設定
レイヤー3サービスパッケージとサービスSDKは、2つのPICで設定できます。この例では、FTP または HTTP クライアントとサーバーを設定する必要があります。この設定では、ルーターインターフェイスのクライアント側はge-1/2/2.1で、ルーターインターフェイスのサーバー側はge-1/1/0.48です。この設定により、uKernel PICでステートフルファイアウォール(SFW)、FTPまたはHTTPトラフィック用のサービスSDK PICで、アプリケーション識別(APPID)、アプリケーション認識型アクセスリスト(AACL)、侵入検知および防止(IDP)を使用したネットワークアドレス変換(NAT)が有効になります。
サービス SDK はまだ NAT をサポートしていません。NAT が必要な場合は、レイヤ 3 サービス パッケージを設定して、APPID、AACL、IDP などのサービス SDK とともに NAT を導入できます。
IDP 機能は、Junos OS リリース 17.1R1 以降の MX シリーズでは非推奨です。
レイヤー3サービスパッケージとサービスSDKを2つのPICに展開するには、次の手順に従います。
例:仮想ルーティングおよび転送(VRF)とサービス設定
次の例では、仮想ルーティングおよび転送(VRF)とサービス設定を組み合わせています。
[edit policy-options] policy-statement test-policy { term t1 { then reject; } } [edit routing-instances] test { interface ge-0/2/0.0; interface sp-1/3/0.20; instance-type vrf; route-distinguisher 10.58.255.1:37; vrf-import test-policy; vrf-export test-policy; routing-options { static { route 0.0.0.0/0 next-table inet.0; } } } [edit interfaces] ge-0/2/0 { unit 0 { family inet { service { input service-set nat-me; output service-set nat-me; } } } } sp-1/3/0 { unit 0 { family inet; } unit 20 { family inet; service-domain inside; } unit 21 { family inet; service-domain outside; } [edit services] stateful-firewall { rule allow-any-input { match-direction input; term t1 { then accept; } } } nat { pool hide-pool { address 10.58.16.100; port automatic; } rule hide-all-input { match-direction input; term t1 { then { translated { source-pool hide-pool; translation-type source napt-44; } } } } } service-set nat-me { stateful-firewall-rules allow-any-input; nat-rules hide-all-input; interface-service { service-interface sp-1/3/0.20; } } }
変更履歴テーブル
機能のサポートは、使用しているプラットフォームとリリースによって決まります。 機能エクスプローラー を使用して、機能がプラットフォームでサポートされているかどうかを判断します。
accept skip-ids
- パケットは受理され、宛先に送信されますが、MS-MPC に設定された IDS ルール処理はスキップされます。