Citrix ADC

Configuración y uso de la función Aprendizaje

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

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

  • Iniciar comprobación de URL
  • Comprobación de coherencia de cookies
  • Comprobación de coherencia de campos de formulario
  • Comprobación Formatos de campo
  • Comprobación de etiquetado de formularios CSRF
  • Comprobación de inyección HTML SQL
  • Comprobación de scripts entre sitios HTML
  • Verificación de denegación de servicio XML
  • Comprobación de datos adjuntos XML
  • Comprobación de interoperabilidad de servicios web

Al utilizar la función de aprendizaje, se realizan dos tipos diferentes de actividades. Primero, habilite y configure 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, después de que la función se haya habilitado y haya procesado una cierta cantidad de tráfico a los sitios web protegidos, revise la lista de reglas y relajación sugeridas (reglas aprendidas) y marque cada una con una de las siguientes designaciones:

  • Modificar e implementar. La regla se extrae del cuadro de diálogo Modificar para que pueda modificarla y se implementa el formulario modificado.
  • Implementar. La regla aprendida no modificada se coloca en la lista de reglas o relajaciones para esta comprobación de seguridad.
  • Ignorar. 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 se vuelvan a aprender.

El aprendizaje no se realiza solo cuando las relajaciones están en su lugar, a excepción de las reglas de formato de campo. Cuando se omiten reglas, solo se eliminan de la base de datos aprendida. Como las relajaciones no se agregan, es posible que se aprendan de nuevo. Cuando se implementan reglas, se eliminan de la base de datos aprendida y también se agregan relajación para las reglas. A medida que se agregan relajantes, no se aprenderían de nuevo. 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 mediante el Asistente de Web App Firewall o la GUI. Solo puede realizar una configuración limitada de la entidad 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 fácil para configurar esta función en un nuevo dispositivo Citrix ADC o al administrar una configuración simple de Web App Firewall. El visualizador de 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 reglas aprendidas para un gran número de comprobaciones de seguridad.

