Citrix ADC

Comprobación de formatos de campo

La comprobación Formatos de campo comprueba los datos que los usuarios envían a los sitios web en formularios web. Examina tanto la longitud como el tipo de datos para asegurarse de que son apropiados para el campo de formulario en el que aparecen. Si el Web App Firewall detecta datos de formularios web inapropiados en una solicitud de usuario, bloquea la solicitud.

Al impedir que un atacante envíe datos de formulario web inapropiados al sitio web, la comprobación Formatos de campo evita determinados tipos de ataques en el sitio web y los servidores de base de datos. Por ejemplo, si un campo concreto espera que el usuario introduzca un número de teléfono, la comprobación Formatos de campo examina la entrada enviada por el usuario para asegurarse de que los datos coinciden con el formato de un número de teléfono. Si un campo concreto espera un nombre, la comprobación Formatos de campo garantiza que los datos de ese campo sean del tipo y la longitud adecuados para un nombre. Hace lo mismo para cada campo de formulario que configura para proteger.

Esta comprobación solo se aplica a las solicitudes HTML. No se aplica a las solicitudes XML. Puede configurar comprobaciones de formato de campo en perfiles HTML o perfiles Web 2.0 para inspeccionar la carga útil HTML para proteger las aplicaciones. El Web App Firewall también admite la protección de comprobación de formato de campo para aplicaciones de Google Web Toolkit (GWT).

La comprobación Formatos de campo requiere que habilite una o varias acciones. El Web App Firewall examina las entradas enviadas y aplica las acciones especificadas.

Nota

Las reglas de formato de campo están ajustando las reglas. Agregarlos a la lista de relajación de los datos aprendidos actúa como una regla de bloqueo.

Para relajar las reglas de formato de campo, quite “nombre de campo” particular de la lista de relajaciones de formato de campo.

Tiene la opción de establecer los formatos de campo predeterminados para especificar Tipo de campo y la longitud mínima y máxima de los datos esperados en cada campo de formulario de cada formulario web que quiera proteger. Puede implementar reglas de relajación para configurar un Formato de campo para un campo individual de un formulario específico. Se pueden agregar varias reglas para especificar el nombre del campo, la dirección URL de la acción y los formatos de campo. Especifique Formatos de campo para aceptar diferentes tipos de entradas en diferentes campos de formulario. La función de aprendizaje puede proporcionar recomendaciones para las reglas de relajación.

Acciones de formato de campo: Puede habilitar acciones Bloquear, Registrar, Estadísticas y Aprender. Al menos una de estas acciones debe estar habilitada para activar la protección Comprobación de formato de campo.

  • Bloque. Si habilita el bloqueo, la acción de bloqueo se activa si la entrada no se ajusta al formato de campo especificado. Si se ha configurado una regla para el campo de destino, la entrada se comprueba con la regla especificada. De lo contrario, se comprueba con la especificación de formato de campo predeterminada. Cualquier discrepancia en el tipo de campo o la especificación de longitud mínima/máxima provoca el bloqueo de la solicitud.
  • Registro. Si habilita la función de registro, la comprobación Formato de campo genera mensajes de registro que indican las acciones que realiza. Puede supervisar los registros para determinar si las respuestas a las solicitudes legítimas se están bloqueando. Un gran aumento en el número de mensajes de registro puede indicar intentos maliciosos de lanzar un ataque.
  • Estadísticas. Si está activada, la función de estadísticas recopila estadísticas sobre infracciones y registros. Un aumento inesperado en el contador de estadísticas podría indicar que su aplicación está siendo atacada, o es posible que tenga que volver a visitar la configuración para ver si el formato de campo especificado es demasiado restrictivo.
  • Aprende. Si no está seguro de qué tipos de campo o valores de longitud mínima y máxima pueden ser ideales para su aplicación, puede utilizar la función de aprendizaje para generar recomendaciones basadas en los datos aprendidos. El motor de aprendizaje de Web App Firewall supervisa el tráfico y proporciona recomendaciones de formato de campo basadas en los valores observados. Para obtener un beneficio óptimo sin comprometer el rendimiento, es posible que quiera habilitar la opción de aprendizaje durante un corto tiempo para obtener una muestra representativa de las reglas y, a continuación, implementar las reglas e inhabilitar el aprendizaje. Nota: El motor de aprendizaje de Web App Firewall puede distinguir solo los primeros 128 bytes del nombre. Si un formulario tiene varios campos con nombres que coinciden con los primeros 128 bytes, es posible que el motor de aprendizaje no pueda distinguir entre ellos. Del mismo modo, la regla de relajación implementada podría relajar inadvertidamente todos esos campos.

