¿Cómo configuro AWS WAF para proteger mis recursos de ataques comunes?

7 minutos de lectura
0

¿Cómo configuro AWS WAF para proteger mis recursos de ataques comunes?

Resolución

Migre de AWS WAF Classic a AWS WAF (si corresponde)

Si usa AWS WAF Classic, es recomendable que migre a AWS WAF. Para llevar a cabo esta migración, puede aprovechar la herramienta de migración automatizada. Para más información, consulte ¿Por qué hacer la migración a AWS WAF?

Ejecute pruebas de penetración contra su aplicación para identificar las vulnerabilidades

Cada aplicación recibe su propio tipo de solicitudes. Como resultado, las reglas de firewall que protegen la aplicación deben personalizarse.

Ejecute pruebas de penetración contra su aplicación para comprender sus vulnerabilidades específicas. Para obtener más información, consulte:

Revise las solicitudes entrantes para optimizar sus reglas personalizadas

Antes de crear reglas personalizadas para proteger su aplicación, revise las solicitudes entrantes de su entorno.

En primer lugar, genere registros mediante:

  • AWS WAF
  • Amazon CloudFront
  • Equilibrador de carga de aplicación
  • Puerta de enlace Amazon API

A continuación, almacene estos registros en Amazon Simple Storage Service (Amazon S3). Finalmente, use Amazon Athena para consultar los registros e identificar patrones. Por ejemplo, es posible que vea patrones como:

  • Solicitudes realizadas a su entorno para URI que no existen

  • Para reconocer este patrón, debe conocer todos los URI compatibles

  • Ejemplo de consulta de Athena realizada en los registros de AWS WAF para contar las solicitudes de cada URI:

SELECT count("httprequest"."uri") as URIcount, "httprequest"."uri"
FROM waf_logs
GROUP BY "httprequest"."uri"
ORDER BY URIcount DESC
  • Solicitudes que contienen un encabezado HTTP Host que su servidor web no admite O solicitudes que contienen una dirección IP en lugar del nombre de dominio de su sitio web

  • Ejemplo de consulta de Athena realizada en los registros de AWS WAF para contar las solicitudes con diferentes valores de encabezado de Host:

SELECT header.value as HostHeader, count(header) as count
FROM waf_logs, UNNEST(httprequest.headers) AS x(header)
WHERE "header"."name" = 'Host'
GROUP BY  header
ORDER BY count DESC

Después de identificar un patrón, puede crear reglas de AWS WAF en modo COUNT para comprobar que la regla está configurada para que coincida con esas solicitudes. Entonces, mueva la regla al modo BLOQUEAR.

Por ejemplo, si su aplicación solo admite el encabezado de host «www.example.com»:

  • Cree una NO coincidencia en el encabezado HOST con el valor «www.example.com»
  • Configure la acción en BLOQUEAR

Todas las solicitudes a su entorno que no tengan un encabezado de host «www.example.com» ahora están bloqueadas. 
Nota: Esta regla también bloquea las solicitudes al nombre de dominio completo (FQDN) proporcionado por AWS.

Use AWS Managed Rules para protegerse contra ataques comunes

Use AWS Managed Rules para evitar los ataques comunes que se aplican a la mayoría de las aplicaciones, incluidas las solicitudes que:

  • No contienen un agente de usuario
  • Representan solicitudes de bots
  • Usan «localhost» como encabezado HTTP Host
  • Usan el método HTTP PROPFIND

Incluya estos grupos de reglas de referencia en su lista de control de acceso web (ACL web) en el modo COUNT. Asegúrese de elegir «Activar modo de recuento» en el grupo de reglas. Entonces, revise los registros de AWS WAF y las métricas de CloudWatch para determinar si la regla gestionada coincide con algún tráfico legítimo. Si no lo hace, mueva el grupo de reglas a BLOQUEAR deshabilitando «Habilitar el modo de recuento». Para deshabilitar una regla específica en el grupo de reglas administradas de AWS, seleccione «Invalidar la acción de reglas» para esa regla.

