アプリケーション識別用のカスタムアプリケーションシグネチャ
ユーザー定義のカスタムアプリケーションシグネチャは、使用されているプロトコルやポートに関係なく、アプリケーションを識別するためにも使用できます。ホスト名、IPアドレス範囲、ポートを使用してカスタムシグネチャを作成し、特定の宛先へのトラフィックを追跡することができます。詳細については、次のトピックを参照してください。
Junos OSアプリケーション識別カスタムアプリケーションシグネチャについて
このトピックは、以下のセクションで構成されています。
- カスタムアプリケーションシグネチャの概要
- カスタムアプリケーションシグネチャの機能強化
- サポートされているタイプのカスタムアプリケーションシグネチャ
- カスタムアプリケーションシグネチャを使用するメリット
- 制限
- カスタムアプリケーションシグネチャの追加設定オプション
カスタムアプリケーションシグネチャの概要
Junos OSのアプリケーション識別機能により、Webベース・クライアント/サーバー・アプリケーションを問わず、あらゆるアプリケーションを識別するカスタム・シグネチャを柔軟に作成できます。ICMP、IPプロトコル、IPアドレス、およびレイヤー7に基づいて、アプリケーション用のカスタムアプリケーションシグネチャを作成できます。
一般に、カスタムアプリケーションシグネチャは環境に固有であり、主に内部アプリケーションまたはカスタムアプリケーションの検査に使用されます。カスタムアプリケーションシグネチャを作成すると、AppIDは標準アプリケーションと同じ方法で分類と検査を行います。カスタムアプリケーションシグニチャは事前定義されたアプリケーションパッケージの一部ではないため、事前定義されたアプリケーションシグネチャデータベースではなく、設定階層に保存されます。
カスタム署名を構成するには、アプリケーション署名パッケージをダウンロードしてデバイスにインストールする必要があります。カスタム署名が設定されている場合、アプリケーション署名パッケージをアンインストールすることはできません。すべてのカスタムアプリケーションシグネチャは、システムを新しいソフトウェアバージョンにアップグレードする際に、そのまま引き継がれます。
カスタムアプリケーションシグネチャの機能強化
カスタムアプリケーションシグネチャ機能は、新しいアプリケーションとコンテキストのセットを提供します。
カスタム・アプリケーション・シグニチャー・コンテキストは、アプリケーション・シグニチャー・パッケージの一部になりました。新しく導入されたアプリケーションおよびコンテキストをカスタム・アプリケーション・シグニチャーに使用する場合は、最新のアプリケーション・シグニチャー・パッケージ・バージョン 3248 以降をダウンロードしてインストールする必要があります。Junos OS をアップグレードせずに、アプリケーション シグネチャ パッケージを個別にアップグレードできます。
サポートされているタイプのカスタムアプリケーションシグネチャ
セキュリティ デバイスは、次のタイプのカスタム シグネチャをサポートしています。
ICMP ベースのマッピング
アドレスベースのマッピング
IPプロトコルベースのマッピング
レイヤー7ベースおよびTCP/UDPストリームベースのマッピング
サポートされているすべてのカスタムアプリケーションシグネチャにおいて、ICMPベース、IPプロトコルベース、およびアドレスベースのカスタムアプリケーションは、レイヤー7ベースおよびTCP/UDPストリームベースのカスタムアプリケーションよりも優先されます。カスタムアプリケーションシグネチャの優先順位は、ICMPベース、IPプロトコルベース、アドレスベース、およびレイヤー7ベースまたはTCP/UDPストリームベースのカスタムアプリケーションです。
ICMP ベースのマッピング
ICMPマッピング技術は、標準のICMPメッセージタイプとオプションのコードを一意のアプリケーション名にマッピングします。このマッピング技術により、さまざまなタイプのICMPメッセージを区別できます。ICMP マッピング技術は、ICMPv6 トラフィックをサポートしていません。
IDPは、TCPまたはUDPトラフィックでのみ機能します。そのため、ICMP マッピングは IDP には適用されず、カスタム攻撃などの IDP 機能をサポートすることはできません。
アドレスベースのマッピング
レイヤー3およびレイヤー4アドレスマッピングは、トラフィックのIPアドレスとオプションのポート範囲によってアプリケーションを定義します。
レイヤー3およびレイヤー4のアドレスベースのカスタムアプリケーションを設定するには、IPアドレスとポート範囲をIP アドレスとポートに一致させる必要があります。IPアドレスとポートの両方が設定されている場合、両方の基準がパケットのIP アドレスとポート範囲に一致する必要があります。
既知のポート5060からセッションを開始するSession Initiation Protocol(SIP)サーバーについて考えてみます。この IP アドレスおよびポートからのすべてのトラフィックは SIP アプリケーションによってのみ生成されるため、SIP アプリケーションをサーバーの IP アドレスおよびポート 5060 にマップして、アプリケーションを識別することができます。このようにして、この IP アドレスとポートを持つすべてのトラフィックは、SIP アプリケーション トラフィックとして識別されます。
アドレスベースのアプリケーションとTCP/UDPストリームベースのアプリケーションを設定し、セッションが両方のアプリケーションに一致する場合、TCP/UDPストリームベースのアプリケーションはアプリケーションとして報告され、アドレスベースのアプリケーションは拡張アプリケーションとして報告されます。
適切なセキュリティを確保するには、プライベート ネットワークの構成によって、信頼できるサーバーとの間のアプリケーション トラフィックが予測される場合は、アドレス マッピングを使用します。アドレスマッピングは、既知のアプリケーションからのトラフィックを効率的かつ正確に処理します。
IP プロトコルベースのマッピング
標準 IPプロトコル番号は、アプリケーションを IP トラフィックにマッピングします。アドレス マッピングと同様に、適切なセキュリティを確保するために、IPプロトコル マッピングは、信頼できるサーバーのプライベート ネットワークでのみ使用してください。
IDPは、TCPまたはUDPトラフィックでのみ機能します。したがって、IPプロトコルマッピングはIDPには適用されず、カスタム攻撃などのIDP機能をサポートすることはできません。
IPプロトコルベースのカスタムアプリケーションシグネチャは、19.2のJunos OSリリースからJunos OSリリース19.4では期待どおりに機能しません。以降のリリースでは、IPプロトコルベースのカスタムアプリケーションシグネチャを使用できます。
推奨される回避策:
統一ポリシーを設定する場合は、サービスベースのアプリケーション設定を使用します。例:
user@host#set applications application application-name protocol IP-proto-number例:
user@host#set applications application A1 protocol 2レガシーアプリケーションファイアウォールを使用している場合は、事前定義されたIPプロトコルアプリケーションを使用します。例
user@host#set security application-firewall rule-sets rule-set-name rule rule-name match dynamic-application application-name例:
user@host#set security application-firewall rule-sets RS-1 rule R1 match dynamic-application junos:IPP-IGMP
レイヤー 7 ベースおよび TCP/UDP ストリームベースのシグネチャ
レイヤー 7 カスタム シグネチャは、TCP または UDP またはレイヤー 7 アプリケーション上で実行されるアプリケーションを定義します。
レイヤー7ベースのカスタムアプリケーションシグネチャは、同じレイヤー7プロトコルで実行されている複数のアプリケーションを識別するために必要です。たとえば、Facebook や Yahoo Messenger などのアプリケーションはどちらも HTTP 上で実行できますが、同じレイヤー 7 プロトコルで実行されている 2 つの異なるアプリケーションとして識別する必要があります。
レイヤー7ベースのカスタムアプリケーションシグネチャは、HTTPコンテキストのパターンに基づいてアプリケーションを検出します。ただし、一部の HTTP セッションは SSL で暗号化されます。アプリケーション識別では、TLSまたはSSLセッションからサーバー名情報またはサーバー証明書を抽出することもできます。また、レイヤー7アプリケーションのTCPまたはUDPペイロードのパターンを検出することもできます。
カスタムアプリケーションシグネチャを使用するメリット
特定のアプリケーションに基づいてネットワーク環境に固有のセキュリティポリシーを適用
未分類または未分類のアプリケーションを可視化
レイヤー 7 上のアプリケーションやトランジット アプリケーションまたは一時的なアプリケーションを特定し、既知のアプリケーションのさらに細分性を高める
特定のアプリケーションに対してサービス品質(QoS)を実行する
制限
次の機能はサポートされていません。
PCRE ベースの式と Unicode ベースの文字の一部 (Hyperscanでサポートされていない場合)
レイヤー 7 ベースのシグネチャにおけるメンバー間の順序の適用
アドレスベースの署名(レイヤー 3 およびレイヤー 4)のワイルドカード アドレス
カスタムアプリケーションシグネチャの追加設定オプション
Junos OS リリース 20.1R1 以降、アプリケーション署名パッケージバージョン 3248 以降を使用している場合、カスタム アプリケーション 署名に次のオプションを設定できます。
カスタムアプリケーションパターンの深さ
AppID のバイト制限を指定して、TCP、UDP、またはレイヤー 7 アプリケーション上で実行されているアプリケーションのカスタム アプリケーション パターンを識別できます。
制限を設定するには、 [edit] 階層の以下の設定ステートメントを使用します。
user@host# set services application-identification application application-name over application signature signature-name member number depth
例:
user@host# set services application-identification application my_custom_address over HTTP signature my_addr_sig1 member m01 depth 256
レイヤー 7 カスタム アプリケーションの場合、深さはレイヤー 7 コンテキストの最初から考慮されます。TCP/UDPストリームベースのカスタムアプリケーションの場合、深さはTCP/UDPペイロードの先頭から考慮されます。
カスタムアプリケーション検査バイト制限
AppID が分類を完了し、セッション内のカスタム アプリケーションを識別するための検査バイト制限を設定できます。制限を超えると、AppID はアプリケーションの分類を終了します。このオプションを使用して、アプリケーション トラフィックのスループットを向上させることができます。
アプリケーションのバイト制限を設定するには、[edit]階層から以下の設定ステートメントを使用します。
user@host# set services application-identification custom-application-byte-limit byte-number
例:
user@host# set services application-identification custom-application-byte-limit 400
事前定義されたアプリケーションに対してカスタムアプリケーション署名を設定し、AppIDがすでに事前定義されたアプリケーションを識別している場合、DPIはカスタムシグネチャ識別を続行します。カスタムシグネチャの識別が進行中である間、分類は非最終としてマークされます。カスタムアプリケーションのバイト制限内でカスタムアプリケーションが識別されず、事前定義されたアプリケーションがすでに識別されている場合、AppIDは事前定義されたアプリケーションを最終と見なし、セッションをオフロードします。
カスタムアプリケーションの優先度
Junos OS 20.1R1より前のリリースでは、カスタムアプリケーションシグネチャのデフォルトの優先度が高く、カスタムシグネチャを事前定義済みアプリケーションよりも優先することができました。現在、カスタムアプリケーションシグネチャのデフォルトの優先度は低くなっています。
AppID は、事前定義されたアプリケーションを識別する前に優先度の低いカスタム アプリケーションを識別する場合、事前定義されたアプリケーション分類が最終的なものになるまで待機します。使用可能な事前定義されたアプリケーションの一致がなく、カスタム アプリケーションが識別された場合、AppID は識別されたカスタム アプリケーションで分類を終了します。
事前定義されたアプリケーションの優先度をカスタムアプリケーションシグネチャで上書きする場合は、カスタムアプリケーションシグネチャの優先度を明示的に高に設定する必要があります。
カスタム・アプリケーションに高い優先度を設定するには、[edit]階層の以下の設定ステートメントを使用します。
user@host# set services application-identification application application-name priority high
例:
user@host# set services application-identification application my_custom_address priority high
カスタムアプリケーションの優先順位については、次の点に注意してください。
以前の動作:
カスタムアプリケーションのデフォルトの優先度は「高」です。
アプリケーションの優先度は、同じパケット内で複数のアプリケーションが一致する場合に考慮されます。
カスタムアプリケーションに高優先度を設定すると、カスタムアプリケーションは常に事前定義されたアプリケーションよりも優先されます。
カスタムアプリケーションの優先度を低く設定した場合:カスタムアプリケーションは、類似のパターンベースの事前定義されたシグネチャよりも優先度が低く、他のアプリケーションよりも優先度が高くなります。これらのリリースでは、動作を変更するオプションはありません。
変更された動作(最近のリリース):
カスタムアプリケーションのデフォルトの優先度は低いです。
優先度は、同じパケット内の一致に依存しません。
レイヤー7およびTCP/UDPストリームベースのカスタムアプリケーションの優先度は、すべての事前定義済みアプリケーションで設定済み(高または低)に動作します。
レイヤー3およびレイヤー4ベースのカスタムアプリケーションは、常に高い優先度を維持します。この場合、設定された優先度は無視されます。レイヤー3およびレイヤー4ベースのカスタムアプリケーションは、すべての事前定義されたアプリケーションよりも優先されます。これらのアプリケーションは、セッションの最初のパケットでトリガーされるためです。
サブジェクトの別名
SSL 署名の SAN (サブジェクト代替名) 証明書属性を使用して、AppID カスタムシグネチャを作成できます。SAN 属性を持つ SSL 証明では、1 つの証明書に複数のホスト名または IP アドレスを指定できます。この機能拡張により、カスタム アプリケーション シグネチャは、SSL 証明の SAN フィールドにリストされているアプリケーションのホスト名に基づいてアプリケーションを検出できます。
[edit services application-identification application name over SSL signature name member name context]階層のssl-subject-alt-nameオプションでSANを設定できます。
例:Junos OSアプリケーション識別カスタムアプリケーションシグネチャの設定
この例では、Junos OS アプリケーション識別用にカスタム アプリケーション シグネチャを設定する方法を示しています。
アプリケーション シグネチャのカスタマイズは、Junos OS の上級ユーザーのみが試行することをお勧めします。
開始する前に、以下を実行します。
SRXシリーズファイアウォールに有効なアプリケーション識別機能ライセンスをインストールします。Junos OSライセンスの管理を参照してください
この設定例は、Junos OS リリース 20.1R1 を使用してテストされています。
アプリケーション署名パッケージがインストールされたセキュリティデバイスがインストールされていることを確認します。 Junos OS アプリケーション シグネチャ パッケージの手動ダウンロードとインストールを参照してください。
拡張カスタム アプリケーション シグネチャを使用するには、最新のアプリケーション シグネチャ パッケージ バージョン 3284 以降をアップグレードします。次のコマンドを使用して、アプリケーション署名のバージョンを確認します。
user@host> show services application-identification version
Application package version: 3248
アプリケーション シグネチャのカスタマイズは、Junos OS の上級ユーザーのみが試行することをお勧めします。
概要
アプリケーション識別は、カスタムアプリケーションシグネチャをサポートし、アプリケーションがデバイスを通過するときにアプリケーションを検出します。カスタム署名を設定するときは、署名が一意であることを確認してください。
次の手順を使用して、カスタムアプリケーションシグネチャを設定します。
アプリケーショントラフィックを照合するセキュリティデバイスのコンテキスト、パターン、方向、ポート範囲などの属性を定義します。
検査制限、パターン深度、および優先度(オプション設定)を設定して、カスタムアプリケーションのアプリケーション識別プロセスを強化します。
アプリケーショントラフィックを許可または拒否するセキュリティポリシーにカスタムアプリケーションをアタッチします。
show services application-identification applicationコマンドとshow services application-identification groupコマンドを使用して、アプリケーション署名とアプリケーション署名グループを表示します。
カスタム アプリケーション構成の例
プロシージャ
手順
カスタムアプリケーションの検査制限を設定します。
[edit ] user@host# set services application-identification custom-application-byte-limit 400
カスタムアプリケーションの優先度を設定します。
[edit ] user@host# set services application-identification application test cacheable user@host# set services application-identification application test priority high
TCPストリームベースのカスタムシグネチャを設定します。
[edit ] user@host# set services application-identification application my_custom_tcp over TCP signature s1 member m01 context stream user@host# set services application-identification application my_custom_tcp over TCP signature s1 member m01 pattern .*install.* user@host# set services application-identification application my_custom_tcp over TCP signature s1 member m01 direction any user@host# set services application-identification application my_custom_tcp over TCP signature s1 member m01 depth 100
FTP コンテキストベースのカスタム シグネチャを設定します。
[edit ] user@host# set services application-identification application my_custom_ftp over FTP signature sig1 member m01 depth 60 user@host# set services application-identification application my_custom_ftp over FTP signature sig1 member m01 context ftp-file-name user@host# set services application-identification application my_custom_ftp over FTP signature sig1 member m01 pattern .*install.* user@host# set services application-identification application my_custom_ftp over FTP signature sig1 member m01 direction client-to-server
HTTP コンテキストベースのカスタム署名を設定します。
[edit ] user@host# set services application-identification application my_custom_http over HTTP signature s1 member m01 context http-header-host user@host# set services application-identification application my_custom_http over HTTP signature s1 member m01 pattern .*agent1.* user@host# set services application-identification application my_custom_http over HTTP signature s1 member m01 direction client-to-server user@host# set services application-identification application my_custom_http over HTTP signature s1 member m01 depth 100
SSL コンテキストベースのカスタム シグネチャを設定します。
[edit] user@host# set services application-identification application my_custom_ssl over SSL signature s1 member m01 context ssl-server-name user@host# set services application-identification application my_custom_ssl over SSL signature s1 member m01 pattern "example\.com" user@host# set services application-identification application my_custom_ssl over SSL signature s1 member m01 direction client-to-server user@host# set services application-identification application my_custom_ssl over SSL signature s1 member m01 depth 100
SSL コンテキストベースのカスタム署名の
ssl-versionは、アプリケーション署名パッケージバージョン 3796 以降で非推奨になりました。ssl-protocol-versionオプションを使用します。セキュリティ デバイスにインストールされているアプリケーション署名パッケージのバージョンを確認するには、「 show services application-identification version」を参照してください。ssl-protocol-version の pattern オプションを指定するには、次の値を使用します。
- SSLv2(0x0002):2
- SSLv3(0x0300):768
- TLS 1.0(0x0301):769
- TLS 1.1(0x0302):770
- TLS 1.2(0x0303):771
- TLS 1.3(0x0304):772
- TLS 1.4(0x0305):773
ICMPベースのカスタムアプリケーションシグネチャを設定します。
[edit ] user@host# set services application-identification application my_custom_icmp icmp-mapping type 100 user@host# set services application-identification application my_custom_icmp icmp-mapping code 1
レイヤー3またはレイヤー4のアドレスベースのカスタムアプリケーションシグネチャを設定します。
[edit ] user@host# set services application-identification application my_custom_address address-mapping ADDR-SAMPLE filter ip 192.0.2.1/24 user@host# set services application-identification application my_custom_address address-mapping ADDR-SAMPLE filter port-range udp 5000-6000
手記:アドレスベースのカスタムアプリケーションシグネチャを設定するには、適切なポート範囲と指定されたIPアドレスを指定する必要があります。
IPプロトコルマッピングベースのカスタムアプリケーションシグネチャを設定します。
[edit] user@host# set services application-identification application my_custom_ip_proto ip-protocol-mapping protocol 2
カスタムアプリケーションを一致条件とするセキュリティポリシーを作成します。
user@host# set security policies from-zone untrust to-zone trust policy 1 match source-address any user@host# set security policies from-zone untrust to-zone trust policy 1 match destination-address any user@host# set security policies from-zone untrust to-zone trust policy 1 match application any user@host# set security policies from-zone untrust to-zone trust policy 1 match dynamic-application my_custom_http user@host# set security policies from-zone untrust to-zone trust policy 1 then permit
この例ではmy_custom_httpを使用しています。同様に、要件に応じて、異なるセキュリティポリシーを作成し、my_custom_ftp、my_custom_tcp、my_custom_ssl、my_custom_address、my_custom_icmp、my_custom_ip_protoなどの他のカスタムアプリケーションを動的アプリケーションの一致条件として指定できます。
アプリケーション追跡を有効にします。
user@host# set security zones security-zone trust application-tracking
業績
設定モードから、 show services application-identification コマンドを入力して設定を確認します。出力結果に意図した設定内容が表示されない場合は、この例の設定手順を繰り返して設定を修正します。
[edit]user@host# show services application-identificationcustom-application-byte-limit 100; application my_custom_address { address-mapping ADDR-SAMPLE { filter { ip 192.0.2.1/24; port-range { udp 5000-6000; } } } } application my_custom_ftp { over FTP { signature sig1 { member m01 { depth 60; context ftp-file-name; pattern .*install.*; direction client-to-server; } } } } application my_custom_http { over HTTP { signature s1 { member m01 { depth 100; context http-header-host; pattern .*agent1.*; direction client-to-server; } } } } application my_custom_icmp { icmp-mapping { type 100; code 1; } } application my_custom_ip_proto { ip-protocol-mapping { protocol 2; } } application my_custom_ssl { over SSL { signature s1 { member m01 { depth 100; context ssl-server-name; pattern "example\.com"; direction client-to-server; } } } } application my_custom_tcp { over TCP { signature s1 { member m01 { depth 100; context stream; pattern .*install.*; direction any; } } } } application test { cacheable; priority high; }
[edit security policies]
user@host# show
from-zone untrust to-zone trust {
policy 1 {
match {
source-address any;
destination-address any;
application any;
dynamic-application [my_custom_http];
}
then {
permit;
}
}
}
デバイスの設定が完了したら、設定モードから commit を入力します。
検証
カスタム・アプリケーション定義の検証
目的
デバイスに設定されているカスタムアプリケーションシグネチャを表示します。定義済みのアプリケーション シグネチャ名には、プレフィックス「junos:」が使用されることに注意してください。
アクション
設定モードから、 show services application-identification application detail name コマンドを入力します。
user@host> show services application-identification application
detail test
Application Name: test
Application type: TEST
Description: N/A
Application ID: 16777219
Priority: high
意味
コマンドの出力には、カスタム アプリケーションの名前、タイプ、説明、ID、および優先度が表示されます。
「 show services application-identification application」を参照してください。
変更履歴
サポートされる機能は、使用しているプラットフォームとリリースによって決まります。特定の機能がお使いのプラットフォームでサポートされているかどうかを確認するには、 Feature Explorer を使用します。