導入ガイド:nFactorを使用してMFAのRADIUSサーバーに対して認証するようにCitrix Gatewayを構成する方法を学ぶ

概要

nFactorを使用してRADIUSサーバーに対して多要素認証(MFA)を認証するようにCitrix Gatewayを構成する方法。

この記事では、LDAPおよびRADIUSベースの多要素認証にnFactor認証を使用するようにCitrix ADC Gatewayを構成する方法と、一般的なトラブルシューティング手法について説明します。

この記事では、Citrix ADCにCitrix Gatewayの実装とRADIUSサーバーとLDAPサーバーがあることを前提としています。

また、この記事では、ローカル負荷分散仮想サーバーを介して RADIUS サーバーと LDAP サーバーに接続することを推奨しており、ロードバランサーがすでに作成されていることを前提としています。負荷分散仮想サーバーの作成について詳しくは、こちらをご覧ください。また、ロードバランサーでのRADIUS 永続性の構成については、こちらをご覧ください。

RADIUS通信の

RADIUS通信フローは、クライアント、この場合はCitrix ADCからのアクセス要求パケットから始まります。RADIUS サーバはクライアントを検証し、Access-Request 内で受信したクレデンシャルを認証します。検証後、RADIUS サーバは Access-Accept、拒否、またはチャレンジで応答し、ユーザに詳細情報を要求します。

RADIUS_communication_image

RADIUSサーバには、有効なクライアントのリストと、それぞれの共有秘密があります。RADIUS サーバは通常、無効なクライアントからの要求を無視しますが、一部の実装では認証の失敗が返されます。共有シークレットは、認証情報のパスワードコンポーネントを暗号化します。共有シークレットが間違っていると、正しい値に復号化しないため、サーバーは常にパスワードを拒否します。

デフォルトでは、Citrix ADCはアクティブなHAノードのNSIPからRADIUS認証要求を送信し、単一のRADIUSサーバーをターゲットにします。

RADIUS_NSIP_source_image

HAペアの両方のADCのNSIPをRADIUSサーバー上のクライアントとして定義するのではなく、ADCがローカルの負荷分散仮想サーバーを介して認証要求を送信することをお勧めします。負荷分散仮想サーバーは、セットアップの回復力も高めます。

Citrix ADCがローカルの負荷分散仮想サーバーを介してRADIUS要求を送信すると、要求はSNIPを介してADCから送信されます。SNIP はフローティング IP アドレスで、現在のプライマリ HA ノードでのみ使用できます。

負荷分散 (LB) 仮想サーバーを使用する場合、プライマリおよびセカンダリ HA ノードの NSIP がローカル VIP に要求を行います。LB VIPは、HAペアのSNIPを使用してRADIUSサーバーに送信します。

RADIUS_NSIP_to_VIP_to_SNIP_image

RADIUSトラブルシューティングツール

ほとんどのRADIUS実装はなしで行われますが、最も一般的なトラブルシューティング・ツールを理解しておくと役に立ちます。

Citrix ADCの「/tmp/aaad.debug」認証デバッグパイプ

Citrix ADCで認証イベントを表示するには、「シェル」でBSHシェルに入り、「cat /tmp/aaad.debug」でaaad.debugパイプを表示します。

「aaad.debug」の詳細については、こちらをご覧ください。https://support.citrix.com/article/CTX114999

nTRADping

nTRADping は、RADIUS 認証要求を生成し、応答を監視するために使用できるサードパーティの RADIUS テストツールです。nTradPingはここからダウンロードできます。

NTradping を使用すると、クライアントから RADIUS サーバーに RADIUS 認証要求を直接送信し、完全に動作していることを確認できます。RADIUSサーバーでは、クライアントのIPアドレスと共有シークレットを定義する必要があります。クライアントが RADIUS サーバーと通信できるようにするには、ファイアウォールルールも必要です。

