Citrix ADC

Ejemplos de tutoriales de directivas clásicas

En los siguientes ejemplos se describen ejemplos útiles de configuración clásica de directivas para determinadas funciones de Citrix ADC, como Citrix Gateway, firewall de aplicaciones y SSL.

Este documento incluye los siguientes detalles:

  • Directiva de Citrix Gateway para comprobar si hay un certificado de cliente válido
  • Directiva de firewall de aplicaciones para proteger una aplicación de carrito de compras
  • Directiva de firewall de aplicaciones para proteger páginas web con scripts
  • Directiva DNS para eliminar paquetes de direcciones IP específicas
  • Directiva SSL para requerir certificados de cliente válidos

Directiva de Citrix Gateway para comprobar si hay un certificado de cliente válido

Las siguientes directivas permiten que Citrix ADC garantice que un cliente presente un certificado válido antes de establecer una conexión con SSL VPN de una empresa.

Para comprobar si hay un certificado de cliente válido mediante la interfaz de línea de comandos

  • Agregue una acción para realizar la autenticación de certificados de cliente.

    add ssl action act1 -clientAuth DOCLIENTAUTH

  • Cree una directiva SSL para evaluar las solicitudes del cliente.

    add ssl policy pol1 -rule "REQ.HTTP.METHOD == GET" -action act1

  • Agregue una acción de reescritura para insertar los detalles del emisor del certificado en el encabezado HTTP de las solicitudes que se envían al servidor web.

    add rewrite action act2 insert_http_header "CertDN" CLIENT.SSL.CLIENT_CERT.SUBJECT

  • Cree una directiva de reescritura para insertar los detalles del emisor del certificado, si el certificado del cliente existe.

    add rewrite policy pol2 "CLIENT.SSL.CLIENT_CERT.EXISTS" act2

    Enlaza estas nuevas directivas a Citrix ADC VIP para ponerlas en práctica.

Directiva de firewall de aplicaciones para proteger una aplicación de carrito de compras

Las aplicaciones de carrito de compras manejan información confidencial de los clientes, por ejemplo, números de tarjetas de crédito y fechas de caducidad, y acceden a servidores de bases de datos back-end. Muchas aplicaciones de carrito de compras también utilizan scripts CGI heredados, que pueden contener fallas de seguridad desconocidas en el momento en que se escribieron, pero que ahora son conocidos por hackers y ladrones de identidad.

Una aplicación de carrito de la compra es particularmente vulnerable a los siguientes ataques:

  • Manipulación de cookies. Si una aplicación de carrito de la compra utiliza cookies y no realiza las comprobaciones adecuadas de las cookies que los usuarios devuelven a la aplicación, un atacante podría modificar una cookie y obtener acceso a la aplicación del carrito de la compra bajo las credenciales de otro usuario. Una vez iniciado sesión como ese usuario, el atacante podría obtener información privada confidencial sobre el usuario legítimo o realizar pedidos mediante la cuenta del usuario legítimo.
  • Inyección SQL. Una aplicación de carrito de compras normalmente accede a un servidor de base de datos back-end. A menos que la aplicación realice las comprobaciones de seguridad adecuadas en los datos que devuelven los usuarios en los campos de formulario de sus formularios web antes de pasar esa información a la base de datos SQL, un atacante puede utilizar un formulario web para inyectar comandos SQL no autorizados en el servidor de base de datos. Los atacantes suelen utilizar este tipo de ataque para obtener información privada confidencial de la base de datos o modificar la información de la base de datos.

La siguiente configuración protegerá una aplicación de carrito de la compra contra estos y otros ataques.

