Citrix ADC

ラーニング機能の設定と使用

学習機能は、Web App Firewall で保護された Web サイトまたはアプリケーションでのアクティビティを観察し、その Web サイトまたはアプリケーションでの正常なアクティビティを判断する反復的なパターンフィルタです。次に、学習機能のサポートを含むセキュリティチェックごとに最大 2,000 の推奨ルールまたは例外 (緩和) のリストを生成します。通常は、必要な緩和を手動で入力するよりも、学習機能を使用して緩和を設定する方が簡単です。

学習機能をサポートするセキュリティチェックは、次のとおりです。

  • URL チェックの開始
  • クッキーの整合性チェック
  • フォームフィールドの一貫性チェック
  • フィールド形式のチェック
  • CSRFフォームのタグ付けチェック
  • HTML SQL インジェクションチェック
  • HTML クロスサイトスクリプティングのチェック
  • XML サービス拒否チェック
  • XML 添付ファイルのチェック
  • Web サービスの相互運用性チェック

学習機能を使用する場合は、2 種類のアクティビティを実行します。まず、この機能を使用できるように機能を有効にして設定します。保護された Web アプリケーションへのすべてのトラフィックに対してラーニングを使用することも、ラーニング機能が推奨を生成する IP のリスト( 信頼できるラーニングクライアントの追加 リストと呼ばれる)を設定することもできます。次に、この機能を有効にして、保護された Web サイトへの一定量のトラフィックを処理した後、推奨されるルールと緩和のリスト (学習されたルール) を確認し、それぞれに次の指定のいずれかでマークを付けます。

  • 編集とデプロイ。ルールが [編集] ダイアログボックスにプルされ、変更可能なフォームが展開されます。
  • デプロイ。未修正の学習ルールは、このセキュリティチェックのルールまたは緩和のリストに配置されます。
  • スキップ。学習したルールは、展開されていないルールまたは緩和のリストに配置されます。学習したルールは、スキップすると削除されます。しかし、緩和に追加されないため、再び学習される可能性があります。

学習は、フィールド形式のルールを除き、緩和が行われている場合にのみ実行されません。ルールがスキップされると、学習されたデータベースからのみ削除されます。緩和は追加されないため、再び学習される可能性があります。ルールが展開されると、学習されたデータベースから削除され、ルールに対して緩和も追加されます。緩和が追加されると、再び学習されることはありません。フィールドフォーマット保護のために、緩和に関係なく学習が行われます。

学習機能の基本設定にはコマンドラインインターフェイスを使用できますが、この機能は主に Web App Firewall ウィザードまたは GUI を使用した設定用に設計されています。コマンドラインを使用すると、学習機能の限定的な設定だけを実行できます。

このウィザードでは、学習機能の構成とWeb App Firewall 全体の構成が統合されるため、新しいCitrix ADCアプライアンスでこの機能を設定したり、単純なWeb Appファイアウォール構成を管理する場合に最も簡単な方法です。GUI ビジュアライザと手動インターフェイスは、すべてのセキュリティチェックについて学習したすべてのルールに直接アクセスできるため、学習したルールを多数のセキュリティチェックで確認する必要がある場合に適しています。

ラーニングデータベースのサイズは 20 MB に制限されており、ラーニングが有効になっているセキュリティチェックごとに約 2,000 の学習ルールまたは緩和が生成されると、このサイズに達します。学習したルールを定期的に確認し、承認または無視せずにこの制限に達すると、NetScaler ログにエラーが記録され、学習したルールと緩和を確認するまで学習したルールは生成されません。

データベースのサイズ制限に達したために学習が停止した場合は、既存の学習済みルールと緩和を確認するか、学習データをリセットして、学習を再開できます。学習したルールまたは緩和が承認または無視されると、データベースから削除されます。学習データをリセットすると、既存の学習データはすべてデータベースから削除され、最小サイズにリセットされます。データベースのサイズが 20 MB を下回ると、学習が自動的に再開されます。

コマンドラインインターフェイスを使用して学習設定を構成するには

構成する Web App Firewall プロファイルを指定し、そのプロファイルに含めるセキュリティチェックごとに、最小しきい値またはパーセントしきい値を指定します。最小しきい値は、Web App Firewall がルールまたは緩和を学習する前に処理する必要のあるユーザーセッションの最小数を表す整数です(デフォルト:1)。パーセントしきい値は、Web App Firewall がルールまたは緩和を学習する前に、特定のパターン(URL、Cookie、フィールド、添付ファイル、またはルール違反)を観察する必要があるユーザーセッションの割合を表す整数です(デフォルト:0)。次のコマンドを使用します。

  • set appfw learningsettings <profileName> [-startURLMinThreshold <positive_integer>] [-startURLPercentThreshold <positive_integer>] [-cookieConsistencyMinThreshold <positive_integer>] [-cookieConsistencyPercentThreshold <positive_integer>] [-CSRFtagMinThreshold <positive_integer>] [-CSRFtagPercentThreshold <positive_integer>] [-fieldConsistencyMinThreshold <positive_integer>] [-fieldConsistencyPercentThreshold <positive_integer>] [-crossSiteScriptingMinThreshold <positive_integer>] [-crossSiteScriptingPercentThreshold <positive_integer>] [-SQLInjectionMinThreshold <positive_integer>] [-SQLInjectionPercentThreshold <positive_integer>] [-fieldFormatMinThreshold <positive_integer>] [-fieldFormatPercentThreshold <positive_integer>] [-XMLWSIMinThreshold <positive_integer>] [-XMLWSIPercentThreshold <positive_integer>] [-XMLAttachmentMinThreshold <positive_integer>] [-XMLAttachmentPercentThreshold <positive_integer>]
  • save ns config