Formato de campo predeterminado: Además de configurar las acciones, puede configurar el formato de campo predeterminado para especificar el tipo de datos que se espera en todos los campos de formulario para la aplicación. Se puede seleccionar un tipo de campo como tipo de formato de campo. Los parámetros Longitud mínima y Longitud máxima se pueden utilizar para especificar la longitud de las entradas permitidas. Como alternativa a Tipos de campo, puede utilizar los mapas de caracteres para especificar lo que está permitido en un campo (excepto en implementaciones de clúster).

  • Tipo de campo: Los tipos de campo se denominan expresión a la que se asignan valores de prioridad asignados. Las expresiones de tipo de campo especifican las entradas permitidas y se comparan con los datos enviados para determinar si los valores recibidos son coherentes con los valores permitidos. Los tipos de campo se comprueban en el orden de sus números de prioridad. Un número más bajo indica una prioridad más alta. El Web App Firewall le da la opción de agregar sus propios tipos de campo y asignarles las prioridades que quiera. El valor de prioridad puede oscilar entre 0 y 64000. Se proporcionan los siguientes tipos de campo integrados para ayudar a simplificar el proceso de configuración:

     > sh appfw fieldtype
     1)      Name:  integer           Regex:  "^[+-]?[0-9]+$"
                     Priority:  30            Comment:  Integer
                     Builtin:  IMMUTABLE
     2)      Name:  alpha             Regex:  "^[a-zA-Z]+$"
                     Priority:  40            Comment:  "Alpha characters"
                  Builtin:  IMMUTABLE
     3)      Name:  alphanum          Regex:  "^[a-zA-Z0-9]+$"
                     Priority:  50            Comment:  "Alpha-numeric characters"
                     Builtin:  IMMUTABLE
     4)      Name:  nohtml            Regex:  "^[^&<>]\*$"
                     Priority:  60            Comment:  "Not HTML"
                     Builtin:  IMMUTABLE
     5)      Name:  any               Regex:  "^.\*$"
                  Priority:  70            Comment:  Anything
                     Builtin:  IMMUTABLE
         Done
     >
    

    Nota: Los tipos de campo integrados son INMUTABLES. No se pueden modificar ni eliminar. Cualquier tipo de campo que agregue es MODIFICABLE. Puede modificarlos o eliminarlos.

    Configurar un tipo de campo como formato de campo predeterminado puede ser útil cuando tenga una expresión PCRE que pueda identificar las entradas válidas en todos o en la mayoría de los campos de formulario de la aplicación y excluir las entradas no válidas. Por ejemplo, si se espera que todas las entradas de los formularios de aplicación contengan solo números y letras, es posible que quiera utilizar el alfanum de tipo de campo integrado como el tipo de campo predeterminado. Cualquier carácter no alfanumérico, como una barra invertida () o punto y coma; en la entrada desencadenará una infracción. También puede agregar sus propios tipos de campo personalizados y usarlos para configurar los formatos de campo predeterminados. Por ejemplo, si quiere convertir en minúsculas “x”, “y” y “z” los únicos caracteres alfa permitidos, puede configurar un tipo de campo personalizado con la expresión regular “^[x-z]+$”. Puede asignarle una prioridad más alta (número de prioridad inferior) que los tipos de campo integrados y usarlo como el tipo de campo predeterminado.

  • Longitud mínima: Longitud mínima de datos predeterminada asignada a los campos de formulario en formularios web que no tienen una configuración explícita. Este parámetro se establece en 0 de forma predeterminada, lo que permite al usuario dejar el campo en blanco. Cualquier configuración superior obliga a los usuarios a rellenar el campo.

    Precaución: Si el valor de longitud mínima es 0 pero el Tipo de campo es entero, alfa o alfanum, se bloquea una solicitud si algún campo de entrada se deja vacío, a pesar de la configuración de longitud mínima. Esto se debe a que la expresión regular para estos tipos de campo contiene un carácter +, lo que significa uno o más caracteres. Distinguir un entero de un carácter alfa requiere al menos un carácter.

  • Longitud máxima: Longitud máxima de datos predeterminada asignada a campos de formulario en formularios web que no tienen una configuración explícita. Este parámetro se establece en 65535 de forma predeterminada.

    Nota: Caracteres vs bytes. Las longitudes mínima y máxima de los formatos de campo representan el número de bytes, no el número de caracteres. Los idiomas que tienen una representación de caracteres superior a un byte pueden hacer que el límite se supere con menos caracteres que el número configurado para el valor máximo. Por ejemplo, con la representación de caracteres de doble byte, el valor máximo de 9 permite no más de 4 caracteres. Consejo: La GUI le permite cortar y pegar caracteres UTF-8 directamente en la GUI sin tener que convertirlos en hexadecimal.

  • Mapas de caracteres: Además de recomendar los tipos de campo, el motor de aprendizaje de Web App Firewall ofrece una opción adicional, Usar mapas de caracteres, para implementar las reglas de comprobación de formato. Un mapa de caracteres es un conjunto de todos los caracteres permitidos en un campo de formulario determinado. Puede ajustar la especificación de formato de campo para permitir o no permitir caracteres específicos mediante mapas de caracteres. Se genera un mapa de caracteres independiente para cada campo de formulario. Los caracteres alfa y numérico se tratan de manera diferente en los mapas de caracteres. Si se ve algún carácter alfa en la entrada, la expresión PCRE recomendada permitirá todos los caracteres alfa [A-za-z]en el Mapa de caracteres. Del mismo modo, si se incluye algún dígito, se permitirán todos los dígitos [0-9]. Los caracteres no imprimibles se especifican mediante el componente fijo x. Para las recomendaciones de mapa de caracteres, solo se tienen en cuenta caracteres individuales con valores entre 0 y 255.

    Un mapa de caracteres puede ser más específico que la recomendación correspondiente de tipo de campo. En algunas situaciones, los mapas de caracteres pueden ser una mejor opción, ya que proporcionan un control más estricto sobre el conjunto de caracteres permitidos como entradas. Los mapas de caracteres implementados se muestran como cadenas que comienzan con el prefijo “CM” seguido de dígitos. La prioridad de los mapas de caracteres comienza en 10000. Al igual que con los tipos de campo agregados por el usuario, puede agregar, modificar o eliminar un mapa de caracteres. Los mapas de caracteres que se utilizan actualmente en las reglas implementadas no se pueden modificar ni quitar.

    Nota: Los mapas de caracteres no se admiten en las implementaciones de clúster.

