Reglas administradas AWS WAF Owasp Top Ten
El dia de hoy vamos a revisar el grupo de reglas administradas que existen dentro de Amazon Web Services del servicio de seguridad Web Application Firewall. Amazon ofrece este servicio nativo para proteger las cargas de trabajo, se puede realizar una integracion entre los siguientes servicios. CloudFront Distribución en Amazon API de REST de Amazon API Gateway Equilibrador de carga de aplicación AWS AppSync API GraphQL Grupo de usuarios de Amazon Cognito AWS App Runner servicio AWS Instancia de acceso verificado AWS Amplify AWS WAF es un firewall de aplicaciones web que permite revisar las peticiones http y https que se envian a sus aplicaciones o cargas de trabajo expuestas a internet. Este servicio tiene multiples beneficios y configuraciones, pero hoy vamos a revisar un conjunto de reglas escencial para la proteccion de sus aplicaciones, este grupo de reglas del conjunto de reglas básicas (CRS) contiene reglas que son generalmente aplicables a las aplicaciones web. Este brinda protección contra la explotación de una amplia gama de vulnerabilidades, incluyendo algunas de las vulnerabilidades de alto riesgo y más comunes descritas en publicaciones de OWASP tales como Owasp Top 10. Que es Owasp Top 10? El Top 10 de OWASP es un documento estándar de concientización para desarrolladores y seguridad de aplicaciones web Cada cierto tiempo este documento se actualiza en base a cambios de patrones de ataques mas comunes, el ultimo es del anio 2021 En esta pagina esta el detalle de cada una de las 10 vulnerabilidades mas comunes. De igual manera en la siguiente pagina de aws se muestra el detalle de las reglas basicas que estan basadas en owasp top 10. NoUserAgent_HEADER Inspecciona las solicitudes a las que les falta el encabezado HTTP User-Agent. UserAgent_BadBots_HEADER Comprueba si hay valores de encabezado User-Agent comunes que indiquen que la solicitud es un badbot. Los patrones de ejemplo incluyen nessus y nmap. Para obtener información sobre la administración de bots, consulte también AWS WAF Grupo de reglas de control de bots. SizeRestrictions_QUERYSTRING Inspecciona las cadenas de consulta de URI que superen los 2048 bytes. _SizeRestrictions_Cookie_HEADER _ Comprueba si los encabezados de las cookies tienen más de 10 240 bytes. _SizeRestrictions_BODY _ Inspecciona los cuerpos de las solicitudes que pesen más de 8 KB (8192 bytes). SizeRestrictions_URIPATH Inspeccione las rutas de URI que superen los 1024 bytes. EC2MetaDataSSRF_BODY Inspecciona los intentos de extraer los metadatos de EC2 Amazon del cuerpo de la solicitud. EC2MetaDataSSRF_COOKIE Inspecciona los intentos de extraer los metadatos de EC2 Amazon de la cookie de solicitud. EC2MetaDataSSRF_URIPATH Inspecciona los intentos de extraer los metadatos de EC2 Amazon de la ruta del URI de la solicitud. EC2MetaDataSSRF_QUERYARGUMENTS Inspecciona los intentos de extraer los metadatos de EC2 Amazon de los argumentos de la consulta de la solicitud. GenericLFI_QUERYARGUMENTS Inspecciona la presencia de vulnerabilidades Local File Inclusion (LFI, Inclusión Local de Archivos) en los argumentos de la consulta. Los ejemplos incluyen los intentos de recorrido de ruta utilizando técnicas como ../../. GenericLFI_URIPATH Inspecciona la presencia de vulnerabilidades Local File Inclusion (LFI, Inclusión Local de Archivos) en la ruta del URI. Los ejemplos incluyen los intentos de recorrido de ruta utilizando técnicas como ../../. GenericLFI_BODY Inspecciona la presencia de vulnerabilidades Local File Inclusion (LFI, Inclusión Local de Archivos) en el cuerpo de la solicitud. Los ejemplos incluyen los intentos de recorrido de ruta utilizando técnicas como ../../. RestrictedExtensions_URIPATH Comprueba si hay solicitudes cuyas rutas de URI contengan extensiones de archivos del sistema que no sean seguras de leer o ejecutar. Los patrones de ejemplo incluyen extensiones como .log y .ini. RestrictedExtensions_QUERYARGUMENTS Inspecciona las solicitudes cuyos argumentos de consulta contienen extensiones de archivo cuya lectura es insegura. Los patrones de ejemplo incluyen extensiones como .log y .ini. GenericRFI_QUERYARGUMENTS Inspecciona los valores de todos los parámetros de consulta para detectar intentos de aprovechar la RFI (inclusión remota de archivos) en aplicaciones web mediante la incrustación URLs de direcciones. IPv4 Los ejemplos incluyen patrones comohttp://,https://, y ftp:// ftps://file://, con un encabezado de IPv4 host en el intento de explotación. GenericRFI_BODY Inspecciona el cuerpo de la solicitud para detectar intentos de aprovechar la RFI (inclusión remota de archivos) en aplicaciones web mediante incrustaciones URLs que contienen direcciones. IPv4 Los ejemplos incluyen patrones comohttp://,https://, y ftp:// ftps://file://, con un encabezado de IPv4 host en el intento de explotación. GenericRFI_URIPATH Inspecciona la ruta del URI para detectar intentos de aprovechar la RFI (inclusión remota de archivos) en apl

