Citrix ADC Classic Policies in Advanced Polcies umwandeln

Mit dem Release 13.0 (vermutlich Q2 2019) werden voraussichtlich am Citrix ADC die seit Version 12.0.41.16 bzw. 12.0.56.20 veralteten Classic Policies entfernt und durch Advanced Policies ersetzt.

Getreu dem Motto „Was du heute kannst besorgen, schiebe gleich auf Morgen!“, ach nein, „Wenn nicht jetzt, wann dann?“ geht es heute einmal darum, am eigenen Citrix Application Delivery Controller die deprecated Classic Policies, soweit es geht, durch die Advanced Policies zu ersetzen. Glücklicherweise stellt Citrix dafür das CLI Tool „nspepi“ bereit. Als erstes mal ein kleiner Überblick, was denn alles an Klassik verschwindet (CTX234821):

  • Classic Named (policy) expression
  • Application Firewall Classic policy
  • Compression Classic policy
  • Classic Cache Redirection policy
  • Content Switching Classic policy
  • SSL Classic policy
  • Classic Audit SYSLOG policy
  • Classic Audit NSLOG policy
  • Classic AAA Pre-authentication policy
  • Classic Authorization policy
  • Classic Traffic Management Session policy
  • Classic Tunnel Traffic policy
  • Classic VPN Traffic policy
  • Classic VPN Session policy
  • Trace Classic expression
  • SYS.EVAL_CLASSIC_EXPR Classic function

Eine Möglichkeit wäre jetzt mit „nspepi“ Expression für Expression von Hand umzustellen:

nspepi -e "REQ.HTTP.HEADER Host CONTAINS 'autodiscover.domain.tld'"
> "HTTP.REQ.HEADER(\"Host\").CONTAINS(\"autodiscover.domain.tld\")"
Citrix ADC nspepi Expression
Citrix ADC nspepi Expression

Um nicht alle Expressions von Hand durchgehen zu müssen, lässt sich „nspepi“ zum Glück auch mit einer kompletten ADC Konfiguration „ns.conf“ befüttern:

cp /nsconfig/ns.conf /var/tmp/ns_classic.conf
nspepi -f /var/tmp/ns_classic.conf
> WARNING: Total number of warnings due to bind commands: 9
> WARNING: Line numbers which has bind command issues: 210, 211, 212, 213, 311, 324, 325, 326, 327
> OUTPUT: New configuration file created: new_ns_classic.conf
> OUTPUT: New warning file created: warn_ns_classic.conf
Citrix ADC nspepi ns.conf
Citrix ADC nspepi ns.conf

Derzeit können am Netscaler Gateway / Unified Gateway Advanced Policies nur per nFactor (AAA vServer) und Authentication Profil angebunden werden. Daher habe ich in meinem Fall die „new_ns_classic.conf“ runtergeladen, die vier neuen Policies für meine AAA vServer rausgepickt und im Namen um „_ADV_“ ergänzt. Im nächsten Step wurden dann die an den vServer / global gebundenen Basic Policies entfernt und durch die Advanced Policies ersetzt.

add authentication policy LDAPS_ADV_POL_Exchange -rule "HTTP.REQ.HEADER(\"Host\").CONTAINS(\"outlook.domain.tld\") || HTTP.REQ.HEADER(\"Host\").CONTAINS(\"autodiscover.domain.tld\")" -action LDAPS_SRV_Exchange
add authentication policy LDAPS_ADV_POL_Exchange_UPN -rule "HTTP.REQ.HEADER(\"Host\").CONTAINS(\"outlook.domain.tld\") || HTTP.REQ.HEADER(\"Host\").CONTAINS(\"autodiscover.domain.tld\")" -action LDAPS_SRV_Exchange_UPN
add authentication policy LDAPS_ADV_POL_Exchange_401 -rule TRUE -action LDAPS_SRV_Exchange
add authentication policy LDAPS_ADV_POL_Exchange_UPN_401 -rule TRUE -action LDAPS_SRV_Exchange_UPN 

unbind authentication vserver vs_aaa_EXCHANGE_auth_form01 -policy LDAPS_POL_Exchange
unbind authentication vserver vs_aaa_EXCHANGE_auth_form01 -policy LDAPS_POL_Exchange_UPN
unbind authentication vserver vs_aaa_EXCHANGE_auth_basic -policy LDAPS_POL_Exchange_401
unbind authentication vserver vs_aaa_EXCHANGE_auth_basic -policy LDAPS_POL_Exchange_UPN_401

bind authentication vserver vs_aaa_EXCHANGE_auth_form01 -policy LDAPS_ADV_POL_Exchange -priority 100 -gotoPriorityExpression NEXT
bind authentication vserver vs_aaa_EXCHANGE_auth_form01 -policy LDAPS_ADV_POL_Exchange_UPN -priority 110 -gotoPriorityExpression END
bind authentication vserver vs_aaa_EXCHANGE_auth_basic -policy LDAPS_ADV_POL_Exchange_401 -priority 100 -gotoPriorityExpression NEXT
bind authentication vserver vs_aaa_EXCHANGE_auth_basic -policy LDAPS_ADV_POL_Exchange_UPN_401 -priority 110 -gotoPriorityExpression END 

