– Jan's Cloud – online Gedankenstütze ;)

21. November 2018

Citrix ADC Classic Policies in Advanced Polcies umwandeln

Filed under: Citrix,Netscaler — Schlagwörter: , , , , , , , , — Jan Mischo @ 12:46

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

Keine Kommentare »

No comments yet.

RSS feed for comments on this post. TrackBack URL

Leave a comment

Powered by WordPress