Nota: Las reglas de AWS Managed Rules pueden activarse por solicitudes legítimas a su entorno. Para más información, consulte ¿Cómo puedo detectar los falsos positivos provocados por AWS Managed Rules y agregarlos a una lista segura?

Importante: AWS Managed Rules está diseñado para protegerle de las amenazas web más comunes. Cuando se usan de acuerdo con la documentación, los grupos de reglas de AWS Managed Rules añaden otro nivel de seguridad a sus aplicaciones. Sin embargo, los grupos de reglas de AWS Managed Rules no pretenden reemplazar sus responsabilidades de seguridad, que vienen determinadas por los recursos de AWS que seleccione. Vea si el modelo de responsabilidad compartida para asegurarse de que sus recursos en AWS están protegidos adecuadamente.

Haga una evaluación de su AWS WAF con la tasa de solicitudes legítimas

Realice un análisis del tráfico para identificar el número de solicitudes realizadas por direcciones IP de clientes legítimas mediante Amazon Athena o Amazon Quicksight en los registros de AWS WAF. Usando la información que obtenga de este análisis, evalúe su AWS WAF con la tasa de solicitudes realizadas por un cliente legítimo. Entonces, configure un umbral mientras configura la regla basada en tasas de AWS WAF.

Ejemplo de consulta de Athena realizada en los registros de AWS WAF para contar el número de solicitudes de una sola dirección IP (x.x.x.x) entre un período determinado (16 de noviembre de 2020 de 9:00 a 10:00 horas):

SELECT  "httprequest"."clientip", "count"(*) "count", "httprequest"."country"
FROM waf_logs
WHERE httprequest.clientip LIKE 'x.x.x.x' and date_format(from_unixtime("timestamp"/1000), '%Y-%m-%d %h:%i:%s') between '2020-11-16 09:00:00' and '2020-11-16 10:00:00'
GROUP BY "httprequest"."clientip", "httprequest"."country"

Ejemplo de consulta de Athena realizada en los registros de AWS WAF para contar el número de solicitudes de todas las direcciones IP entre el mismo período de tiempo:

SELECT "httprequest"."clientip", "count"(*) "count", "httprequest"."country"
FROM waf_logs
WHERE date_format(from_unixtime("timestamp"/1000), '%Y-%m-%d %h:%i:%s') between '2020-11-16 09:00:00' and '2020-11-16 10:00:00'
GROUP BY "httprequest"."clientip", "httprequest"."country"
ORDER BY "count" DESC

Use la plantilla de automatizaciones de seguridad de AWS WAF para evitar ataques comunes

Use la plantilla de Automatizaciones de seguridad de AWS WAF para ofrecer protección adicional contra ataques comunes. Por ejemplo, puede habilitar la protección contra:

  • Escáneres y sondas
  • Bots incorrectos
  • Direcciones IP incorrectas

Nota: Esta solución usa otros servicios de AWS que generan costos.

Protéjase contra la inyección de código SQL y las secuencias de comandos entre sitios

Para proteger sus aplicaciones contra los ataques de inyección de código de SQL y de secuencias de comandos entre sitios (XSS), utilice los motores de inyección de código SQL y secuencias de comandos entre sitios. Recuerde que los ataques se pueden realizar en diferentes partes de la solicitud HTTP, como el encabezado HTTP, la cadena de consulta o el URI. Configure las reglas de AWS WAF para inspeccionar diferentes partes de la solicitud HTTP comparándolas con los motores de mitigación integrados.

Nota: Las reglas de los motores de mitigación pueden activarse por solicitudes legítimas a su entorno. Para más información, consulte ¿Cómo puedo detectar los falsos positivos provocados por AWS Managed Rules y agregarlos a una lista segura?

Restrinja el acceso desde CloudFront (si usa AWS WAF en CloudFront)

Protéjase contra los ataques DDoS

Para más información sobre la protección contra los ataques distribuidos de denegación de servicio (DDoS), consulte las prácticas recomendadas de AWS para la resiliencia frente a los DDoS y las características de AWS Shield.


OFICIAL DE AWS
OFICIAL DE AWSActualizada hace 3 años