Citrix ADC

Configuración y uso de la función de aprendizaje

La función de aprendizaje es un filtro de patrón repetitivo que observa la actividad en un sitio web o aplicación protegida por Web App Firewall, para determinar qué constituye la actividad normal en ese sitio web o aplicación. A continuación, genera una lista de hasta 2000 reglas o excepciones sugeridas (relajaciones) para cada comprobación de seguridad que incluyen la función de aprendizaje. A los usuarios normalmente les resulta más fácil configurar las relajaciones mediante el uso de la función de aprendizaje que introduciendo las relajaciones necesarias manualmente.

Las comprobaciones de seguridad que admiten la función de aprendizaje son:

  • Comprobar URL de inicio
  • Comprobación de coherencia de cookies
  • Comprobación de coherencia del campo
  • Comprobación Formatos de campo
  • Comprobación de etiquetado de formularios CSRF
  • Comprobación de inyección HTML SQL
  • Comprobación de scripts HTML entre sitios
  • Comprobación de denegación de servicio XML
  • Comprobación de datos adjuntos XML
  • Comprobación de interoperabilidad de servicios web

Realizas dos tipos de actividades diferentes cuando utilizas la función de aprendizaje. Primero, habilita y configura la función para usarla. Puede utilizar el aprendizaje en todo el tráfico a las aplicaciones web protegidas o puede configurar una lista de IP (denominada lista Agregar clientes de aprendizaje de confianza ) a partir de la cual la función de aprendizaje debe generar recomendaciones. En segundo lugar, una vez que la función se haya habilitado y haya procesado cierta cantidad de tráfico a sus sitios web protegidos, revise la lista de reglas y relajaciones sugeridas (reglas aprendidas) y marque cada una con una de las siguientes designaciones:

  • Modificar e implementar. La regla se inserta en el cuadro de diálogo Modificar para que pueda modificarla y se implementa el formulario modificado.
  • Implementación. La regla aprendida no modificada se coloca en la lista de reglas o relajaciones para esta comprobación de seguridad.
  • Omitir. La regla aprendida se coloca en una lista de reglas o relajaciones que no se implementan. La regla aprendida se elimina cuando se omite. Sin embargo, como no se agregan a las relajaciones, es posible que vuelvan a aprender.

El aprendizaje no se realiza solo cuando existen relajaciones, excepto las reglas de formato de campo. Cuando se omiten las reglas, solo se eliminan de la base de datos aprendida. Como no se agregan relajaciones, es posible que se vuelvan a aprender. Cuando se implementan las reglas, se eliminan de la base de datos aprendida y también se agregan relajaciones para las reglas. A medida que se agregan relajaciones, no volverían a aprenderse. Para la protección del formato de campo, el aprendizaje se realiza independientemente de las relajaciones.

Aunque puede utilizar la interfaz de línea de comandos para la configuración básica de la función de aprendizaje, la función está diseñada principalmente para la configuración a través del asistente Web App Firewall o la GUI. Solo puede realizar una configuración limitada de la función de aprendizaje mediante la línea de comandos.

El asistente integra la configuración de las funciones de aprendizaje con la configuración de Web App Firewall en su conjunto y, por lo tanto, es el método más sencillo para configurar esta función en un nuevo dispositivo Citrix ADC o cuando se administra una configuración simple de Web App Firewall. El visualizador GUI y la interfaz manual proporcionan acceso directo a todas las reglas aprendidas para todas las comprobaciones de seguridad y, por lo tanto, a menudo son preferibles cuando debe revisar las reglas aprendidas para muchas comprobaciones de seguridad.

La base de datos de aprendizaje tiene un tamaño de 20 MB, que se alcanza después de que se generan aproximadamente 2000 reglas o relajaciones aprendidas por comprobación de seguridad para la que está habilitado el aprendizaje. Si no revisa y aprueba o ignora las reglas aprendidas con regularidad y se alcanza este límite, se registra un error en el registro de NetScaler y no se generarán más reglas aprendidas hasta que revise las reglas aprendidas y las relajaciones existentes.

Si el aprendizaje se detiene porque la base de datos ha alcanzado su límite de tamaño, puede reiniciar el aprendizaje revisando las reglas y relajaciones aprendidas existentes o restableciendo los datos de aprendizaje. Una vez que se aprueban o ignoran las reglas o relajaciones aprendidas, se eliminan de la base de datos. Después de restablecer los datos de aprendizaje, todos los datos de aprendizaje existentes se eliminan de la base de datos y se restablecen a su tamaño mínimo. Cuando la base de datos tiene un tamaño inferior a 20 MB, el aprendizaje se reinicia automáticamente.

Para configurar los ajustes de aprendizaje mediante la interfaz de línea de comandos

