ステートフルファイアウォール
Junos Network Secureの概要
ルーターは、ファイアウォールを使用してトラフィックの流れを追跡し、制御します。適応型サービスとマルチサービスのPICは、ステートフルファイアウォールと呼ばれるタイプのファイアウォールを採用しています。パケットを隔離して検査するステートレスファイアウォールとは対照的に、ステートフルファイアウォールは、過去の通信や他のアプリケーションから得られた状態情報を使用して、新しい通信の試みに対して動的に制御決定を行うことで、追加のセキュリティレイヤーを提供します。
ACXシリーズルーターでは、ステートフルファイアウォール設定はACX500屋内ルーターでのみサポートされています。
ステートフルファイアウォールは、関連するフローを会話にグループ化します。フローは、次の 5 つのプロパティによって識別されます。
送信元アドレス
送信元ポート
宛先アドレス
宛先ポート
議定書
一般的な伝送制御プロトコル (TCP) またはユーザー データグラム プロトコル (UDP) の会話は、開始フローとレスポンダ フローの 2 つのフローで構成されます。ただし、FTP 会話など、一部の会話は、2 つの制御フローと多くのデータ フローで構成される場合があります。
ファイアウォール規則は、メッセージ交換の確立を許可するかどうかを制御します。会話が許可されている場合、会話のライフ サイクル中に作成されたフローを含め、会話内のすべてのフローが許可されます。
ステートフルファイアウォールは、強力なルール駆動型の対話処理パスを使用して設定します。ルールは、方向、送信元アドレス、送信元ポート、宛先アドレス、宛先ポート、IPプロトコル値、およびアプリケーション プロトコルまたはサービスで構成されます。設定した特定の値に加えて、値 any をルール オブジェクト、アドレス、またはポートに割り当てて、任意の入力値と一致させることができます。最後に、オプションで、型固有の一致の結果を否定するルール オブジェクトを無効化できます。
ファイアウォール ルールには方向性があります。新しい会話のたびに、ルーター ソフトウェアは、ルールで指定された方向に一致する開始フローをチェックします。
ファイアウォールのルールは順番に従っています。ソフトウェアは、設定に含める順序でルールをチェックします。ファイアウォールが初めて一致を検出すると、ルーターはそのルールで指定されたアクションを実装します。チェックされていないルールは無視されます。
Junos OS リリース 14.2 以降、MS-MPC および MS-MIC インターフェイス カードは、Junos Network Secure ステートフル ファイアウォールの 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フラグメント化ベースの攻撃
ステートフル ファイアウォール ルールの設定
ステートフルルールオプションは、ファイアウォールルールを設定するには、[edit services stateful-firewall]階層レベルでrule rule-nameステートメントを含めます。
[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を有効にするには、[edit services service-set service-set-name syslog host local class]階層レベルにstateful-firewall-logsCLIステートメントを含めます。
edit services stateful-firewall 階層はSRX シリーズではサポートされていません。
各ステートフルルールオプションは、ファイアウォールルールは、 [edit firewall] 階層レベルで設定されたフィルターと同様に、一連の条件で構成されています。用語は、次のもので構成されます。
fromステートメント—含まれ、除外される一致条件とアプリケーションを指定します。ステートフルファイアウォールルールでは、fromステートメントはオプションです。thenステートメント—ルーター ソフトウェアによって実行されるアクションとアクション修飾子を指定します。ステートフルファイアウォールルールでは、thenステートメントが必須です。
ACX500 シリーズ ルーターは、ステートフル ファイアウォール ルールの設定時に以下をサポートしません。
match-direction(output | input-output)post-service-filterインターフェイス サービス入力階層レベルで。IPv6 送信元アドレスと宛先アドレス。
application-sets、[edit services stateful-firewall] 階層レベルで、application、allow-ip-options。アプリケーション層ゲートウェイ(ALG)
マルチサービス モジュラー インターフェイス カード(MS-MIC)内およびインラインサービス(-si)を使用したサービスのチェイニング。
サービス クラス。
以下の
show services stateful-firewallCLIコマンドはサポートされていません。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 ステートメントを含める必要があります。一致が適用される場所を設定するには、[edit services stateful-firewall rule rule-name]階層レベルでmatch-directionステートメントを含めます。
[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では、フロールックアップが実行されます。フローが見つからない場合は、ルール処理が実行されます。このサービス セット内のルールは、一致が見つかるまで順番に考慮されます。ルールの処理中に、パケットの方向がルールの方向と比較されます。パケットの方向と一致する方向情報を持つルールのみが考慮されます。ほとんどのパケットでは、双方向フローが作成されます。
ステートフル ファイアウォール ルールの一致条件の設定
ステートフルファイアウォール一致条件を設定するには、[edit services stateful-firewall rule rule-name term term-name]階層レベルでfromステートメントを含めます。
[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、すべての IPv4 アドレスに一致することを示す any-ipv4、すべての IPv6 アドレスに一致することを示す any-ipv6 を使用できます。
または、[edit policy-options]階層レベルでprefix-listステートメントを設定し、ステートフルルールオプションは、ファイアウォールルールにdestination-prefix-listまたはsource-prefix-listステートメントを含めることで、送信元または宛先のプレフィックスのリストを指定することもできます。例については、「例:ステートフル ファイアウォール ルールの設定」を参照してください。
from条件を省略すると、ステートフルファイアウォールはすべてのトラフィックを受け入れ、デフォルトのプロトコルハンドラーが有効になります。
UDP(User Datagram Protocol)、TCP(Transmission Control Protocol)、ICMP(Internet Control Message Protocol)は、予測されるリバースフローを使用して双方向フローを作成します。
IP は、一方向のフローを作成します。
また、 [edit applications] 階層レベルで設定したアプリケーション プロトコル定義を含めることもできます。詳細については、「 アプリケーション プロパティの設定」を参照してください。
1 つ以上の特定のアプリケーション プロトコル定義を適用するには、
[edit services stateful-firewall rule rule-name term term-name from]階層レベルでapplicationsステートメントを含めます。定義したアプリケーション プロトコル定義の 1 つ以上のセットを適用するには、
[edit services stateful-firewall rule rule-name term term-name from]階層レベルでapplication-setsステートメントを含めます。手記:アプリケーション プロトコルを指定するステートメントのいずれかを含めると、ルーターは
[edit applications]階層レベルの対応する設定からポートとプロトコル情報を取得します。これらのプロパティを一致条件として指定することはできません。
ステートフル ファイアウォール ルールでのアクションの設定
ステートフルファイアウォールアクションを設定するには、[edit services stateful-firewall rule rule-name term term-name]階層レベルでthenステートメントを含めます。
[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オプションパケットがステートフルファイアウォールで受け入れられた場合、ネットワークアドレス変換(NAT)と侵入検出サービス(IDS)は、IPオプションヘッダーのないパケットと同じ方法で適用されます。IP オプションの設定は、ステートフル ファイアウォール ルールにのみ表示されます。NAT は、IP オプションがあるパケットとないパケットに適用されます。
IPオプション・インスペクションに失敗したためにパケットがドロップされた場合、この例外イベントによってIDSイベント・メッセージとシステム・ログ・メッセージの両方が生成されます。イベントタイプは、拒否された最初のIPオプションフィールドによって異なります。
表 1 は、 allow-ip-options ステートメントに指定できる値をリストしています。数値の範囲またはセット、あるいは 1 つ以上の定義済み IP オプション設定を含めることができます。オプション名またはそれに相当する数値を入力できます。詳細については、「 http://www.iana.org/assignments/ip-parameters」を参照してください。
IP オプション名 |
数値 |
コメント |
|---|---|---|
|
|
任意の IP オプション |
|
|
– |
|
|
– |
|
|
– |
|
|
– |
|
|
– |
|
|
– |
|
|
– |
参照
ステートフル ファイアウォール ルール セットの設定
rule-setステートメントは、データストリーム内のパケットに対してルーターソフトウェアが実行するアクションを決定するステートフルファイアウォールルールの集合を定義します。各ルールを定義するには、ルール名を指定し、条件を設定します。次に、[edit services stateful-firewall]階層レベルでrule-setステートメントと各ルールのruleステートメントを含めることで、ルールの順序を指定します。
[edit services stateful-firewall] rule-set rule-set-name { rule rule-name; }
ルーター ソフトウェアは、設定で指定した順序でルールを処理します。ルール内の条件がパケットと一致する場合、ルーターは対応するアクションを実行し、ルールの処理は停止します。ルール内のどの条件もパケットに一致しない場合、処理はルール セット内の次のルールに進みます。どのルールもパケットに一致しない場合、パケットはデフォルトで破棄されます。
例:ステートフル ファイアウォール ルールの設定
次の例では、2つのルールを含むステートフルファイアウォール構成を示しています。1つは指定されたアプリケーションセットでの入力照合用、もう1つは指定された送信元アドレスでの出力照合用です。
[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)によるネットワークアドレス変換(NAT)と、FTPまたはHTTPトラフィック用のServices SDK PIC上のアプリケーション識別(APPID)、アプリケーション認識型アクセスリスト(AACL)、および侵入検知および防止(IDP)が可能になります。
Services 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;
}
}
}
変更履歴
サポートされる機能は、使用しているプラットフォームとリリースによって決まります。特定の機能がお使いのプラットフォームでサポートされているかどうかを確認するには、 Feature Explorer を使用します。
accept skip-ids—パケットは受け入れられて宛先に送信されますが、MS-MPC に設定された IDS ルール処理はスキップされます。