PoC ガイド:WAF、ボット、および高度な認証ポリシーによるゲートウェイ仮想サーバーの保護

概要

多くのCitrix ADCアプライアンスは、他のWebアプリケーションにもセキュリティ保護を提供するVPNおよびCitrix Gateway展開をホストしています。このPoCガイドは、Citrix ADCアプライアンスですでに利用可能なツールを使用して、VPNおよびGateway仮想サーバーを保護するために設計されています。このガイドでは、ボットセキュリティによるポータルのログインページの保護と WAF 機能による認証情報フォームの送信の保護について説明します。また、高度な認証ポリシーにより、ユーザーログオンにコンテキストが追加され、多要素認証が可能になります。

この設定の流れは、次のように図化されています。

設定フロー

設定オプション

このガイドは、保護の独占的なリストを提供しておらず、保護を構成する唯一の方法でもありません。たとえば、ゲートウェイ仮想サーバーでレスポンダーポリシーを使用して IP レピュテーションとレート制限の両方を展開するのが一般的です。この構成は、サポートされている展開方法です。ゲートウェイのログインページがレンダリングされる前に接続を切断またはリセットすると、結果が異なります。

また、WAFプロファイルでは、複雑な構成、カスタムチューニング、潜在的な問題を防ぐために、すべての保護が有効になっているわけではありません。WAF プロファイルへのさらなる設定が可能です。ガイダンスについては、「リファレンス」セクションのリンクを参照してください。

注:

CAPTCHA は追加要素として最も安全なオプションではなく、説明を簡単にするためにのみ使用されます。TOTP や PUSH などの他の MFA オプションはより良いオプションです。これらのオプションのデプロイに役立つリンクについては、参照セクションを参照してください。

前提条件

このガイドでは、Citrix WAF の展開、ボットセキュリティの展開、および高度な認証ポリシー (nFactor) に関する実用的な知識を前提としています。ゲートウェイまたは認証仮想サーバーが既にインストールされ、構成されていることが前提となります。構成に必要な要件を次に示します。

  • 高度な認証ポリシーには、リリース 12.1 ビルド 57.18 以降が必要です
  • Web Application Firewallの保護には、リリース 12.1 ビルド 57.18 以降が必要です
  • ボットのセキュリティ保護には、リリース 13.0 ビルド 71.40 以降が必要です
  • このガイドのほとんどの機能にはプレミアムライセンスが必要です
  • ポート 80 でリッスンしている既存のサーバーまたはサービス
  • 既存の高度な認証構成(高度な認証または nFactor フロー)を持つ、既存のゲートウェイまたは認証仮想サーバー
  • 次の機能を有効にします。 Citrix Web App Firewall、Citrix Bot管理、レピュテーション

ボット保護

ボットの署名

セキュリティ]>[Citrixボット管理]>[署名]から、[デフォルトのボット署名]を選択し、[ 複製 ]ボタンをクリックします。わかりやすい名前を適用し、[作成] をクリックします。

ボットプロファイルの署名

ボット管理プロファイルとポリシーの作成

[ セキュリティ] > [Citrix ボット管理] > [プロファイル] で、[追加] を選択して新しいボット管理プロファイルを作成します。プロファイルにわかりやすい名前を付けて、以前に作成した署名セットを選択します。

ボットプロフィール

詳細設定を編集するプロファイルを選択します。

右側の列から IP レピュテーションを追加し 、チェックボックスをオンにして有効にします。

ボットプロフィール IP レピュテーション

次に、カテゴリの下の [追加] を選択し、[タイプ] で [ IP ] を選択し、[有効] のチェックボックスをオンにして、アクションを [ドロップ] に設定します。最後に、「ログ」のチェックボックスをオンにし、ログメッセージを説明的なものに設定します。

ボットプロファイル IP レピュテーション 2

ボットプロフィール IP レピュテーション 3

右側の列から [ **デバイスフィンガープリント ] を選択し、[有効] チェックボックスがオフになっていることを確認し、[更新] をクリックします。**

ボットプロファイルデバイスのフィンガープリント

ボットプロファイルの最後の設定は、レート制限を有効にし、右側の列から [ Rate Limit ] を選択し、[有効] のチェックボックスをオンにします。[ リソースを設定] で [追加] をクリックし、次の URL に 3 つの URL タイプレート制限バインディングを追加します。

  • /logon/LogonPoint/index.html
  • /logon/LogonPoint/tmindex.html
  • /vpn/index.html

レート制限を次のように設定します。

  • 有効
  • レート5
  • 1000年のピリオド
  • ドロップのアクション
  • ログは有効に設定されています
  • メッセージタイトルを説明するログメッセージ。

ボットプロファイルのレート制限

これで、ボットプロファイルは次のように構成されました。