また、ntRADping を使用して ADC の LB 仮想サーバーに認証要求を送信し、ADC が RADIUS サーバーに中継することもできます。これらの要求はADCから送信されるため、NTradpingにはADCと同じ共有秘密が必要です。また、クライアントがADCのRADIUS LB仮想サーバーと通信できるようにするためのファイアウォールルールも必要です。

各コンポーネントを個別にテストすることにより、テストでは障害が発生している場所を特定します。ADCのRADIUSを使用して、成功した要求を手動で送信できるとします。その場合、ADC上のRADIUSサーバー定義など、その前に問題があることがわかっているので、作業に集中できます。

RADIUS_test_locations_image

NTradping は、圧縮 zip から同じディレクトリに抽出する 2 つのファイルで構成されます。起動時に、nTradping は以下を要求します。

  • RADIUSサーバーとポート
  • RADIUSシークレット
  • ユーザー名とパスワード
  • 認証リクエストタイプ

RADIUS_ntradping_image

実行するテストに応じて、RADIUSサーバーのIPアドレスまたはADCのLB仮想サーバーのIPアドレスを宛先として使用します。最も一般的にはポート1812です。

クエリを直接送信する場合は、クライアントの RADIUS シークレットを設定します。Gatewayからの認証要求を模倣するためにADCのLB仮想サーバーを介してクエリを送信する場合は、ADCが使用するように構成したものと同じ共有秘密を使用します。 ユーザー名とパスワードのフィールドには、ADCがユーザーに代わってRADIUSサーバーに送信すると予想される資格情報が含まれています。通常、「パスワード」フィールドにはユーザーの MFA トークン値が含まれます。

[送信] をクリックすると、NTradping はコンピューターから指定された宛先に認証要求を送信し、応答 (通常は Access-Accept または Access-Reject) を表示します。

RADIUS_ntradping_accept_image

WireShark

認証プロセス中にCitrix ADCでパケットトレースを取得すると、WireShark内のRADIUS要求と応答を調べることができます。

WireSharkは、世界で最も広く使用されているネットワークプロトコルアナライザです。WireSharkは無料で、ここなしで利用できます。

WireSharkのRADIUSフィルターはここにあります。

Citrix ADCでパケットトレースを実行する手順については、こちらを参照してください。

WireSharkでは、アクセス要求パケットの後に、Access-Accept、Access-Reject、またはアクセスチャレンジ応答のいずれかが表示されます。 応答がないことは、ファイアウォールルールがないことや、RADIUS サーバにクライアントの定義がないなどの通信上の問題を示すことがよくあります。

GUI の指示

RADIUSサーバー上の構成がすでに完了していると仮定して、Citrix GatewayでのMFA認証について次の手順に従います。

認証、承認、監査 (AAA) 機能を有効にする

  1. AAA 機能がまだ有効になっていない場合は、[セキュリティ] > [AAA — アプリケーショントラフィック] に移動し、右クリックして機能を有効にします。
    Enable_AAA_image

認証サーバーの追加

  1. セキュリティ > AAA — アプリケーショントラフィック、ポリシー、認証、基本ポリシー、RADIUSを選択します。
    Navigate_to_RADIUS_server_image

  2. [サーバー] タブを選択し、[追加] をクリックします。
    navigate_to_radius_server_Image

  3. RADIUSサーバーの詳細を入力します。個々のRADIUSサーバーをターゲットにするのではなく、

    負荷分散仮想サーバーをターゲットにすることをお勧めします。そのため、このページではRADIUS LBのVIPをサーバーIPとして使用してください。 秘密鍵は、ADCのSNIPのRADIUSサーバー上の値と一致する必要があります。enable_aaa_Image

  4. セキュリティ > AAA — アプリケーショントラフィック、ポリシー、認証、基本ポリシー、LDAPを選択します。次に、「サーバー」タブを選択し、「追加」をクリックします。
    LDAP_server_image

  5. LDAPターゲットの詳細を入力します。
    RADIUSと同様に、ローカルの負荷分散(LB)仮想サーバーを宛先として使用することをお勧めします。そのため、このページの LDAP LB 仮想サーバーの VIP をサーバー IP として使用します。RADIUS_server_details1_imageRADIUS_server_details2_image