El dia de hoy vamos a revisar el grupo de reglas administradas que existen dentro de Amazon Web Services del servicio de seguridad Web Application Firewall.
Amazon ofrece este servicio nativo para proteger las cargas de trabajo, se puede realizar una integracion entre los siguientes servicios.
- CloudFront Distribución en Amazon
- API de REST de Amazon API Gateway
- Equilibrador de carga de aplicación
- AWS AppSync API GraphQL
- Grupo de usuarios de Amazon Cognito
- AWS App Runner servicio
- AWS Instancia de acceso verificado
- AWS Amplify
AWS WAF es un firewall de aplicaciones web que permite revisar las peticiones http y https que se envian a sus aplicaciones o cargas de trabajo expuestas a internet.
Este servicio tiene multiples beneficios y configuraciones, pero hoy vamos a revisar un conjunto de reglas escencial para la proteccion de sus aplicaciones, este grupo de reglas del conjunto de reglas básicas (CRS) contiene reglas que son generalmente aplicables a las aplicaciones web. Este brinda protección contra la explotación de una amplia gama de vulnerabilidades, incluyendo algunas de las vulnerabilidades de alto riesgo y más comunes descritas en publicaciones de OWASP tales como Owasp Top 10.
Que es Owasp Top 10?
El Top 10 de OWASP es un documento estándar de concientización para desarrolladores y seguridad de aplicaciones web
Cada cierto tiempo este documento se actualiza en base a cambios de patrones de ataques mas comunes, el ultimo es del anio 2021
En esta pagina esta el detalle de cada una de las 10 vulnerabilidades mas comunes.
De igual manera en la siguiente pagina de aws se muestra el detalle de las reglas basicas que estan basadas en owasp top 10.
NoUserAgent_HEADER
Inspecciona las solicitudes a las que les falta el encabezado HTTP User-Agent.
UserAgent_BadBots_HEADER
Comprueba si hay valores de encabezado User-Agent comunes que indiquen que la solicitud es un badbot. Los patrones de ejemplo incluyen nessus y nmap. Para obtener información sobre la administración de bots, consulte también AWS WAF Grupo de reglas de control de bots.
SizeRestrictions_QUERYSTRING
Inspecciona las cadenas de consulta de URI que superen los 2048 bytes.
_SizeRestrictions_Cookie_HEADER _
Comprueba si los encabezados de las cookies tienen más de 10 240 bytes.
_SizeRestrictions_BODY _
Inspecciona los cuerpos de las solicitudes que pesen más de 8 KB (8192 bytes).
SizeRestrictions_URIPATH
Inspeccione las rutas de URI que superen los 1024 bytes.
EC2MetaDataSSRF_BODY
Inspecciona los intentos de extraer los metadatos de EC2 Amazon del cuerpo de la solicitud.
EC2MetaDataSSRF_COOKIE
Inspecciona los intentos de extraer los metadatos de EC2 Amazon de la cookie de solicitud.
EC2MetaDataSSRF_URIPATH
Inspecciona los intentos de extraer los metadatos de EC2 Amazon de la ruta del URI de la solicitud.
EC2MetaDataSSRF_QUERYARGUMENTS
Inspecciona los intentos de extraer los metadatos de EC2 Amazon de los argumentos de la consulta de la solicitud.
GenericLFI_QUERYARGUMENTS
Inspecciona la presencia de vulnerabilidades Local File Inclusion (LFI, Inclusión Local de Archivos) en los argumentos de la consulta. Los ejemplos incluyen los intentos de recorrido de ruta utilizando técnicas como ../../.
GenericLFI_URIPATH
Inspecciona la presencia de vulnerabilidades Local File Inclusion (LFI, Inclusión Local de Archivos) en la ruta del URI. Los ejemplos incluyen los intentos de recorrido de ruta utilizando técnicas como ../../.
GenericLFI_BODY
Inspecciona la presencia de vulnerabilidades Local File Inclusion (LFI, Inclusión Local de Archivos) en el cuerpo de la solicitud. Los ejemplos incluyen los intentos de recorrido de ruta utilizando técnicas como ../../.
RestrictedExtensions_URIPATH
Comprueba si hay solicitudes cuyas rutas de URI contengan extensiones de archivos del sistema que no sean seguras de leer o ejecutar. Los patrones de ejemplo incluyen extensiones como .log y .ini.
RestrictedExtensions_QUERYARGUMENTS
Inspecciona las solicitudes cuyos argumentos de consulta contienen extensiones de archivo cuya lectura es insegura. Los patrones de ejemplo incluyen extensiones como .log y .ini.
GenericRFI_QUERYARGUMENTS
Inspecciona los valores de todos los parámetros de consulta para detectar intentos de aprovechar la RFI (inclusión remota de archivos) en aplicaciones web mediante la incrustación URLs de direcciones. IPv4 Los ejemplos incluyen patrones comohttp://,https://, y ftp:// ftps://file://, con un encabezado de IPv4 host en el intento de explotación.
GenericRFI_BODY
Inspecciona el cuerpo de la solicitud para detectar intentos de aprovechar la RFI (inclusión remota de archivos) en aplicaciones web mediante incrustaciones URLs que contienen direcciones. IPv4 Los ejemplos incluyen patrones comohttp://,https://, y ftp:// ftps://file://, con un encabezado de IPv4 host en el intento de explotación.
GenericRFI_URIPATH
Inspecciona la ruta del URI para detectar intentos de aprovechar la RFI (inclusión remota de archivos) en aplicaciones web mediante incrustaciones URLs que contienen direcciones. IPv4 Los ejemplos incluyen patrones comohttp://,https://, y ftp:// ftps://file://, con un encabezado de IPv4 host en el intento de explotación.
CrossSiteScripting_COOKIE
Inspecciona los valores de los encabezados de las cookies para detectar patrones comunes de secuencias de comandos entre sitios (XSS) mediante la función integrada. AWS WAF Instrucción de regla de ataques de scripting entre sitios Los patrones de ejemplo incluyen scripts como alert("hello").
CrossSiteScripting_QUERYARGUMENTS
Inspecciona los valores de los argumentos de consulta para detectar patrones comunes de secuencias de comandos entre sitios (XSS) mediante la función integrada. AWS WAF Instrucción de regla de ataques de scripting entre sitios Los patrones de ejemplo incluyen scripts como alert("hello").
CrossSiteScripting_BODY
Inspecciona el cuerpo de la solicitud para detectar patrones comunes de secuencias de comandos entre sitios (XSS) mediante la función integrada. AWS WAF Instrucción de regla de ataques de scripting entre sitios Los patrones de ejemplo incluyen scripts como alert("hello").
CrossSiteScripting_URIPATH
Inspecciona el valor de la ruta URI en busca de patrones comunes de secuencias de comandos entre sitios (XSS) mediante la función integrada. AWS WAF Instrucción de regla de ataques de scripting entre sitios Los patrones de ejemplo incluyen scripts como alert("hello").
Lo recomendado es siempre probar estas reglas en ambientes controlados como puede ser desarrollo QA u otro ambiente en donde puedan evaluar la funcionalidad e identificar que estas reglas no afecten el correcto funcionamiento de la aplicacion web.
Las reglas tienen opciones de configuracion como son:
Allow— AWS WAF permite reenviar la solicitud al AWS recurso protegido para su procesamiento y respuesta. Se trata de una acción de finalización.
Block— AWS WAF bloquea la solicitud. Se trata de una acción de finalización. De forma predeterminada, el AWS recurso protegido responde con un código de 403 (Forbidden) estado HTTP.
Count— AWS WAF cuenta la solicitud pero no determina si se permite o se bloquea. Se trata de una acción no terminal. AWS WAF continúa procesando las reglas restantes en la ACL web.
CAPTCHA y Challenge— AWS WAF utiliza acertijos CAPTCHA y desafíos silenciosos para comprobar que la solicitud no proviene de un bot, y AWS WAF utiliza fichas para hacer un seguimiento de las respuestas recientes de los clientes que han obtenido buenos resultados.
Configuracion
Para este caso vamos a agregar el web application firewall en el recurso Cloudfront.
1.- Ingresamos a la consola de AWS y buscamos WAF
2.- Una vez dentro de esta opcion vamos a la seccion de "Create web ACL"
Y agregamos la informacion como es el nombre
automaticamente se anade la data de Cloudwatch Metric Name.
Esta parte es importante para luego poder analizar los logs que genera el WAF.
3.- Escogemos la distribucion de Cloudfront
Esta opcion la podemos modificar posteriormente dado que se debe analizar tambien los costos que genera la proteccion usando WAF
4.- En este punto agregamos las reglas o conjuntos de reglas, para nuestro ejemplo vamos a utilizar Reglas que son manejadas por AWS.
5.- Buscamos y escogemos las reglas Core Rule Set o conjunto de reglas basicas y hacemos click en "Add Rules" o Agregar Reglas.
6.- En este punto revisamos las reglas o conjunto de reglas que hemos agregado, tambien podemos visualizar el total de WCU (Web ACL Capacity Units) que es la unidad de medida que AWS utiliza para calcular cuanta capacidad consumen las reglas en una ACL especifica.
El uso de WCU afecta directamente al costo mensual de AWS WAF porque el precio se basa en dos factores principales:
- Número de Web ACLs que creas.
- Cantidad total de WCU consumidos por cada Web ACL.
- Número de solicitudes web inspeccionadas (este es otro factor, no directamente relacionado con los WCU, pero también influye en el costo).
| Concepto | Precio estimado mensual |
| -------------------------- | ----------------------- |
| Web ACL (por ACL) | \~\$5 USD |
| Por cada WCU (mensual) | \~\$0.60 USD |
| Solicitudes inspeccionadas | \~\$0.60 por 1 millón |
7.- En este punto detallamos las opciones de accion de la regla, como es un ambiente de pruebas vamos a colocar la accion de bloqueo.
8.- El siguiente paso es la prioridad de las reglas, como solamente hemos agregado una sola regla dejamos por defecto y damos en siguiente
9.- Como fue indicado anteriormente las metricas es necesario activarlas para poder analizar el trafico y la respuesta de cada request sobre las reglas.
10.- Como paso final vemos el resumen de todo lo que va a crear y damos click en "Crear Web ACL"
Luego podemos confirmar que en la seccion de seguridad de la distribucion de cloudfront se muestre la web ACL.
Esto seria todo por ahora, en una proxima entrega vamos a detallar como poder hacer analisis de logs y poder ir validando el funcionamiento de las diferentes reglas de WAF basadas en owasp top 10 y si requieren de un afinamiento o modificacion.
Espero que les haya gustado este post y que sea de utilidad para garantizar la proteccion de aplicaciones web que se exponen en sus organizaciones.