Guía de PoC: Protección de servidores virtuales de puerta de enlace con WAF, Bot y políticas de autenticación avanzada
Información general
Muchos dispositivos Citrix ADC alojan implementaciones de VPN y Citrix Gateway que también proporcionan protección de seguridad a otras aplicaciones web. Esta guía de PoC está diseñada para ayudar a proteger servidores virtuales VPN y Gateway mediante herramientas ya disponibles en el dispositivo Citrix ADC. Esta guía cubre la protección de la página de inicio de sesión del portal con seguridad Bot y la protección del envío de formularios de credenciales con capacidades WAF. Además, las políticas de autenticación avanzadas agregan contexto a los inicios de sesión de los usuarios y permiten la autenticación multifactor.
El flujo de esta configuración se diagrama de la siguiente manera:
Opciones de configuración
Esta guía no proporciona una lista exclusiva de protecciones ni es la única forma de configurarlas. Por ejemplo, es común implementar tanto la reputación de IP como la limitación de velocidad mediante una política de respuesta en un servidor virtual de puerta de enlace. Esta configuración es un método de implementación compatible. Tiene un resultado diferente al descartar o restablecer las conexiones antes de que se muestre la página de inicio de sesión de la puerta de enlace.
Además, el perfil WAF no tiene todas las protecciones habilitadas para evitar configuraciones complejas, ajustes personalizados y posibles problemas. Es posible configurar más el perfil WAF, consulte los enlaces en la sección de referencias para obtener orientación.
Nota:
CAPTCHA no es la opción más segura para un factor adicional, solo se usa para simplificar la explicación. Otras opciones de MFA, como TOTP o PUSH, son mejores opciones; consulte la sección de referencias para obtener enlaces que le ayudarán a implementar estas opciones.
Requisitos previos
Esta guía asume un conocimiento práctico de la implementación de Citrix WAF, la implementación de Bot Security y las directivas de autenticación avanzada (nFactor). Se asume que una puerta de enlace o servidor virtual de autenticación ya está instalado y configurado. A continuación se indican los requisitos para la configuración:
- Las directivas de autenticación avanzada requieren la versión 12.1 compilación 57.18 o posterior
- Las protecciones de Firewall de aplicaciones web requieren la versión 12.1 compilación 57.18 o posterior
- Las protecciones de seguridad de bots requieren la versión 13.0 build 71.40 o posterior
- La mayoría de las funciones de esta guía requieren una licencia premium.
- Un servidor o servicio existente que escucha en el puerto 80
- Una puerta de enlace o servidor virtual de autenticación existente, con una configuración de autenticación avanzada existente (autenticación avanzada o flujo de nFactor)
- Habilite las siguientes funciones: Citrix Web App Firewall, Citrix Bot Management y Reputation
Protección de bots
Firmas de Bot
En Seguridad > Citrix Bot Management > Firmas, seleccione Firmasde bot predeterminadas y haga clic en el botón Clonar . Aplique un nombre descriptivo y, a continuación, haga clic en crear.
Crear un perfil y una directiva de administración de bots
En Seguridad > Citrix Bot Management > Perfiles, seleccione Agregar para crear un nuevo perfil de administración de bots. Asigne al perfil un nombre descriptivo y seleccione el conjunto de firmas creado previamente.
Seleccione el perfil para modificar la configuración avanzada.
Agregue reputación IP desde la columna derecha y marque la casilla para habilitarla.
A continuación, elija ‘Agregar’ en categorías, seleccione IP para el Tipo, marque la casilla Habilitado y establezca la acción en Subir. Por último, marque la casilla de ‘Registrar’ y establezca el mensaje de registro en algo descriptivo.
Seleccione Huella digital del dispositivo en la columna derecha, asegúrese de que la casilla de verificación “Habilitado” NO está marcada y haga clic en Actualizar.
El último ajuste para el perfil de bot es habilitar la limitación de velocidad, seleccione Límite de velocidad en la columna derecha y marque la casilla habilitado. Haga clic en “Agregar” en Configurar recursosy agrega tres enlaces de límite de tasa de tipos de URL para las siguientes URL:
- /logon/LogonPoint/index.html
- /logon/LogonPoint/tmindex.html
- /vpn/index.html
Configure los límites de tarifas de la siguiente manera:
- Habilitado
- Tasa de 5
- Periodo de 1000
- Acción de Drop
- Registro establecido en habilitado
- Registrar mensaje con un título de mensaje descriptivo.
El perfil de bot ahora está configurado de la siguiente manera:
Cree una directiva de administración de bots en Seguridad > Citrix Bot Management > Directivas de bots y elija Agregar. Seleccione el perfil de bot creado anteriormente, con una expresión de la siguiente manera:
HTTP.REQ.URL.CONTAINS("/vpn")||HTTP.REQ.URL.CONTAINS("/logon")
<!--NeedCopy-->
Finalmente, la directiva de bot está vinculada seleccionando ‘Administrador de directivas’. Seleccione un punto de enlace de ‘Predeterminado global’, seleccione ‘Haga clic para seleccionar’ para seleccionar la directiva. Resalte la directiva creada anteriormente y elija ‘Seleccionar’. Seleccione “Vincular” y luego “Hice”.
Protección WAF
No es posible vincular una política WAF directamente a una puerta de enlace o servidor virtual de autenticación. Además, vincular una política de WAF de forma global con una expresión dirigida a servidores virtuales de autenticación o de puerta de enlace no funcionará como se esperaba. El orden de procesamiento de la directiva provoca este mal funcionamiento: las directivas WAF se procesan después de las directivas Gateway y autenticación. Consulte la imagen siguiente para obtener una aclaración sobre el flujo de tráfico.
La directiva de protección WAF utiliza una llamada HTTP para proteger la página de inicio de sesión e invalidar el flujo de autenticación si se detecta una excepción WAF. Esta configuración requiere un conjunto de patrones (Patset) que incluye las URL de inicio de sesión, un servidor virtual de equilibrio de carga y servicio ficticio, una llamada HTTP y la política y configuración de WAF.
Conjunto de patrones
Vaya a AppExpert > Conjuntos de patrones y seleccione ‘Agregar ‘. Asigne un nombre al nuevo conjunto de patrones, luego seleccione ‘Insertar’ y agregue los siguientes patrones:
- /cgi/login (índice 1)
- /nf/auth/doauthentication.do (índice 2)
También puede crear el conjunto de patrones desde la CLI:
add policy patset GW_VPN_Patset
bind policy patset GW_VPN_Patset "/cgi/login" -index 1
bind policy patset GW_VPN_Patset "/nf/auth/doAuthentication.do" -index 2
<!--NeedCopy-->
Servicio y servidor virtual ficticio
La llamada HTTP utiliza un servidor virtual ficticio. No es necesario que este servidor virtual esté disponible públicamente, por lo que puede no ser direccionable. El servidor virtual SÍ necesita estar activo, por lo que el servidor back-end debe estar activo y responder en el puerto 80. En esta guía se crean un servicio y un servidor virtual nuevos, pero se puede usar un servidor virtual preexistente.
Vaya a Administración del tráfico > Equilibrio de carga > Servicios y seleccione “Agregar”. Asigne al servicio un nombre descriptivo, establezca el protocolo en HTTP y puerto 80. Introduzca la dirección IP del servidor y haga clic en Aceptar. También puede crear el servicio con un servidor existente. Utilice todos los ajustes predeterminados, incluidos los monitores enlazados al servicio.
A continuación, cree el servidor virtual de equilibrio de carga yendo a Administración de tráfico > Equilibrio de carga > Servidores virtuales y seleccione “Agregar”. Asigne al servidor un nombre descriptivo, establezca el protocolo en HTTP y establezca el tipo de dirección IP en No direccionable. Enlazar el servicio creado anteriormente a este servidor virtual seleccionando “Sin enlace de servicio de servidor virtual de equilibrio de carga”, a continuación, ‘Haga clic para seleccionar’ y seleccione el servicio. Ahora hay 1 servicio vinculado al servidor virtual y el estado es ‘UP’.
Llamada HTTP
Vaya a AppExpert > Llamadas HTTP y seleccione ‘Agregar’. Asigne a la llamada HTTP un nombre descriptivo, seleccione ‘Virtual Server’ para recibir la solicitud de llamada y seleccione el servidor virtual ficticio. En la Solicitud para enviar al servidor, seleccione el tipo como Basado en la expresión, establezca el esquema en ‘HTTP’ y establezca la expresión completa en lo siguiente:
HTTP.REQ.FULL_HEADER.BEFORE_STR("\r\n\r\n")+"\r\nGW_VPN-WAF_Callout:abc\r\n\r\n"+HTTP.REQ.BODY(2048)
<!--NeedCopy-->
Nota:
El nombre del encabezado aquí es ‘GW_VPN-WAF_Callout’; la expresión de filtrado del cortafuegos de aplicaciones lo utiliza más adelante. Si el nombre se cambia aquí, cambie también la expresión del encabezado WAF.
En la sección Respuesta del servidor, establezca el tipo de retorno en BOOL y establezca la expresión en ‘verdadero’.
También puede crear la llamada HTTP desde la CLI:
add policy httpCallout GW_VPN_WAF_Callout -vServer dummy-vserver-here -returnType BOOL -fullReqExpr HTTP.REQ.FULL_HEADER.BEFORE_STR("\r\n\r\n")+"\r\nGW_VPN-WAF_Callout:abc\r\n\r\n"+HTTP.REQ.BODY(2048) -scheme http -resultExpr true
<!--NeedCopy-->
Política de autenticación
Modifique una directiva de autenticación LDAP existente para usar la llamada HTTP. Abra la directiva de autenticación existente. Para ello, vaya a Seguridad > Tráfico de aplicaciones AAA > Directivas > Autenticación > Directivas avanzadas > Directiva, seleccione la directiva existente y elija ‘Modificar’. Modifique la expresión existente a lo siguiente:
HTTP.REQ.URL.CONTAINS_ANY("GW_VPN_Patset") && SYS.HTTP_CALLOUT(GW_VPN_WAF_Callout)
<!--NeedCopy-->
Nota:
Utilice esta expresión con cualquier directiva de autenticación en la que desee proteger los campos del formulario en la página de inicio de sesión.
Perfil y directiva WAF
Para crear el perfil WAF, vaya a Seguridad > Citrix Web Application Firewall > Perfiles y elija “Agregar”. Asigne al perfil un nombre descriptivo y seleccione Aplicación Web (HTML) y Valores predeterminados básicos. Abra el perfil recién creado seleccionando ‘Modificar’ y, a continuación, seleccione ‘Verificación de seguridad’ en la columna de la derecha.
Active las siguientes comprobaciones de seguridad (desactive el resto de configuraciones):
- Desbordamiento de búfer - Registro, Estadísticas
- Límite de Post Body - Bloqueo, Registro, Estadísticas
- HTML Cross-Site Scripting - Bloquear, Registro, Estadísticas
- HTML SQL Injection - Bloque, Registro, Estadísticas
A continuación, selecciona “Configuración de perfil” en la columna de la derecha y establece la respuesta predeterminada en:
application/octet-stream
<!--NeedCopy-->
A continuación, marque la casilla Registrar cada resultado de directiva.
A continuación, configure la directiva WAF yendo a Seguridad > Citrix Web Application Firewall > Directivas > Firewall y seleccione “Agregar”. Asigne a la directiva un nombre descriptivo y seleccione el perfil creado en el paso anterior. Para la expresión, escriba lo siguiente:
HTTP.REQ.HEADER("GW_VPN-WAF_Callout").EXISTS
<!--NeedCopy-->
Nota:
El nombre del encabezado aquí debe coincidir con el encabezado de la llamada HTTP creada anteriormente.
Por último, vincule la directiva WAF al servidor virtual de equilibrio de carga ficticio creado anteriormente; para ello, vaya a Administración del tráfico > Equilibrio de carga > Servidores virtuales. Seleccione el servidor virtual y, a continuación, seleccione “Modificar”.
En la columna de la derecha, seleccione ‘Directivas’ y luego haga clic en ‘+’ más para agregar una directiva. Seleccione la directiva Firewall de aplicaciones y escriba Solicitud. Seleccione la directiva creada anteriormente y, a continuación, seleccione “Enlazar” y “Hice”.
Como alternativa, cree la configuración de WAF mediante la CLI de la siguiente manera:
add appfw profile demo_appfw_profile -startURLAction none -denyURLAction none -fieldFormatAction none -bufferOverflowAction log stats -responseContentType "application/octet-stream" -logEveryPolicyHit ON -fileUploadTypesAction none
add appfw policy demo_appfw_policy "HTTP.REQ.HEADER("GW_VPN-WAF_Callout").EXISTS" demo_appfw_profile
bind lb vserver dummy-vserver-here -policyName gw_appfw_policy -priority 100 -gotoPriorityExpression END -type REQUEST
<!--NeedCopy-->
Configuración avanzada de autenticación
Hay dos configuraciones relacionadas con la autenticación: Cifrar las credenciales de usuario desde el cliente al ADC dentro de NFactor y MFA basada en reputación IP.
Cifrado de credenciales de usuario
La siguiente configuración permite al ADC cifrar el conjunto de credenciales cuando el usuario envía los datos del formulario mediante algoritmos ECDHE. Para habilitar esta configuración, vaya a Citrix Gateway > Configuración global > Configuración de autenticación > Cambiar la configuración AAA de autenticación y establezca el cifrado de inicio de sesión en HABILITADO.
También puede cambiar esta configuración desde la CLI de la siguiente manera:
set aaa parameter -loginEncryption ENABLED
<!--NeedCopy-->
MFA basada en la reputación de IP
Utilice la reputación de IP con autenticación avanzada para solicitar al usuario un factor adicional si la base de datos incluye la dirección de origen. Además, cree un conjunto de datos de direcciones mantenido manualmente.
Importante:
El siguiente ejemplo de configuración utiliza CAPTCHA como medio para proporcionar otro factor de autenticación, pero se puede utilizar cualquier otra herramienta de MFA. Al igual que con todas las configuraciones de nFactor, las políticas, los esquemas y las etiquetas de políticas que se muestran aquí son ejemplos simples: agregue una configuración adicional para cumplir con cualquier caso de uso de inicio de sesión específico.
Consulte la sección de referencias para obtener más detalles sobre la configuración de TOTP PUSH como factor y configuraciones CAPTCHA adicionales.
Cree un conjunto de datos yendo a AppExpert > Conjuntos de datos y seleccionando “Agregar”. Cree un conjunto de datos con un nombre descriptivo, un tipo de ‘ipv4’ y haga clic en ‘Crear’.
A continuación, se deben crear dos directivas de autenticación avanzadas yendo a Seguridad > AAA - Tráfico de aplicaciones > Directivas > Autenticación > Directivas avanzadas > Directiva y seleccione “Agregar”.
Cree la primera política con un nombre descriptivo, un tipo de acción NO_AUTHNy la expresión establecida en “true”.
Cree la segunda política con un nombre descriptivo, un tipo de acción NO_AUTHNy una expresión como se indica a continuación:
CLIENT.IP.SRC.IPREP_IS_MALICIOUS || CLIENT.IP.SRC.TYPECAST_TEXT_T.CONTAINS_ANY("suspicious_ips")
<!--NeedCopy-->
Nota:
Utilice aquí el nombre del conjunto de datos creado anteriormente.
A continuación, se crea un perfil de esquema de inicio de sesión CAPTCHA yendo a Seguridad > AAA - Tráfico de aplicaciones > Esquema de inicio de sesión > Ficha Perfiles y seleccionando ‘Agregar ‘. Asigne al perfil un nombre descriptivo y, a continuación, modifique el Esquema de autenticación seleccionando el icono de edición “lápiz”. Vaya al directorio LoginSchema, resalte SingleAuthCaptcha.xmly elija Select.
A continuación, cree una etiqueta de directiva de autenticación para el esquema Captcha. Para ello, vaya a Seguridad > AAA - Tráfico de aplicaciones > Directivas > Autenticación > Directivas avanzadas > Etiqueta de directiva y seleccione “Agregar”. Asigne al PL un nombre descriptivo y seleccione el esquema de inicio de sesión captcha creado previamente. Enlazar la directiva de acción LDAP requerida.
Nota:
En este ejemplo se reutiliza una acción de autenticación LDAP creada anteriormente.
Cree otra etiqueta de directiva seleccionando “Agregar”. Asigne a este PL un nombre descriptivo y establezca el esquema de inicio de sesión en LSCHEMA_INT. A continuación, enlazar las dos directivas de autenticación NO_AUTHN creadas anteriormente.
Por último, establezca el siguiente factor de la directiva de autenticación creada anteriormente como esta etiqueta de directiva de verificación de reputación de IP. Ya está enlazado a un servidor virtual de autenticación o Gateway. Resalte la directiva de autenticación, seleccione “modificar enlace” y, a continuación, establezca la nueva etiqueta de directiva como el campo ‘Seleccionar siguiente factor’.
Resumen
Citrix ADC proporciona muchas protecciones de seguridad integradas que protegen los servidores virtuales de Gateway o Autenticación que se ejecutan en el mismo dispositivo. Estas protecciones no afectan a los usuarios típicos cuando intentan iniciar sesión en Citrix Gateway.
Referencias
Para obtener información adicional y opciones de configuración, consulte los siguientes artículos:
Introducción a Citrix Web Application Firewall - Documentación de productos Citrix: Introducción a Citrix Web Application Firewall
GuíaPoC de Citrix Web Application Firewall: guía de implementación de prueba de concepto para Citrix Web Application Firewall
Capacitación de Citrix sobre entrega y seguridad de aplicaciones - Capacitación de Citrix Education para entrega y seguridad de aplicaciones
Introducción a Citrix ADC - Documentos de productos Citrix: Introducción a Citrix ADC - Flujo de paquetes
Reputación de IP - Documentación de productos Citrix: Reputación de IP
Administración de bots - Documentación de productos Citrix: Administración de bots
Detección de bots - Documentos de productos Citrix: Detección de bots
Autenticación nFactor - Documentos de productos Citrix: Autenticación nFactor
Citrix ADC - Hoja de referencia de nFactor Basics - Citrix Tech Zone: Diagramas y carteles Citrix ADC - Hoja de referencia de nFactor Basics
CTX216091 : soporte para Re-captcha con nFactor
nFactor for Citrix Gateway with Push Token : guía de implementación de prueba de concepto para tokens push TOTP para Citrix Gateway