Citrix ADC

Konfigurieren einer Rewrite-Richtlinie

Nachdem Sie eine erforderliche Rewrite-Aktion erstellt haben, müssen Sie mindestens eine Rewrite-Richtlinie erstellen, um die Anforderungen auszuwählen, die die Citrix ADC-Appliance neu schreiben soll.

Eine Rewrite-Richtlinie besteht aus einer Regel, die selbst aus einem oder mehreren Ausdrücken besteht. Und eine zugehörige Aktion, die ausgeführt wird, wenn eine Anfrage oder Antwort mit der Regel übereinstimmt. Richtlinienregeln für die Auswertung von HTTP-Anfragen und -Antworten können auf fast jedem Teil einer Anfrage oder Antwort basieren.

Sie können keine TCP-Rewrite-Aktionen verwenden, um andere Daten als die TCP-Nutzlast neu zu schreiben. Sie können die Richtlinienregeln für TCP-Rewrite-Richtlinien auf die Informationen in der Transportschicht stützen. Und die Schichten unter der Transportschicht.

Wenn eine konfigurierte Regel mit einer Anforderung oder Antwort übereinstimmt, wird die entsprechende Richtlinie ausgelöst und die zugeordnete Aktion wird ausgeführt.

Hinweis: Sie können entweder die Befehlszeilenschnittstelle oder das Konfigurationsdienstprogramm verwenden, um Rewrite-Richtlinien zu erstellen und zu konfigurieren. Benutzer, die mit der Befehlszeilenschnittstelle und der Ausdruckssprache der Citrix ADC Policy nicht genau vertraut sind, werden die Verwendung des Konfigurationsdienstprogramms normalerweise viel einfacher finden.

So fügen Sie eine neue Rewrite-Richtlinie mit der Befehlszeilenschnittstelle hinzu

Geben Sie an der Eingabeaufforderung die folgenden Befehle ein, um eine neue Rewrite-Richtlinie hinzuzufügen und die Konfiguration zu überprüfen:

  • <add rewrite policy <name> <expression> <action> [<undefaction>]
  • <show rewrite policy <name>

Beispiel 1. Umschreiben von HTTP-Inhalten:


> add rewrite policy policyNew "HTTP.RES.IS_VALID" insertact NOREWRITE
 Done
> show rewrite policy policyNew
        Name: policyNew
        Rule: HTTP.RES.IS_VALID
        RewriteAction: insertact
        UndefAction: NOREWRITE
        Hits: 0
        Undef Hits: 0

 Done
<!--NeedCopy-->

Beispiel 2. Umschreiben einer TCP-Nutzlast (TCP Rewrite):

> add rewrite policy client_tcp_payload_policy CLIENT.IP.SRC.EQ(172.168.12.232) client_tcp_payload_replace_all
 Done
> show rewrite policy client_tcp_payload_policy
        Name: client_tcp_payload_policy
        Rule: CLIENT.IP.SRC.EQ(172.168.12.232)
        RewriteAction: client_tcp_payload_replace_all
        UndefAction: Use Global
        LogAction: Use Global
        Hits: 0
        Undef Hits: 0

 Done
>
<!--NeedCopy-->

So ändern Sie eine vorhandene Rewrite-Richtlinie mithilfe der Befehlszeilenschnittstelle

Geben Sie an der Eingabeaufforderung die folgenden Befehle ein, um eine vorhandene Rewrite-Richtlinie zu ändern und die Konfiguration zu überprüfen:

  • <set rewrite policy <name>-rule <expression-action <action> [<undefaction>]
  • <show rewrite policy <name>

Beispiel:


> set rewrite policy policyNew -rule "HTTP.RES.IS_VALID" -action insertaction
 Done

> show rewrite policy policyNew
        Name: policyNew
        Rule: HTTP.RES.IS_VALID
        RewriteAction: insertaction
        UndefAction: NOREWRITE
        Hits: 0
        Undef Hits: 0

 Done
<!--NeedCopy-->

So entfernen Sie eine Rewrite-Richtlinie mit der Befehlszeilenschnittstelle

Geben Sie an der Eingabeaufforderung den folgenden Befehl ein, um eine Rewrite-Richtlinie zu entfernen:

rm rewrite policy <name>

Beispiel:


> rm rewrite policy policyNew
Done
<!--NeedCopy-->