ボットプロファイルファイナル

「セキュリティ」>「Citrixボット管理」>「ボットポリシー」の順に選択し、「追加」を選択して、ボット管理ポリシーを作成します 。以前に作成したボットプロファイルを、次のようにエクスプレッションで選択します。


HTTP.REQ.URL.CONTAINS("/vpn")||HTTP.REQ.URL.CONTAINS("/logon")
<!--NeedCopy-->

最後に、[ポリシーマネージャ] を選択することでボットポリシーがバインドされます。[デフォルトグローバル] のバインドポイントを選択し、[クリックして選択] を選択してポリシーを選択します。以前に作成したポリシーを強調表示し、[選択] を選択します。[バインド] を選択し、[Done] を選択します。

ボットポリシーのバインド

WAF 保護

WAF ポリシーを Gateway または認証仮想サーバーに直接バインドすることはできません。また、WAF ポリシーを Gateway または認証仮想サーバーをターゲットとする式でグローバルにバインドしても、期待どおりに機能しません。ポリシーの処理順序により、この誤動作が発生します。WAF ポリシーは Gateway ポリシーと認証ポリシーの後に処理されます。トラフィックフローの説明については、下の画像を参照してください。

トラフィックフロー

WAF 保護ポリシーは、HTTP コールアウトを使用してログオンページを保護し、WAF 例外がキャッチされた場合に認証フローを無効にします。この設定には、ログイン URL、ダミーサービスと負荷分散仮想サーバー、HTTP コールアウト、WAFポリシーと設定を含むパターンセット (Patset) が必要です。

パターンセット

AppExpert > パターンセットに移動し 、「追加」を選択します。新しいパターンセットに名前を付けて、「挿入」を選択し、次のパターンを追加します。

  • /cgi/login (index 1)
  • /nf/auth/doAuthentication.do (index 2)

パターンセット

または、CLI からパターンセットを作成します。


add policy patset GW_VPN_Patset
bind policy patset GW_VPN_Patset "/cgi/login" -index 1
bind policy patset GW_VPN_Patset "/nf/auth/doAuthentication.do" -index 2
<!--NeedCopy-->

ダミー仮想サーバーとサービス

HTTP コールアウトはダミーの仮想サーバーを使用します。この仮想サーバーは公開されている必要はないため、アドレス指定できない場合があります。仮想サーバーは起動している必要があるため、バックエンドサーバーは起動し、ポート 80 で応答する必要があります。このガイドでは新しいサービスと仮想サーバーを作成しますが、既存の仮想サーバーを使用できます。

[ トラフィック管理] > [負荷分散] > [サービス ] に移動し、[追加] を選択します。サービスにわかりやすい名前を付けて、プロトコルを HTTP、ポートを 80 に設定します。サーバの IP アドレスを入力し、 OKを選択します。または、既存のサーバーを使用してサービスを作成します。サービスにバインドされているモニターを含む、すべてのデフォルト設定を使用します。

負荷分散サービス

次に、[ トラフィック管理] > [負荷分散] > [仮想サーバー] の順に選択して、負荷分散仮想サーバーを作成し 、[追加] を選択します。サーバにわかりやすい名前を付けて、プロトコルを HTTP に設定し、IP アドレスの種類を [ アドレス不可能] に設定します。[負荷分散仮想サーバーサービスのバインドなし] を選択し、[クリックして選択] を選択し、サービスを選択して、以前に作成したサービスをこの仮想サーバーにバインドします。仮想サーバにバインドされたサービスが 1 つあり、状態は「Up」になります。

仮想サーバーの負荷分散

HTTP コールアウト

AppExpert > HTTP コールアウトに移動し 、[追加] を選択します。HTTP コールアウトにわかりやすい名前を付けて、[仮想サーバー] を選択してコールアウト要求を受信し、ダミー仮想サーバーを選択します。[サーバーに送信する要求] で、[式ベース] としてタイプを選択し、スキームを ‘HTTP’ に設定し、[完全な式] を次のように設定します。


HTTP.REQ.FULL_HEADER.BEFORE_STR("\r\n\r\n")+"\r\nGW_VPN-WAF_Callout:abc\r\n\r\n"+HTTP.REQ.BODY(2048)
<!--NeedCopy-->

注:

ここでのヘッダーの名前は「GW_VPN-WAF_Callout」です。アプリケーションファイアウォールのフィルタリング式では後で使用します。ここで名前が変更された場合は、WAF ヘッダー式も変更します。

[サーバー応答] セクションで、戻り値の型を BOOL に設定し、式を「真」に設定します。

HTTP コールアウト

または、CLI から HTTP コールアウトを作成します。


