Citrix ADC

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

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

ラーニング機能をサポートするセキュリティー検査は、次のとおりです。

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

学習機能の使用時には、2 つの異なるタイプのアクティビティを実行します。まず、この機能を使用できるように機能を有効にして設定します。保護された Web アプリケーションへのすべてのトラフィックでラーニングを使用することも、ラーニング機能で推奨を生成する必要がある IP のリスト( [信頼できるラーニングクライアントの追加(Add Trusted Learning Clients)] リスト)を設定することもできます。次に、この機能を有効にして、保護された Web サイトへの一定量のトラフィックを処理したら、推奨されるルールと緩和 (学習済みルール) の一覧を確認し、それぞれに次のいずれかの指定をマークします。

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

学習は、フィールド形式のルールを除き、緩和が設定されている場合にのみ実行されるわけではありません。ルールをスキップすると、学習したデータベースからのみ削除されます。リラクゼーションは追加されないので、再び学習される可能性があります。ルールが展開されると、学習済みデータベースから削除され、緩和もルールに追加されます。リラクゼーションが追加されると、再び学習されることはありません。フィールド形式の保護では、緩和に関係なく学習が実行されます。

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

このウィザードは、学習機能の構成とWeb App Firewall全体の構成を統合するため、新しいCitrix ADCアプライアンスでこの機能を構成したり、単純なWeb App Firewall構成を管理したりする場合に最も簡単な方法です。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 セキュリティー検査で学習設定を有効にして構成します。これは、Web App Firewall に送信されるトラフィックを完全に制御できる、適切な初期テストベッド学習設定です。

set appfw learningsettings pr-basic -SQLInjectionMinThreshold 10
set appfw learningsettings pr-basic -SQLInjectionPercentThreshold 70
save ns config
<!--NeedCopy-->

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

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

  • 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]

次の例では、姓フォームフィールドに適用されるプロファイル HTML SQL インジェクションセキュリティチェックの未確認学習緩和をすべて削除します。

rm appfw learningdata pr-basic -SQLInjection LastName
<!--NeedCopy-->

コマンドラインインターフェイスを使用して、未確認の学習済みデータをすべて削除するには

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

reset appfw learningdata

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

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

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

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

export appfw learningdata pr-basic SQLInjection -target sqli_ld
<!--NeedCopy-->

GUI を使用してラーニング機能を設定するには

  1. セキュリティ > Web App Firewall > プロファイルに移動します
  2. [ プロファイル ] ペインでプロファイルを選択し、[ 編集] をクリックします。
  3. [ 詳細設定] セクションの [学習ルール ] をクリックします。
  4. [ 学習したルール] セクションで、セキュリティチェックを選択し、[ 設定] をクリックします。
  5. [ セキュリティチェックの設定] ページで、次のパラメータを設定します。

    1. 最小数のしきい値。設定しているセキュリティチェックの学習設定に応じて、最小数のしきい値は、監視する必要のあるユーザーセッションの合計の最小数、遵守する必要のあるリクエストの最小数、または特定のフォームフィールドを監視する必要がある最小回数を指す場合があります。学習したリラクゼーションが生成される前に。デフォルト:1

    2. 回数のしきい値のパーセンテージ。設定しているセキュリティチェックの学習設定に応じて、しきい値の割合は、セキュリティチェックに違反した観察されたユーザーセッションの合計の割合、リクエストの割合、またはフォームフィールドが特定のフィールドタイプと一致した回数の割合を指す場合があります。学習したリラクゼーションが生成されます。デフォルト:0

  6. OKをクリックして閉じます

    学習済みルールセクション

  7. 学習済みデータをすべて削除して学習機能をリセットするには 、[すべての学習済みデータを削除] をクリックします。これにより、最初から観測を再開する必要があります。

    注:

    このボタンは、レビューされておらず、承認またはスキップされた学習済みの推奨事項のみを削除します。受け入れられて展開された学習済み緩和は削除されません。

  8. 学習エンジンを特定の IP セットからのトラフィックに制限するには、[ 信頼できる学習クライアント] をクリックし、使用する IP アドレスをリストに追加します。
    1. [信頼できる学習クライアント] リストに IP アドレスまたは IP アドレス範囲を追加するには、[ 追加] をクリックします。
    2. [ 信頼できるラーニングクライアントの追加 ] ダイアログボックスの [信頼できるクライアント IP] リストボックスに、IP アドレスまたは IP アドレスの範囲を CIDR 形式で入力します。
    3. [コメント] テキスト領域に、この IP アドレスまたは IP アドレス範囲を説明するコメントを入力します。
    4. [ Create ] をクリックして、新しい IP アドレスまたは範囲をリストに追加します。
    5. 既存の IP アドレスまたは範囲を変更するには、IP アドレスまたは範囲をクリックし、[ 開く] をクリックします。名前以外は、表示されるダイアログボックスは [ 信頼できる学習クライアントの追加 ] ダイアログボックスと同じです。
    6. IP アドレスまたは範囲を無効または有効にしても、一覧に残すには、IP アドレスまたは範囲をクリックし、必要に応じて [ 無効] または [有効にする] をクリックします。
    7. IP アドレスまたは IP 範囲を完全に削除するには、IP アドレスまたは範囲をクリックし、[ 削除] をクリックします。
  9. [ 閉じる ] をクリックして [Web App Firewall プロファイルの構成] ページに戻ります。
  10. [完了] をクリックします。

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

  1. セキュリティ > Web App Firewall > プロファイルに移動します
  2. [ プロファイル ] ペインでプロファイルを選択し、[ 編集] をクリックします。
  3. [ 詳細設定] セクションの [学習ルール ] をクリックします。
  4. [ 学習したルール] セクションで、セキュリティチェックを選択し、[ 設定] をクリックします。
  5. 学習したデータを分岐ツリーとして階層的に確認し、学習したパターンの多くに一致する一般的なパターンを選択できるようにするには、[ Visualizer] をクリックします。
  6. 実際に学習したパターンを確認する場合は、次の手順を実行します。
  7. 最初に学習したリラクゼーションを選択し、その処理方法を選択します。

    1. 緩和を変更して承諾するには、「 Edit & Deploy」をクリックし、緩和の正規表現を編集して「 OK」をクリックします。
    2. 変更せずに緩和を適用するには、[ Deploy] をクリックします。
    3. 展開せずに緩和をリストから削除するには、[ スキップ] をクリックします。
    4. 前のステップを繰り返して、学習したリラクゼーションを追加するたびに確認します。
  8. [ 閉じる ] をクリックして [ 学習済みルールの管理 ] ダイアログボックスに戻ります。
  9. [完了] をクリックします。

    ビジュアライザー付きの学習済みルールセクション