ステートフルファイアウォール
Junos Network Secureの概要
ルーターは、ファイアウォールを使用してトラフィックの流れを追跡および制御します。アダプティブ サービスとマルチサービス PIC は、と呼ばれるファイアウォールのタイプを採用しています。パケットを個別に検査するファイアウォールとは対照的に、ステートフルファイアウォールは、過去の通信や他のアプリケーションから得られた状態情報を使用して、新しい通信試行に対して動的な制御決定を行うことで、セキュリティ層を追加できます。
ACXシリーズルーターでは、ステートフルファイアウォール設定はACX500屋内ルーターでのみサポートされています。
ステートフルファイアウォールグループは、に関連する。フローは、以下の5つのプロパティによって識別されます。
送信元アドレス
送信元ポート
宛先アドレス
宛先ポート
プロトコル
典型的な TCP(伝送制御プロトコル)または UDP(ユーザー データグラム プロトコル)の会話は、イニシエーション フローとレスポンダー フローの 2 つのフローで構成されます。ただし、FTP メッセージ交換など、一部の会話は、2 つの制御フローと多くのデータ フローで構成されている場合があります。
ファイアウォールルールは、会話の確立を許可するかどうかを制御します。会話が許可されている場合、会話内のすべてのフロー (会話のライフ サイクル中に作成されたフローを含む) が許可されます。
ステートフルファイアウォールは、強力なルール駆動型会話処理パスを使用して構成します。Aは、方向、送信元アドレス、送信元ポート、宛先アドレス、宛先ポート、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(Internet Control Message Protocol)パケット長エラー。
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 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オプションパケットがステートフルファイアウォールによって受け入れられた場合、IPオプションヘッダーのないパケットと同じ方法で、ネットワークアドレス変換(NAT)と侵入検出サービス(IDS)が適用されます。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つの用語を含む単一のルールがあります。最初の条件は、指定された送信元アドレスから発信された 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 の設定
2つのPICでレイヤー3サービスパッケージとサービスSDKを設定できます。この例では、FTPまたはHTTPクライアントとサーバーを設定する必要があります。この設定では、ルーターインターフェイスのクライアント側はge-1/2/2.1、ルーターインターフェイスのサーバー側はge-1/1/0.48です。この設定により、uKernel PIC上でステートフルファイアウォール(SFW)によるNAT(ネットワークアドレス変換)と、FTPまたはHTTPトラフィック用のサービスSDK PIC上で、アプリケーション識別(APPID)、アプリケーション認識型アクセスリスト(AACL)、侵入検出および防止(IDP)が有効になります。
サービス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スキップされます。