So konfigurieren Sie eine Rewrite-Richtlinie mit dem Konfigurationsdienstprogramm

  1. Gehen Sie zu AppExpert > Rewrite > Policies.
  2. Führen Sie im Detailbereich eine der folgenden Aktionen aus:
    • Um eine Richtlinie zu erstellen, klicken Sie auf Hinzufügen.
    • Um eine vorhandene Richtlinie zu ändern, wählen Sie die Richtlinie aus, und klicken Sie dann auf Öffnen.
  3. Klicken Sie auf Erstellen oder OK. In der Statusleiste wird eine Meldung angezeigt, die besagt, dass die Richtlinie erfolgreich konfiguriert wurde.
  4. Wiederholen Sie die Schritte 2 bis 4, um beliebig viele Umschreibungsaktionen zu erstellen oder zu ändern.
  5. Klicken Sie auf Schließen. Um eine Neuschreibrichtlinie zu löschen, wählen Sie die zu löschende Umschreibungsrichtlinie aus, klicken Sie auf Entfernen, und bestätigen Sie, wenn Sie dazu aufgefordert werden, Ihre Auswahl durch Klicken auf OKzu bestätigen.

Erstellen Sie Umschreibrichtlinien für Content-Sicherheits-Header, XSS-Schutz, HSTS, X-Content-Typ-Optionen und Content-Security-Policy

Geben Sie an der Eingabeaufforderung die folgenden Rewrite-Aktionsbefehle ein, um den Sicherheitskopf zu Webseiten hinzuzufügen, die über NetScaler mit Rewrites bereitgestellt werden.

add rewrite action insert_STS_header insert_http_header Strict-Transport-Security ""max-age=157680000""
add rewrite action rw_act_insert_XSS_header insert_http_header X-Xss-Protection ""1; mode=block""
add rewrite action rw_act_insert_Xcontent_header insert_http_header X-Content-Type-Options ""nosniff""
add rewrite action rw_act_insert_Content_security_policy insert_http_header Content-Security-Policy ""default-src 'self' ; script-src 'self' 'unsafe-inline' 'unsafe-eval' ; style-src 'self' 'unsafe-inline' 'unsafe-eval'; img-src 'self' data:""
<!--NeedCopy-->

Geben Sie an der Eingabeaufforderung die folgenden Richtlinienbefehle zum Umschreiben ein, um den Sicherheitskopf zu Webseiten hinzuzufügen, die über NetScaler mithilfe von Rewrites bereitgestellt werden

add rewrite policy enforce_STS true insert_STS_header
add rewrite policy rw_pol_insert_XSS_header "HTTP.RES.HEADER("X-Xss-Protection").EXISTS.NOT" rw_act_insert_XSS_header
add rewrite policy rw_pol_insert_XContent TRUE rw_act_insert_Xcontent_header
add rewrite policy rw_pol_insert_Content_security_policy TRUE rw_act_insert_Content_security_policy
<!--NeedCopy-->

Geben Sie an der Eingabeaufforderung die folgenden Befehle ein, um Richtlinien mit Hilfe von Gehe zu Ausdruck NEXT an den virtuellen Server zu binden.

bind vpn vserver access -policy enforce_STS -priority 100 -gotoPriorityExpression NEXT -type RESPONSE
bind vpn vserver "VSERVERNAME" -policy rw_pol_insert_XSS_header -priority 110 -gotoPriorityExpression NEXT -type RESPONSE
bind vpn vserver access -policy rw_pol_insert_XContent -priority 120 -gotoPriorityExpression NEXT -type RESPONSE
bind vpn vserver access -policy rw_pol_insert_Content_security_policy -priority 130 -gotoPriorityExpression NEXT -type RESPONSE
<!--NeedCopy-->

Konfigurieren Sie die Umschreibungsrichtlinie für Content-Security-Header, XSS-Schutz, HSTS, X-Content-Typ-Optionen und Content-Security-Policy mit dem Konfigurationsdienstprogramm

  1. Navigieren Sie zu AppExpert > Umschreiben > Aktionen
  2. Klicken Sie auf Hinzufügen, um Umschreibaktionen für jeden der Header zu erstellen.
  3. Navigieren Sie zu AppExpert > Umschreiben > Richtlinien
  4. Klicken Sie auf Hinzufügen, um Rewrite-Richtlinien zu erstellen und sie mit Aktionen zu verknüpfen.
  5. Binden Sie Richtlinien an den virtuellen Server bei der Antwort mit dem Gehe zu Ausdruck NEXT.

Hinweis: In SSLVPN müssen wir die folgende Content-Security-Aktion verwenden:

add rewrite action Rewrite_Insert_Content-Security-Policy insert_http_header Content-Security-Policy ""default-src 'self' ; script-src 'self' 'unsafe-inline' 'unsafe-eval' ; style-src 'self' 'unsafe-inline' 'unsafe-eval'; img-src 'self' http://localhost:* data:;"
<!--NeedCopy-->

Die Localhost-Ausnahme ist erforderlich, da der Browser die Cookie/GW-Informationen mithilfe des HTTP-Aufrufs localhost an das Plug-In weitergibt. Da der CSP nur “selbst” hatte, wären nur Anrufe an den virtuellen Server zulässig.