Nota

Cuando agrega una regla de formatos de campo con cualquier tipo de campo incorporado y usa un mapa de caracteres en lugar de Tipo de campo y lo guarda, los cambios no se guardan y la regla sigue mostrándose con Tipo de campo.

Cuando el mapa de caracteres coincide con uno de los tipos integrados, el tipo de campo se reutiliza en lugar de crear un nuevo mapa de caracteres.

Usar la línea de comandos para configurar la comprobación de formato de campo

En la interfaz de línea de comandos, puede usar el comando add appfw fieldtype para agregar un nuevo tipo de campo. Puede utilizar el comando set appfw profile o el comando add appfw profile para configurar la comprobación Formato de campo y especificar las acciones que quiere realizar. Puede utilizar el comando unset appfw profile para revertir la configuración configurada a sus valores predeterminados. Para especificar una regla Formato de campo, utilice el comando bind appfw para enlazar un tipo de campo a un campo de formulario y a la dirección URL de acción, junto con las especificaciones de longitud mínima y máxima.

Para agregar, quitar o ver un tipo de campo mediante la línea de comandos:

Utilice el comando add para agregar un tipo de campo. Debe especificar el nombre, la expresión regular y la prioridad al agregar un nuevo tipo de campo. También tiene la opción de agregar un Comentario. Puede utilizar el comando show para mostrar los tipos de campo configurados. También puede eliminar un tipo de campo mediante el comando remove, que solo requiere el nombre del tipo de campo.

add [appfw] fieldType <name> <regex> <priority> [-comment <string>]

donde:

<regex> es una expresión regular

<priority> es un positive_integer

Ejemplo:

add fieldtype "Cust_Zipcode" "^[0-9]{5}[-][0-9]{4}$" 4

-  show [appfw] fieldType [<name>]

    Example: sh fieldtype

    sh appfw fieldtype

    sh appfw fieldtype cust_zipcode

-  `rm [appfw] fieldType <name>`

    Example: rm fieldtype cusT_ziPcode

    `rm appfw fieldtype cusT_ziPcode`

Nota: Como se muestra arriba, el uso de “appfw” en el comando es opcional. Por ejemplo, “Add fieldType” o “Add appfw fieldType” son opciones válidas. Los nombres de los tipos de campo no distinguen entre mayúsculas y minúsculas debido a la normalización. Como se muestra en los ejemplos anteriores, Cust_Zipcode, cust_zipcode y Cust_zipCode hacen referencia al mismo tipo de campo.

Para configurar una comprobación de formato de campo mediante la línea de comandos

Utilice el comando set appfw profile o el comando add appfw profile, de la siguiente manera:

  • set appfw profile <name> -fieldFormatAction (([block] [learn] [log] [stats]) | [none])
  • set appfw profile <name>-defaultFieldFormatType <string>
  • set appfw profile <name> -defaultFieldFormatMinLength <integer>
  • set appfw profile <name> -defaultFieldFormatMaxLength <integer>

