SMS-OTP für die Webauthentifizierung konfigurieren
NetScaler kann jetzt in einen SMS-Anbieter eines Drittanbieters integriert werden, um eine zusätzliche Authentifizierungsebene bereitzustellen.
Die NetScaler-Appliance kann so konfiguriert werden, dass ein OTP auf dem Handy des Benutzers als zweiten Authentifizierungsfaktor gesendet wird. Die Appliance legt dem Benutzer ein Anmeldeformular zur Eingabe des OTP nach erfolgreicher AD-Anmeldung vor. Erst nach der erfolgreichen Validierung der SMS-OTP-Authentifizierung wird dem Benutzer die angeforderte Ressource angezeigt.
Um die SMS-OTP-Authentifizierung zu erreichen, stützt sich die NetScaler-Appliance auf die folgenden Faktoren im Backend.
- Authentifizieren Sie den Benutzer über die LDAP-Authentifizierung und extrahieren Sie die Handynummer des Benutzers.
- Erstellen Sie OTP und speichern Sie es in der NS-Variablen. Konfiguration und Verwendung von Variablen.
- Senden Sie das OTP über die WebAuth-Authentifizierungsmethode an die aus LDAP extrahierte Handynummer.
- Validieren Sie das OTP.
Voraussetzungen
Funktionen aktivieren und SNIP hinzufügen
Führen Sie die folgenden Befehle aus, um die für diese Konfiguration erforderlichen Funktionen zu aktivieren:
enable ns feature LB SSL SSLVPN AAA
add ns ip <SNIP-IP> <subnet mask> -type SNIP
<!--NeedCopy-->
OTP Store konfigurieren
Administratoren müssen eine Datenbank/einen Speicher einrichten, um OTPs zu speichern, die für die SMS-Authentifizierung verwendet werden.
Der empfohlene Konfigurationsbereich für den Parameter expires
(OTP-Ablauf) liegt zwischen 30 und 180 Sekunden. Jeder Wert außerhalb dieses Bereichs kann zu einer fehlgeschlagenen SMS-OTP-Konfiguration und einem nFactor-Flow führen.
add ns variable otp_store -type "map(text(65),text(6),100000)" -ifValueTooBig undef -ifNoValue undef -expires 60
<!--NeedCopy-->
Generieren Sie zufälliges OTP pro Benutzersitzung
Verwenden Sie den folgenden Befehl, um ein 6-stelliges zufälliges OTP pro Benutzersitzung zu generieren und im OTP-Store zu speichern.
add ns assignment generate_otp -variable "$otp_store[AAA.USER.SESSIONID]" -set ("000000" + SYS.RANDOM.MUL(1000000).TYPECAST_UNSIGNED_LONG_AT.TYPECAST_TEXT_T).SUFFIX(6)
<!--NeedCopy-->
Konfigurieren Sie die SMS-OTP-Authentifizierung mit NetScaler
-
Bevor Sie die Funktion zur Zwei-Faktor-Authentifizierung von SMS-Zwei-Faktor-Authentifizierung konfigurieren, müssen Sie eine LDAP-Authentifizierung auf einer NetScaler-Appliance als ersten Faktor bei aktivierter Authentifizierung konfiguriert haben. Anweisungen zum Konfigurieren der LDAP-Authentifizierung finden Sie unter So konfigurieren Sie die LDAP-Authentifizierung mit dem Konfigurationsdienstprogramm.
-
Konfigurieren Sie LDAP und extrahieren Sie die Handynummer, die für die SMS-OTP-Authentifizierung verwendet werden soll.
Beispielkonfiguration für den ersten Faktor
Konfigurieren Sie LDAP als ersten Faktor für die Authentifizierung.
add authentication ldapAction ldap_extraction_action -serverIP <IP_Adress> -ldapBase OU=Sanity,dc=aaa,dc=local -ldapBindDn administrator@aaa.local -ldapBindDnPassword <password> -ldapLoginName samaccountname -groupAttrName memberof -subAttributeName CN -authentication disabled
add authentication Policy ldap_extraction_policy -rule true -action ldap_extraction_action
<!--NeedCopy-->
Hinweis
Die Handynummer kann mit
AAA.USER.ATTRIBUTE(1)
extrahiert und beim Senden an den Backend-Server mit einbezogen werden.
Beispielkonfiguration für den zweiten Faktor
Mit der folgenden Beispielkonfiguration wird ein OTP generiert, das an den Endbenutzer gesendet werden soll.
add authentication Policy set_otp -rule true -action generate_otp
add authentication policylabel set_otp_label -loginSchema LSCHEMA_INT
bind authentication policylabel set_otp_label -policyName set_otp -priority 1
add authentication Policy cascade_noauth -rule true -action NO_AUTHN
<!--NeedCopy-->
Richtlinien und Maßnahmen zur Webauthentifizierung
Konfigurieren Sie nun die Webauthentifizierungsaktion so, dass das OTP zusammen mit der aus der LDAP-Richtlinie abgerufenen Handynummer an einen beliebigen SMS-Absender eines Drittanbieters gesendet wird.
Überprüfen Sie das OTP und senden Sie das generierte OTP an einen SMS-Drittanbieter oder einen beliebigen Webserver, wie unten konfiguriert:
add policy expression otp_exp_post ""Message: OTP is " + $otp_store[AAA.USER.SESSIONID] + " for login into secure access gateway. Valid till EXPIRE_TIME. Do not share the OTP with anyone for security reasons&Mobile:" + AAA.USER.ATTRIBUTE(1)"
add authentication webAuthAction sms_post -serverIP <web_application_ip> -serverPort 80 -fullReqExpr q{"POST /MyPHP/auth.php HTTP/" + http.req.version.major + "." + http.req.version.major + "\r\nAccept:\*/\*\r\nHost: <web_application_ip> \r\nContent-Length:100\r\n\r\n" + otp_exp_post} -scheme http -successRule true
add authentication Policy post_wpp -rule true -action sms_post
<!--NeedCopy-->
OTP überprüfen
Fügen Sie die folgende Richtlinie und die folgende Richtlinienbezeichnung hinzu, um zu überprüfen, ob das OTP für die Benutzersitzung existiert:
add authentication policylabel check_otp_label -loginSchema LSCHEMA_INT
add authentication Policy check_otp -rule "$otp_store.valueExists(AAA.USER.SESSIONID)" -action NO_AUTHN
<!--NeedCopy-->
OTP-Überprüfung durch Vergleich des vom Benutzer bereitgestellten Werts und des OTP-Speicherwerts
Führen Sie die folgenden Befehle aus, um das OTP zu überprüfen, indem Sie den vom Benutzer angegebenen Wert und den OTP-Speicherwert vergleichen:
add authentication loginSchema onlypassword -authenticationSchema "/nsconfig/loginschema/LoginSchema/OnlyPassword.xml"
add authentication policylabel otp_verify_label -loginSchema onlypassword
add authentication Policy otp_verify -rule "AAA.LOGIN.PASSWORD.EQ($otp_store[AAA.USER.SESSIONID])" -action NO_AUTHN
<!--NeedCopy-->
Binden Sie die Richtlinie an das Label der Authentifizierungsrichtlinie
bind authentication policylabel set_otp_label -policyName cascade_noauth -priority 2 -gotoPriorityExpression NEXT -nextFactor check_otp_label
bind authentication policylabel check_otp_label -policyName post_wpp -priority 1 -gotoPriorityExpression NEXT -nextFactor otp_verify_label
bind authentication policylabel otp_verify_label -policyName otp_verify -priority 1 -gotoPriorityExpression NEXT
<!--NeedCopy-->
Erstellen Sie einen virtuellen Authentifizierungsserver und einen virtuellen Lastausgleichsserver
add authentication vserver avs SSL <ipadresss> 443
add ssl certKey aaa_local -cert aaatm_wild.cer -key aaatm_wild.key
bind ssl vserver avs -certkeyName aaa_local
bind authentication vserver avs -policy ldap_extraction_policy -priority 1 -nextFactor set_otp_label -gotoPriorityExpression NEXT
add lb vserver lb HTTP <ip_adresss> 80 -persistenceType NONE -cltTimeout 180 -AuthenticationHost <auth_server> -Authentication ON
add service svc <Ip_adresss> HTTP 80
bind lb vserver lb svc
<!--NeedCopy-->
Hinweis:
Die Richtlinie für die kaskadierende Authentifizierung wurde hinzugefügt, um eine zuverlässige und kontinuierliche Authentifizierung für die Endbenutzer zu ermöglichen. Wenn der aktuelle Faktor ausfällt, wird der nächste Faktor so bewertet, dass das Benutzererlebnis nicht beeinträchtigt wird.