¿Cómo utilizo AWS WAF con AWS Global Accelerator para impedir que el método HTTP de la capa 7 y los encabezados accedan a mi aplicación?

5 minutos de lectura
0

Mediante el equilibrador de carga de aplicación habilitado para AWS WAF con AWS Global Accelerator, quiero bloquear las solicitudes de entrada en mi aplicación si el método de solicitud es POST o si el valor del encabezado del agente-usuario coincide con curl/7.79.

Descripción breve

Se puede utilizar AWS WAF y el equilibrador de carga de aplicación con Global Accelerator para bloquear el acceso al método HTTP y a los encabezados de la capa 7. En esta arquitectura, AWS WAF utiliza las reglas de la lista de control de acceso web (ACL web) con el equilibrador de carga de aplicación. El equilibrador de carga se convierte en un punto de conexión de Global Accelerator.
Nota: AWS Global Accelerator en sí no es compatible con AWS WAF.

La regla de la ACL web asociada al equilibrador de carga evalúa el tráfico entrante y solamente reenvía hasta el punto de conexión las solicitudes que cumplen la regla.

Resolución de problemas

La regla de la ACL web proporciona un control detallado de todas las solicitudes web HTTP(S) a los recursos protegidos. Utilice la regla para configurar una cadena o una coincidencia de expresiones regulares con uno o más atributos de solicitud, como el identificador uniforme de recursos (URI), la cadena de consulta, el método HTTP o la clave del encabezado.

Requisitos previos

  • Asegúrese de tener la siguiente configuración del flujo de tráfico para Global Accelerator, equilibrador de carga de aplicación y AWS WAF:
    User --> Global Accelerator --> Application Load Balancer with AWS WAF --> EC2 instance
    Nota: En esta configuración, el usuario accede a la aplicación realizando una solicitud al acelerador. El acelerador redirecciona el tráfico de los usuarios hacia el equilibrador de carga de aplicación y al AWS WAF asociado a él. El AWS WAF evalúa y bloquea o permite la solicitud del usuario que contiene el método HTTP de la capa 7 o el valor del encabezado del agente-usuario.

Crear una ACL web basada en reglas

Para crear una ACL web basada en reglas, utilice el siguiente proceso de 3 pasos. Para obtener más información, consulte Crear una ACL web.

Crear una ACL web

  1. Para crear una ACL web, navegue hasta la Consola de AWS WAF.
  2. Seleccione Crear ACL web.
  3. Asigne un nombre a la ACL web. Seleccione la región del equilibrador de carga de aplicación.
  4. Asocie el equilibrio de la carga de la aplicación a la ACL web.
  5. Seleccione Siguiente.

Añadir una regla personalizada a la ACL web

Continúe con la configuración de la siguiente manera:

  1. SeleccioneAñadir reglas. En el menú desplegable seleccione Añadir mis propias reglas y grupos de reglas.
  2. En Compilador de reglas, añada una regla.
  3. Asigne un nombre a la regla (por ejemplo, deny_User-Agent_with_POST).
  4. En Tipo, seleccione Regla frecuente.

Configure los criterios de coincidencia de la regla

Realice los pasos restantes:

  1. Seleccione coincide con al menos una de las declaraciones (OR).

  2. En la declaración1 realice lo siguiente:
    Inspeccionar: encabezado único
    Nombre del campo de encabezado: Agente-usuario
    Tipo de coincidencia: Coincide exactamente con la cadena
    Cadena que debe coincidir: curl/7.79.0

    En la declaración2 realice lo siguiente:
    Inspeccionar: Método HTTP
    Tipo de coincidencia: Coincide exactamente con la cadena
    Cadena que debe coincidir: POST

  3. En Acción, seleccione Bloquear.

Pruebe los resultados con el valor del encabezado del agente-usuario

Acceda a la aplicación mediante la URL de Global Accelerator y el valor del encabezado del agente- usuario curl/7.79.0, con el método de solicitud GET.

curl http://<your Global Accelerator URL> -v -H "User-Agent:curl/7.79.0"
> GET / HTTP/1.1
> Host: <your Global Accelerator DNS>
> User-Agent:curl/7.79.0

< HTTP/1.1 403 Forbidden  
< Server: awselb/2.0
<
<html>
<head><title>403 Forbidden</title></head>
<body>
<center><h1>403 Forbidden</h1></center>
</body>
</html>

Nota: Sustitúyala <your Global Accelerator URL> por la URL de Global Accelerator. Sustitúyala <your Global Accelerator DNS> por el DNS.

Observe que AWS WAF bloqueó la solicitud, y el equilibrador de carga de aplicación respondió con el mensaje 403 Forbidden.

Pruebe los resultados con la solicitud POST

Acceda a la aplicación mediante la URL de Global Accelerator y el valor de encabezado del agente-usuario curl/7.79.1, con el método de solicitud POST.

curl -X POST http://<your Global Accelerator URL> --user "test-user:test-password" -v
> POST / HTTP/1.1
> Host: <your Global Accelerator DNS>
> Authorization: Basic dGVzdC11c2VyOnRlc3QtcGFzc3dvcmQ=
> User-Agent: curl/7.79.1
>
< HTTP/1.1 403 Forbidden
< Server: awselb/2.0
<html>
<head><title>403 Forbidden</title></head>
<body>
<center><h1>403 Forbidden</h1></center>
</body>
</html>

Nota: Sustitúyala <your Global Accelerator URL> por la URL de Global Accelerator. Sustitúyala <your Global Accelerator DNS> por el DNS.

Observe que AWS WAF bloqueó la solicitud y el equilibrador de carga de aplicación respondió con el mensaje 403 Forbidden.

OFICIAL DE AWS
OFICIAL DE AWSActualizada hace un año