Para proteger una aplicación de carrito de compras mediante la utilidad de configuración

  1. Vaya a Seguridad > Firewall de aplicaciones > Perfiles y, a continuación, haga clic en Agregar.

  2. En el cuadro de diálogo Crear perfil de firewall de aplicaciones, en el campo Nombre de perfil, escriba shopping_cart.

  3. En la lista desplegable Tipo de perfil, seleccione Aplicación web.

  4. En los valores predeterminados Configurar Seleccionar Avanzado.

  5. Haga clic en Crear y, luego, en Cerrar.

  6. En la vista de detalles, haga doble clic en el nuevo perfil.

  7. En el cuadro de diálogo Configurar perfil de aplicación web, configure el nuevo perfil como se describe a continuación:

    • Haga clic en la ficha Comprobaciones, haga doble clic en la comprobación de URL de inicio y, en el cuadro de diálogo Modificar comprobación de URL de inicio, haga clic en la ficha General, inhabilite el bloqueo y habilite el aprendizaje, el registro, las estadísticas y el cierre de URL. Haga clic en Aceptar y luego en Cerrar.

      Tenga en cuenta que si está utilizando la línea de comandos, configure estos valores escribiendo lo siguiente en el símbolo del sistema y presionando ENTRAR:

      set appfw profile shopping_cart -startURLAction LEARN LOG STATS -startURLClosure ON

    • Para la comprobación de coherencia de cookies y las comprobaciones de coherencia de campos de formulario, inhabilite el bloqueo y habilite el aprendizaje, el registro y las estadísticas, mediante un método similar a la configuración Modificar comprobación de URL de inicio.

      Si utiliza la línea de comandos, puede configurar estos parámetros escribiendo los siguientes comandos:

      set appfw profile shopping_cart -cookieConsistencyAction LEARN LOG STATS

      set appfw profile shopping_cart -fieldConsistencyAction LEARN LOG STATS

    • Para la comprobación Injection SQL, inhabilite el bloqueo y habilite el aprendizaje, el registro, las estadísticas y la transformación de caracteres especiales en el cuadro de diálogo Modificar comprobación de inyección SQL, ficha General, sección Comprobar acciones.

      Si está utilizando la línea de comandos, configure estos valores escribiendo lo siguiente en el símbolo del sistema y presionando ENTRAR:

      set appfw profile shopping_cart -SQLInjectionAction LEARN LOG STATS -SQLInjectionTransformSpecialChars ON

    • Para la comprobación de tarjeta de crédito, inhabilite el bloqueo; habilite el registro, las estadísticas y el enmascaramiento de números de tarjetas de crédito; y habilite la protección de las tarjetas de crédito que acepte como formas de pago.

      • Si utiliza la utilidad de configuración, configure el bloqueo, el registro, las estadísticas y el enmascaramiento (o x-out) en el cuadro de diálogo Modificar comprobación de tarjeta de crédito, ficha General, sección Acciones de comprobación. Puede configurar la protección para tarjetas de crédito específicas en la ficha Configuración del mismo cuadro de diálogo.
      • Si está utilizando la línea de comandos, configure estos valores escribiendo lo siguiente en el símbolo del sistema y presionando ENTRAR:

      set appfw profile shopping_cart -creditCardAction LOG STATS -creditCardXOut ON -creditCard <name> [<name>...]

      <name>Sustituya el nombre de la tarjeta de crédito que quiere proteger. Para Visa, sustituya VISA. Por Master Card, sustituya MasterCard. Por American Express, sustituyen a Amex. Por Discover, sustituirás Discover. Por Diners Club, sustituyen a DinersClub. Por JCB, sustituya a JCB.

  8. Cree una directiva denominada shopping_cart que detecte las conexiones con su aplicación de carrito de compras y aplique el perfil shopping_cart a esas conexiones.

    Para detectar conexiones al carrito de la compra, examine la dirección URL de las conexiones entrantes. Si aloja su aplicación de carrito de compras en un host separado (una medida prudente por motivos de seguridad y otros), simplemente puede buscar la presencia de ese host en la URL. Si aloja su carrito de compras en un directorio de un host que maneja otro tráfico, también debe determinar que la conexión va al directorio apropiado y/o página HTML.

    El proceso para detectar cualquiera de ellos es el mismo; se crea una directiva basada en la siguiente expresión y se sustituye por el host o la URL adecuados.<string>

    REQ.HTTP.HEADER URL CONTAINS <string>
    
    • Si está utilizando la utilidad de configuración, vaya a la página Directivas del firewall de la aplicación, haga clic en el botón Agregar… para agregar una nueva directiva y siga el proceso de creación de directivas descrito en “Para crear una directiva con expresiones clásicas mediante la utilidad de configuración” comenzando en la página 201 y siguientes.

    • Si utiliza la línea de comandos, escriba el comando siguiente en el símbolo del sistema y presione Entrar:

      add appfw policy shopping_cart "REQ.HTTP.HEADER URL CONTAINS <string>" shopping_cart

2. Enlazar globalmente su nueva directiva para ponerla en vigor.

Dado que quiere asegurarse de que esta directiva coincida con todas las conexiones con el carrito de la compra y que no se le impida otra directiva más general, debe asignarle una alta prioridad. Si asigna uno (1) como prioridad, ninguna otra directiva puede anteponerse a esta.

Directiva de firewall de aplicaciones para proteger páginas web con scripts

Las páginas web con scripts incrustados, especialmente Javascripts heredados, a menudo violan la “misma regla de origen”, que no permite que los scripts accedan o modifiquen contenido en ningún servidor excepto en el servidor donde se encuentran. Esta vulnerabilidad de seguridad se denomina scripting entre sitios. La regla de scripting entre sitios del firewall de aplicaciones normalmente filtra las solicitudes que contiene scripting entre sitios.

Desafortunadamente, esto puede hacer que las páginas web con Javascripts antiguos dejen de funcionar, incluso cuando el administrador del sistema haya comprobado esos scripts y sepa que son seguros. En el ejemplo siguiente se explica cómo configurar el firewall de aplicaciones para permitir el scripting entre sitios en páginas web de fuentes de confianza sin inhabilitar este importante filtro para el resto de sitios web.

Para proteger páginas web con scripting entre sitios mediante la interfaz de línea de comandos

  • En la línea de comandos, para crear un perfil avanzado, escriba:

    add appfw profile pr_xssokay -defaults advanced

  • Para configurar el perfil, escriba:

    set appfw profile pr_xssokay -startURLAction NONE -startURLClosure OFF -cookieConsistencyAction LEARN LOG STATS -fieldConsistencyAction LEARN LOG STATS -crossSiteScriptingAction LEARN LOG STATS$"

  • Cree una directiva que detecte conexiones a las páginas web con scripts y aplique el perfil pr_xssokay, escriba:

    add appfw policy pol_xssokay "REQ.HTTP.HEADER URL CONTAINS ^\\.pl\\?$ || REQ.HTTP.HEADER URL CONTAINS ^\\.js$" pr_xssokay

  • Vincular globalmente la directiva.