Damit das Gateway auch auf die Advanced Policies umgestellt werden kann benötigen wir einen weiteren (nicht adressierbaren) AAA vServer, ein Authentication Profile sowie die passende Advanced Policy. Ebenfalls kan ein Blick in diese beiden Dokumente auch nicht schaden*:

add authentication policy LDAPS_ADV_POL_UGW -rule TRUE -action LDAPS_SRV_UGW
add authentication policy LDAPS_ADV_POL_UGW_UPN -rule TRUE -action LDAPS_SRV_UGW_UPN
 
add authentication vserver vs_aaa_UGW SSL 0.0.0.0 -maxLoginAttempts 5 -failedLoginTimeout 10
set ssl vserver vs_aaa_UGW -sslProfile ns_default_ssl_profile_frontend
bind ssl vserver vs_aaa_UGW -certkeyName Gateway_Cert
 
add authentication authnProfile aaa_auth_prof_UGW -authnVsName vs_aaa_UGW -AuthenticationHost aaa.domain.tld
 
bind authentication vserver vs_aaa_UGW -policy LDAPS_ADV_POL_UGW -priority 100 -gotoPriorityExpression NEXT
bind authentication vserver vs_aaa_UGW -policy LDAPS_ADV_POL_UGW_UPN -priority 110 -gotoPriorityExpression END
 
unbind vpn vserver UG_VPN_GN-Gateway -policy LDAPS_POL_UGW
set vpn vserver UG_VPN_GN-Gateway -authnProfile aaa_auth_prof_UGW

Damit der Content Switch vom Unified Gateway eine Verbindung zum soeben erstellten AAA vServer erlaubt, muss die CSW Policy des UGW noch um „|| HTTP.REQ.URL.CONTAINS(„nf/auth“)“ erweitert werden.

set cs policy UG_CSPOL_Gateway -rule "is_vpn_url || HTTP.REQ.URL.PATH.SET_TEXT_MODE(IGNORECASE).STARTSWITH(\"/Citrix\") || HTTP.REQ.URL.CONTAINS(\"nf/auth\")"

P.S.: Obacht.. Damit die Authentifizierung über UPN am ADC Unified Gateway auch am Storefront funktioniert, muss das „SSO Name Attribute“ auf „samAccountName“ konfiguriert werden. Dann validiert der ADC den UPN, holt sich den samAccountName und meldet „sich“ damit am Storefront an.

set authentication ldapAction LDAPS_SRV_UGW_UPN -ssoNameAttribute samAccountName

*) Update 18.07.2020: Das iPhone und iPad bekommen nFactor Support in der Citrix Workspace App for iOS / iPadOS Version 20.7.0:

V3 authentication protocol

V3 authentication represents the third major definition of a logon protocol to Citrix Gateway that is supported by Citrix Workspace App for iOS. It is the standard logon protocol for Citrix Gateway in combination with the Multifactor authentication policy framework.

Multifactor authentication enhances the security of an application by requiring users to provide multiple proofs of identify to gain access. Multifactor authentication makes authentication steps and the associated credential collection forms completely configurable by the administrator.

Native Citrix Workspace app can support this protocol by building on the Forms logon support already implemented for StoreFront. The web logon page for Citrix Gateway and Traffic Manager virtual servers also consume this protocol.

For more information, see SAML Authentication, and Multi-Factor (nFactor) authentication.

https://docs.citrix.com/en-us/citrix-workspace-app-for-ios/whats-new.html

Die gesuchte Lösung noch nicht gefunden oder benötigen Sie Hilfe bei anderen Themen aus meinem Blog? Nehmen Sie gerne Kontakt mit mir bzw. meinem Unternehmen Jan Mischo IT auf. Ich freue mich auf Ihre Anfrage: https://janmischo.it/kontakt/


+49 2801 7004300

info@janmischo.it


Beitrag veröffentlicht

in

,

von

Kommentare

2 Antworten zu „Citrix ADC Classic Policies in Advanced Polcies umwandeln“

  1. Hallo

    Ich konnte das tool gebrauchen und sehe nun auch das es jede menge neuer Policies erstellt wurden im neuen Conig File . Wie kann ich nun das ns.conf File ersetzen?

    1. Hi,
      ich habe mich seit dem Artikel nicht mehr mit „nspepi“ bzw. der Migration zu Advanced Policies auseinander gesetzt. In einer Testumgebung würde ich einfach die aktuelle ns.conf wegsichern, durch die neue ersetzen und sehen was passiert. Je nachdem um wie viele Policies es sich handelt, wäre auch der Ansatz wie im Artikel denkbar. Die neuen Policies aus dem neuen Config File um bspw. ein „_ADV_“ ergänzen und dann in die Laufende Config übernehmen. Im Anschluss könnten dann die Policies entsprechend nach und nach ausgetauscht werden.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.