高度な認証ポリシーを追加する

  1. [セキュリティ] > [AAA — アプリケーショントラフィック、ポリシー、認証、詳細ポリシー、ポリシー] を選択します。次に、「追加」をクリックします。
    RADIUS_select_advanced_image

  2. 図のようにポリシーの詳細を入力し、[作成] をクリックします。
    RADIUS_server_details_image

  3. 手順を繰り返して RADIUS の別のポリシーを作成し、[作成] をクリックします。
    LDAP_auth_pol_image

AAA 仮想サーバを作成する

  1. 設定 > セキュリティ > AAA-アプリケーショントラフィック > 仮想サーバにナビゲートして下さい
    RADIUS_auth_pol_image

  2. [追加] をクリックして、認証仮想サーバーを作成します。
    AAA_virtual server_add_image

  3. 次の情報を入力し、 「OK」をクリックします。
    • Name-AAA 仮想サーバの名前。
    • IPアドレスの種類-この仮想サーバーはCitrix Gateway でのみ使用されるため、IPアドレスの種類をアドレス指定不可に変更します。
      AAA_virtual server_details_image
  4. [証明書] で [サーバー証明書なし] を選択します。
    AAA_virtual server_cert1_image

  5. サーバー証明書
    AAA_CERT_Binding_Imageを選択するには、[クリックして選択] をクリックします

  6. AAA 仮想サーバの証明書の横にあるオプションボタンをクリックし、[選択(Select)] をクリックします。このサーバーには直接アクセスできないため、選択した証明書は関係ありません。
    AAA_cert_binding2_image

  7. バインド」をクリックします。
    AAA_cert_binding3_image

  8. [続行] をクリックして [証明書] セクションを閉じます。
    AAA_cert_binding4_image

  9. [**高度な認証ポリシー] の [認証ポリシーなし**] をクリックします。
    AAA_virtual server_auth_image

  10. [ポリシーの選択] のフィールドの下にある [クリックして選択]をクリックします。
    AAA_virtual server_auth2_image

  11. LDAP_POL」ポリシーを選択し、「選択」をクリックします。
    AAA_virtual server_auth3_image

  12. [次の要素を選択] のフィールドの下にある [クリックして選択]をクリックします。
    AAA_virtual server_auth4_image

  13. 認証ポリシーラベル」内の「追加」をクリックします。
    AAA_virtual server_auth5_image

  14. ADCがRADIUS認証をトリガーするために使用するポリシーラベルの名前を入力し、[続行] をクリックします。
    AAA_virtual server_create_pol_image

  15. [ポリシーの選択] のフィールドの下にある [クリックして選択]をクリックします。
    AAA_virtual server_pols1_image

  16. radius_POL」ポリシーを選択し、「選択」をクリックします。
    AAA_virtual server_pols2_image

  17. 認証ポリシーラベルの作成」画面の下部にある「バインド」をクリックします。
    AAA_virtual server_create_pol_image

  18. 認証ポリシーラベル」画面の下部にある「完了」をクリックします。
    AAA_virtual server_radius_pol1_image

  19. 選択」をクリックします。
    AAA_virtual server_radius_pol2_image

  20. ポリシーバインディング」画面の下部にある「バインド」をクリックします。
    AAA_virtual server_pollab_image

ユーザ名、パスワード、およびパスコードフィールドをユーザに提示するログインスキーマを適用する

  1. 右側の「詳細設定」メニューの「ログインスキーマ」をクリックします。
    AAA_virtual server_cert6_image

  2. [No Login Schema] をクリックして、スキーマを選択するウィンドウを表示します。
    AAA_virtual server_loginschema_image

  3. [ポリシーの選択] の [クリックして選択]をクリックします。
    AAA_virtual server_loginschema_binding_image

  4. 組み込みの “lschema_dual_factor_builtinポリシーを選択し、[選択] をクリックします。
    AAA_virtual server_loginschema_binding2_image

  5. [バインド] をクリックし、[完了] を選択して AAA 仮想サーバ設定メニューを終了します。
    AAA_virtual server_loginschema_binding3_image