Especifique el perfil de Web App Firewall que se va a configurar y, para cada comprobación de seguridad que desee incluir en ese perfil, especifique el umbral mínimo o el umbral porcentual. El umbral mínimo es un número entero que representa el número mínimo de sesiones de usuario que Web App Firewall debe procesar antes de aprender una regla o relajación (por defecto: 1). El umbral porcentual es un número entero que representa el porcentaje de sesiones de usuario en las que el Web App Firewall debe observar un patrón particular (URL, cookie, campo, archivo adjunto o infracción de reglas) antes de que aprenda una regla o relajación (por defecto: 0). Utilice los siguientes comandos:

  • set appfw learningsettings <profileName> [-startURLMinThreshold <positive_integer>] [-startURLPercentThreshold <positive_integer>] [-cookieConsistencyMinThreshold <positive_integer>] [-cookieConsistencyPercentThreshold <positive_integer>] [-CSRFtagMinThreshold <positive_integer>] [-CSRFtagPercentThreshold <positive_integer>] [-fieldConsistencyMinThreshold <positive_integer>] [-fieldConsistencyPercentThreshold <positive_integer>] [-crossSiteScriptingMinThreshold <positive_integer>] [-crossSiteScriptingPercentThreshold <positive_integer>] [-SQLInjectionMinThreshold <positive_integer>] [-SQLInjectionPercentThreshold <positive_integer>] [-fieldFormatMinThreshold <positive_integer>] [-fieldFormatPercentThreshold <positive_integer>] [-XMLWSIMinThreshold <positive_integer>] [-XMLWSIPercentThreshold <positive_integer>] [-XMLAttachmentMinThreshold <positive_integer>] [-XMLAttachmentPercentThreshold <positive_integer>]
  • save ns config

Ejemplo

El siguiente ejemplo habilita y configura la configuración de aprendizaje en el perfil o en la comprobación de seguridad HTML SQL Injection. Esta es una configuración de aprendizaje del banco de pruebas inicial adecuada, donde usted tiene un control total sobre el tráfico que se envía a Web App Firewall.

set appfw learningsettings pr-basic -SQLInjectionMinThreshold 10
set appfw learningsettings pr-basic -SQLInjectionPercentThreshold 70
save ns config
<!--NeedCopy-->

Para restablecer la configuración de aprendizaje a sus valores predeterminados mediante la interfaz de línea de comandos

Para eliminar cualquier configuración personalizada de los ajustes de aprendizaje para el perfil especificado y la comprobación de seguridad, y devolver la configuración de aprendizaje a sus valores predeterminados, en el símbolo del sistema escriba los siguientes comandos:

  • unset appfw learningsettings <profileName> [-startURLMinThreshold ] [-startURLPercentThreshold] [-cookieConsistencyMinThreshold] [-cookieConsistencyPercentThreshold] [-CSRFtagMinThreshold ] [-CSRFtagPercentThreshold ] [-fieldConsistencyMinThreshold ] [-fieldConsistencyPercentThreshold ] [-crossSiteScriptingMinThreshold ] [-crossSiteScriptingPercentThreshold ] [-SQLInjectionMinThreshold ] [-SQLInjectionPercentThreshold ] [-fieldFormatMinThreshold] [-fieldFormatPercentThreshold ] [-XMLWSIMinThreshold ] [-XMLWSIPercentThreshold ] [-XMLAttachmentMinThreshold ] [-XMLAttachmentPercentThreshold]
  • save ns config

Para mostrar la configuración de aprendizaje de un perfil mediante la interfaz de línea de comandos

En el símbolo del sistema, escriba el siguiente comando:

show appfw learningsettings <profileName>

Para mostrar reglas o relajaciones aprendidas sin revisar para un perfil mediante la interfaz de línea de comandos

En el símbolo del sistema, escriba el siguiente comando:

show appfw learningdata <profileName> <securityCheck>

Para eliminar reglas o relajaciones aprendidas no revisadas específicas de la base de datos de aprendizaje mediante la interfaz de línea de comandos

En el símbolo del sistema, escriba el siguiente comando:

rm appfw learningdata <profileName> (-startURL <expression> | -cookieConsistency <string> | (-fieldConsistency <string> <formActionURL>) | (-crossSiteScripting <string> <formActionURL>) | (-SQLInjection <string> <formActionURL>) | (-fieldFormat <string><formActionURL>) | (-CSRFTag <expression> <CSRFFormOriginURL>) | -XMLDoSCheck <expression> | -XMLWSICheck <expression> | -XMLAttachmentCheck <expression>) [-TotalXMLRequests]

Ejemplo

El siguiente ejemplo elimina todas las relajaciones aprendidas no revisadas del perfil, la comprobación de seguridad HTML SQL Injection, que se aplican al campo de formulario de apellido.

rm appfw learningdata pr-basic -SQLInjection LastName
<!--NeedCopy-->

Para eliminar todos los datos aprendidos no revisados mediante la interfaz de línea de comandos

En el símbolo del sistema, escriba el siguiente comando:

reset appfw learningdata

Para exportar datos de aprendizaje mediante la interfaz de línea de comandos

En el símbolo del sistema, escriba el siguiente comando:

export appfw learningdata <profileName> <securitycheck>[-target <string>]

Ejemplo

