Защита веб-приложения с помощью WAF
В этой лабораторной работе вы защитите уязвимое веб-приложение, размещенное на виртуальной машине в облаке Advanced, с помощью сервиса Web Application Firewall.
Для этого вы будете использовать следующие сервисы и инструменты:
-
Web Application Firewall (WAF) — межсетевой экран уровня приложений для выявления и блокировки атак на веб-приложения.
-
Elastic Cloud Server (ESC) — сервис, в рамках которого предоставляется виртуальная машина.
-
Elastic IP (EIP) — публичный IP-адрес для доступа к веб-сайту через интернет.
-
Data Encryption Workshop (DEW) — сервис шифрования данных и управления ключевыми парами.
-
nip.io — бесплатный сервис для сопоставления любого IP-адреса с доменным именем.
-
Уязвимое веб-приложение OWASP Juice Shop (en).
Шаги:
Перед началом работы
Если вы уже зарегистрированы, войдите в консоль управления Advanced через личный кабинет Cloud.ru или как IAM-пользователь.
1. Настройте виртуальную машину
На этом шаге вы подготовите ресурсы и создадите виртуальную машину в облаке Advanced с необходимыми параметрами.
-
Создайте сеть и подсеть VPC со следующими параметрами:
В блоке Basic Information задайте:
-
Name — название сети «vpc-test-WAF».
-
IPv4 CIDR Block — диапазон IP-адресов 192.168.0.0/24.
-
Enterprise Project — проект по умолчанию default.
В блоке Default Subnet задайте:
-
Name — название подсети, например «subnet-test-WAF».
-
IPv4 CIDR Block — диапазон IP-адресов для подсети 192.168.0.0/24.
-
-
Определите свой публичный IP-адрес в интернете с помощью любого онлайн-сервиса, например 2ip.ru, reg.ru или pr-cy.ru. Эти сервисы автоматически отображают ваш публичный IP-адрес при посещении их веб-страницы.
-
Настройте группу безопасности:
Создайте группу безопасности со следующими параметрами:
-
Name — название группы безопасности, например «sg-test-WAF».
-
Enterprise Project — проект по умолчанию default.
-
Template — шаблон с правилами группы безопасности Fast-add rule.
Чтобы ограничить доступ к стенду на время тестирования только вашим публичным IP, в созданной группе безопасности добавьте правило группы безопасности Fast-Add Rule со следующими параметрами:
-
Protocols and Ports — протоколы SSH, ICMP, HTTP, HTTPS.
-
Type — тип IP-адресов IPv4.
-
Source IP — ваш публичный IP, определенный на предыдущем шаге.
-
Action — действие правила Allow — разрешающее.
-
-
Создайте ключевую пару со следующими параметрами:
-
Key Pair Name — название пары ключей, например «KeyPair-test-WAF».
-
Type — алгоритм по умолчанию.
Предложение «I agree to host the private key of the key pair» можно не принимать.
Ключевая пара потребуется в дальнейшем для входа в операционную систему виртуальной машины по SSH.
Рекомендуется перенести пару ключей в каталог .ssh, который расположен в домашнем каталоге. Если каталога .ssh нет, создайте его.
Чтобы найти домашний каталог:
-
В Windows — в графическом интерфейсе в проводник вставьте %userprofile% и нажмите ENTER.
-
В Linux — выполните команду:
cd ~ -
-
Создайте виртуальную машину со следующими параметрами:
-
AZ — зона доступности AZ5.
-
Specifications — спецификация виртуальной машины General-purpose s7n.medium.2.
-
Image — Public Image Ubuntu 22.04.
-
Network — созданные ранее сеть и подсеть VPC.
-
Security Group — созданная ранее группа безопасности, остальные нужно исключить.
-
EIP — автоматическое назначение Auto assign.
-
Billed By — способ тарификации By bandwidth.
-
Bandwidth Size — ширина полосы пропускания, например 10.
-
Release Option — активируйте опцию удаления EIP вместе с виртуальной машиной.
-
ECS Name — название виртуальной машины, например «ecs-test-WAF».
-
Login Mode — способ аутентификации по ключевой паре Key Pair.
-
Key Pair — созданная ранее ключевая пара.
-
Активируйте чекбокс с уведомлением.
-
Key Pair — созданная ранее ключевая пара.
-
Enterprise Project — проект по умолчанию default.
-
-
Подключитесь к виртуальной машине по SSH:
-
Убедитесь, что статус созданной ВМ «Running».
-
Скопируйте EIP ВМ в столбце IP Address.
-
Используя утилиту cmd или другую, выполните команду:
ssh root@X.X.X.XГде X.X.X.X — публичный IP виртуальной машины.
-
-
Подготовьте ВМ для установки веб-приложения:
sudo apt update
Для упрощения задания мы будем подключаться к ВМ под именем root. Такой способ является небезопасным и может использоваться только в тестовой среде.
2. Разверните уязвимое веб-приложение «OWASP Juice Shop»
-
Установите веб-приложение OWASP Juice Shop (en) методом «Docker Container». Для запуска контейнера замените команду из инструкции в шаге выше на следующую:
docker run -rm -d -p 80:3000 bkimminich/juice-shop -
Проверьте работу вашего веб-приложения, перейдя в веб-браузере по адресу http://X.X.X.X.nip.io/, где X.X.X.X — публичный IP виртуальной машины.
Сервис nip.io позволяет разрешать доменное имя в соответствующий IP-адрес без настройки DNS-записи. Вместо него вы можете использовать собственное зарегистрированное доменное имя с TLS/SSL-сертификатом.
3. Выполните атаку на веб-приложение
-
Очистите кеш браузера.
-
Откройте в веб-браузере страницу аутентификации веб-приложения.
-
Выполните атаку типа SQL-инъекция на форму авторизации. Для этого в поле email и пароль введите следующие значения:
-
Any_text' OR 1=1 --
-
любое значение, например pass
-
-
Нажмите log in.
Аутентификация пройдет успешно. Вы вошли в личный кабинет под именем admin.
Запрос в систему выглядит так: «Верни мне пользователя, если логин равен Any_text' или если условие 1=1 истинно». SQL-инъекция с условием «OR 1=1» в строке запроса «обманывает» систему проверки данных аутентификации, так как условие 1=1 — всегда истинно и критерий отбора не ограничивается конкретным логином. Знак -- в SQL означает комментарий до конца строки. Символы пароля после этого знака игнорируются сервером баз данных, и проверка пароля не выполняется.
4. Подключите защиту атак на веб-приложения WAF
-
В списке сервисов выберите Web Application Firewall.
-
В правом верхнем углу нажмите Create WAF.
-
Задайте следующие параметры:
-
WAF Mode — Cloud Mode.
-
Note — подтвердите ознакомление с условиями.
ПримечаниеВ режиме Cloud Mode инстанс WAF использует вычислительные ресурсы совместно с другими пользователями облака.
Чтобы использовать выделенный под вас инстанс WAF, создайте WAF с режимом Dedicated Mode.
-
-
В консоли Web Application Firewall в меню слева перейдите в раздел Website Settings и нажмите Add Website.
-
Задайте следующие параметры:
-
Website Name — название «OWASP-Juice-Shop».
-
Domain Name — HTTP-адрес вашего веб-приложения.
-
Protected Port — Standard port.
-
Server Configuration:
-
Client Protocol — HTTP.
-
Server Protocol — HTTP.
-
Server Address — публичный IP виртуальной машины.
-
Server Port — 80.
-
-
Proxy Configured — No proxy.
-
Policy — System-generated policy. При необходимости можно создать собственные политики.
-
-
Нажмите Whitelist WAF now, когда консоль предложит настроить Whitelist, или в списке созданных веб-сайтов в столбце Access Progress нажмите Whitelist.
-
На вопрос об использовании Firewall, ACL или security groups ответьте Yes, чтобы увидеть сеть, в которой расположен WAF и создать разрешающее правило для него.
-
Скопируйте адрес сети Cloud WAF для настройки разрешающего правила.
-
Чтобы ограничить доступ к стенду на время тестирования только вашим публичным IP, в созданной группе безопасности добавьте правило группы безопасности со следующими параметрами:
-
Protocols and Ports — TCP.
-
Type — тип IP-адресов IPv4.
-
Source IP — адрес сети Cloud WAF, скопированный на предыдущем шаге.
-
Action — действие правила Allow — разрешающее.
-
-
Протестируйте прохождение трафика до вашего веб-приложения, следуя инструкциям в веб-консоли:
-
Определите IP-адрес Cloud WAF.
-
В операционной системе своей рабочей станции свяжите IP-адрес Cloud WAF и доменное имя вашего веб-приложения на nip.io. Для этого внесите запись в файл hosts.
-
Проверьте командой ping, что запросы к доменному имени вашего веб-приложения направляются на IP Cloud WAF.
-
Убедитесь в доступности веб-приложения в веб-браузере, перейдя на его страницу.
-
-
Повторите атаку типа SQL-инъекция, которую совершали на шаге 3.
Атака будет успешной, потому что WAF работает в режиме логирования.
-
В консоли Web Application Firewall в меню слева перейдите в раздел Event и убедитесь, что событие атаки обнаружено и информация об атаке и атакующем IP зафиксирована.
-
В консоли Web Application Firewall в меню слева перейдите в раздел Policies и выберите политику, используемую для защиты.
-
На вкладке Protection Status выберите режим Block.
Если вы использовали зарегистрированное доменное имя вместо сервиса nip.io, для завершения настройки WAF внесите изменения в DNS-запись (en). Это необходимо для направления трафика пользователей в интернете через подключенный Cloud WAF.
5. Отразите атаку на веб-приложение с помощью WAF
-
Очистите кеш браузера и повторите атаку типа SQL-инъекция, которую совершали на шаге 3.
Аутентификация пользователя не выполнена.
-
В консоли Web Application Firewall в меню слева перейдите в раздел Event и просмотрите информацию об отраженной атаке.
Вы также можете настроить уведомления о событиях WAF на внешний сервер и Telegram.
Что дальше
В этой лабораторной работе вы настроили защиту уязвимого веб-приложения, размещенного на виртуальной машине в облаке Advanced, с помощью сервиса Web Application Firewall, а также проверили защиту с помощью атак на веб-приложение. Узнавайте больше о работе с сервисами и получайте практические навыки управления облаком, выполняя лабораторные работы.
- Перед началом работы
- 1. Настройте виртуальную машину
- 2. Разверните уязвимое веб-приложение «OWASP Juice Shop»
- 3. Выполните атаку на веб-приложение
- 4. Подключите защиту атак на веб-приложения WAF
- 5. Отразите атаку на веб-приложение с помощью WAF
- Что дальше