ICM / how-to-do / Aplicar WAF a una aplicación web en AWS

Aplicar WAF a una aplicación web en AWS

8 diciembre 2021 | Iván Arteaga

Ninguna aplicación web está libre de ser objeto de ciberataques. Ya sea un ataque de fuerza bruta, o de DDoS, toda aplicación web a servicio de internet sufre la posibilidad de recibir uno de estos ataques y sus consecuencias. Y para ello, existen soluciones cómo WAF, que ya os comentamos anteriormente en esta entrada. Pero ¿cómo aplicamos el sistema WAF a una aplicación web en AWS?

WAF

WAF (Web Application Firewall) es un sistema de protección de firewall para aplicaciones web que se puede aplicar de diferentes formas. En este caso, AWS nos simplifica su instalación en nuestras aplicaciones. No obstante, esto no significa que podamos hacerlo sin un conocimiento previo que nos permita entender cómo funciona.

¿Qué es un Firewall de aplicaciones web y cómo funciona?

Un Firewall de aplicaciones webs, de forma resumida, se encarga de recibir las peticiones y hacer de proxy entre las conexiones externas y las aplicaciones a servir. De esta forma, puede controlar las peticiones que se realizan entre ambos finales, y cortar o dejar pasar dependiendo de cuales, siempre y cuando cumplan unas reglas que nosotros definamos. Normalmente, esta aplicación se encuentra detrás de un router o similar, pero muchas veces las propias máquinas que sirven el contenido tienen una aplicación de firewall instalada, para regular el tráfico de igual manera.

WAF en la nube

La nube es aún un concepto confuso para muchos, pero se debe tener en cuenta que sus aplicaciones no dejan de estar en equipos conectados a internet. Es decir, todas las peticiones se realizan al final a un servidor. Para ello, estos servidores deben estar protegidos, y muchos de los proveedores de hosting en la nube ya ofrecen soluciones de este tipo para asegurar nuestros equipos.

WAF en AWS

El servicio de hosting de Amazon es completamente consciente de estos riesgos, y fomenta el uso de firewall en los equipos que se contraten a través de ellos. Para ello, con el propio panel web se configuran reglas de firewall, que nos permiten controlar qué clase de peticiones entran o no en los servidores finales a nuestra disposición. Sí es cierto que cada ACL (Access Control List) que creemos, se nos aplicará un coste extra mensual, pero en cada una podemos añadir 10 reglas, para mantener la plataforma de forma segura en su nube.

Aplicar el WAF en la plataforma AWS

Para aplicar WAF en AWS, tan sólo debemos buscarlo en la lista de servicios que ya ofrece el panel web:

WAF en AWS 1

Una vez entramos en el panel, veremos un resumen con los costes, y una barra lateral izquierda con las diferentes opciones que nos ofrecen:

  1. Web ACLs: WEB aclsAquí es dónde se configuran las Access Control Lists, para definir las reglas que permitirán o denegarán el acceso de las peticiones según las condiciones que definamos.
  2. Bot Control: Esta herramienta nos posibilita discernir qué bots actúan sobre nuestro sitio, y definir reglas para permitirlos o bloquearlos cuando sea necesario.
  3. IP Sets: con esta herramienta, agrupamos sets de IPs para generar reglas con estos nombres de forma sencilla.
  4. Regex pattern sets: Lo mismo que en IP Sets, pero utilizando plantillas de expresiones regulares.
  5. Rule groups: Grupos de reglas, igual que las otras dos, que nos permite agrupar diferentes reglas para luego tratarlas como un solo objeto.

 

Todas estas opciones que nos ofrece AWS se complementan entre sí, y permiten que podamos controlar de forma más ordenada todas las peticiones realizadas a nuestras aplicaciones web.

Creación de una ACL y sus reglas en aplicación web en AWS

Para generar una ACL con sus reglas, una vez estemos en el panel anterior, bajo “Web ACLs”, vamos a hacer click en el botón “Create Web ACL”.

AWS en WTFA

Seguidamente, se abrirá un panel donde nos pedirá los datos necesarios para generar la ACL:

ACLS

  • Nombre: Nombre de la regla que vamos a añadir.
  • Descripción (opcional): Una breve descripción de lo que hace la regla.
  • CloudWatch Metric Name: Es el nombre que CloudWatch utilizará para manejar las métricas y generar gráficos de uso más adelante.
  • Resource Type: Aquí podremos elegir si vamos a utilizar una CDN (como CloudFront) o si usaremos recursos regionales. Lo más común es emplear recursos regionales, pero si tuviésemos una CDN, lo mejor sería seleccionar su propia opción.
  • Associated AWS Resources: Aquí es cuando añadimos los recursos en donde queremos que las reglas aplicadas en esta ACL funcionen. Pueden ser recursos de todo tipo, como máquinas EC2, almacenamiento S3, balanceadores de carga…

 

Una vez lo tengamos todo, clickaremos en “Siguiente”. La próxima pantalla nos permitirá configurar las reglas que queremos aplicar en esta ACL para los equipos anteriormente mencionados.

WAF en AWS

Para añadir una regla, tendremos que hacer click en “Add Rules”, y aquí nos dará dos opciones:

  • Add Managed Rule Groups: Estas reglas ya vienen predefinidas por Amazon para prevenir tipos de ataques comunes. Por ejemplo, reglas en este grupo podrían comprender el “Control de Bots”, o bloqueo a “Páginas de Admin” del sitio.
  • Add my own rule groups: Aquí se nos permitirá generar grupos de reglas propios, utilizando las opciones antes mencionadas en el apartado “Aplicar el WAF en la plataforma”.

 

Para esta última regla, entraremos algo más en detalle. Con esta, personalizaremos las reglas con diversas opciones, que podremos ajustar a nuestra necesidad según convenga:

RULES GROUP

Configuración reglas ACL de WAF en AWS

Como podemos observar, con estas tres opciones definiremos reglas según un grupo de IPs, un grupo de Reglas, o directamente nos deja acceder a un creador de reglas visual, que nos facilitará mucho el trabajo, y es el que utilizaremos.

RULER BUILDER WAF EN AWS

  • Nombre: Nombre de la regla.
  • Tipo: Regular o Basado en rating. Regular: Desde aquí podremos basar la regla en datos que contenga la petición, como la geolocalización, el header, o un fragmento del cuerpo de la petición. Basado en rating: Aquí podemos definir que la regla se realizará con un límite de peticiones en cinco minutos.

 

Según si necesitamos limitar por tipo de petición o por número de peticiones, deberemos seleccionar una u otra opción en la configuración de la regla. Cuando hayamos acabado, haremos click en “añadir”, y posteriormente, en “siguiente”. Con esto, habremos añadido la regla en la ACL. Cada ACL puede tener hasta 10 reglas diferentes.

El siguiente paso nos hará decidir qué reglas se ejecutarán antes que otras, para afinar el WAF en AWS y su función. Y en el penúltimo paso, nos indicará si preferimos que se registren métricas de uso para esta regla.

Cuando todo esté listo, tan sólo procederemos al último paso para revisar todos los datos y finalmente crear la ACL con las reglas establecidas. De esta forma, habremos creado una ACL en el WAF en AWS, y estaremos protegiendo los recursos seleccionados anteriormente con las condiciones establecidas en las reglas que hemos indicado.