導入ガイド: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サーバには、有効なクライアントのリストと、それぞれの共有秘密があります。RADIUS サーバは通常、無効なクライアントからの要求を無視しますが、一部の実装では認証の失敗が返されます。共有シークレットは、認証情報のパスワードコンポーネントを暗号化します。共有シークレットが間違っていると、正しい値に復号化しないため、サーバーは常にパスワードを拒否します。
デフォルトでは、Citrix ADCはアクティブなHAノードのNSIPからRADIUS認証要求を送信し、単一のRADIUSサーバーをターゲットにします。
HAペアの両方のADCのNSIPをRADIUSサーバー上のクライアントとして定義するのではなく、ADCがローカルの負荷分散仮想サーバーを介して認証要求を送信することをお勧めします。負荷分散仮想サーバーは、セットアップの回復力も高めます。
Citrix ADCがローカルの負荷分散仮想サーバーを介してRADIUS要求を送信すると、要求はSNIPを介してADCから送信されます。SNIP はフローティング IP アドレスで、現在のプライマリ HA ノードでのみ使用できます。
負荷分散 (LB) 仮想サーバーを使用する場合、プライマリおよびセカンダリ HA ノードの NSIP がローカル VIP に要求を行います。LB VIPは、HAペアのSNIPを使用してRADIUSサーバーに送信します。
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サーバー定義など、その前に問題があることがわかっているので、作業に集中できます。
NTradping は、圧縮 zip から同じディレクトリに抽出する 2 つのファイルで構成されます。起動時に、nTradping は以下を要求します。
- RADIUSサーバーとポート
- RADIUSシークレット
- ユーザー名とパスワード
- 認証リクエストタイプ
実行するテストに応じて、RADIUSサーバーのIPアドレスまたはADCのLB仮想サーバーのIPアドレスを宛先として使用します。最も一般的にはポート1812です。
クエリを直接送信する場合は、クライアントの RADIUS シークレットを設定します。Gatewayからの認証要求を模倣するためにADCのLB仮想サーバーを介してクエリを送信する場合は、ADCが使用するように構成したものと同じ共有秘密を使用します。 ユーザー名とパスワードのフィールドには、ADCがユーザーに代わってRADIUSサーバーに送信すると予想される資格情報が含まれています。通常、「パスワード」フィールドにはユーザーの MFA トークン値が含まれます。
[送信] をクリックすると、NTradping はコンピューターから指定された宛先に認証要求を送信し、応答 (通常は Access-Accept または Access-Reject) を表示します。
WireShark
認証プロセス中にCitrix ADCでパケットトレースを取得すると、WireShark内のRADIUS要求と応答を調べることができます。
WireSharkは、世界で最も広く使用されているネットワークプロトコルアナライザです。WireSharkは無料で、ここなしで利用できます。
WireSharkのRADIUSフィルターはここにあります。
Citrix ADCでパケットトレースを実行する手順については、こちらを参照してください。
WireSharkでは、アクセス要求パケットの後に、Access-Accept、Access-Reject、またはアクセスチャレンジ応答のいずれかが表示されます。 応答がないことは、ファイアウォールルールがないことや、RADIUS サーバにクライアントの定義がないなどの通信上の問題を示すことがよくあります。
GUI の指示
RADIUSサーバー上の構成がすでに完了していると仮定して、Citrix GatewayでのMFA認証について次の手順に従います。
認証、承認、監査 (AAA) 機能を有効にする
認証サーバーの追加
RADIUSサーバーの詳細を入力します。個々のRADIUSサーバーをターゲットにするのではなく、
負荷分散仮想サーバーをターゲットにすることをお勧めします。そのため、このページではRADIUS LBのVIPをサーバーIPとして使用してください。 秘密鍵は、ADCのSNIPのRADIUSサーバー上の値と一致する必要があります。セキュリティ > AAA — アプリケーショントラフィック、ポリシー、認証、基本ポリシー、LDAPを選択します。次に、「サーバー」タブを選択し、「追加」をクリックします。
LDAPターゲットの詳細を入力します。
RADIUSと同様に、ローカルの負荷分散(LB)仮想サーバーを宛先として使用することをお勧めします。そのため、このページの LDAP LB 仮想サーバーの VIP をサーバー IP として使用します。
高度な認証ポリシーを追加する
AAA 仮想サーバを作成する
- 次の情報を入力し、 「OK」をクリックします。
AAA 仮想サーバの証明書の横にあるオプションボタンをクリックし、[選択(Select)] をクリックします。このサーバーには直接アクセスできないため、選択した証明書は関係ありません。
- 「ポリシーバインディング」画面の下部にある「バインド」をクリックします。
ユーザ名、パスワード、およびパスコードフィールドをユーザに提示するログインスキーマを適用する
注:「lschema_dual_factor_builtin」ポリシーは、ADC 13.0ファームウェアに追加されました。以前のリリースを使用している場合は、ポリシーを作成する必要があります。ポリシーの作成方法を説明する手順については,こちらを参照してください。
新しい AAA サーバを使用するように Gateway 仮想サーバを設定する
テストを実行する
これで、Citrix Gateway 仮想サーバーで多要素認証を使用する準備ができました。
認証に関する問題が発生した場合は、このドキュメントの「トラブルシューティング」セクションを参照してください。
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"