Es ist natürlich sehr angenehm, mittels eines Zertifikates auf dem Endgerät automatisch ohne Interaktion auf Diensten angemeldet zu werden.

NetScaler bietet mit der Überprüfung der Zertifikate natürlich diese Absicherung an. Dabei kann nicht nur die Gültigkeit des Zertifikates überprüft werden, sondern mittels SSL Policies auch alle anderen Values einen Zertifikates in NetScaler Expressions ausgewertet werden. (à Expressions mit CLIENT.SSL.CLIENT_CERT.xxx)

Wenn aber die Kriterien zur Entscheidung nicht direkt aus den Zertifikaten ausgelesen werden, sondern per LDAP im AD abgefragt werden müssen, reicht die Zertifikate-basierte Authentisierung nicht aus, sondern es muss mit einem aus dem Zertifikate extrahierten Benutzernamen mittels eines LDAP Calls das AD ausgelesen werden.

Die Logik schaut also bei einem SSLVPN VServer folgendermaßen aus:

  • Binden der Cert-Authentication als Primary mit Value „two factor off“
  • Binden der LDAP-Authentication als secondary ohne User Authentication

In der CLI schaut das dann so aus

Cert Authentication:

<em>add authentication certAction CertAuth -userNameField SubjectAltName:PrincipalName</em>
<em>add authentication certPolicy Cert_Pol ns_true CertAuth</em>

 

LDAP Autorisation

add authentication ldapAction Auto_Peter.lab -serverIP 192.168.178.10 -ldapBase "dc=peter,dc=lab" -ldapBindDn "cn=service,cn=users,dc=peter,dc=lab" -ldapBindDnPassword huhu -encrypted -ldapLoginName UserPrincipalName -groupAttrName memberOf -subAttributeName cn -authentication DISABLED
add authentication ldapPolicy LDAP_Autor ns_true Auto_Peter.lab

Die einfachste Variante das umzusetzen, ist ein SSLVPN Server
<em>bind vpn vserver CertVPN -policy Cert_Pol bind vpn vserver CertVPN -policy LDAP_Autor -secondary</em>


Wenn es nur ein Zugriff auf eine Webseite nötig ist, reicht ein „Basic“ VServer, der keine CCUs benötigt, also mit „ICAOnly On“ und das zuordnen einer SessionPOlicy
<em>set vpn vserver CertVPN -icaonly ON</em>

<em>add vpn sessionAction Cert_WEBPage -defaultAuthorizationAction ALLOW -icaProxy ON -wihome "<a href="http://service.peter.lab/admin-landingpage.html">http://Service.peter.lab/landingpage.html</a>"</em>

<em>add vpn sessionPolicy Cert_WebPage_Pol ns_true Cert_WEBPage</em>

Um im SSLVPN die Landing page auch basierend von Gruppen zuzuordnen, legt man die AD-Gruppen an und weist mit höherer Prio die passende Landing Page zu
<em>add aaa group Administratoren</em>

<em>add vpn sessionAction ICAProxy_WEBAdmin -defaultAuthorizationAction ALLOW -icaProxy ON -wihome "http://Service.peter.lab/admin-landingpage.html</em>

<em>add vpn sessionPolicy ICAProxy_WebAdmin ns_true ICAProxy_WEBAdmin</em>

<em>bind aaa group Administratoren -policy ICAProxy_WebAdmin -priority 90</em>

Um auch ein Zertifikate im lokalen System zu erreichen (also CLient Zertifikate stat USer Zertifikate), reicht die Abfrage per Browser nicht aus. Hier gibt es aber die Möglichkeit, den lokal installierten Secure-Access-Client per EPA anzusprechen, um über diesen Service die Berechtigung zu erlangen, Device Zertifikate auszulesen. In der CLI schaut das so aus:
<em>add vpn vserver CertVPN SSL &lt;IP&gt; 443 -deviceCert ON -certkeyNames peter.lab_rootcert</em>

Diese Möglichkeit benötigt aber EPA, was wiederum CCUs erfordert („ICAProxy Off“)