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 buscar un certificado de cliente válido
  • Directiva de firewall de aplicaciones para proteger una aplicación de carrito de la compra
  • Directiva de firewall de aplicaciones para proteger páginas web con secuencias de comandos
  • Directiva DNS para eliminar paquetes de 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 al Citrix ADC asegurarse de que un cliente presenta un certificado válido antes de establecer una conexión con la VPN SSL 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 existe el certificado de cliente.

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

    Enlazar estas nuevas directivas al 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 del cliente, 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 la compra también utilizan scripts CGI heredados, que pueden contener defectos de seguridad desconocidos en el momento en que se escribieron, pero ahora son conocidos por los hackers y los ladrones de identidad.

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

  • Manipulación de galletas. Si una aplicación de carrito de compras 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 de carrito de compras 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 normalmente utilizan 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 compras contra estos y otros ataques.

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

  1. Vaya a Seguridad > Servidor de seguridad 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 la configuración predeterminada de Seleccionar opciones avanzadas.

  5. Haga clic en Create y, luego, en Close.

  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, a continuación, 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, puede configurar 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 Comprobar acciones. 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, sustituye a VISA. Para Master Card, sustituye MasterCard. Por American Express, sustituyes a Amex. Para Discover, sustituye Discover. Por Diners Club, sustituyes DinersClub. Para JCB, sustituye 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 con el carrito de la compra, examine la URL de las conexiones entrantes. Si hospeda su aplicación de carrito de la compra en un host separado (una medida prudente por razones de seguridad y otras), simplemente puede buscar la presencia de ese host en la URL. Si aloja su carrito de la compra en un directorio en un host que maneja otro tráfico, también, debe determinar que la conexión va al directorio y/o página HTML apropiados.

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

      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 una (1) como prioridad, ninguna otra directiva podrá adelantarse 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 > Servidor de seguridad 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 Create y, luego, en Close.

  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.

    Iniciar comprobación de URL: borra 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, haga clic 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 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.