Para configurar una regla de relajación Formato de campo mediante la línea de comandos

bind appfw profile <name> (-fieldFormat <string> <formActionURL>  <fieldType>
[-fieldFormatMinLength <positive_integer>]  [-fieldFormatMaxLength <positive_integer>]
[-isRegex ( REGEX | NOTREGEX )])

Ejemplo:

bind appfw profile pr_ffc -fieldFormat "login_name" ".*/login.php" integer -fieldformatMinLength 3 -FieldformatMaxlength 6

Uso de la GUI para configurar la comprobación de seguridad de los formatos de campo

En la GUI, puede administrar los tipos de campo. También puede configurar la comprobación de seguridad Formatos de campo en el panel del perfil asociado a la aplicación.

Para agregar, modificar o eliminar un tipo de campo mediante la interfaz gráfica de usuario

  1. Desplácese hasta el nodo Servidor de seguridad de aplicaciones. En Configuración, haga clic en Administrar tipos de campo para mostrar el cuadro de diálogo Configurar tipo de campo de firewall de aplicación.
  2. Haga clic en Agregar para agregar un nuevo tipo de campo. Siga las instrucciones de este panel y haga clic en Crear. También puede modificar o eliminar cualquier tipo de campo agregado por el usuario si no está siendo utilizado por una regla implementada.

Para agregar o modificar la comprobación de seguridad Formatos de campo mediante la interfaz gráfica de usuario

  1. Desplácese hasta Application Firewall > Perfiles, resalte el perfil de destino y haga clic en Modificar.

  2. En el panel Configuración avanzada, haga clic en Comprobaciones de seguridad.

    La tabla de comprobación de seguridad muestra los valores de acción configurados actualmente para todas las comprobaciones de seguridad. Tiene 2 opciones para la configuración:

    1. Si solo quiere habilitar o inhabilitar las acciones Bloquear, Registrar, Estadísticas y Aprender para Formatos de campo, puede activar o desactivar las casillas de verificación de la tabla, hacer clic en Aceptar y, a continuación, en Guardar y cerrar para cerrar el panel Comprobación de seguridad.
    2. Si quiere configurar opciones adicionales para esta comprobación de seguridad, haga doble clic en Formatos de campo o seleccione la fila y haga clic en Configuración de acción para mostrar las siguientes opciones para Formato de campo predeterminado:
      • Tipo de campo: Seleccione el tipo de campo que quiere configurar como tipo de campo predeterminado. Puede seleccionar los tipos de campo integrados y definidos por el usuario. Los mapas de caracteres implementados también se incluyen en la lista y se pueden seleccionar.

      • Longitud mínima: Especifique el número mínimo de caracteres que debe haber en cada campo. Valores posibles: 0-65535.

      • Longitud máxima: Especifique el número máximo de caracteres que debe haber en cada campo. Valores posibles: 1-65535.

        También puede modificar las acciones Bloquear, Registro, Estadísticas y Aprendizajeen el panel Configuración de formatos de campo.

    Después de realizar cualquiera de los cambios anteriores, haga clic en Aceptar para guardar los cambios y volver a la tabla Comprobaciones de seguridad. Puede proceder a configurar otras comprobaciones de seguridad si es necesario. Haga clic en Aceptar para guardar todos los cambios realizados en la sección Comprobaciones de seguridad y, a continuación, haga clic en Guardar y cerrar para cerrar el panel Comprobación de seguridad.

Para configurar una regla de relajación Formatos de campo mediante la interfaz gráfica de usuario

  1. Desplácese hasta Application Firewall > Perfiles, resalte el perfil de destino y haga clic en Modificar.

  2. En el panel Configuración avanzada, haga clic en Reglas de relajación. La tabla Reglas de relajación tiene una entrada Formatos de campo. Puede hacer doble clic, o seleccionar esta fila y hacer clic en el botón Modificar, para acceder al diálogo Reglas de relajación de formatos de campo. Puede realizar operaciones Agregar, Modificar, Eliminar, Habilitaro Desactivarpara reglas de relajación.

Para obtener una vista consolidada de todas las reglas de relajación, puede resaltar la fila Formatos de campo y hacer clic en Visualizador. El visualizador para las relajaciones implementadas le ofrece la opción de Agregar una nueva regla o Modificar una existente. También puede habilitar o inhabilitar un grupo de reglas seleccionando un nodo y haciendo clic en los botones correspondientes en el visualizador de relajación.

Uso de la función de aprendizaje con la comprobación de formatos de campo

Cuando la acción de aprendizaje está habilitada, el motor de aprendizaje de Web App Firewall supervisa el tráfico y descubre las infracciones desencadenadas. Puede inspeccionar periódicamente estas reglas aprendidas. Después de tener debidamente en cuenta, puede implementar la regla aprendida como regla de relajación Formato de campo.

