デバイス登録に推奨されるネイティブ OTP 構成
このセクションでは、次のシナリオでデバイス登録のために実行できるネイティブ OTP 設定について説明します:
- デバイスを登録する新規ユーザー
- デバイスを紛失した登録ユーザー
前提要件
NetScaler CLIを使用して認証仮想サーバーを構成します。
add authentication vserver authvs_otp SSL 1.2.3.5 443
bind authentication vserver authvs_otp -portaltheme RFWebUI
bind ssl vserver authvs_otp -certkeyname otpauthcert
<!--NeedCopy-->
OTP セキュリティを強化するためのネイティブ OTP 設定
-
このアプローチでは、クライアントソース IP アドレスを使用してユーザーアクセスの有効性が評価されます。デバイスを登録または削除するには、ユーザーがオフィスネットワークまたはブランチオフィスにいる必要があります。オフィスサブネット外からのデバイス登録のユーザーリクエストは承認されません。
-
アプローチ 2: ユーザーグループのメンバーシップに基づく制限
このアプローチでは、ユーザーのアクセス権の有効性は、ユーザーの AD グループのメンバーシップに基づいて評価されます。新規登録が必要になったり、モバイルデバイスを紛失したりすると、ユーザーは特別なグループに追加されます。
-
アプローチ 3: LDAP 認証に加えて追加の要素を導入する
このアプローチでは、認証に追加の検証要素も設定されます。この例では、LDAP と RADIUS の認証方法が設定に使用されます。
方法 1: クライアント IP アドレス制限
-
最初の要素を設定します。最初の要素は、クライアントデバイスがデバイス登録ページにアクセスしているのか、ネイティブ OTP 多要素ログインを試みているのかを判断します。
- デバイス登録リクエストの認証ポリシーを作成します。
add authentication Policy check_request_for_manageotp -rule "HTTP.REQ.COOKIE.VALUE(\"NSC_TASS\").EQ(\"manageotp\")" -action NO_AUTHN
-
この要素によって、アクセスが正当かどうかが決まります。NetScalerは、クライアントのIPアドレスが、構成された企業ネットワークIPアドレスの範囲内にあるかどうかを確認します。
-
デバイス登録フローのログインスキーマを作成します。
add authentication loginSchema lschema_single_manage_otp -authenticationSchema "/nsconfig/loginschema/LoginSchema/SingleAuthManageOTP.xml"
-
2 番目の要素のデバイス登録フローポリシーラベルを作成します。
add authentication policylabel otp_manage_flow -loginSchema lschema_single_manage_otp
-
ユーザー検証用の LDAP アクションを作成します。
add authentication ldapAction ldap_otp_action_for_manageotp -serverIP <LDAPServerIP> -ldapBase <LdapBase> -ldapBindDn <LdapAdminUser> -ldapBindDnPassword <LdapAdminPassword> -ldapLoginName samAccountName -groupAttrName memberOF -subAttributeName CN
-
ユーザー検証用の認証ポリシーを作成します。ルールはエンドユーザーのオフィスネットワークに基づいています。
add authentication Policy ldap_otp_policy_for_manageotp -rule "CLIENT.IP.SRC.APPLY_MASK(255.255.255.0).EQ(10.140.200.0)" -action ldap_otp_action_for_manageotp
-
-
3 番目の要素を設定します。前の要素によるポリシー評価に基づいて、ユーザーはデバイス登録ページへのアクセスを許可されるか、適切なエラーメッセージが表示されてアクセスを拒否されます。
-
無効なユーザーアクセスの認証ポリシーを作成します。
add authentication Policy noauthnotallowed -rule true -action NO_AUTHN
-
無効なユーザーアクセス用のログインスキーマを作成します。関連するメッセージを表示するための要件に基づいて、ログインスキーマをカスタマイズできます。
add authentication loginSchema notallowed -authenticationSchema "/nsconfig/loginschema/LoginSchema/InvalidFlow.xml"
-
無効なユーザーアクセスのポリシーラベルを作成し、ログインスキーマを追加します。
add authentication policylabel notallowed -loginSchema notallowed
-
otp_manage_flow
ポリシーをポリシーラベルにバインドして、無効なユーザーアクセスフローを完了します。bind authentication policylabel otp_manage_flow -policyName noauthnotallowed -priority 1000 -gotoPriorityExpression NEXT -nextFactor notallowed
-
-
4 番目の要素を設定します。このファクターでは、ユーザーはデバイス登録ページでOTPデバイスを追加または削除できます。
-
有効なユーザーアクセスのためのLDAPアクションを作成します。ユーザーはこのファクターでデバイスを登録できます。
add authentication ldapAction ldap_otp_register_action -serverIP <LDAPServerIP> -ldapBase <LdapBase> -ldapBindDn <LdapAdminUser> -ldapBindDnPassword <LdapAdminPassword> -ldapLoginName samAccountName -authentication DISABLED -OTPSecret userParameters
-
有効なユーザーアクセス用の LDAP ポリシーを作成します。
add authentication Policy ldap_otp_register_policy -rule true -action ldap_otp_register_action
-
有効なユーザーアクセスのための認証ポリシーラベルを追加します。
add authentication loginSchema lschema_noschema -authenticationSchema noschema add authentication policylabel otp_manage_register_factor -loginSchema lschema_noschema <!--NeedCopy-->
-
LDAP ポリシーをラベルにバインドすると、有効なユーザーアクセスが可能になります。
bind authentication policylabel otp_manage_register_factor -policyNamel ldap_otp_register_policy -priority 10
-
ポリシーを前の要素にバインドします。
bind authentication policylabel otp_manage_flow -policyName ldap_otp_policy_for_manageotp -priority 1 -gotoPriorityExpression NEXT -nextFactor otp_manage_register_factor
-
-
デバイス登録フローを認証仮想サーバーにバインドしてフローを完了します。
bind authentication vserver authvs_otp -policy check_request_for_manageotp -priority 10 -nextFactor otp_manage_flow -gotoPriorityExpression NEXT
例:
-
ユーザーがオフィスネットワークの外部からデバイス登録ページにアクセスしたため、アクセスが拒否されました。
-
ユーザーがオフィスネットワークからデバイス登録ページにアクセスしたため、アクセスが許可されました。
次のログインスキーマを使用して、適切なエラーメッセージを表示します:
-
InvalidFlow.xml
<AuthenticateResponse xmlns="http://citrix.com/authentication/response/1"> <Status>success</Status> <Result>more-info</Result> <StateContext/> <AuthenticationRequirements> <PostBack>/nf/auth/doAuthentication.do</PostBack> <CancelPostBack>/nf/auth/doLogoff.do</CancelPostBack> <CancelButtonText>Cancel</CancelButtonText> <Requirements> <Req<AuthenticateResponse xmlns="http://citrix.com/authentication/response/1"> <Status>success</Status> <Result>more-info</Result> <StateContext/> <AuthenticationRequirements> <PostBack>/nf/auth/doAuthentication.do</PostBack> <CancelPostBack>/nf/auth/doLogoff.do</CancelPostBack> <CancelButtonText>Cancel</CancelButtonText> <Requirements> <Requirements> <Requirement> <Credential> <Type>none</Type> </Credential> <Label> <Text>You are not allowed to access this application, Please close the browser</Text> <Type>error</Type> </Label> <Input/> </Requirement> <Requirement> <Credential> <ID>error_okBtn</ID> <Type>error_okBtn</Type> </Credential> <Label> <Type>none</Type> </Label> </Requirement> </Requirements> </Requirements> </AuthenticationRequirements> </AuthenticateResponse> <!--NeedCopy-->
アプローチ 2: ユーザーグループのメンバーシップに基づく制限
-
最初の要素を設定します。この要素により、クライアントデバイスがデバイス登録ページにアクセスしているか、ネイティブ OTP 多要素ログインを試みているかが決まります。
-
デバイス登録リクエストの認証ポリシーを設定します。
add authentication Policy check_request_for_manageotp -rule "HTTP.REQ.COOKIE.VALUE(\"NSC_TASS\").EQ(\"manageotp\")" -action NO_AUTHN
-
-
2 番目の要素を設定します。この要素によって、アクセスが正当かどうかが決まります。NetScalerはLDAPサーバーからグループ情報を取得し、ユーザーがデバイス登録用に構成された特定のグループに属しているかどうかを確認します。次の例では、「allowmanageotp」グループが使用されています。
-
デバイス登録フローのログインスキーマを作成します。
add authentication loginSchema lschema_single_manage_otp -authenticationSchema "/nsconfig/loginschema/LoginSchema/SingleAuthManageOTP.xml"
-
2 番目の要素のデバイス登録フローポリシーラベルを作成します。
add authentication policylabel otp_manage_flow -loginSchema lschema_single_manage_otp
-
ユーザー検証用の LDAP アクションを作成します。
add authentication ldapAction ldap_otp_action_for_manageotp -serverIP <LDAPServerIP> -ldapBase <LdapBase> -ldapBindDn <LdapAdminUser> -ldapBindDnPassword <LdapAdminPassword> -ldapLoginName samAccountName -groupAttrName memberOF -subAttributeName CN
-
ユーザー検証用の認証ポリシーを作成します。ルールはエンドユーザーのオフィスネットワークに基づいています。
add authentication Policy ldap_otp_policy_for_manageotp -rule "AAA.USER.GROUPS.CONTAINS(\"allowedmanageotp\")" -action ldap_otp_action_for_manageotp
-
-
3 番目の要素を設定します。NetScalerは、前の要素によるポリシー評価に基づいて、LDAPサーバーの応答に基づいてグループメンバーシップを検証します。有効なグループメンバーシップが見つかると、ユーザーはデバイス登録ページへのアクセスが許可されるか、適切なエラーメッセージが表示されてアクセスが拒否されます。
-
無効なユーザーアクセス用の認証ポリシーを作成します。
add authentication Policy noauthnotallowed -rule true -action NO_AUTHN
-
無効なユーザーアクセス用のログインスキーマを作成します。関連するメッセージを表示するための要件に基づいて、ログインスキーマをカスタマイズできます。
add authentication loginSchema notallowed -authenticationSchema "/nsconfig/loginschema/LoginSchema/InvalidFlow.xml"
-
無効なユーザーアクセスのポリシーラベルを作成し、ログインスキーマを追加します。
add authentication policylabel notallowed -loginSchema notallowed
-
otp_manage_flow
ポリシーをポリシーラベルにバインドして、無効なユーザーアクセスフローを完了します。bind authentication policylabel otp_manage_flow -policyName noauthnotallowed -priority 1000 -gotoPriorityExpression NEXT -nextFactor notallowed
-
-
4 番目の要素を設定します。この要素により、ユーザーがデバイス登録ページのどこでOTPデバイスを追加または削除できるかが決まります。前述の要因のポリシー評価に基づくと、実際のユーザーデバイス登録はこの要素で行われます。
-
有効なユーザーアクセスのための LDAP アクションを作成します。ユーザーはデバイスをこのファクターに登録します。
add authentication ldapAction ldap_otp_register_action -serverIP <LDAPServerIP> -ldapBase <LdapBase> -ldapBindDn <LdapAdminUser> -ldapBindDnPassword <LdapAdminPassword> -ldapLoginName samAccountName -authentication DISABLED -OTPSecret userParameters
-
有効なユーザーアクセス用の LDAP ポリシーを作成します。
add authentication Policy ldap_otp_register_policy -rule true -action ldap_otp_register_action
-
有効なユーザーアクセスのための認証ポリシーラベルを追加します。
add authentication loginSchema lschema_noschema -authenticationSchema noschema add authentication policylabel otp_manage_register_factor -loginSchema lschema_noschema <!--NeedCopy-->
-
LDAP ポリシーをポリシーラベルにバインドして、有効なユーザーアクセスを実現します。
bind authentication policylabel otp_manage_register_factor -policyNamel ldap_otp_register_policy -priority 10
-
ポリシーを前の要素にバインドします。
bind authentication policylabel otp_manage_flow -policyName ldap_otp_policy_for_manageotp -priority 1 -gotoPriorityExpression NEXT -nextFactor otp_manage_register_factor
-
デバイス登録フローを認証仮想サーバーにバインドして、フロー全体を完了します。
bind authentication vserver authvs_otp -policy check_request_for_manageotp -priority 10 -nextFactor otp_manage_flow -gotoPriorityExpression NEXT
-
例:
許可されたデバイス登録グループ外のユーザーが、オフィスネットワーク経由でデバイス登録ページにアクセスしようとします。ユーザーはポータルへのアクセスを拒否されます。
この設定に使用するログインスキーマの詳細については、「 アプローチ 1: クライアント IP アドレス制限」を参照してください。
アプローチ 3: LDAP 認証に加えて追加の要素を導入する
-
最初の要素を設定します。この要素によって、ユーザーがデバイス登録ページにアクセスしているか、ネイティブ OTP 多要素ログオンを試みているかが決まります。
-
デバイス登録リクエストの認証ポリシー。
add authentication Policy check_request_for_manageotp -rule "HTTP.REQ.COOKIE.VALUE(\"NSC_TASS\").EQ(\"manageotp\")" -action NO_AUTH
-
-
2 番目の要素を設定します。このファクターでは、NetScalerはクライアントのIPアドレスがオフィスネットワークに属しているかどうかを確認します。
この例では、
DualAuthManageOTP.xml
ログインスキーマが使用されています。このログインスキーマは、LDAP と RADIUS の認証情報をユーザーに要求します。- デバイス登録フローのログインスキーマを作成します。
`add authentication loginSchema dualauth_manageOTP -authenticationSchema "/nsconfig/loginschema/LoginSchema/DualAuthManageOTP.xml"`
-
デバイス登録フローのポリシーラベルを追加します。
add authentication policylabel otp_manage_flow -loginSchema dualauth_manageOTP
-
ユーザー検証用の LDAP 認証アクションを追加します。
add authentication ldapAction ldap_otp_action_for_manageotp -serverIP <LDAPServerIP> -ldapBase <LdapBase> -ldapBindDn <LdapAdminUser> -ldapBindDnPassword <LdapAdminPassword> -ldapLoginName samAccountName
-
ユーザー検証用の LDAP 認証ポリシーを追加します。
add authentication Policy ldap_pol_for_manageOTP -rule true -action ldap_action_for_manageOTP
-
デバイス登録ページへのアクセスをさらに保護するために、LDAP に続く追加要素である 3 番目の要素を設定します。このファクタでは、RADIUSサーバでユーザIDを確認するためのRADIUSポリシーが追加されます。ユーザーのクライアントIPアドレスがオフィスのサブネット範囲と一致する場合、ユーザーはデバイス登録ページにアクセスできます。そうでない場合、ユーザーはアクセスを拒否され、適切なエラーメッセージが表示されます。前述の要因のポリシー評価に基づくと、実際のユーザーデバイス登録はこの要素で行われます。
-
noschema
ログインスキーマを追加します。add authentication loginSchema lschema_noschema -authenticationSchema noschema
-
RADIUS 認証用のポリシーラベルを追加します。
add authentication policylabel radius_label_for_mangeOTP -loginSchema lschema_noschema
-
RADIUS 認証用の認証ポリシーを追加します。
add authentication Policy rad_pol_for_manageOTP -rule true -action rad_act_for_manageOTP
-
RADIUS 認証の認証アクションを追加します。
add authentication radiusAction rad_act_for_manageOTP -serverIP <RADIUS Server IP> -radKey <RADIUSKEY>
-
RADIUS ファクタを以前のポリシーラベルにバインドします。
bind authentication policylabel otp_manage_flow -policyName ldap_pol_for_manageOTP -priority 10 -gotoPriorityExpression NEXT -nextFactor radius_label_for_mangeOTP
-
-
4 番目の要素を設定します。この要素により、ユーザーはデバイス登録ページでOTPデバイスを追加または削除できます。
-
デバイス登録用のポリシーラベルを追加します。
add authentication policylabel ldap_label_for_mangeOTP_registration -loginSchema lschema_noschema
-
OTP デバイス登録用の認証 LDAP アクションを追加します。
add authentication ldapAction ldap_action_for_manageOTP_registration -serverIP <LDAPServerIP> -ldapBase <LdapBase> -ldapBindDn <LdapAdminUser> -ldapBindDnPassword <LdapAdminPassword> -ldapLoginName samAccountName -authentication DISABLED -OTPSecret userParameters
-
OTP デバイス登録の認証ポリシーを追加します。
add authentication Policy ldap_pol_for_manageOTP_registration -rule true -action ldap_action_for_manageOTP_registration
-
認証ポリシーをポリシーラベルにバインドします。
bind authentication policylabel ldap_label_for_manageOTP_registration -policyName ldap_pol_for_manageOTP_registration -priority 10
-
ポリシーラベルを前の要素にバインドします。
bind authentication policylabel radius_label_for_mangeOTP -policyName rad_pol_for_manageOTP -priority 1 -gotoPriorityExpression NEXT -nextFactor ldap_label_for_mangeOTP_registration
-
-
最初の要素を認証仮想サーバーにバインドして nFactor フローを完了します。
bind authentication vserver authvs_otp -policy check_OTP_manageRequest -priority 10 -nextFactor otp_manage_flow
例:
-
ユーザーがデバイス登録ページにアクセスすると、LDAP 認証情報と RADIUS パスワードを入力するよう求められます。
-
ユーザーは必須フィールドを入力するため、デバイス登録ページにアクセスできます。
この設定では、次のログインスキーマを使用してください。AD ベースの認証の後に追加の認証方法が導入されます:
-
DualAuthManageOTP.xml
<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <AuthenticateResponse xmlns="http://citrix.com/authentication/response/1"> <Status>success</Status> <Result>more-info</Result> <StateContext/> <AuthenticationRequirements> <PostBack>/nf/auth/doAuthentication.do</PostBack> <CancelPostBack>/nf/auth/doLogoff.do</CancelPostBack> <CancelButtonText>Cancel</CancelButtonText> <Requirements> <Requirement> <Credential> <Type>none</Type> </Credential> <Label> <Text>dualauth_please_log_on</Text> <Type>nsg-login-label</Type> </Label> <Input/> </Requirement> <Requirement> <Credential> <ID>login</ID> <SaveID>login</SaveID> <Type>username</Type> </Credential> <Label> <Text>dualauth_user_name</Text> <Type>nsg-login-label</Type> </Label> <Input> <Text> <ReadOnly>false</ReadOnly> <InitialValue/> <Constraint>.+</Constraint> </Text> </Input> </Requirement> <Requirement> <Credential> <ID>passwd</ID> <SaveID>passwd</SaveID> <Type>password</Type> </Credential> <Label> <Text>dualauth_password</Text> <Type>nsg-login-label</Type> </Label> <Input> <Text> <Secret>true</Secret> <Constraint>.+</Constraint> </Text> </Input> </Requirement> <Requirement> <Credential> <ID>passwd1</ID> <SaveID>passwd1</SaveID> <Type>password</Type> </Credential> <Label> <Text>Password1</Text> <Type>nsg-login-label</Type> </Label> <Input> <Text> <Secret>true</Secret> <Constraint>.+</Constraint> </Text> </Input> </Requirement> <Requirement> <Credential> <ID>otpmanage</ID> <Type>otpmanage</Type> </Credential> <Input> <Text> <Secret>false</Secret> <Hidden>true</Hidden> <InitialValue>1</InitialValue> <Constraint>.+</Constraint> </Text> </Input> </Requirement> <Requirement> <Credential> <ID>pushregister</ID> <Type>nsg_registerpush</Type> </Credential> <Input> <Text> <Secret>false</Secret> <Hidden>true</Hidden> <InitialValue>1</InitialValue> <Constraint>.+</Constraint> </Text> </Input> </Requirement> <Requirement> <Credential> <ID>otpregister</ID> <Type>nsg_registerotp</Type> </Credential> <Input> <Text> <Secret>false</Secret> <Hidden>true</Hidden> <InitialValue>1</InitialValue> <Constraint>.+</Constraint> </Text> </Input> </Requirement> <Requirement> <Credential> <ID>savecredentials</ID> <SaveID/> <Type>savecredentials</Type> </Credential> <Label> <Text>dualauth_remember_my_credentials</Text> <Type>nsg-login-label</Type> </Label> <Input> <AssistiveText>dualauth_</AssistiveText> <CheckBox> <InitialValue>false</InitialValue> </CheckBox> </Input> </Requirement> <Requirement> <Credential> <ID>Logon</ID> <Type>none</Type> </Credential> <Label> <Type>none</Type> </Label> <Input> <Button>dualauth_submit</Button> </Input> </Requirement> </Requirements> </AuthenticationRequirements> </AuthenticateResponse> <!--NeedCopy-->
NetScaler ログイン
NetScalerのログインフローを構成するには:
-
最初の要素を設定します。この要素は、これがログイン要求かデバイス登録要求かを決定します。
-
OTP ログインフローの認証ポリシーを追加します。
add authentication Policy otp_login_pol -rule true -action NO_AUTHN
-
-
2 番目の要素を設定します。このファクターでは、認証情報 (ユーザー名、パスワード、OTP パスコード) の入力をユーザーに求めるログインスキーマが追加されます。ユーザー ID を検証するために、この要素に LDAP アクションが追加されます。
-
ログインスキーマを追加して、ユーザーログインページを表示します。
add authentication loginSchema dualauth_login -authenticationSchema "LoginSchema/DualAuth.xml"
-
ユーザーログイン用のポリシーラベルを追加し、ログインスキーマを添付します。
add authentication policylabel otp_login_flow -loginSchema dualauth_login
-
ユーザーログイン用の LDAP アクションを追加します。
add authentication ldapAction ldap_act_for_validation -serverIP <LDAPServerIP> -ldapBase <LdapBase> -ldapBindDn <LdapAdminUser> -ldapBindDnPassword <LdapAdminPassword> -ldapLoginName samAccountName -groupAttrName memberOF -subAttributeName CN add authentication Policy ldap_pol_for_validation -rule true -action ldap_act_for_validation <!--NeedCopy-->
-
-
3 番目の要素を設定します。OTPの検証はこの要素で行われます。OTP パスコード検証に使用される LDAP アクションがここに追加されます。
-
ユーザーの OTP 検証用のポリシーラベルを追加します。
add authentication policylabel otp_validation_login_factor -loginSchema LSCHEMA_INT
-
ユーザー OTP 検証用の LDAP アクションを追加します。
add authentication ldapAction ldap_otp_validate_action -serverIP <LDAPServerIP> -ldapBase <LdapBase> -ldapBindDn <LdapAdminUser> -ldapBindDnPassword <LdapAdminPassword> -ldapLoginName samAccountName -authentication DISABLED -OTPSecret userParameters
-
ユーザー OTP 検証用の認証ポリシーを追加します。
add authentication policy ldap_otp_validate_pol -action ldap_otp_validate_action -rule true
-
ポリシーをポリシーラベルにバインドします。
bind authentication policylabel otp_validation_login_factor -policyName ldap_otp_validate_pol -priority 100
-
現在のポリシーラベルを OTP ログインフローの次の要素としてバインドします。
bind authentication policylabel otp_login_flow -policyName aaa_local_pwd_pol -priority 100 -nextFactor otp_validation_login_factor
-
-
最初の要素を認証仮想サーバーにバインドして、ログインフローを完了します。
bind authentication vserver authvs_otp -policy otp_login_pol -nextfactor otp_login_flow -priority 100
NetScalerログインについて詳しくは、「 ネイティブOTPワークフロー」を参照してください。