次の例では、HTML SQL Injection セキュリティチェックのプロファイル pr-basic で学習設定を有効にして設定します。これは、Web App Firewall に送信されるトラフィックを完全に制御できる、適切な初期テストベッド学習設定です。

set appfw learningsettings pr-basic -SQLInjectionMinThreshold 10
set appfw learningsettings pr-basic -SQLInjectionPercentThreshold 70
save ns config

コマンドラインインターフェイスを使用して学習設定をデフォルトにリセットするには

指定したプロファイルとセキュリティチェックの学習設定のカスタム構成を削除し、学習設定をデフォルトに戻すには、コマンドプロンプトで次のコマンドを入力します。

  • unset appfw learningsettings <profileName> [-startURLMinThreshold ] [-startURLPercentThreshold] [-cookieConsistencyMinThreshold] [-cookieConsistencyPercentThreshold] [-CSRFtagMinThreshold ] [-CSRFtagPercentThreshold ] [-fieldConsistencyMinThreshold ] [-fieldConsistencyPercentThreshold ] [-crossSiteScriptingMinThreshold ] [-crossSiteScriptingPercentThreshold ] [-SQLInjectionMinThreshold ] [-SQLInjectionPercentThreshold ] [-fieldFormatMinThreshold] [-fieldFormatPercentThreshold ] [-XMLWSIMinThreshold ] [-XMLWSIPercentThreshold ] [-XMLAttachmentMinThreshold ] [-XMLAttachmentPercentThreshold]
  • save ns config

コマンドラインインターフェイスを使用してプロファイルの学習設定を表示するには

コマンドプロンプトで、次のコマンドを入力します。

show appfw learningsettings <profileName>

コマンドラインインターフェイスを使用して、未レビューの学習規則またはプロファイルの緩和を表示するには

コマンドプロンプトで、次のコマンドを入力します。

show appfw learningdata <profileName> <securityCheck>

コマンドラインインターフェイスを使用して、学習データベースから未確認の特定の学習ルールまたは緩和を削除するには

コマンドプロンプトで、次のコマンドを入力します。

rm appfw learningdata <profileName> (-startURL <expression> | -cookieConsistency <string> | (-fieldConsistency <string> <formActionURL>) | (-crossSiteScripting <string> <formActionURL>) | (-SQLInjection <string> <formActionURL>) | (-fieldFormat <string><formActionURL>) | (-CSRFTag <expression> <CSRFFormOriginURL>) | -XMLDoSCheck <expression> | -XMLWSICheck <expression> | -XMLAttachmentCheck <expression>) [-TotalXMLRequests]

次の例では、LastName フォームフィールドに適用される pr-basic プロファイルである HTML SQL Injection セキュリティチェックについて、未レビューの学習済み緩和をすべて削除します。

rm appfw learningdata pr-basic -SQLInjection LastName

コマンドラインインターフェイスを使用して未レビューの学習データをすべて削除するには

コマンドプロンプトで、次のコマンドを入力します。

reset appfw learningdata

コマンドラインインターフェイスを使用して学習データをエクスポートするには

コマンドプロンプトで、次のコマンドを入力します。

export appfw learningdata <profileName> <securitycheck>[-target <string>]

次の例では、pr-basic プロファイルと HTML SQL Injection セキュリティー検査の学習済み緩和を、-target パラメータで指定したファイル名の下にある /var/learnt_data/ ディレクトリにあるカンマ区切り値 (CSV) 形式のファイルにエクスポートします。

export appfw learningdata pr-basic SQLInjection -target sqli_ld