La base de datos de aprendizaje está limitada a 20 MB de tamaño, que se alcanza después de generar aproximadamente 2.000 reglas aprendidas o relajaciones por comprobación de seguridad para la que se habilita el aprendizaje. Si no revisa regularmente y aprueba o ignora reglas aprendidas y se alcanza este límite, se registra un error en el registro de NetScaler y no se generan 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 aprendidas y las relajaciones existentes o restableciendo los datos de aprendizaje. Una vez aprobadas o ignoradas las reglas aprendidas o las relajaciones, se eliminan de la base de datos. Después de restablecer los datos de aprendizaje, todos los datos de aprendizaje existentes se quitan 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 parámetros 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 quiera incluir en ese perfil, especifique el umbral mínimo o el umbral de porcentaje. El umbral mínimo es un entero que representa el número mínimo de sesiones de usuario que el Web App Firewall debe procesar antes de aprender una regla o relajación (predeterminado: 1). El umbral de porcentaje es un entero que representa el porcentaje de sesiones de usuario en las que el Web App Firewall debe observar un patrón determinado (URL, cookie, campo, datos adjuntos o infracción de reglas) antes de aprender una regla o relajación (predeterminado: 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

En el ejemplo siguiente se habilita y configura la configuración de aprendizaje en el perfil pr-basic para la comprobación de seguridad HTML SQL Injection. Se trata de una configuración de aprendizaje inicial adecuada, en la que tiene control total sobre el tráfico que se envía al Web App Firewall.

set appfw learningsettings pr-basic -SQLInjectionMinThreshold 10
set appfw learningsettings pr-basic -SQLInjectionPercentThreshold 70
save ns config

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

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

  • 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 aprendidas no revisadas o relajaciones 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 quitar reglas aprendidas o relajaciones específicas no revisadas 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

En el ejemplo siguiente se quitan todas las relajantes aprendidas no revisadas para el perfil pr-basic, comprobación de seguridad HTML SQL Injection, que se aplican al campo de formulario LastName.

rm appfw learningdata pr-basic -SQLInjection LastName

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

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

export appfw learningdata pr-basic SQLInjection -target sqli_ld

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 la ficha Aprendizaje. En la parte superior de la ficha Aprendizaje hay una lista de las comprobaciones de seguridad que están disponibles en el perfil actual y que admiten la función de aprendizaje.
  4. Para configurar los umbrales de aprendizaje, seleccione una comprobación de seguridad y, a continuación, escriba los valores apropiados en los siguientes cuadros de texto:

    Umbral de número mínimo. Dependiendo de 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 totales de usuario que se deben observar, el número mínimo de solicitudes que se deben observar 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

    Porcentaje de veces umbral. Dependiendo de la configuración de aprendizaje de la comprobación de seguridad que esté configurando, el porcentaje de veces umbral puede hacer referencia al porcentaje del total de sesiones de usuario observadas que infringieron la comprobación de seguridad, el porcentaje de solicitudes o el porcentaje de veces que un campo de formulario coincide con un tipo de campo determinado, antes de un aprendida relajación se genera. Predeterminado: 0

  5. Para eliminar todos los datos aprendidos y restablecer la función de aprendizaje, de modo que deba volver a iniciar sus observaciones desde el principio, haga clic en Quitar todos los datos aprendidos. Nota: Este botón elimina solo las recomendaciones aprendidas que no se han revisado y que se han aprobado u omitido. No elimina las relajaciones aprendidas que se han aceptado e implementado.
  6. Para restringir el motor de aprendizaje al tráfico de un conjunto específico de IP, haga clic en Clientes de aprendizaje de confianza y agregue las direcciones IP que quiera utilizar a la lista.
    1. Para agregar una dirección IP o un intervalo de direcciones IP a la lista Clientes de aprendizaje de confianza, haga clic en Agregar.
    2. En el cuadro de diálogo Agregar clientes de aprendizaje de confianza, cuadro de lista IP de clientes de confianza, escriba la dirección IP o un intervalo de direcciones IP en formato CIDR.
    3. En el área de texto Comentarios, escriba un comentario que describa esta dirección IP o intervalo.
    4. Haga clic en Crear para agregar su nueva dirección IP o rango a la lista.
    5. Para modificar una dirección IP o intervalo existente, haga clic en la dirección IP o intervalo 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 IP o un intervalo, pero dejarlo en la lista, haga clic en la dirección IP o intervalo y, a continuación, haga clic en Inhabilitar o Habilitar, según corresponda.
    7. Para quitar completamente una dirección IP o un intervalo, haga clic en la dirección IP o intervalo y, a continuación, haga clic en Quitar.
  7. Haga clic en Cerrar para volver al cuadro de diálogo Configurar perfil de Web App Firewall.
  8. Haga clic en Cerrar para cerrar el cuadro de diálogo Configurar perfil de Web App Firewall y volver a la pantalla Perfil de Web App Firewall.

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

  1. Vaya a Seguridad > Web App Firewall > Perfiles.
  2. Seleccione la comprobación de seguridad para la que quiere revisar las reglas aprendidas o las relajaciones y, a continuación, haga clic en Administrar reglas.
  3. En el cuadro de diálogo Administrar reglas aprendidas, elija cómo quiere revisar las reglas aprendidas.
    • Para revisar los patrones aprendidos reales como se muestran en la ventana, no haga nada y continúe con el siguiente paso.
    • Para revisar los datos aprendidos jerárquicamente como un árbol de ramificación, lo que le permite elegir patrones generales que coincidan con muchos de los patrones aprendidos, haga clic en Visualizador.
  4. Si ha elegido revisar los patrones aprendidos reales, lleve a cabo los siguientes pasos.

    1. Seleccione la primera relajación aprendida y elija cómo manejarla.

      • Para modificar y 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.
      • Para aceptar la relajación sin modificaciones, haga clic en Implementar.
      • Para eliminar la relajación de la lista sin implementarla, haga clic en Omitir.
    2. Repita el paso anterior para revisar cada relajación aprendida adicional.

  5. Si ha elegido utilizar el Visualizador de aprendizaje, lleve a cabo los siguientes pasos.
    1. En la visualización jerárquica de ramificaciones, seleccione un nodo que contenga un patrón aprendido y elija cómo controlarlo.

      El área de pantalla situada debajo de la estructura de árbol, en Regex del nodo seleccionado, muestra una expresión generalizada que coincide con todos los patrones de ese nodo. Si quiere mostrar una expresión que coincida solo con una de las ramas o con una de las hojas, seleccione esa rama o hoja.

      • Para modificar y aceptar la relajación aprendida, haga clic en Modificar e implementar, modifique la expresión regular de relajación y, a continuación, haga clic en Aceptar.

      • Para aceptar la relajación sin modificaciones, haga clic en Implementar.

      • Para quitar la modificación de la lista sin implementarla, haga clic en Omitir.

    2. Repita el paso anterior para revisar otras partes de la visualización.

  6. Haga clic en Cerrar para volver al cuadro de diálogo Administrar reglas aprendidas.
  7. Haga clic en Cerrar para volver al cuadro de diálogo Configurar perfil de Web App Firewall.
  8. Haga clic en Cerrar para cerrar el cuadro de diálogo Configurar perfil de Web App Firewall y volver a la pantalla Perfil de Web App Firewall.