arrow_back

Reglas de WAF preconfiguradas de Cloud Armor

Acceder Unirse
Obtén acceso a más de 700 labs y cursos

Reglas de WAF preconfiguradas de Cloud Armor

Lab 1 hora universal_currency_alt 1 crédito show_chart Introductorio
info Es posible que este lab incorpore herramientas de IA para facilitar tu aprendizaje.
Obtén acceso a más de 700 labs y cursos

GSP879

Logotipo de los labs de autoaprendizaje de Google Cloud

Descripción general

Google Cloud Armor es la solución de seguridad de red perimetral empresarial de Google que proporciona protección contra DDoS, aplicación de reglas de WAF y capacidad de administración adaptable a gran escala.

Cloud Armor extendió los conjuntos de reglas de WAF preconfiguradas para mitigar las vulnerabilidades de seguridad de aplicaciones web que figuran en la lista OWASP Top 10. Los conjuntos de reglas se basan en la versión 3.0.2 del conjunto de reglas principales para usar con Modsecurity de OWASP y tienen como fin proteger contra algunos de los riesgos de seguridad de aplicaciones web más comunes, entre los que se encuentran la inclusión de archivos locales (LFI), la inclusión de archivos remotos (RFI), la ejecución de código remoto (RCE) y muchos más.

En este lab, aprenderás a mitigar algunas de las vulnerabilidades comunes con las reglas de WAF de Google Cloud Armor.

Qué aprenderás

En este lab, aprenderás a realizar las siguientes tareas:

  • Configurar un grupo de instancias y un balanceador de cargas global para admitir un servicio
  • Configurar políticas de seguridad de Cloud Armor con reglas de WAF preconfiguradas para proteger contra LFI, RCE, escáneres, ataques de protocolo y fijación de sesión
  • Validar que Cloud Armor mitigó un ataque mediante la observación de los registros

Topología de las reglas de WAF de Cloud Armor

La aplicación OWASP Juice Shop es útil para el entrenamiento y el conocimiento de la seguridad, ya que contiene en su diseño instancias de cada una de las vulnerabilidades de seguridad del documento OWASP Top 10. Un atacante puede aprovecharla para realizar pruebas. En este lab, la usarás para demostrar algunos ataques a aplicaciones tras proteger la aplicación con reglas de WAF de Cloud Armor. La aplicación es frontend con un balanceador de cargas de Google Cloud, al que se aplican la política y las reglas de seguridad de Cloud Armor. Se entrega en el Internet público, por lo que se puede acceder a ella desde casi cualquier lugar y está protegida mediante Cloud Armor y reglas de firewall de VPC.

Configuración y requisitos

Antes de hacer clic en el botón Comenzar lab

Lee estas instrucciones. Los labs cuentan con un temporizador que no se puede pausar. El temporizador, que comienza a funcionar cuando haces clic en Comenzar lab, indica por cuánto tiempo tendrás a tu disposición los recursos de Google Cloud.

Este lab práctico te permitirá realizar las actividades correspondientes en un entorno de nube real, no en uno de simulación o demostración. Para ello, se te proporcionan credenciales temporales nuevas que utilizarás para acceder a Google Cloud durante todo el lab.

Para completar este lab, necesitarás lo siguiente:

  • Acceso a un navegador de Internet estándar. Se recomienda el navegador Chrome.
Nota: Usa una ventana del navegador privada o de incógnito (opción recomendada) para ejecutar el lab. Así evitarás conflictos entre tu cuenta personal y la cuenta de estudiante, lo que podría generar cargos adicionales en tu cuenta personal.
  • Tiempo para completar el lab (recuerda que, una vez que comienzas un lab, no puedes pausarlo).
Nota: Usa solo la cuenta de estudiante para este lab. Si usas otra cuenta de Google Cloud, es posible que se apliquen cargos a esa cuenta.