GUI を使用して学習機能を構成するには

  1. [セキュリティ] > [Web App Firewall] > [プロファイル] に移動します。
  2. [プロファイル] ペインでプロファイルを選択し、[編集] をクリックします。
  3. [ラーニング] タブをクリックします。[Learning] タブの上部には、現在のプロファイルで使用可能で、学習機能をサポートするセキュリティチェックのリストが表示されます。
  4. 学習しきい値を構成するには、セキュリティチェックを選択し、次のテキストボックスに適切な値を入力します。

    最小数のしきい値。構成するセキュリティチェックの学習設定によっては、最小数のしきい値は、監視する必要があるユーザーセッションの合計の最小数、監視する必要がある要求の最小数、または特定のフォームフィールドの最小回数を基準にすることがあります。学習された緩和が生成される前に。デフォルト:1

    回数のしきい値の割合。構成するセキュリティチェックの学習設定によっては、しきい値の割合は、セキュリティチェックに違反した監視されたユーザーセッションの合計の割合、要求の割合、またはフォームフィールドが特定のフィールドタイプに一致した回数の割合を、学習された緩和が生成されます。デフォルト:0

  5. すべての学習データを削除し、学習機能をリセットして、最初から観測を再び開始する必要がある場合は、[すべての学習データを削除] をクリックします。 注意:このボタンは、まだレビューされておらず、承認またはスキップされた学習済み推奨事項のみを削除します。受け入れられ、展開された学習済み緩和は削除されません。
  6. 学習エンジンを特定の IP セットからのトラフィックに制限するには、[Trusted Learning Client] をクリックし、使用する IP アドレスをリストに追加します。
    1. 信頼できるラーニングクライアントの一覧に IP アドレスまたは IP アドレスの範囲を追加するには、[追加] をクリックします。
    2. [信頼されたラーニングクライアントの追加] ダイアログボックスの [信頼されたクライアント IP] リストボックスに、IP アドレスまたは IP アドレスの範囲を CIDR 形式で入力します。
    3. [コメント] テキストボックスに、この IP アドレスまたは範囲を説明するコメントを入力します。
    4. [Create] をクリックして、新しい IP アドレスまたは範囲をリストに追加します。
    5. 既存の IP アドレスまたは範囲を変更するには、IP アドレスまたは範囲をクリックし、[開く] をクリックします。名前を除き、表示されるダイアログボックスは、[信頼されたラーニングクライアントの追加] ダイアログボックスと同じです。
    6. IP アドレスまたは範囲を無効または有効にするが、一覧に残すには、IP アドレスまたは範囲をクリックし、必要に応じて [無効] または [有効] をクリックします。
    7. IP アドレスまたは範囲を完全に削除するには、IP アドレスまたは範囲をクリックし、[削除] をクリックします。
  7. [閉じる] をクリックして、[Web App Firewall プロファイルの設定] ダイアログボックスに戻ります。
  8. [閉じる] をクリックして [Web App Firewall プロファイルの設定] ダイアログボックスを閉じ、[Web App ファイアウォールプロファイル] 画面に戻ります。

GUIを使用して学習したルールまたは緩和を確認するには

  1. [セキュリティ] > [Web App Firewall] > [プロファイル] に移動します。
  2. 学習したルールまたは緩和を確認するセキュリティチェックを選択し、[Manage Rules] をクリックします。
  3. [学習済みルールの管理] ダイアログボックスで、学習済みルールの確認方法を選択します。
    • ウィンドウに表示されている実際の学習パターンをレビューするには、何もしないで次のステップに進みます。
    • 学習したデータを分岐ツリーとして階層的に確認して、学習したパターンの多くに一致する一般的なパターンを選択できるようにするには、[ビジュアライザー] をクリックします。
  4. 実際に学習したパターンをレビューする場合は、次の手順を実行します。
  5. 最初に学んだリラクゼーションを選択し、それを処理する方法を選択します。

    • 緩和を変更して適用 するには、[編集と展開] をクリックし、緩和の正規表現を編集して、[OK] をクリックします。
    • 変更せずに緩和を受け入れるには、[Deploy] をクリックします。
    • 展開せずにリストから緩和を削除するには、[スキップ] をクリックします。
    1. 前の手順を繰り返して、学習した緩和をそれぞれ確認します。
  6. ラーニングビジュアライザの使用を選択した場合は、次の手順を実行します。
    1. 分岐階層表示で、学習したパターンを含むノードを選択し、その処理方法を選択します。

      ツリー構造の下の画面領域の [選択したノードの正規表現] の下に、そのノードのすべてのパターンに一致する一般化された式が表示されます。ブランチの 1 つだけ、またはリーフの 1 つだけに一致するエクスプレッションを表示する場合は、そのブランチまたはリーフを選択します。

      • 学習した緩和を変更して適用するには、[Edit & Deploy] をクリックし、緩和正規表現を編集して、[OK] をクリックします。

      • 変更せずに緩和を受け入れるには、[Deploy] をクリックします。

      • 展開せずにリストから変更を削除するには、[スキップ] をクリックします。

    2. 前の手順を繰り返して、表示の他の部分を確認します。

  7. [閉じる] をクリックして、[学習済みルールの管理] ダイアログボックスに戻ります。
  8. [閉じる] をクリックして、[Web App Firewall プロファイルの設定] ダイアログボックスに戻ります。
  9. [閉じる] をクリックして [Web App Firewall プロファイルの設定] ダイアログボックスを閉じ、[Web App ファイアウォールプロファイル] 画面に戻ります。