add policy httpCallout GW_VPN_WAF_Callout -vServer dummy-vserver-here -returnType BOOL -fullReqExpr HTTP.REQ.FULL_HEADER.BEFORE_STR("\r\n\r\n")+"\r\nGW_VPN-WAF_Callout:abc\r\n\r\n"+HTTP.REQ.BODY(2048) -scheme http -resultExpr true
<!--NeedCopy-->

認証ポリシー

HTTP コールアウトを使用するように、既存の LDAP 認証ポリシーを変更します。[ セキュリティ] > [AAA アプリケーショントラフィック] > [ポリシー] > [認証] > [詳細ポリシー] > [ポリシー] の順に選択して、既存の認証ポリシーを開き、[編集] を選択します。既存の式を次のように変更します。


HTTP.REQ.URL.CONTAINS_ANY("GW_VPN_Patset") && SYS.HTTP_CALLOUT(GW_VPN_WAF_Callout)
<!--NeedCopy-->

認証ポリシー WAF バインディング

注:

この式は、ログオンページのフォームフィールドを保護する認証ポリシーで使用します。

WAF プロファイルとポリシー

WAFプロファイルを構築するには、[ セキュリティ]>[Citrix Web Application Firewall]>[プロファイル ]の順に選択し、[追加]を選択します。プロファイルにわかりやすい名前を付けて、[Web アプリケーション (HTML)] と [基本デフォルト] を選択します。[編集] を選択して新しく作成したプロフィールを開き、右側の列から [セキュリティチェック] を選択します。

次のセキュリティチェックを有効にします (他の設定はすべて無効にします)。

  • バッファオーバーフロー-ログ、統計
  • 投稿本文制限-ブロック、ログ、統計
  • HTML クロスサイトスクリプティング-ブロック、ログ、統計
  • HTML SQLインジェクション-ブロック、ログ、統計

WAF セキュリティチェック

次に、右側の列から [プロファイル設定] を選択し、[既定の応答] を次のように設定します。


application/octet-stream
<!--NeedCopy-->

次に、[ すべてのポリシーヒットを記録] のチェックボックスをオンにします。

WAF プロファイルの設定

次に、[ セキュリティ]>[Citrix Web Application Firewall]>[ポリシー]>[ファイアウォール]の順に選択し 、[追加]を選択してWAFポリシーを構成します。ポリシーにわかりやすい名前を付けて、前の手順で作成したプロファイルを選択します。式には、次のように入力します。


HTTP.REQ.HEADER("GW_VPN-WAF_Callout").EXISTS
<!--NeedCopy-->

注:

ここでヘッダーの名前は、以前に作成された HTTP コールアウトのヘッダーと一致する必要があります。

最後に、 トラフィック管理 > 負荷分散 > 仮想サーバーに移動して、前に作成したダミーの負荷分散仮想サーバーにWAFポリシーをバインドします。仮想サーバーを選択し、[編集] を選択します。

右側の列で [Policies] を選択し、[+] プラスをクリックしてポリシーを追加します。ポリシーアプリファイアウォールを選択し、「要求」と入力します。以前に作成したポリシーを選択し、[バインド] と [Done] を選択します。

WAF ポリシーバインディング

または、次のように CLI を使用して WAF 設定を作成します。


add appfw profile demo_appfw_profile -startURLAction none -denyURLAction none -fieldFormatAction none -bufferOverflowAction log stats -responseContentType "application/octet-stream" -logEveryPolicyHit ON -fileUploadTypesAction none

add appfw policy demo_appfw_policy "HTTP.REQ.HEADER("GW_VPN-WAF_Callout").EXISTS" demo_appfw_profile

bind lb vserver dummy-vserver-here -policyName gw_appfw_policy -priority 100 -gotoPriorityExpression END -type REQUEST
<!--NeedCopy-->

認証の詳細設定

認証に関連する2つの構成があります。nFactor内のクライアントからADCへのユーザー資格情報の暗号化と、IPレピュテーションベースの MFA です。

ユーザー資格情報の暗号化

次の設定では、ユーザーが ECDHE アルゴリズムを使用してフォームデータを送信するときに、ADC が資格情報セットを暗号化できるようにします。この設定を有効にするには、 [Citrix Gateway]>[グローバル設定]>[認証設定]>[認証AAA]の設定を変更し 、[ ログイン暗号化 ]を[ 有効]に設定します。

認証ログイン暗号化

または、CLI からこの設定を次のように変更します。


set aaa parameter -loginEncryption ENABLED
<!--NeedCopy-->

IP レピュテーションベースの MFA

データベースに送信元アドレスが含まれている場合は、IP レピュテーションと高度な認証を使用して、ユーザに追加要素を要求します。また、手動で管理する住所のデータセットを作成します。

重要:

次の設定例では、認証の別の要素を提供する手段として CAPTCHA を使用していますが、他の MFA ツールを使用できます。すべての nFactor 設定と同様に、ここに示すポリシー、スキーマ、およびポリシーラベルは簡単な例です。特定のログインユースケースに合わせて設定を追加してください。

TOTP PUSH をファクタとして設定し、追加の CAPTCHA 設定の詳細については、「リファレンス」セクションを参照してください。

データセットを作成するには、[ AppExpert] > [データセット ] に移動し、[追加] を選択します。説明的な名前、「ipv4」のタイプでデータセットを作成し、「作成」をクリックします。

悪意のある IP データセット

次に、 [セキュリティ] > [AAA-アプリケーショントラフィック] > [ポリシー] > [認証] > [詳細ポリシー] > [ポリシー] の順に選択し、[追加] を選択して 2 つの高度な認証ポリシーを作成する必要があります

説明的な名前、アクションタイプが NO_AUTHN、式が「true」に設定された最初のポリシーを作成します。

高度なポリシーいいIP

説明的な名前、アクションタイプ NO_AUTHN、および次の式を使用して 2 番目のポリシーを作成します。


CLIENT.IP.SRC.IPREP_IS_MALICIOUS || CLIENT.IP.SRC.TYPECAST_TEXT_T.CONTAINS_ANY("suspicious_ips")
<!--NeedCopy-->

注:

ここでは、以前に作成したデータセットの名前を使用します。

次に、[ セキュリティ] > [AAA-アプリケーショントラフィック] > [ログインスキーマ] > [プロファイル] タブに移動して [追加] を選択すると、CAPTCHA ログインスキーマプロファイルが作成されます。プロファイルにわかりやすい名前を付けて、「鉛筆」編集アイコンを選択して認証スキーマを編集します。LoginSchema ディレクトリを参照し、SingleAuthCaptcha.xmlを強調表示して、[選択] を選択します

Captcha ログインスキーマ

次に、 [セキュリティ] > [AAA-アプリケーショントラフィック] > [ポリシー] > [認証] > [高度なポリシー] > [ポリシーラベル] の順に選択し、[追加] を選択して Captcha スキーマの認証ポリシーラベルを作成します 。PL にわかりやすい名前を付けて、以前に作成した captcha ログインスキーマを選択します。必要な LDAP アクションポリシーをバインドします。

注:

この例では、以前に作成した LDAP 認証アクションを再利用しています。

Captcha ポリシーラベル

[Add] を選択して、別のポリシーラベルを作成します。この PL にわかりやすい名前を付けて、ログインスキーマを LSCHEMA_INT に設定します。次に、以前に作成した 2 つの NO_AUTHN 認証ポリシーをバインドします。

IP チェックポリシーラベル

最後に、以前に作成した認証ポリシーの次の要素を、この IP レピュテーションチェックポリシーラベルとして設定します。すでに認証または Gateway 仮想サーバーにバインドされています。認証ポリシーを強調表示し、[バインドの編集] を選択し、[次の要素を選択] フィールドとして新しいポリシーラベルを設定します。

最終認証ポリシー

概要

Citrix ADCは、同じアプライアンス上で実行されているGatewayまたはAuthentication仮想サーバーを保護する多くの組み込みセキュリティ保護を提供します。これらの保護は、一般的なユーザーがCitrix Gatewayにログインしようとするときに影響を与えません。

参照ドキュメント

追加情報と構成オプションについては、次の記事を参照してください。

Citrix Webアプリケーションファイアウォールの概要 -Citrix製品ドキュメント:Citrix Webアプリケーションファイアウォールの概要

Citrix WebアプリケーションファイアウォールのPoCガイド -Citrix Webアプリケーションファイアウォールの概念実証導入ガイド

アプリケーションデリバリとセキュリティに関するCitrixトレーニング-アプリケーションデリバリとセキュリティに関するCitrix Educationトレーニング

Citrix ADC入門-Citrix製品ドキュメント :Citrix ADC入門-パケットフロー

IPレピュテーション -Citrix 製品ドキュメント:IPレピュテーション

ボット管理 -Citrix 製品ドキュメント:ボット管理

ボット検出 -Citrix 製品ドキュメント:ボット検出

nFactor 認証 -Citrix 製品ドキュメント:nFactor 認証

Citrix ADC-nFactor の基本チートシート -Citrix Tech Zone: 図とポスター Citrix ADC-nFactor の基本チートシート

CTX216091 -nFactorで再キャプチャをサポート

プッシュトークンを使用したCitrix Gateway for nFactor -Citrix GatewayのTOTPプッシュトークンの概念実証導入ガイド

PoC ガイド:WAF、ボット、および高度な認証ポリシーによるゲートウェイ仮想サーバーの保護