El siguiente ejemplo exporta las relajaciones aprendidas para el perfil y la comprobación de seguridad HTML SQL Injection a un archivo con formato de valores separados por comas (CSV) en el directorio /var/learnt_data/ con el nombre de archivo especificado en el parámetro -target.

export appfw learningdata pr-basic SQLInjection -target sqli_ld
<!--NeedCopy-->

Para configurar la función de aprendizaje mediante la interfaz gráfica de usuario

  1. Vaya a Seguridad > Web App Firewall > Perfiles.
  2. En el panel Perfiles, seleccione el perfil y, a continuación, haga clic en Modificar.
  3. Haga clic en Reglas aprendidas en la sección Configuración avanzada.
  4. En la sección Reglas aprendidas, seleccione una comprobación de seguridad y haga clic en Configuración.
  5. En la página Configuración de comprobación de seguridad, establezca los siguientes parámetros:

    1. Umbral de número mínimo. Según la configuración de aprendizaje de la comprobación de seguridad que esté configurando, el umbral de número mínimo puede referirse al número mínimo de sesiones de usuario totales que se deben observar, el número mínimo de solicitudes que deben observarse o el número mínimo de veces que se debe observar un campo de formulario específico, antes de que se genere una relajación aprendida. Predeterminado: 1

    2. Porcentaje de veces el umbral. Según la configuración de aprendizaje de la comprobación de seguridad que esté configurando, el umbral de porcentaje de veces puede referirse al porcentaje del total de sesiones de usuarios observadas que infringió la comprobación de seguridad, el porcentaje de solicitudes o el porcentaje de veces que un campo de formulario coincidió con un tipo de campo en particular, antes de se genera la relajación aprendida. Predeterminado: 0

  6. Haga clic en Aceptar y cerrar.

    Sección de reglas aprendidas

  7. Haga clic en Eliminar todos los datos aprendidos para eliminar todos los datos aprendidos y restablecer la función de aprendizaje, de modo que debe iniciar sus observaciones nuevamente desde el principio.

    Nota:

    Este botón elimina solo las recomendaciones aprendidas que no se han revisado y se han aprobado u omitido. No elimina las relajaciones aprendidas que se han aceptado e implementado.

  8. Para restringir el motor de aprendizaje al tráfico de un conjunto específico de IP, haga clic en Clientes de aprendizaje de confianzay agregue las direcciones IP que quiere utilizar a la lista.
    1. Para agregar una dirección IP o un rango de direcciones IP a la lista de clientes de aprendizaje de confianza, haga clic en Agregar.
    2. En el cuadro de diálogo Agregar clientes de aprendizaje de confianza, en el cuadro de lista IP de clientes de confianza, escriba la dirección IP o un rango de direcciones IP en formato CIDR.
    3. En el área de texto Comentarios, escriba un comentario que describa esta dirección o rango IP.
    4. Haga clic en Crear para agregar su nueva dirección IP o rango a la lista.
    5. Para modificar una dirección o rango IP existente, haga clic en la dirección IP o el rango y, a continuación, haga clic en Abrir. Excepto por el nombre, el cuadro de diálogo que aparece es idéntico al cuadro de diálogo Agregar clientes de aprendizaje de confianza.
    6. Para inhabilitar o habilitar una dirección o rango IP, pero dejarlo en la lista, haga clic en la dirección o rango IP y, a continuación, haga clic en Inhabilitar o Habilitar, según corresponda.
    7. Para eliminar una dirección IP o un rango por completo, haga clic en la dirección IP o el rango y, a continuación, haga clic en Eliminar.
  9. Haga clic en Cerrar para volver a la página Configurar perfil de Web App Firewall.
  10. Haga clic en Listo.

Para revisar las reglas o relajaciones aprendidas mediante la interfaz gráfica de usuario

  1. Vaya a Seguridad > Web App Firewall > Perfiles.
  2. En el panel Perfiles, seleccione el perfil y, a continuación, haga clic en Modificar.
  3. Haga clic en Reglas aprendidas en la sección Configuración avanzada.
  4. En la sección Reglas aprendidas, seleccione una comprobación de seguridad y haga clic en Configuración.
  5. Para revisar los datos aprendidos jerárquicamente como un árbol ramificado, lo que le permite elegir patrones generales que coincidan con muchos de los patrones aprendidos, haga clic en Visualizador.
  6. Si ha optado por revisar los patrones aprendidos reales, lleve a cabo los siguientes pasos.
  7. Seleccione la primera relajación aprendida y elija cómo gestionarla.

    1. Para modificar y, a continuación, aceptar la relajación, haga clic en Modificar e implementar, modifique la expresión regular de relajación y, a continuación, haga clic en Aceptar.
    2. Para aceptar la relajación sin modificaciones, haga clic en Implementar.
    3. Para eliminar la relajación de la lista sin implementarla, haga clic en Omitir.
    4. Repita el paso anterior para revisar cada relajación aprendida adicional.
  8. Haga clic en Cerrar para volver al cuadro de diálogo Administrar reglas aprendidas.
  9. Haga clic en Listo.

    Sección de reglas aprendidas con visualizador