Mejora de aprendizaje de formatos de campo: En la versión 11.0 se introdujo una mejora de aprendizaje de Web App Firewall. En las versiones anteriores, una vez implementada la recomendación de formato de campo aprendido, el motor de aprendizaje de Web App Firewall deja de supervisar las solicitudes válidas con el fin de recomendar nuevas reglas sobre la base de los nuevos puntos de datos. Esto limita la protección de seguridad configurada, ya que la base de datos de aprendizaje no incluye ninguna representación de los nuevos datos vistos en las solicitudes válidas procesadas por la comprobación de seguridad.

Las violaciones ya no se combinan con el aprendizaje. El motor de aprendizaje aprende y hace recomendaciones para los formatos de campo independientemente de las infracciones. Además de comprobar las solicitudes bloqueadas para determinar si el formato de campo actual es demasiado restrictivo y necesita ser relajado, el motor de aprendizaje también supervisa las solicitudes permitidas para determinar si el formato de campo actual es demasiado permisivo y permite elevar la seguridad mediante la implementación de un regla restrictiva.

A continuación se presenta un resumen del comportamiento de aprendizaje de formatos de campo:

No hay formato de campo enlazado: El comportamiento permanece sin cambios en este caso. Todos los datos de aprendizaje se envían al motor aslearn. El motor de aprendizaje sugiere una regla de formato de campo basada en el conjunto de datos.

El formato de campo está enlazado: En las versiones anteriores, los datos observados se envían al motor aslearn solo en caso de una infracción. El motor de aprendizaje sugiere una regla de formato de campo basada en el conjunto de datos. En la versión 11.0, todos los datos se envían a aslearn motor incluso si no se desencadena ninguna infracción. El motor de aprendizaje sugiere una regla de formato de campo basada en todo el conjunto de datos de todas las entradas recibidas.

Caso de uso para mejorar el aprendizaje:

Si las reglas aprendidas de formato de campo inicial se basan en una pequeña muestra de datos, algunos valores no típicos podrían dar lugar a una recomendación demasiado indulgente para el campo de destino. El aprendizaje continuo permite al Web App Firewall observar los puntos de datos de cada solicitud para recopilar una muestra representativa para las recomendaciones aprendidas. Esto es útil para reforzar aún más la seguridad para implementar el formato de entrada óptimo con un valor de rango adecuado.

Imagen localizada

El aprendizaje de formato de campo hace uso de la prioridad de los tipos de campo, así como de la configuración de los siguientes umbrales de aprendizaje:

  • FieldFormatMinThreshold—Número mínimo de veces que se debe observar un campo de formulario específico antes de generar una relajación aprendida. Valor predeterminado: 1.
  • FieldFormatPercentThreshold—Porcentaje de veces que un campo de formulario coincide con un tipo de campo determinado, antes de generar una relajación aprendida. Valor predeterminado: 0.

Las recomendaciones de reglas de formato de campo se basan en los siguientes criterios:

  • Recomendaciones de tipode campo: Las recomendaciones de tipo de campo están determinadas por las prioridades asignadas de los tipos de campo existentes y los umbrales de formato de campo especificados. Las prioridades determinan el orden en que los tipos de campo se comparan con las entradas. Un número inferior especifica una prioridad más alta. Por ejemplo, el entero Tipo de campo tiene la prioridad más alta (30) y, por lo tanto, se evalúa antes de Tipo de campo alfanum (50). Los umbrales determinan el número de entradas evaluadas para recopilar una muestra representativa para el punto de datos. Asignar la prioridad correcta a los tipos de campo configurados y configurar un valor de aprendizaje adecuado para los parámetros FieldFormatPercentThreshold y FieldFormatMinThreshold, es esencial para obtener la recomendación correcta de formato de campo. El tipo de campo con la prioridad más alta, basado en los umbrales configurados, se compara primero con las entradas. Si hay una coincidencia, se sugiere este tipo de campo sin tener en cuenta los otros tipos de campo. Por ejemplo, tres tipos de campo predeterminados, integer, alphanum y any coincidirán si todas las entradas contienen solo números. Sin embargo, se recomienda integer ya que tiene la prioridad más alta.
  • Recomendaciones de longitud mínima y máxima: Los cálculos para las longitudes mínima y máxima del formato de campo se realizan independientemente de la determinación del tipo de campo. Los cálculos de longitud de formato de campo se basan en la longitud media de todas las entradas observadas. La mitad de este promedio calculado se sugiere como valor mínimo, y el doble del valor de este promedio se sugiere como valor máximo. El rango para la longitud mínima es 0-65535 y el rango para la longitud máxima es 1-65535. El valor configurado para la longitud mínima no puede exceder la longitud máxima.
  • Manejo del carácter de espacio: La comprobación Formato de campo cuenta todos los caracteres de espacio al comprobar la longitud de Formatos de campo. Los espacios iniciales o finales no se eliminan, y varios espacios consecutivos en el centro de la cadena de entrada ya no se consolidan en un solo espacio durante el procesamiento de entrada.