Cómo iniciar tu lab y acceder a la consola de Google Cloud

  1. Haz clic en el botón Comenzar lab. Si debes pagar por el lab, se abrirá un diálogo para que selecciones la forma de pago. A la izquierda, se encuentra el panel Detalles del lab, que tiene estos elementos:

    • El botón para abrir la consola de Google Cloud
    • El tiempo restante
    • Las credenciales temporales que debes usar para el lab
    • Otra información para completar el lab, si es necesaria
  2. Haz clic en Abrir la consola de Google Cloud (o haz clic con el botón derecho y selecciona Abrir el vínculo en una ventana de incógnito si ejecutas el navegador Chrome).

    El lab inicia recursos y abre otra pestaña en la que se muestra la página de acceso.

    Sugerencia: Ordena las pestañas en ventanas separadas, una junto a la otra.

    Nota: Si ves el diálogo Elegir una cuenta, haz clic en Usar otra cuenta.
  3. De ser necesario, copia el nombre de usuario a continuación y pégalo en el diálogo Acceder.

    {{{user_0.username | "Username"}}}

    También puedes encontrar el nombre de usuario en el panel Detalles del lab.

  4. Haz clic en Siguiente.

  5. Copia la contraseña que aparece a continuación y pégala en el diálogo Te damos la bienvenida.

    {{{user_0.password | "Password"}}}

    También puedes encontrar la contraseña en el panel Detalles del lab.

  6. Haz clic en Siguiente.

    Importante: Debes usar las credenciales que te proporciona el lab. No uses las credenciales de tu cuenta de Google Cloud. Nota: Usar tu propia cuenta de Google Cloud para este lab podría generar cargos adicionales.
  7. Haz clic para avanzar por las páginas siguientes:

    • Acepta los Términos y Condiciones.
    • No agregues opciones de recuperación o autenticación de dos factores (esta es una cuenta temporal).
    • No te registres para obtener pruebas gratuitas.

Después de un momento, se abrirá la consola de Google Cloud en esta pestaña.

Nota: Para acceder a los productos y servicios de Google Cloud, haz clic en el menú de navegación o escribe el nombre del servicio o producto en el campo Buscar. Ícono del menú de navegación y campo de búsqueda

Activa Cloud Shell

Cloud Shell es una máquina virtual que cuenta con herramientas para desarrolladores. Ofrece un directorio principal persistente de 5 GB y se ejecuta en Google Cloud. Cloud Shell proporciona acceso de línea de comandos a tus recursos de Google Cloud.

  1. Haz clic en Activar Cloud Shell Ícono de Activar Cloud Shell en la parte superior de la consola de Google Cloud.

  2. Haz clic para avanzar por las siguientes ventanas:

    • Continúa en la ventana de información de Cloud Shell.
    • Autoriza a Cloud Shell para que use tus credenciales para realizar llamadas a la API de Google Cloud.

Cuando te conectes, habrás completado la autenticación, y el proyecto estará configurado con tu Project_ID, . El resultado contiene una línea que declara el Project_ID para esta sesión:

Your Cloud Platform project in this session is set to {{{project_0.project_id | "PROJECT_ID"}}}

gcloud es la herramienta de línea de comandos de Google Cloud. Viene preinstalada en Cloud Shell y es compatible con la función de autocompletado con tabulador.

  1. Puedes solicitar el nombre de la cuenta activa con este comando (opcional):
gcloud auth list
  1. Haz clic en Autorizar.

Resultado:

ACTIVE: * ACCOUNT: {{{user_0.username | "ACCOUNT"}}} To set the active account, run: $ gcloud config set account `ACCOUNT`
  1. Puedes solicitar el ID del proyecto con este comando (opcional):
gcloud config list project

Resultado:

[core] project = {{{project_0.project_id | "PROJECT_ID"}}} Nota: Para obtener toda la documentación de gcloud, en Google Cloud, consulta la guía con la descripción general de gcloud CLI.

Antes de comenzar

  • En Cloud Shell, configura tu ID del proyecto:
gcloud config list project export PROJECT_ID=$(gcloud config get-value project) echo $PROJECT_ID gcloud config set project $PROJECT_ID

Tarea 1: Crea la red de VPC

  • En Cloud Shell, ingresa el siguiente comando para crear una red de VPC:
gcloud compute networks create {{{project_0.startup_script.network_name| Network Name}}} --subnet-mode custom Created NAME SUBNET_MODE BGP_ROUTING_MODE {{{project_0.startup_script.network_name| Network Name}}} CUSTOM REGIONAL

Crea una subred

  • En Cloud Shell, ingresa el siguiente comando para crear una subred:
gcloud compute networks subnets create {{{project_0.startup_script.subnet_name| Subnet Name}}} \ --network {{{project_0.startup_script.network_name| Network Name}}} --range 10.0.0.0/24 --region {{{project_0.startup_script.region_1| Region}}} Created NAME REGION NETWORK RANGE {{{project_0.startup_script.subnet_name| Subnet Name}}} {{{project_0.startup_script.region_1| Region}}} {{{project_0.startup_script.network_name| Network Name}}} 10.0.0.0/24

Crea reglas de firewall de VPC

Después de crear la VPC y la subred, configura algunas reglas de firewall.

  • La primera regla de firewall llamada allow-js-site permite que todas las IPs accedan a la IP externa del sitio web de la aplicación de prueba en el puerto 3000.
  • La segunda regla de firewall, llamada allow-health-check, permite las verificaciones de estado desde la IP de origen de los balanceadores de cargas.
  1. En Cloud Shell, ingresa el siguiente comando para crear una regla de firewall que permita que todas las IPs accedan a la aplicación:
gcloud compute firewall-rules create {{{project_0.startup_script.firewall_rule| Firewall Name}}} --allow tcp:3000 --network {{{project_0.startup_script.network_name| Network Name}}}

Resultado:

Creating firewall...done. NAME NETWORK DIRECTION PRIORITY ALLOW DENY DISABLED {{{project_0.startup_script.firewall_rule| Firewall Name}}} {{{project_0.startup_script.network_name| Network Name}}} INGRESS 1000 tcp:3000 False
  1. En Cloud Shell, ingresa el siguiente comando para crear una regla de firewall que permita las verificaciones de estado de los rangos de verificación de estado de Google:
gcloud compute firewall-rules create {{{project_0.startup_script.firewall_rule1| Firewall Name1}}} \ --network={{{project_0.startup_script.network_name| Network Name}}} \ --action=allow \ --direction=ingress \ --source-ranges=130.211.0.0/22,35.191.0.0/16 \ --target-tags=allow-healthcheck \ --rules=tcp

Resultado:

Creating firewall...done. NAME NETWORK DIRECTION PRIORITY ALLOW DENY DISABLED {{{project_0.startup_script.firewall_rule1| Firewall_Name1}}} {{{project_0.startup_script.network_name| Network Name}}} INGRESS 1000 tcp False

Haz clic en Revisar mi progreso para verificar el objetivo. Crear la red de VPC

Tarea 2: Configura la aplicación de prueba

Crea la aplicación de prueba, en este caso, el servidor web OWASP Juice Shop. Cuando creas la instancia de procesamiento, usas una imagen de contenedor para garantizar que el servidor tenga los servicios adecuados. Implementas este servidor en y tiene una etiqueta de red que permite verificaciones de estado.

Crea la aplicación OWASP Juice Shop

  • Usa la aplicación de código abierto OWASP Juice Shop ya conocida como la aplicación vulnerable. También puedes usar esta aplicación para realizar desafíos de seguridad de OWASP a través del sitio web de OWASP.
gcloud compute instances create-with-container {{{project_0.startup_script.vm_instance| vm_instance}}} --container-image bkimminich/juice-shop \ --network {{{project_0.startup_script.network_name| Network Name}}} \ --subnet {{{project_0.startup_script.subnet_name| Subnet Name}}} \ --private-network-ip=10.0.0.3 \ --machine-type n1-standard-2 \ --zone {{{project_0.startup_script.zone| Zone}}} \ --tags allow-healthcheck

Resultado:

NAME ZONE MACHINE_TYPE PREEMPTIBLE {{{project_0.startup_script.vm_instance| vm_instance}}} {{{project_0.startup_script.zone| Zone}}} n1-standard-2 INTERNAL_IP EXTERNAL_IP STATUS 10.0.0.3 RUNNING

Haz clic en Revisar mi progreso para verificar el objetivo. Configurar la aplicación de prueba

Configura el componente del balanceador de cargas de Cloud: grupo de instancias

  1. En Cloud Shell, ingresa el siguiente comando para crear el grupo de instancias no administrado:
gcloud compute instance-groups unmanaged create {{{project_0.startup_script.vm_instance_group| Instance Group}}} \ --zone={{{project_0.startup_script.zone| Zone}}}

Resultado:

NAME LOCATION SCOPE NETWORK MANAGED INSTANCES {{{project_0.startup_script.vm_instance_group| Instance Group}}} {{{project_0.startup_script.zone| Zone}}} zone 0
  1. Agrega la instancia de Google Compute Engine (GCE) de Juice Shop al grupo de instancias no administrado:
gcloud compute instance-groups unmanaged add-instances {{{project_0.startup_script.vm_instance_group| Instance Group}}} \ --zone={{{project_0.startup_script.zone| Zone}}} \ --instances={{{project_0.startup_script.vm_instance| VM Instance}}}

Resultado:

Updated [https://www.googleapis.com/compute/v1/projects//zones/{{{project_0.startup_script.zone| Zone}}}/instanceGroups/{{{project_0.startup_script.vm_instance_group| Instance_Group}}}].
  1. Establece el puerto con nombre en el de la aplicación Juice Shop:
gcloud compute instance-groups unmanaged set-named-ports \ {{{project_0.startup_script.vm_instance_group| Instance Group}}} \ --named-ports=http:3000 \ --zone={{{project_0.startup_script.zone| Zone}}}

Resultado:

Updated [https://www.googleapis.com/compute/v1/projects//zones/{{{project_0.startup_script.zone| Zone}}}/instanceGroups/{{{project_0.startup_script.vm_instance_group| Instance Group}}}].

Haz clic en Revisar mi progreso para verificar el objetivo. Configurar el componente del balanceador de cargas de Cloud: grupo de instancias

Configura el componente del balanceador de cargas de Cloud: verificación de estado

Ahora que creaste el grupo de instancias no administrado, crea una verificación de estado, un servicio de backend, un mapa de URLs, un proxy de destino y una regla de reenvío.

  • En Cloud Shell, ingresa el siguiente comando para crear la verificación de estado del puerto de servicio de Juice Shop:
gcloud compute health-checks create tcp tcp-port-3000 \ --port 3000

Resultado:

Created NAME PROTOCOL tcp-port-3000 TCP

Configura el componente del balanceador de cargas de Cloud: servicio de backend

  1. En Cloud Shell, ingresa el siguiente comando para crear los parámetros del servicio de backend:
gcloud compute backend-services create juice-shop-backend \ --protocol HTTP \ --port-name http \ --health-checks tcp-port-3000 \ --enable-logging \ --global

Resultado:

NAME BACKENDS PROTOCOL juice-shop-backend HTTP
  1. Agrega el grupo de instancias de Juice Shop al servicio de backend:
gcloud compute backend-services add-backend juice-shop-backend \ --instance-group={{{project_0.startup_script.vm_instance_group| Instance Group}}} \ --instance-group-zone={{{project_0.startup_script.zone| Zone}}} \ --global

Resultado:

Updated [https://www.googleapis.com/compute/v1/projects/cythom-host1/global/backendServices/juice-shop-backend].

Configura el componente del balanceador de cargas de Cloud: mapa de URLs

  • En Cloud Shell, ingresa el siguiente comando para crear el mapa de URLs que enviará las solicitudes entrantes al backend:
gcloud compute url-maps create juice-shop-loadbalancer \ --default-service juice-shop-backend

Resultado:

NAME DEFAULT_SERVICE juice-shop-loadbalancer backendServices/juice-shop-backend

Configura el componente del balanceador de cargas de Cloud: proxy de destino

  • En Cloud Shell, ingresa el siguiente comando para crear el proxy de destino que enruta las solicitudes entrantes al mapa de URLs:
gcloud compute target-http-proxies create juice-shop-proxy \ --url-map juice-shop-loadbalancer

Resultado:

NAME URL_MAP juice-shop-proxy juice-shop-loadbalancer

Configura el componente del balanceador de cargas de Cloud: regla de reenvío

  • En Cloud Shell, ingresa el siguiente comando para crear la regla de reenvío del balanceador de cargas:
gcloud compute forwarding-rules create juice-shop-rule \ --global \ --target-http-proxy=juice-shop-proxy \ --ports=80

Resultado:

Created [https://www.googleapis.com/compute/v1/projects/cythom-host1/global/forwardingRules/juice-shop-rule].

Verifica que el servicio Juice Shop esté en línea

  1. En Cloud Shell, ingresa lo siguiente:
PUBLIC_SVC_IP="$(gcloud compute forwarding-rules describe juice-shop-rule --global --format="value(IPAddress)")" echo $PUBLIC_SVC_IP

Resultado:

<public VIP of service>

Espera unos minutos antes de continuar. Si no lo haces, podrías recibir una respuesta HTTP/1.1 404 Not Found.

  1. En Cloud Shell, ingresa lo siguiente:
curl -Ii http://$PUBLIC_SVC_IP

Resultado:

HTTP/1.1 200 OK <...>

También puedes ir al navegador para ver Juice Shop.

La página de bienvenida a OWASP Juice Shop

Ahora puedes explorar las vulnerabilidades de Juice Shop y protegerte de ellas con conjuntos de reglas de WAF de Cloud Armor.

Haz clic en Revisar mi progreso para verificar el objetivo. Configurar el componente del balanceador de cargas de Cloud: verificación de estado

Tarea 3: Demuestra vulnerabilidades conocidas

En este lab, demostrarás los estados antes y después de que las reglas de WAF de Cloud Armor se propaguen en pasos condensados.

Observa una vulnerabilidad de LFI: salto de directorio

La inclusión de archivos locales es el proceso de observar los archivos presentes en el servidor explotando la falta de validación de entrada en la solicitud con el fin de exponer potencialmente datos sensibles. A continuación, se muestra que es posible que se produzca un salto de directorio. En tu navegador o con una cURL, observa una ruta existente que haya entregado la aplicación.

  1. En Cloud Shell, ingresa lo siguiente:
curl -Ii http://$PUBLIC_SVC_IP/ftp

Resultado:

HTTP/1.1 200 OK <...>

Observa que el salto de directorio también funciona.

  1. En Cloud Shell, ingresa lo siguiente:
curl -Ii http://$PUBLIC_SVC_IP/ftp/../

Resultado:

HTTP/1.1 200 OK <...>

Observa una vulnerabilidad de RCE

La ejecución remota de código incluye varias situaciones de inserción de comandos de UNIX y Windows que permiten a los atacantes ejecutar comandos del SO que, por lo general, están restringidos a usuarios con privilegios. A continuación, se muestra cómo pasa una ejecución simple del comando ls.

  • En Cloud Shell, ingresa lo siguiente:
curl -Ii http://$PUBLIC_SVC_IP/ftp?doc=/bin/ls

Resultado:

HTTP/1.1 200 OK <...>

Quita las marcas de cURL para observar el resultado completo.

Observa el acceso de un escáner reconocido

Existen aplicaciones de análisis comerciales y de código abierto que tienen varios propósitos, como encontrar vulnerabilidades. Estas herramientas usan usuarios-agentes y otros encabezados conocidos. Observa que la cURL funciona con un encabezado de usuario-agente conocido.

  • En Cloud Shell:
curl -Ii http://$PUBLIC_SVC_IP -H "User-Agent: blackwidow"

Resultado:

HTTP/1.1 200 OK <...>

Observa un ataque de protocolo: división de HTTP

Algunas aplicaciones web usan la entrada del usuario para generar los encabezados en las respuestas. Si la aplicación no filtra correctamente la entrada, un atacante puede dañar el parámetro de entrada con la secuencia %0d%0a (la secuencia CRLF que se usa para separar diferentes líneas).

Cualquier elemento que analice la respuesta, como un servidor proxy intermediario, podría interpretarla como dos respuestas y, potencialmente, entregar contenido falso en solicitudes posteriores. Insertar la secuencia %0d%0a en el parámetro de entrada puede hacer que se muestre una página engañosa.

  • En Cloud Shell, ingresa lo siguiente:
curl -Ii "http://$PUBLIC_SVC_IP/index.html?foo=advanced%0d%0aContent-Length:%200%0d%0a%0d%0aHTTP/1.1%20200%20OK%0d%0aContent-Type:%20text/html%0d%0aContent-Length:%2035%0d%0a%0d%0a<html>Sorry,%20System%20Down</html>"

Resultado:

HTTP/1.1 200 OK <...>

Observa la fijación de sesión

  • En Cloud Shell:
curl -Ii http://$PUBLIC_SVC_IP -H session_id=X

Resultado:

HTTP/1.1 200 OK <...>

Tarea 4: Define reglas de WAF de Cloud Armor

  1. Enumera las reglas de WAF preconfiguradas con el siguiente comando en Cloud Shell:
gcloud compute security-policies list-preconfigured-expression-sets EXPRESSION_SET Sqli-canary RULE_ID owasp-crs-v030001-id942110-sqli owasp-crs-v030001-id942120-sqli <...>
  1. Crea la política de seguridad de Cloud Armor con el siguiente comando en Cloud Shell:
gcloud compute security-policies create {{{project_0.startup_script.policy_name| Policy Name}}} \ --description "Block with OWASP ModSecurity CRS"
  1. En Cloud Shell, actualiza la regla predeterminada de la política de seguridad.
Nota: La prioridad de la regla predeterminada tiene un valor numérico de 2147483647. gcloud compute security-policies rules update 2147483647 \ --security-policy {{{project_0.startup_script.policy_name| Policy Name}}} \ --action "deny-403"
  1. Dado que la regla predeterminada está configurada con la acción de denegar, debes permitir el acceso desde tu IP. Encuentra tu IP pública (cURL, ipmonkey, whatismyip, etc.):
MY_IP=$(curl ifconfig.me)
  1. Agrega la primera regla para permitir el acceso desde tu IP (INSERTA TU IP A CONTINUACIÓN):
gcloud compute security-policies rules create 10000 \ --security-policy {{{project_0.startup_script.policy_name| Policy Name}}} \ --description "allow traffic from my IP" \ --src-ip-ranges "$MY_IP/32" \ --action "allow"
  1. En Cloud Shell, actualiza la política de seguridad para bloquear los ataques de LFI.

Aplica el conjunto de reglas principales para usar con ModSecurity de OWASP, que evita el salto de directorio en las inclusiones de archivos locales.

gcloud compute security-policies rules create 9000 \ --security-policy {{{project_0.startup_script.policy_name| Policy Name}}} \ --description "block local file inclusion" \ --expression "evaluatePreconfiguredExpr('lfi-stable')" \ --action deny-403
  1. En Cloud Shell, actualiza la política de seguridad para bloquear la ejecución remota de código (RCE).

En función del conjunto de reglas principales para ModSecurity de OWASP, aplica reglas que buscan RCE, incluida la inyección de comandos. Se detectan y bloquean los comandos típicos del SO.

gcloud compute security-policies rules create 9001 \ --security-policy {{{project_0.startup_script.policy_name| Policy Name}}} \ --description "block rce attacks" \ --expression "evaluatePreconfiguredExpr('rce-stable')" \ --action deny-403
  1. Actualiza la política de seguridad para bloquear los escáneres de seguridad.

Aplica el conjunto de reglas principal para ModSecurity de OWASP para bloquear escáneres de seguridad conocidos, clientes HTTP de escritura de secuencias de comandos y rastreadores web.

gcloud compute security-policies rules create 9002 \ --security-policy {{{project_0.startup_script.policy_name| Policy Name}}} \ --description "block scanners" \ --expression "evaluatePreconfiguredExpr('scannerdetection-stable')" \ --action deny-403
  1. En Cloud Shell, actualiza la política de seguridad para bloquear los ataques de protocolo.

En función del conjunto de reglas principales para ModSecurity de OWASP, aplica reglas que busquen caracteres de retorno de carro (CR) %0d y salto de línea (LF) %0a, y otros tipos de ataques de protocolo como el contrabando de solicitudes HTTP.

gcloud compute security-policies rules create 9003 \ --security-policy {{{project_0.startup_script.policy_name| Policy Name}}} \ --description "block protocol attacks" \ --expression "evaluatePreconfiguredExpr('protocolattack-stable')" \ --action deny-403
  1. Actualiza la política de seguridad para bloquear la fijación de sesión.

En función del conjunto de reglas principales para ModSecurity de OWASP, aplica las siguientes reglas con Cloud Shell:

gcloud compute security-policies rules create 9004 \ --security-policy {{{project_0.startup_script.policy_name| Policy Name}}} \ --description "block session fixation attacks" \ --expression "evaluatePreconfiguredExpr('sessionfixation-stable')" \ --action deny-403
  1. Vincula la política de seguridad al servicio de backend:
gcloud compute backend-services update juice-shop-backend \ --security-policy {{{project_0.startup_script.policy_name| Policy Name}}} \ --global

Las reglas pueden tardar un tiempo en propagarse (pero no más de 10 minutos).

  1. Una vez que haya transcurrido el tiempo suficiente, prueba las vulnerabilidades que se demostraron anteriormente para confirmar la aplicación de la regla WAF de Cloud Armor en el siguiente paso.

Haz clic en Revisar mi progreso para verificar el objetivo. Crear la política de seguridad de Cloud Armor

Observa la protección de Cloud Armor con el conjunto de reglas principales para ModSecurity de OWASP

  1. En Cloud Shell, confirma que se mitigó la vulnerabilidad LFI:
curl -Ii http://$PUBLIC_SVC_IP/?a=../

Resultado:

HTTP/1.1 403 Forbidden <...>
  1. En Cloud Shell, confirma que se mitigó el ataque RCE:
curl -Ii http://$PUBLIC_SVC_IP/ftp?doc=/bin/ls

Resultado:

HTTP/1.1 403 Forbidden <..>
  1. En Cloud Shell, confirma la detección de un escáner conocido.
curl -Ii http://$PUBLIC_SVC_IP -H "User-Agent: blackwidow"

Resultado:

HTTP/1.1 403 Forbidden <..>
  1. En Cloud Shell, confirma que se mitigó un ataque de protocolo.

Según la versión 3.0.2 del conjunto de reglas principales para ModSecurity de OWASP, el ataque de protocolo se mitiga de la siguiente manera:

curl -Ii "http://$PUBLIC_SVC_IP/index.html?foo=advanced%0d%0aContent-Length:%200%0d%0a%0d%0aHTTP/1.1%20200%20OK%0d%0aContent-Type:%20text/html%0d%0aContent-Length:%2035%0d%0a%0d%0a<html>Sorry,%20System%20Down</html>"

Resultado:

HTTP/1.1 403 Forbidden <..>
  1. En Cloud Shell, confirma que se bloquearon los intentos de fijación de sesión:
curl -Ii http://$PUBLIC_SVC_IP/?session_id=a

Resultado:

HTTP/1.1 403 Forbidden <..>

Tarea 5: Revisa las reglas de seguridad de Cloud Armor

Ahora que creaste la política de seguridad, mira qué reglas se configuraron.

Página con pestañas de reglas, que enumera varias reglas y sus descripciones

Las reglas se evalúan por prioridad: se analizan las cifras más bajas en primer lugar y, una vez que se activa una regla, no se continúa el procesamiento de los valores de prioridad más altos.

  • Prioridad 9000: Bloquea LFI (inclusión de archivos locales)
  • Prioridad 9001: Bloquea RCE (ejecución de código remoto/inyección de comandos)
  • Prioridad 9002: Bloquea escáneres detectados
  • Prioridad 9003: Bloquea ataques de protocolo como la división y el contrabando de HTTP
  • Prioridad 9004: Bloquea ataques de fijación de sesión
  • Prioridad 10000: Permite que tu IP acceda al sitio web
  • Prioridad Default: Acceso denegado.
Nota: Observa que la regla "permitir tu IP" está configurada con el número de prioridad más alto para permitir el acceso al sitio, pero bloquea cualquier ataque.

Tarea 6: Observa los registros de la política de seguridad de Cloud Armor

En la página de la consola de Cloud Armor, consulta los detalles de la política de seguridad; haz clic en la pestaña Registros y, después, en el vínculo Ver registros de la política para que se te dirija a la página de Cloud Logging. Filtra automáticamente en función de la política de seguridad de interés, por ejemplo, resource.type:(http_load_balancer) Y jsonPayload.enforcedSecurityPolicy.name:. Observa los códigos de respuesta de error 403 y expande los detalles del registro para ver el nombre de la política de seguridad aplicada, el valor del campo con coincidencias y, más abajo, los IDs de expresión preconfigurados (o el ID de firma).

Filtra automáticamente en función de la política de seguridad de interés, por ejemplo, resource.type:(http_load_balancer) Y jsonPayload.enforcedSecurityPolicy.name:().

  • Observa los códigos de respuesta de error 403 y expande los detalles del registro para ver el nombre de la política de seguridad aplicada, el valor del campo con coincidencias y, más abajo, los IDs de expresión preconfigurados (o el ID de firma).

En las siguientes capturas de pantalla, se muestran ejemplos de los registros de las políticas de seguridad aplicadas que se configuraron en este lab.

Registro de LFI El registro de LFI

Registro de RCE El registro de RCE

Registro de detección de escáneres El registro de detección de escáneres

Registro de ataques de protocolo El registro de ataques de protocolo

Registro de fijación de sesión El registro de fijación de sesión

¡Felicitaciones!

Mitigaste correctamente algunas de las vulnerabilidades comunes con las reglas de WAF de Google Cloud Armor.

Última actualización del manual: 12 de mayo de 2025

Prueba más reciente del lab: 12 de mayo de 2025

Copyright 2025 Google LLC. All rights reserved. Google y el logotipo de Google son marcas de Google LLC. Los demás nombres de productos y empresas pueden ser marcas de las respectivas empresas a las que estén asociados.

Antes de comenzar

  1. Los labs crean un proyecto de Google Cloud y recursos por un tiempo determinado
  2. .
  3. Los labs tienen un límite de tiempo y no tienen la función de pausa. Si finalizas el lab, deberás reiniciarlo desde el principio.
  4. En la parte superior izquierda de la pantalla, haz clic en Comenzar lab para empezar

Usa la navegación privada

  1. Copia el nombre de usuario y la contraseña proporcionados para el lab
  2. Haz clic en Abrir la consola en modo privado

Accede a la consola

  1. Accede con tus credenciales del lab. Si usas otras credenciales, se generarán errores o se incurrirá en cargos.
  2. Acepta las condiciones y omite la página de recursos de recuperación
  3. No hagas clic en Finalizar lab, a menos que lo hayas terminado o quieras reiniciarlo, ya que se borrará tu trabajo y se quitará el proyecto

Este contenido no está disponible en este momento

Te enviaremos una notificación por correo electrónico cuando esté disponible

¡Genial!

Nos comunicaremos contigo por correo electrónico si está disponible

Un lab a la vez

Confirma para finalizar todos los labs existentes y comenzar este

Usa la navegación privada para ejecutar el lab

Usa una ventana de navegación privada o de Incógnito para ejecutar el lab. Así evitarás cualquier conflicto entre tu cuenta personal y la cuenta de estudiante, lo que podría generar cargos adicionales en tu cuenta personal.