NetScaler GatewayのnFactorを第1要素にWebAuthを設定し、第2要素にパスワード変更を含むLDAPを設定します
NetScaler GatewayのnFactorを第1要素にWebAuthを設定し、第2要素でパスワード変更を伴うLDAPを構成するには、次の大まかな手順が必要です。
-
IP アドレスがゼロの認証仮想サーバーを構成します。証明書を認証仮想サーバーにバインドすることは必須ではありません。
-
認証仮想サーバー名を使用して認証プロファイルを構成します。
-
VPN 仮想サーバーを設定します。
-
この VPN 仮想サーバーに認証プロファイルを設定します。
-
WebAuth アクションとポリシーを設定します。
-
LDAP アクションとポリシーを設定します。
-
LDAP ファクターのログインスキーマアクションを設定します。
-
LDAP ファクターのログインスキーマアクションを使用して、LDAP ファクターのポリシーラベルを設定します。
-
LDAP ポリシーを LDAP ポリシーラベルにバインドします。
-
次の要素として LDAP ポリシーラベルを使用して WebAuth ポリシーを認証仮想サーバーにバインドします。
機能
-
ユーザーがブラウザでNetScaler Gateway FQDNを入力すると、/logon/logonpoint/tmindex.html ページにリダイレクトされます。
-
このページには、認証仮想サーバーにバインドされたログインスキーマが表示されます。(この構成のように)認証仮想サーバーにバインドされたログインスキーマがない場合は、デフォルトのスキーマが表示されます。
-
ユーザーは、最初の要素(この場合は WebAuth)の認証情報を入力します。
-
NetScaler GatewayはWeb認証アクションをチェックし、WebAuthサーバーに接続します。パラメータ FullReqExpr で指定された HTTP リクエストを WebAuth サーバに送信します。WebAuth サーバーのレスポンスが WebAuth アクションの SuccessRule パラメータに記載されている式を満たす場合、このポリシーが合格します。
-
これで、NetScaler Gatewayは第2のファクターに移行します。次のファクターとしてバインドされているポリシーラベル LDAP_Factor の設定を確認します。このポリシーラベルにはLoginSchemaが記載されているため、NetScaler GatewayはそのXMLスキーマをクライアントに送信します。
-
クライアントはスキーマを受け取り、2 段階認証用の LDAP 認証情報を入力します。
-
NetScaler GatewayはLDAPサーバーにアクセスしようとし、クライアントの資格情報が正しいかどうかを検証します。これらが正しければ、認証フェーズが完了し、ユーザは設定された VPN モードにログインします。
次の図は、最初の要素が WebAuth で、2 番目の要素が LDAP である nFactor 認証シーケンスを示しています。
CLI を使用した設定
-
認証仮想サーバを設定します。
add authentication vserver auth1 ssl <!--NeedCopy-->
GUI で、[ セキュリティ] > [AAA-アプリケーショントラフィック] > [仮想サーバ ] に移動し、[ 追加] をクリックします。
-
認証プロファイルを設定します。
add authnProfile auth_profile –authnVsname auth1 <!--NeedCopy-->
GUI で、[ セキュリティ] > [AAA-アプリケーショントラフィック] > [認証プロファイル ] に移動し、[ 追加] をクリックします。
-
VPN 仮想サーバーを設定します。
add vpn vserver vpn1 ssl 10.1.1.1 443 add ssl certkey ckp –cert test.cer –key test.key bind ssl vserver vpn1 –certKey ckp <!--NeedCopy-->
NetScaler Gateway > 仮想サーバーに移動し、「追加」をクリックします。
VPN 仮想サーバーが作成されたら、そのサーバー上に証明書をバインドします。
VPN 仮想サーバーでの認証プロファイルの設定
set vpn vserver vpn1 –authnProfile auth_profile <!--NeedCopy-->
-
WebAuth アクションとポリシーを設定します。
Appexpert > エクスプレッション > アドバンスエクスプレッションに移動します。
add policy expression post_data ""myusername=" + http.REQ.BODY(3000).SET_TEXT_MODE(IGNORECASE).AFTER_STR("login=").BEFORE_STR("&") + "&mypassword=" + http.REQ.BODY(3000).SET_TEXT_MODE(IGNORECASE).AFTER_STR("passwd=")" <!--NeedCopy-->
add policy expression length_post_data "("myusername=" + http.REQ.BODY(1000).SET_TEXT_MODE(IGNORECASE).AFTER_STR("login=").BEFORE_STR("&") + "&mypassword=" + \http.REQ.BODY(1000).SET_TEXT_MODE(IGNORECASE).AFTER_STR("passwd=")).length" <!--NeedCopy-->
CLI を使用した Nfactor の設定:
add authentication webAuthAction webAuth_action -serverIP 10.102.39.132 -serverPort 443 -fullReqExpr q{"POST /customAuth.aspx HTTP/" + http.req.version.major + "." + http.req.version.minor + "\r\nAccept: \*/\*\r\nHost: 10.102.39.132\r\nUser-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0)\r\nContent-Type: application/x-www-form-urlencoded\r\n" + "Content-Length: " + length_post_data + "\r\nConnection: Keep-Alive\r\n\r\n" + post_data} -scheme https -successRule "http.RES.STATUS.EQ(200)" add authentication policy webAuth_policy –rule TRUE –action webAuth_action <!--NeedCopy-->
以前に設定した WebAuth アクションは 2 つのポリシー表現を使用します。1 つのポリシー表現 (post_data) で POST ボディが作成されます。もう 1 つの (length_post_data) は POST 本体の長さを計算します。この長さは POST リクエストの Content-Length ヘッダーの入力に使用されます。
POST ボディを作成するポリシー表現は、ログインリクエストを解析し、ユーザーが入力したユーザー名とパスワードを抽出します。次に、ログイン要求から抽出されたユーザー名パスワードを使用して、WebAuth サーバーが想定する形式で POST 本文を作成します。
最後に、WebAuth アクションによって以下のリクエストが作成され、WebAuth サーバーに送信されます。
POST /customAuth.aspx HTTP/1.1 Accept: \*/\* Host: 10.102.39.132 Accept-Language: en-US User-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0) Content-Type: application/x-www-form-urlencoded Content-Length:43 Connection: Keep-Alive myusername=test_user&mypassword=test_passwd <!--NeedCopy-->
-
パスワード変更の LDAP アクションとポリシーを設定します。
add authentication ldapAction ldap_action -serverIP 10.102.39.133 -serverPort 636 -secType SSL -ldapBase "dc=domain,dc=com" -ldapBindDn administrator -ldapBindDnPassword password -ldapLoginName samAccountName -passwdChange ENABLED add authentication policy ldap_policy –rule TRUE –action ldap_action <!--NeedCopy-->
LDAP アクションは —PasswdChange ENABLED で設定されます。これにより、VPN ログイン後にユーザーがパスワードを変更できるようになります。
-
LDAP ファクターのログインスキーマアクションを設定します。
add authentication loginSchema LDAP_schema -authenticationSchema /nsconfig/loginschema/LoginSchema/SingleAuth.xml <!--NeedCopy-->
LDAP ファクターには、エンドユーザーのユーザー名とパスワードが必要です。エンドユーザーに表示されるログインフォームには、ユーザー名とパスワードのフィールドが表示されている必要があります。
NetScalerには、NetScalerシェルの/nsconfig/loginSchema/LoginSchema/LoginSchemaの場所にいくつかのデフォルトのログインスキーマXMLがあります。前の場所にあったデフォルトの LoginSchema XML のいずれかを使用できます。
-
LDAP ファクターの LoginSchema アクションを使用して LDAP ファクターのポリシーラベルを設定します。
add authentication policylabel LDAP_factor -loginSchema LDAP_schema <!--NeedCopy-->
-
LDAP ポリシーを LDAP ポリシーラベルにバインドします。
bind authentication policylabel LDAP_factor –policyName ldap_policy –priority 10 <!--NeedCopy-->
-
次の要素として、WebAuth ポリシーを LDAP ポリシーラベルを使用して認証仮想サーバーにバインドします。
bind authentication vserver auth1 –policy webAuth_policy –nextFactor LDAP_factor –priority 10 <!--NeedCopy-->
前述のnFactor構成は、ファームウェアバージョン13.0以降で使用可能なNetScalerのnFactorビジュアライザーを使用して行うこともできます。
nFactor ビジュアライザーを使用した構成
最初の要素は Webauth で、その後にパスワード変更オプションを有効にした LDAP が続きます。
-
セキュリティ > AAA アプリケーショントラフィック > nFactor ビジュアライザー > nFactor フローに移動し 、 追加をクリックします。
-
+ 記号をクリックして nFactor フローを追加します。
-
係数を追加します。このファクターに入力するこの名前は nFactor フローの名前です。
-
「 ポリシーを追加 」をクリックして、Webauth ポリシーと Webauth アクション/サーバーを追加します。
-
緑色の+記号をクリックして 、次の要素、つまりパスワード変更オプションを有効にしたLDAP認証を追加します。
-
「 スキーマの追加 」をクリックして、LDAP 認証用のログインスキーマを追加します。
-
「 ポリシーを追加 」をクリックして、LDAP 認証ポリシーと LDAP アクション/サーバーを追加します。
LDAP アクション/サーバーを作成するには、記事を参照してください。 https://support.citrix.com/article/CTX219939
-
両方の要素を設定したら、フローを認証、承認、および監査仮想サーバーにバインドする必要があります。
デバッグ — ログとカウンター
ログは、WebAuth と LDAP で正常にログインした後に表示されます。次のログのほとんどを表示するには、監査ログレベルを ALL に設定して、デバッグログも表示されるようにします。
set audit syslogparams –loglevel ALL
<!--NeedCopy-->
注: タイムスタンプは簡潔にするためにログから削除されています。
WebAuth と LDAP で正常にログインすると、次のカウンタが増加します。
- pcp_hits authn (ウェブ認証ポリシー)
- aaa_tot_webauth_primary_auth
- aaa_tot_webauth_prim_auth_success
- aaa_tot_webauth_prim_succ_check_thru
- pcp_hits authn (ウェブ認証ポリシー)
- pcp_hits authn (ldap_policy)
- succ