Ejemplo para ilustrar las recomendaciones de formato de campo:

Total requests: 100
Number of Req with Field Type:
Int : 22            (22 int values) – 22%
Alpha : 44                  (44 alpha values) – 44%
Alphanum: 14            (14 + 44 + 22 = 80 alphanum values) = 80%
noHTML: 10              (80 + 10 = 90 noHTML values) = 90%
any : 10                     (90 + 10 = 100 any values) = 100%

% threshold                              Suggested Field Type
0-22                int
23-44               alpha
45-80               alphanum
81-90               noHTML
91-100              any

Para ver o utilizar datos aprendidos mediante la interfaz de línea de comandos

show appfw learningdata <profilename> FieldFormat
rm appfw learningdata <profilename> -fieldFormat <string>  <formActionURL>
export appfw learningdata <profilename> FieldFormat

Para ver o utilizar datos aprendidos mediante la interfaz gráfica de usuario

  1. Desplácese hasta Application Firewall > Perfiles, resalte el perfil de destino y haga clic en Modificar.

  2. En el panel Configuración avanzada, haga clic en Reglas aprendidas. Puede seleccionar la entrada Formatos de campo en la tabla Reglas aprendidas y hacer doble clic en ella para acceder a las reglas aprendidas. Puede implementar las reglas aprendidas o modificar una regla antes de implementarla como regla de relajación. Para descartar una regla, puede seleccionarla y hacer clic en el botón Omitir. Solo puede modificar una regla a la vez, pero puede seleccionar varias reglas para implementar u omitir.

    También tiene la opción de mostrar una vista resumida de las relajaciones aprendidas seleccionando la entrada Formatos de campo en la tabla Reglas aprendidas y haciendo clic en Visualizador para obtener una vista consolidada de todas las infracciones aprendidas. El visualizador hace que sea muy fácil administrar las reglas aprendidas. Presenta una visión completa de los datos en una pantalla y facilita la acción en un grupo de reglas con un solo clic. La mayor ventaja del visualizador es que recomienda expresiones regulares para consolidar varias reglas. Puede seleccionar un subconjunto de estas reglas, basado en el delimitador y la URL de acción. Puede mostrar 25, 50 o 75 reglas en el visualizador seleccionando el número de una lista desplegable. El visualizador de reglas aprendidas ofrece la opción de modificar las reglas e implementarlas como relajaciones. O puede omitir las reglas para ignorarlas.

Mediante la función de registro con los formatos de campo, compruebe

Cuando la acción de registro está habilitada, las infracciones de comprobación de seguridad Formatos de campo se registran en el registro de auditoría como infracciones de APTFW_FIELDFORMAT. El Web App Firewall admite los formatos de registro nativo y CEF. También puede enviar los registros a un servidor syslog remoto.

Para acceder a los mensajes de registro mediante la línea de comandos

Cambie al shell y siga los ns.logs en la carpeta /var/log/ para acceder a los mensajes de registro correspondientes a las infracciones de Formatos de campo:

  • Shell
  • tail -f /var/log/ns.log | grep APPFW_FIELDFORMAT

Para acceder a los mensajes de registro mediante la interfaz gráfica de usuario

La GUI de Citrix incluye una herramienta muy útil (Syslog Viewer) para analizar los mensajes de registro. Tiene varias opciones para acceder al Visor de Syslog:

  • Vaya a Servidor de seguridad de aplicaciones > Perfiles, seleccione el perfil de destino y haga clic en Comprobaciones de seguridad. Resalte la fila Formatos de campo y haga clic en Registros. Cuando accede a los registros directamente desde la comprobación de seguridad Formatos de campo del perfil, filtra los mensajes de registro y muestra solo los registros correspondientes a estas infracciones de comprobación de seguridad.

  • También puede acceder al Visor de Syslog navegando a Citrix ADC > Sistema > Auditoría. En la sección Mensajes de auditoría, haga clic en el vínculo Mensajes de syslog para mostrar el Visor de syslog, que muestra todos los mensajes de registro, incluidos otros registros de infracciones de comprobación de seguridad. Esto es útil para depurar cuando se pueden desencadenar varias infracciones de comprobación de seguridad durante el procesamiento de solicitudes.

  • Vaya a Servidor de seguridad de aplicaciones > Directivas > Auditoría. En la sección Mensajes de auditoría, haga clic en el vínculo Mensajes de syslog para mostrar el Visor de syslog, que muestra todos los mensajes de registro, incluidos otros registros de infracciones de comprobación de seguridad.

    El Visor de Syslog basado en HTML proporciona varias opciones de filtro para seleccionar solo los mensajes de registro que le interesan. Para acceder a los mensajes de registro de infracciones de comprobación de seguridad Formatos de campo, filtre seleccionando APTFW en las opciones desplegables de Módulo. El tipo de evento muestra un amplio conjunto de opciones para refinar aún más la selección. Por ejemplo, si activa la casilla de verificación APPFW_FIELDFORMAT y hace clic en el botón Aplicar, solo los mensajes de registro pertenecientes a las infracciones de comprobación de seguridad Formatos de campo aparecerán en el Visor de syslog.

