Citrix ADC

Configurar una directiva de reescritura

Después de crear cualquier acción de reescritura necesaria, debe crear al menos una directiva de reescritura para seleccionar las solicitudes que desea que reescriba el dispositivo Citrix ADC.

Una política de reescritura consiste en una regla, que consiste en una o más expresiones. Y una acción asociada que se realiza si una solicitud o respuesta coinciden con la regla. Las reglas de política para evaluar las solicitudes y respuestas HTTP se pueden basar en casi cualquier parte de una solicitud o respuesta.

No puede utilizar acciones de reescritura de TCP para reescribir datos distintos de la carga útil de TCP. Puede basar las reglas de política para las directivas de reescritura TCP en la información de la capa de transporte. Y las capas debajo de la capa de transporte.

Si una regla configurada coincide con una solicitud o respuesta, se activa la directiva correspondiente y se lleva a cabo la acción asociada.

Nota: Puede utilizar la interfaz de línea de comandos o la utilidad de configuración para crear y configurar políticas de reescritura. Los usuarios que no están completamente familiarizados con la interfaz de línea de comandos y el lenguaje de expresión Citrix ADC Policy suelen encontrar mucho más fácil usar la utilidad de configuración.

Para agregar una nueva política de reescritura mediante la interfaz de línea de comandos

En el símbolo del sistema, escriba los siguientes comandos para agregar una nueva política de reescritura y verificar la configuración:

  • <add política de reescritura <name><expression><action>[<undefaction>]
  • <show rewrite policy <name>

Ejemplo 1. Reescritura de contenido HTTP:


> 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-->

Ejemplo 2. Reescritura de una carga útil TCP (reescritura de TCP):

> 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-->

Para modificar una política de reescritura existente mediante la interfaz de línea de comandos

En el símbolo del sistema, escriba los siguientes comandos para modificar una directiva de reescritura existente y verificar la configuración:

  • <set rewrite policy <name>-rule <expresión-action <action>[<undefaction>]
  • <show rewrite policy <name>

Ejemplo:


> 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-->

Para quitar una política de reescritura mediante la interfaz de línea de comandos

En el símbolo del sistema, escriba el siguiente comando para eliminar una política de reescritura:

política de reescritura rm <name>

Ejemplo:


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

Para configurar una directiva de reescritura mediante la utilidad de configuración

  1. Vaya a AppExpert > Rewrite > Policies.
  2. En el panel de detalles, realice una de las acciones siguientes:
    • Para crear una política, haga clic en Agregar.
    • Para modificar una política existente, selecciónela y, a continuación, haga clic en Abrir.
  3. Haga clic en Crear o Aceptar. Aparece un mensaje en la barra de estado que indica que la directiva se ha configurado correctamente.
  4. Repita los pasos 2 a 4 para crear o modificar tantas acciones de reescritura como quieras.
  5. Haga clic en Cerrar. Para eliminar una política de reescritura, seleccione la política de reescritura que desea eliminar y, a continuación, haga clic en Eliminar y, cuando se le solicite, confirme su elección haciendo clic en Aceptar.

Crear una política de reescritura para encabezados de seguridad de contenido, protección XSS, HSTS, X-Content-Type-Options y Content-Security Policy

En el símbolo del sistema, escriba los siguientes comandos de acción de reescritura para agregar encabezado de seguridad a las páginas web que se envían a través de NetScaler mediante reescrituras.

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-->

En el símbolo del sistema, escriba los siguientes comandos de directiva de reescritura para agregar el encabezado de seguridad a las páginas web publicadas a través de NetScaler mediante reescrituras.

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-->

En el símbolo del sistema, escriba los siguientes comandos para enlazar directivas al servidor virtual en Response mediante Goto Expression NEXT.

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-->

Configurar la directiva de reescritura para encabezados de seguridad de contenido, protección XSS, HSTS, X-Content-Type-Options y Content-Security-Policy mediante la utilidad de configuración

  1. Vaya a AppExpert > Reescritura > Acciones
  2. Haga clic en Agregar para crear acciones de reescritura para cada uno de los encabezados.
  3. Vaya a AppExpert > Reescritura > Políticas
  4. Haga clic en Agregar para crear políticas de reescritura y vincularlas a acciones.
  5. Vincule políticas al servidor virtual en Response mediante Goto Expression NEXT.

Nota: En SSLVPN, necesitamos utilizar la siguiente acción de seguridad de contenido:

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-->

La excepción localhost es obligatoria porque el navegador transfiere la información de cookie/GW al complemento mediante una llamada HTTP localhost. Dado que el CSP solo tenía «auto», solo se permitirían las llamadas al servidor virtual.