注:「lschema_dual_factor_builtin」ポリシーは、ADC 13.0ファームウェアに追加されました。以前のリリースを使用している場合は、ポリシーを作成する必要があります。ポリシーの作成方法を説明する手順については,こちらを参照してください。

新しい AAA サーバを使用するように Gateway 仮想サーバを設定する

  1. Citrix Gateway、仮想サーバー」を選択し、Gateway 仮想サーバーを選択して「編集」をクリックします。
    Gateway_virtual server_image

  2. 右側の「詳細設定」メニューで「認証プロファイル」を選択します。
    Gateway_virtual server1_image

  3. [認証プロファイル] セクションで [追加] を選択します。
    Gateway_virtual server2_image

  4. 新しい認証プロファイルの名前を次のように入力し、「認証仮想サーバー」の下の「クリックして選択」をクリックします。
    Gateway_virtual server3_image

  5. 先ほど作成した AAA 仮想サーバを選択し、[選択]をクリックします。
    Gateway_virtual server4_image

  6. 作成」をクリックします。
    Gateway_virtual server5_image

  7. OK」をクリックします。
    Gateway_virtual server6_image

  8. 完了」をクリックします。
    Gateway_virtual server7_image

テストを実行する

これで、Citrix Gateway 仮想サーバーで多要素認証を使用する準備ができました。Gateway_virtual server8_image

認証に関する問題が発生した場合は、このドキュメントの「トラブルシューティング」セクションを参照してください。

CLI の説明

CLIを使用してADCを構成する場合は,次の構成スクリプトで必要な手順をすべて完了します。

# 1. Enable AAA en ns feature aaa # 2. Creating LDAP Server add authentication ldapAction LDAP_for_Gateway -serverIP LDAP_LB_IP -serverPort 636 -ldapBase "DC=citrix,DC=lab" -ldapBindDn readonly@citrix.lab -ldapBindDnPassword PASSWORD -ldapLoginName sAMAccountName -groupAttrName memberOf # 3. Creating LDAP Policy add authentication Policy LDAP_Pol -rule true -action LDAP_for_Gateway # 4. Creating RADIUS Server add authentication radiusAction RADIUS_Server -serverIP 192.168.1.100 -serverPort 1812 -radKey sharedsecret # 5. Create RADIUS Policy add authentication Policy RADIUS_Pol -rule true -action RADIUS_Server # 6. Create a PolicyLabel triggering the RADIUS Policy add authentication policylabel RADIUS_PolicyLabel -loginSchema LSCHEMA_INT bind authentication policylabel RADIUS_PolicyLabel -policyName RADIUS_Pol -priority 100 # 7. Create the AAA virtual server add authentication vserver nFactorAuthvServer SSL 0.0.0.0 # 8. Bind an SSL certificate to the AAA virtual server bind ssl vserver nFactorAuthvServer -certkeyName "Example Cert" # 9. Bind the LDAP policy and RADIUS PolicyLabel to the AAA virtual server bind authentication vserver nFactorAuthvServer -policy LDAP_Pol -priority 100 -nextFactor RADIUS_PolicyLabel -gotoPriorityExpression NEXT # 10. Bind the builtin Login Schema for dual factor authentication to the AAA virtual server bind authentication vserver nFactorAuthvServer -policy lschema_dual_factor_builtin -priority 100 -gotoPriorityExpression END # 11. Create an Authentication Profile attached to the AAA virtual server add authentication authnProfile MFA_Authentication_Profile -authnVsName nFactorAuthvServer # 12. Configure your existing Gateway virtual server to use the Authentication Profile set vpn vserver "Steven Demo Gateway" -authnprofile "MFA_Authentication_Profile"