Si coloca el cursor en la fila de un mensaje de registro específico, aparecen varias opciones, como Module y EventType, debajo del mensaje de registro. Puede seleccionar cualquiera de estas opciones para resaltar la información correspondiente en los registros.

Ejemplo de un mensaje de registro de formato nativo cuando la solicitud no está bloqueada

Jun 10 22:32:26 <local0.info> 10.217.31.98 06/10/2015:22:32:26 GMT ns 0-PPE-0 :
default APPFW APPFW_FIELDFORMAT 97 0 :  10.217.253.62 562-PPE0
x1MV+YnNGzQFM3Bsy2wti4bhXio0001 pr_ffc http://aaron.stratum8.net/FFC/login_post.php
Field format check failed for field passwd="65568888sz-*_" <not blocked>
Example of a CEF format log message when the request is blocked
Jun 11 00:03:51 <local0.info> 10.217.31.98
CEF:0|Citrix|Citrix ADC|NS11.0|APPFW|APPFW_FIELDFORMAT|6|src=10.217.253.62 spt=27076
method=POST requet=http://aaron.stratum8.net/FFC/maxlen_post.php msg=Field format check
failed for field text_area="" cn1=108 cn2=644 cs1=pr_ffc cs2=PPE0
cs3=GaUROfl1Nx1jJTvja5twH5BBqI0000 cs4=ALERT cs5=2015 act=blocked

Estadísticas de las infracciones de formatos de campo

Cuando la acción de estadísticas está habilitada, el contador correspondiente para la comprobación Formatos de campo se incrementa cuando el Web App Firewall realiza cualquier acción para esta comprobación de seguridad. Las estadísticas se recopilan para Rate and Total count para Tráfico, Violaciones y Registros. El incremento del contador de registro puede variar en función de la configuración configurada. Por ejemplo, si la acción de bloqueo está habilitada, la solicitud de una página que contiene 3 infracciones de formato de campo incrementa el contador de estadísticas en una, porque la página se bloquea tan pronto como se detecta la primera infracción de formatos de campo. Sin embargo, si el bloque está inhabilitado, el procesamiento de la misma solicitud aumenta en 3 el contador de estadísticas para infracciones y los registros, ya que cada infracción de Formatos de campo genera un mensaje de registro independiente.

Para mostrar estadísticas de formatos de campo mediante la línea de comandos

En el símbolo del sistema, escriba:

sh appfw stats

Para mostrar las estadísticas de un perfil específico, utilice el siguiente comando:

stat appfw profile <profile name>

Para mostrar estadísticas de formatos de campo mediante GUI

  1. Vaya a Sistema > Seguridad > Servidor de seguridad de aplicaciones.
  2. En el panel derecho, acceda al Enlace de estadísticas.
  3. Utilice la barra de desplazamiento para ver las estadísticas sobre infracciones y registros de formatos de campo. La tabla de estadísticas proporciona datos en tiempo real y se actualiza cada 7 segundos.

Sugerencia para la implementación

  • Habilitar el registro de acciones de formato de campo, aprendizaje y estadísticas.
  • Después de ejecutar una muestra representativa del tráfico a la aplicación, revise las recomendaciones aprendidas.
  • Si la mayoría de las reglas aprendidas recomiendan un tipo de campo, configure ese tipo de campo como el tipo de campo predeterminado. Para longitudes mínimas y máximas, utilice el rango más amplio sugerido por estas reglas.
  • Implementar reglas para otros campos para los que se adapten mejor a diferentes tipos de campo o longitudes mínimas/máximas diferentes.
  • Habilite el bloqueo e inhabilite el aprendizaje.
  • Supervisar estadísticas y registros. Si todavía se están desencadenando un número significativo de infracciones, es posible que quiera revisar los mensajes de registro para confirmar que las violaciones representan solicitudes malintencionadas que deberían haberse bloqueado. Si las solicitudes válidas se marcan como infracciones, puede modificar la regla de formato de campo configurada para relajarla aún más o habilitar el aprendizaje de nuevo para obtener recomendaciones basadas en los nuevos puntos de datos.

