¿Cómo utilizo AWS WAF para bloquear la subida de archivos con extensiones específicas?

5 minutos de lectura
0

Quiero restringir la carga de archivos (solicitudes HTTP POST) con extensiones específicas a mi servidor web.

Descripción breve

Al analizar los datos POST de una solicitud HTTP, el contenido cargado puede ser de dos tipos:

  • Datos de formulario
  • Binario

Nota: AWS WAF inspecciona los primeros 8 KB (8192 bytes) del cuerpo de la solicitud. Este es un límite de servicio estricto que no puede cambiar.

Para restringir la carga de archivos que utilicen una extensión de archivo específica, como .pdf, .docx o.exe, siga estos pasos:

  1. Cree una regla de lista de control de acceso web (ACL web) personalizada para inspeccionar la solicitud BODY.

  2. Cree una condición de coincidencia de expresiones regulares dentro de la regla. Utilice este patrón de expresiones regulares para configurar la regla que va a restringir varias extensiones de archivo.

  3. Defina la acción de la regla en BLOCK.

  4. Defina la prioridad de la regla para que esta regla personalizada tenga una prioridad mayor que cualquier regla de ACL web que pueda bloquearla.

  5. Valide que la regla bloquee correctamente la extensión de archivo específica.

Resolución

Identifique el tipo de contenido que utilizan los datos POST

Los datos POST de las solicitudes HTTP suelen utilizar datos de formulario o binarios.

  • Los datos de formulario incluyen cualquier dato que un usuario introduzca en una página web (o «formulario HTML») que HTTP envía a un servidor web (o «publica» en él).
  • Una carga binaria es cualquier cosa que no sea una carga útil de texto. Por ejemplo, una carga binaria puede ser un archivo.jpeg, un archivo.gzip o un archivo.xml. Esto incluye datos binarios genéricos, como los de una aplicación .pdf, una imagen.jpeg o una aplicación.zip. Para ver todos los tipos de extensiones de archivo, consulte Media types en el sitio web de la Internet Assigned Numbers Authority (IANA).

Para identificar el tipo de solicitud POST, consulte el valor Content-Type del encabezado HTTP POST. El siguiente ejemplo contiene un Content-Type de multipart/form-data:

Content-Type: multipart/form-data

Si el encabezado «Content-Type» tiene el valor «multipart/form-data», siga estos pasos para crear una regla:

  1. Abra la consola de AWS WAF.

  2. En el panel de navegación, en AWS WAF, seleccione Web ACLs.

  3. En Region, elija la región de AWS en la que ha creado el ACL web.
    Nota: Si ha configurado el ACL web para Amazon CloudFront, seleccione Global.

  4. Seleccione el ACL web. A continuación, seleccione la pestaña Rules.

  5. Seleccione la lista desplegable Add Rules y, a continuación, elija Add my own rules and rule groups.

  6. En Rule type, elija Rule Builder.

  7. En Name, introduzca un nombre para identificar esta regla.

  8. En Type, elija Regular rule.

  9. En If a request, elija matches the statement. A continuación, rellene los siguientes campos de Statement:
    En Inspect, seleccione Body.
    En Content type, elija JSON.
    En JSON match scope, elija Values.
    En How AWS WAF should handle the request if the JSON in the request body is invalid, elija la opción correspondiente a su caso de uso.
    En Content to inspect, seleccione Full JSON content.
    En Match type, elija Matches regular expression.
    En Regular expression, introduzca un patrón de expresiones regulares que coincida. Vea el siguiente ejemplo:

(?:.pdf|.doc|.docx|.ppt)
  1. (Opcional) En Text transformation, puede añadir una transformación de texto o mantener estos campos como None.

  2. En Overisize Handling, elija la opción correspondiente a su caso de uso.

  3. En Action, seleccione Block.

  4. Elija Add Rule.

  5. (Opcional) En Set Rule Priority, seleccione una regla y desplace su prioridad. AWS WAF procesa las reglas en el orden en que aparecen. Para obtener más información, consulte Orden de procesamiento de las reglas y los grupos de reglas en una ACL web.

  6. Seleccione Save.

Valide que la regla funcione según lo esperado.

Si el encabezado «Content-Type» tiene un valor binario como «application/pdf» o «application/ppt», siga estos pasos para crear una regla:

  1. Abra la consola de AWS WAF.

  2. En el panel de navegación, en AWS WAF, seleccione Web ACLs.

  3. En Region, elija la región de AWS en la que ha creado el ACL web.
    Nota: Si ha configurado el ACL web para Amazon CloudFront, seleccione Global.

  4. Seleccione el ACL web. A continuación, seleccione la pestaña Rules.

  5. Seleccione la lista desplegable Add Rules y, a continuación, elija Add my own rules and rule groups.

  6. En Rule type, elija Rule Builder.

  7. En Name, introduzca un nombre para identificar esta regla.

  8. En Type, elija Regular rule.

  9. En If a request, elija matches the statement. A continuación, rellene los siguientes campos de Statement:
    En Inspect, elija Single header.
    En Header field name, introduzca Content-Type.
    En Match type, elija Matches regular expression.
    En Regular expression, introduzca un patrón de expresiones regulares que coincida. Consulte el siguiente ejemplo para los archivos .pdf y .jpeg:

(?:pdf|jpeg)   
  1. (Opcional) En Text transformation, puede añadir una transformación de texto o mantener estos campos como None.

  2. En Action, seleccione Block.

  3. Elija Add Rule.

  4. (Opcional) En Set Rule Priority, seleccione una regla y desplace su prioridad. AWS WAF procesa las reglas en el orden en que aparecen. Para obtener más información, consulte Orden de procesamiento de las reglas y los grupos de reglas en una ACL web.

  5. Seleccione Save.

Valide que la regla funcione según lo esperado.

**Nota:**Para restringir la regla a una ruta URI de carga específica, utilice una instrucción AND dentro de la regla de ACL web que inspecciona la ruta.

OFICIAL DE AWS
OFICIAL DE AWSActualizada hace un año