# **Практическая работа №4 Web basic** ## **Цель работы:** 1) Получить знания по установке, настройке и работе Web Application Firewall 2) Научиться самостоятельно разворачивать WAF в базовой конфигурации ## Задание Практической работы: 1) Используя стенд первой практической работы - изменить инфраструктуру в соответсвии со схемой. Главное условие - чтобы машинка с WAF была проксей для WEB-сервера, развернутого во время первой практической работы ![](https://i.imgur.com/INr5WO1.png) Сетевые настройки WAF ![](https://i.imgur.com/5TCSECc.png) Сетевые настройки сервера ![](https://i.imgur.com/y4ILVld.png) 2) Установить WAF (ModSecurity 3) на машинку c названием WAF, продемонстрировать что ранее развернутый web-сайт открывается при коннекте на машинку с WAF Пробуем открыть сайт через WAF ![](https://i.imgur.com/ka4ptDt.png) По айпишнику WAF подключение происходит успешно, значит настройка прокси произведена правильно ## Обновим систему ![](https://i.imgur.com/Vm6A6jM.png) ## Устанавливаем последнюю версию Nginx на Ubuntu Удаляем существующую установку Nginx ![](https://i.imgur.com/Yz8QNM9.png) Добавляем последнюю версию Nginx PPA ![](https://i.imgur.com/lqfC4EP.png) Теперь, когда мы установили PPA и обновили список репозиториев, устанавливаем Nginx ![](https://i.imgur.com/POP7XBK.png) ![](https://i.imgur.com/FZs1kZl.png) ## Добавляем исходный код Nginx в репозиторий ![](https://i.imgur.com/NnVRcGM.png) ![](https://i.imgur.com/g3yROnt.png) ## Скачиваем исходный код Nginx Создаём и настраиваем каталоги ![](https://i.imgur.com/G5BNucq.png) Устанавливаем зависимости и выполняем загрузку ![](https://i.imgur.com/fXmQ6v7.png) Просмотрим, что содержится в каталоге /usr/src/local/nginx: ![](https://i.imgur.com/H7Npvvs.png) Затем проверяем, что исходный пакет совпадает с версией Nginx, установленной в нашей операционной системе ![](https://i.imgur.com/pghq0u5.png) ## Устанавливаем библиотеку modsecurity 3 ### Клонируем ModSecurity Repsoitory с Github Первым шагом является клонирование ModSecurity Repsoitory с Github, но для этого сначала нужно установить git ![](https://i.imgur.com/jOKYLud.png) Затем клонируем репозиторий libmodsecurity3 GIT ![](https://i.imgur.com/jWyDF93.png) ### Устанавливаем зависимости libmodsecurity3 Для компиляции нам необходимо установить следующие зависимости ![](https://i.imgur.com/Lyfl5l9.png) Теперь устанавливаем следующие подмодули GIT ![](https://i.imgur.com/OQaEvRg.png) Далее обновляем подмодули ![](https://i.imgur.com/jXk4kcz.png) ### Создание среды ModSecurity Создаём среду ![](https://i.imgur.com/JKGjf2y.png) Затем выполняем команду configure ![](https://i.imgur.com/xrjR1Pj.png) ## Компиляция исходного кода ModSecurity Скомпилируем ее с помощью команды make. ![](https://i.imgur.com/Orq2y2w.png) После компиляции исходного кода запускаем команду установки ![](https://i.imgur.com/rMBP80g.png) ## Устанавливаем ModSecurity-nginx Connector ### Клонируем ModSecurity-nginx Repsoitory с Github Клонируем репозиторий connector ![](https://i.imgur.com/SzmvGKa.png) ### Установка зависимостей ModSecurity-nginx Перейдём в исходный каталог Nginx и установим необходимые зависимости ![](https://i.imgur.com/TKur0wU.png) Скомпилируем модуль ModSecurity-nginx Connector с флагом –with-compat ![](https://i.imgur.com/5Y67bV8.png) Создадим динамические модули ![](https://i.imgur.com/tzhATSd.png) Скопируем только что созданный динамический модуль в каталог /usr/share/nginx/modules. ![](https://i.imgur.com/I7bobIm.png) ## Загрузим и настроим ModSecurity-nginx Connector с помощью Nginx ### Включаем ModSecurity в nginx.conf Указываем **load_module** и путь к нашему модулю modsecurity. ![](https://i.imgur.com/g7CaM5g.png) Указываем местоположение правил ![](https://i.imgur.com/FJEy6yq.png) ## Создание и настройка каталогов и файлов для ModSecurity Создаём директорию /etc/nginx/modsec, затем скопируем и переименуем файл /usr/local/src/ModSecurity/modsecurity.conf-recommended в только что созданную директорию ![](https://i.imgur.com/BlBHSdR.png) ![](https://i.imgur.com/YTjANiR.png) ![](https://i.imgur.com/vmbpaWP.png) ![](https://i.imgur.com/a5CETyE.png) Перезапускаем nginx ![](https://i.imgur.com/3hWLcms.png) 3) Настроить WAF c детектом OWASP top 10 ## Скачаем OWASP правила для ModSecurity Используем **wget**, чтобы скачать **OWASP CRS 3.3.2 archive** ![](https://i.imgur.com/1JYV1o3.png) Скачаем распаковщик архивов ![](https://i.imgur.com/k6391ts.png) Разархивируем скачанный архив ![](https://i.imgur.com/JZBlO3O.png) Скопируем и переименуем файл `crs-setup.conf.example` в файл `crs-setup.conf` в директории /etc/nginx/modsec/corerulleset-3.3.2 ![](https://i.imgur.com/NslLXH0.png) Чтобы включить правила, снова откройем файл /etc/nginx/modsec/modsec-config.conf с помощью любого текстового редактора: ``` sudo nano /etc/nginx/modsec/modsec-config.conf ``` Снова войдя в файл, добавим следующие две дополнительные строки ![](https://i.imgur.com/an2Sp35.png) Протестируем новые дополнения к вашей службе Nginx ``` sudo nginx -t ``` Перезапустим сервис Nginx ``` sudo systemctl restart nginx ``` ![](https://i.imgur.com/VP3qavZ.png) 4) Провести 3 атаки из списка OWASP top 10 и продемонстрировать работоспособность WAF (должны быть сработки правил WAF) ### SQL Injection Пробуем залогиниться под админом, вннедряя SQL инъекцию ``admin' OR 1=1 --`` и видим, что появляется ошибка ![](https://i.imgur.com/B1NZq68.png) Правило отработало ![](https://i.imgur.com/1JpNaHU.png) ### Cross Site Scripting(XSS) XSS — это уязвимость, которая включает в себя внедрение вредоносного javascript в доверенные веб-сайты. После того, как злоумышленник внедрил вредоносный javascript, иногда браузер не будет знать, доверять ли ему, и запустит сценарий. Помещаем ``<iframe src="javascript:alert('xss')">`` в поле поиска Видим, что внедрение XSS не получилось ![](https://i.imgur.com/rnNlfwP.png) Правило отработало ![](https://i.imgur.com/PReQRlE.png) ### Sensitive Data Exposure Пробуем получить доступ к FTP серверу, добавив в url ``/ftp`` Подключение не удалось ![](https://i.imgur.com/vX1QSV7.png) Правило отработало ![](https://i.imgur.com/lakH97F.png)