Nota: Puede ajustar su configuración obteniendo nuevas recomendaciones de aprendizaje.

Resumen

Tenga en cuenta los siguientes puntos acerca de la comprobación de seguridad Formato de campo:

  • Protección: Mediante la configuración de reglas de formato de campo óptimas, puede protegerse contra muchos ataques. Por ejemplo, si especifica que un campo solo puede tener enteros, los hackers no podrán iniciar ataques de SQL Injection o XSS mediante este campo, ya que las entradas necesarias para iniciar dichos ataques no cumplirán el requisito de formato de campo configurado.
  • Rendimiento: Puede limitar la longitud mínima y máxima permitida para las entradas en las reglas de formato de campo. Esto puede impedir que un usuario malintencionado introduzca cadenas de entrada excesivamente grandes en un intento de agregar sobrecarga de procesamiento al servidor o, peor aún, hacer que el servidor volque el núcleo debido al desbordamiento de pila. Al limitar el tamaño de entrada, puede acortar el tiempo necesario para procesar solicitudes legítimas.
  • Configuración de formatos de campo: Debe habilitar una de las acciones (bloquear, registrar, estadísticas, aprender) para activar la protección de formato de campo. También puede especificar las reglas de formato de campo para identificar las entradas permitidas en los campos de formulario.
  • Selección de mapas de caracteres frente a Tipos de campo: Tanto los mapas de caracteres como los tipos de campo utilizan expresiones regulares. Sin embargo, un mapa de caracteres proporciona una expresión más específica al reducir la lista de caracteres permitidos. Por ejemplo, para una entrada como janedoe@citrix.com, el motor de aprendizaje puede recomendar el tipo de campo nohtml, pero el mapa de caracteres [.@-Za-z] puede ser más específico, ya que reduce el conjunto permitido de caracteres no alfa. La opción Mapa de caracteres permite, además de los caracteres alfa, solo dos caracteres no alfa: Punto (.) y en (@).
  • Aprendizaje continuo: El Web App Firewall supervisa y tiene en cuenta todos los datos entrantes (infracciones, así como entradas permitidas) para crear una tabla de aprendizaje para recomendar reglas. Las reglas se revisan y actualizan a medida que llegan nuevos datos entrantes. Se sugieren nuevas reglas de formato de campo para un campo aunque ya tenga una regla de formato de campo enlazado. Si los formatos de campo configurados son demasiado restrictivos y bloquean las solicitudes válidas, puede implementar un formato de campo más relajado. Del mismo modo, si los formatos de campo actuales son demasiado genéricos, puede refinar y reforzar aún más la seguridad implementando un formato de campo más restrictivo.
  • Reglas de sobrescritura: Si ya se ha implementado una regla para una combinación de campo/URL, la GUI permite al usuario actualizar el formato del campo. Un cuadro de diálogo solicita confirmación para reemplazar la regla existente. Si está utilizando la interfaz de línea de comandos, debe desvincular explícitamente el enlace anterior y luego enlazar la nueva regla.
  • Coincidencia múltiple: Si varios formatos de campo coinciden con un nombre de campo determinado y su dirección URL de acción, el Web App Firewall selecciona arbitrariamente uno de ellos para aplicarlo.
  • Límite de búfer: Si un valor de campo se extiende a través de varios búferes de transmisión y el formato de estas dos partes del valor de campo es diferente, se envía un formato de campo correspondiente a “cualquiera” a la base de datos de aprendizaje.
  • Formato de campo frente a Comprobación de coherencia de campo: Tanto la comprobación de formato de campo como la comprobación de coherencia de campo son comprobaciones de protección basadas en formularios. La comprobación Formatos de campo proporciona un tipo de protección diferente al de la comprobación Consistencia de campos de formulario. La comprobación Consistencia de campos de formulario comprueba que la estructura de los formularios web devueltos por los usuarios esté intacta, que se respeten las restricciones de formato de datos configuradas en el HTML y que no se hayan modificado los datos de los campos ocultos. Puede hacer esto sin ningún conocimiento específico sobre sus formularios web que no sea lo que deriva del propio formulario web. La comprobación Formatos de campo comprueba que los datos de cada campo de formulario coinciden con las restricciones de formato específicas que configuró manualmente o que la función de aprendizaje generó y aprobó. En otras palabras, la comprobación Consistencia de campos de formulario aplica la seguridad general del formulario web, mientras que la comprobación Formatos de campo aplica las reglas específicas para las entradas permitidas para los formularios web.