Para proteger páginas web con scripting entre sitios mediante la utilidad de configuración

  1. Vaya a Seguridad > Firewall de aplicaciones > Perfiles.

  2. En la vista de detalles, haga clic en Agregar.

  3. En el cuadro de diálogo Crear perfil de firewall de aplicaciones, cree un perfil de aplicación web con valores predeterminados avanzados y asígnele el nombre pr_xssokay. Haga clic en Crear y, luego, en Cerrar.

  4. En la vista de detalles, haga clic en el perfil, haga clic en Abrir y, en el cuadro de diálogo Configurar perfil de aplicación web, configure el perfil pr_xssokay como se muestra a continuación.

    Comprobación URL de inicio: Borre todas las acciones.

    • Comprobación de coherencia de cookies: Inhabilita el bloqueo.
    • Comprobación de coherencia de campos de formulario: Inhabilitar el bloqueo.
    • Comprobación de scripting entre sitios: Inhabilita el bloqueo.

    Esto debería evitar el bloqueo de solicitudes legítimas que involucran páginas web con scripting entre sitios que sabe que son seguras.

  5. Haga clic en Directivas y, a continuación, en Agregar.

  6. En el cuadro de diálogo Crear directiva de firewall de aplicaciones, cree una directiva que detecte las conexiones a las páginas web con scripts y aplique el perfil pr_xssokay:

    • Nombre de la directiva: Pol_xssokay
    • Perfil asociado: Pr_xssokay
    Expresión de directiva: “REQ.HTTP.HEADER URL CONTAINS ^\.pl\?$   REQ.HTTP.HEADER URL CONTIENE ^.js$”
  7. Enlazar globalmente su nueva directiva para ponerla en vigor.

Directiva DNS para eliminar paquetes de direcciones IP específicas

En el ejemplo siguiente se describe cómo crear una acción DNS y una directiva DNS que detecte conexiones de IP o redes no deseadas, como las utilizadas en un ataque DDOS, y se quitan todos los paquetes de esas ubicaciones. El ejemplo muestra las redes dentro del bloque IP reservado de IANA 192.168.0.0/16. Normalmente, una red hostil estará en IP enrutables públicamente.

Para eliminar paquetes de IP específicas mediante la interfaz de línea de comandos

  • Para crear una directiva DNS denominada pol_ddos_drop que detecte conexiones de redes hostiles y descarta esos paquetes, escriba:

    add dns policy pol_ddos_drop 'client.ip.src.in_subnet(192.168.253.128/25) || client.ip.src.in_subnet(192.168.254.32/27)' -drop YES'

    Para las redes de ejemplo en el rango 192.168.0.0/16, sustituya la IP y la máscara de red en formato ###.##.###.###/## de cada red que quiera bloquear. Puede incluir tantas redes como quiera, separando cada comando CLIENT.IP.SRC.IN_SUBNET (###.###.#.##.#.#./##) con el operador OR.

  • Enlazar globalmente su nueva directiva para ponerla en vigor.

Directiva SSL para requerir certificados de cliente válidos

En el ejemplo siguiente se muestra una directiva SSL que comprueba la validez del certificado de cliente del usuario antes de iniciar una conexión SSL con un cliente.

Para bloquear conexiones de usuarios con certificados de cliente caducados

  • Inicie sesión en la interfaz de línea de comandos.

    Si está utilizando la GUI, vaya a la página Directivas SSL y, a continuación, en el área Datos, haga clic en la ficha Acciones.

  • Cree una acción SSL denominada act_current_client_cert que requiera que los usuarios tengan un certificado de cliente actual para establecer una conexión SSL con Citrix ADC.

    add ssl action act_current_client_cert-clientAuth DOCLIENTAUTH -clientCert ENABLED -certHeader "clientCertificateHeader" -clientCertNotBefore ENABLED -certNotBeforeHeader "Mon, 01 Jan 2007 00:00:00 GMT"

  • Cree una directiva SSL denominada pol_current_client_cert que detecte las conexiones al servidor web que contienen una cadena de consulta.

    add ssl policy pol_current_ client_cert 'REQ.SSL.CLIENT.CERT.VALIDFROM \>= "Mon, 01 Jan 2007 00:00:00 GMT"' act_block_ssl

  • Enlazar su nueva directiva globalmente.

    Dado que esta directiva SSL debe aplicarse a la conexión SSL de cualquier usuario a menos que se aplique una directiva SSL más específica, es posible que quiera asignarle una prioridad baja. Si le asigna una prioridad de mil (1000), debe asegurarse de que se evalúan en primer lugar otras directivas SSL, lo que significa que esta directiva solo se aplicará a las conexiones que no coincidan con criterios de directiva más específicos.