Generalidades
Descripción del WAF
El servicio de WAF (Web Application Firewall) ofrece una protección robusta, contra ataques de DDos o para restringir la visualización de sitios sensibles, como ser la página de administrador de WordPress. Esto gracias a las reglas de configuración aplicadas a la infraestructura de nuestra empresa y mediante el análisis de paquetes de petición HTTP/HTTPS adicional a los modelos de tráfico.
Requerimientos
Para poder aplicar un WAF en la infraestructura, se debe tener disponible la creación de varios componentes de GCP los cuales son:
- Load Balancer (Balanceador de cargas)
- Cloud Armor (Políticas de seguridad)
- Compute Engine (La instancia de nuestra maquina virtual)
Funcionamiento
Una explicación sencilla del funcionamiento es la siguiente forma: la solicitud HTTPS, llega desde el internet a nuestro balanceador de cargas, en este proceso se verifica que la petición cumpla las reglas de Google Cloud Armor, ya sea IP por geolocalización, denegación de IP, entre otras.
Posteriormente al cumplir la regla, el balanceador de cargas redirige la petición al Backend correspondiente (configurado previamente).
Implementación a Partir de Grupos de Instancias en Google Compute Engine
A continuación implementaremos el servicio de WAF (Web Application Firewall), para mejorar la seguridad de nuestras páginas web alojadas en nuestro proyecto de GCP.
Configuraciones Iniciales
Aplicaremos las configuraciones iniciales para un grupo de instancias, posteriormente en otro artículo, explicaremos como realizarlo mediante un grupo de redes externo (NEG).
Creación/Modificación del Balanceador de Cargas
Primero nos dirigimos a nuestro proyecto, y buscamos balanceador de cargas. Luego necesitaremos crear un nuevo balanceador de cargas como se evidencia en la figura 3, o modificar el existente (si lo hay).
Figura 3. Creación de Balanceador de Cargas
El balanceador de cargas dependerá de nuestras necesidades, ya sea de aplicación o de red. En la pantalla de creación del balanceador se elegirán las opciones para su creación, tal como se muestra en la figura 4.
En esta documentación no se ahondará sobre la configuración de la creación del balanceador
Figura 4. Configuración de la creación del Balanceador de Cargas
Una vez elegidas las opciones de configuración iniciales, procedemos con las configuraciones de creacion. En el cual nos aparecerá una pantalla donde podremos elegir el Frontend, Backend y las normas de enrutamiento, tal como se evidencia en la figura 5.
Figura 5. Configuraciones del balanceador de cargas.
Si ya existía un balanceador de carga, únicamente nos aparecerá la pantalla de la figura 5 al darle clic en el botón editar.
En el siguiente segmento, definiremos más a detalle la configuración sobre el balanceador de carga.
Configuración del Frontend del Balanceador de Cargas
Para poder implementar la funcionalidad del balanceador de cargas, debemos configurar el frontend, backend y sus normas de enrutamientos, ya que estas definirán por donde pasará el trafico de las peticiones.
El Frontend del balanceador, es la IP que saldrá a la web, quien recibirá la petición y luego redireccionará el tráfico a los backends asignados (posteriormente se definirá como configurarlo). En la figura 6, se realiza una configuración de ejemplo.
Figura 6. Configuración del Frontend
Un amigable recordatorio, al momento de seleccionar el protocolo, si es HTTP, será por el puerto 80 caso contrario, de seleccionar HTTPS, será por el puerto 443, y es necesario instalar un certificado SSL.
Una vez creado nuestro frontend, se asignará una IP, y se verá como la figura 7.
Antes de proceder con la configuración del Backend de nuestro balanceador, es necesario realizar otras configuraciones respecto a nuestra instancia.
Creación del Grupo de Instancias
Para continuar con la implementación de nuestro WAF, necesitaremos crear un grupo de instancias. En el cual, crearemos la o las instancias al cual estará siendo redirigido el tráfico proveniente del Frontend.
Grupo de Instancias
El grupo de instancias nos permite contener instancias de vms (Virtual machines), en el cual están alojados nuestros proyectos. El grupo funciona como contenedor para luego configurarlo como un backend y este último recibirá el redireccionamiento del Frontend.
Para crear un grupo de instancias, debemos dirigirnos la parde de grupo de instancias dentro de compute engine, como se muestra en la figura 8.
Figura 8. Creación del Grupo de Instancias
Se desplegará una pantalla solicitando la información del grupo de instancias, en la cual podremos seleccionar dentro de los distintos tipos de instancias. En este caso, haremos el ejemplo con una instancia administrada (Stateless), en la figura 9, se ingresan las configuraciones.
Figura 9. Configurando el grupo de instancias
En la misma pantalla, solicitará la región, esta debe ser la misma que la del balanceador de carga para que este pueda detectarla. En la figura 10 se ejemplifica.
Figura 10. Elección de Región
Una vez finalizado las configuraciones, le damos crear al grupo de instancias. El cual deberá verse reflejado como la figura 11.
Figura 11. Grupo de Instancias Creado
Creación de Backend en el Balanceador de Cargas
Nos dirigimos al balanceador de cargas y luego en la configuración de backend, damos clic en crear un servicio de backend. En la figura 12 se evidencia los pasos.
Al dar clic, se nos desplegará una pantalla de creación del servicio. En este paso es importante seleccionar que el tipo de backend sea grupo de instancias, en este se utilizará el grupo creado en el paso anterior. Ver la figura 13 para más claridad.
En este caso, crearemos una política, posteriormente configuraremos la misma. Dependiendo de su necesidad, puede utilizar una política ya previamente configurada.
Configuración de las políticas de Cloud Armor
Para continuar con la fase final de la implementación de las políticas, las cuales restringirán a los internautas el acceso a los recursos que únicamente nosotros deseemos mostrar, haremos lo siguientes pasos:
Creando las reglas de las políticas WAF
Nos dirigimos a las políticas de Cloud Armor, y buscamos la política creada, tal como se evidencia en la figura 15.
Dentro de la política, podemos elegir si crear una regla o modificar las existentes. En nuestro caso, crearemos una regla de ejemplo para guiarte, como se visualiza en la figura 16.
Dentro de la pantalla de agregar regla, nos pedirán los datos y que tipo de acción se requerirá implementar nuestro WAF. Existen 2 campos los cuales son de mucha relevancia. Uno de ellos es el campo de condición y el campo de acción.
Cada uno tiene su distinta finalidad, en el campo de condición tenemos el modo básico y el modo avanzado. En el modo básico únicamente buscará coincidencias de IP, en cambio en el modo avanzado nosotros podremos configurar las reglas mediante código. En la figura 17, podemos ver como es en el modo avanzado.
En los tipos de acción tenemos diferentes opciones, estas opciones son las que se van a implementar, ya sea de denegar, permitir, limitar, entre otras. Estas se pueden visualizar en la figura 18 y 19.
Llenamos los datos necesarios para nuestra regla y seleccionamos que prioridad se va implementar, siendo un número bajo la prioridad más alta. Luego se da clic en agregar y nuestra regla se estaría aplicando correctamente.
Una de las mejores prácticas es aplicar las reglas para los TOP 10 ataques según la OWASP.
Listo ya estaría implementado nuestro WAF de un grupo de instancias, para nuestra organización. Ya podemos configurar que estos datos se visualicen de manera gráfica utilizando Google Looker y poder realizar gráficas interactivas.
En Agrega, SERVIMOS a nuestros clientes a través de nuestros servicios gestionados en aquellas operaciones que nos delegan, con nuestros servicios somos parte de la transformación de sus negocios mediante personas, procesos y tecnología.
Estamos listos para elevar la postura de ciberseguridad de tu empresa.
Si estás interesado en implementar WAF en tu empresa, contáctanos a mercadeo@agrega.com o haz clic en el botón de contacto y con mucho gusto te atenderemos.
¿Qué tan útil ha sido este blog?
¡Haz clic en una estrella para calificarla!