# Катенин Владимир - WEB Basic. Занятие 4. Web Application Firewall [toc] ## 1. Используя стенд первой практической работы - изменить инфраструктуру в соответсвии со схемой. Главное условие - чтобы машинка с WAF была проксей для WEB-сервера, развернутого во время первой практической работы Установим nginx, затем настроим конфигурационный файл ![](https://i.imgur.com/DhnFxsQ.jpg) Сетевые настройки WAF сервера ![](https://i.imgur.com/kN3RZDp.jpg) Сетевые настройки Web сервера ![](https://i.imgur.com/5jq78xb.jpg) ## 2. Установить WAF (ModSecurity 3) на машинку c названием WAF, продемонстрировать что ранее развернутый web-сайт открывается при коннекте на машинку с WAF Запустим наш сервер ![](https://i.imgur.com/yRahGmi.jpg) Подключимся по IP веб-сервера ![](https://i.imgur.com/ibJY08Y.jpg) Подключимся через прокси ![](https://i.imgur.com/HgSA8Zy.jpg) Теперь обновим все пакеты на WAF машине `apt update && apt upgrade -y` ![](https://i.imgur.com/9Vrz4bq.jpg) Остановим nginx и удалим его, чтобы установить новейшую версию `service nginx stop` `apt-get purge nginx -y && apt autoremove nginx -y` ![](https://i.imgur.com/YV8AYQv.jpg) Установим nginx PPA MAINLINE `add-apt-repository ppa:ondrej/nginx-mainline -y && apt update` ![](https://i.imgur.com/PX3qoop.jpg) Теперь установим nginx `apt install nginx-core nginx-common nginx nginx-full` ![](https://i.imgur.com/605J0db.jpg) Т.к. исходный код не устанавливается при загрузке PPA, включим это вручную `nano /etc/apt/sources.list.d/ondrej-ubuntu-nginx-mainline-*.list` И снимем комментарий у второй строчки ![](https://i.imgur.com/xJKJEZG.jpg) Обновим репозиторий `apt update` ![](https://i.imgur.com/VNhgk2o.jpg) Теперь нам нужно загрузить Nginx Source. Создаем директорию и переходим в нее `mkdir /usr/local/src/nginx && cd /usr/local/src/nginx` ![](https://i.imgur.com/Hr96bee.jpg) Загружаем `apt install dpkg-dev -y && apt source nginx` ![](https://i.imgur.com/Hsi7Rmx.jpg) Посмотрим, скачались ли файлы `ls` ![](https://i.imgur.com/unIyqHF.jpg) Теперь установим **libmodsecurity3** Для начала установим Git `sudo apt install git -y` И клонируем репозиторий с libmodsecurity3 и сразу же перейдем в папку `git clone --depth 1 -b v3/master --single-branch https://github.com/SpiderLabs/ModSecurity /usr/local/src/ModSecurity/` ![](https://i.imgur.com/Oo81Tvx.jpg) Еще следует установить следующие утилиты для компиляции `apt install gcc make build-essential autoconf automake libtool libcurl4-openssl-dev liblua5.3-dev libfuzzy-dev ssdeep gettext pkg-config libpcre3 libpcre3-dev libxml2 libxml2-dev libcurl4 libgeoip-dev libyajl-dev doxygen -y` ![](https://i.imgur.com/yrVhE2T.jpg) Далее установим сабмодули Git и обновим их `git submodule init` `git submodule update` ![](https://i.imgur.com/2fZNqeV.jpg) Создадим среду **ModSecurity** `./build.sh` ![](https://i.imgur.com/QOWkT3m.jpg) Настроим ее `./configure` ![](https://i.imgur.com/iBndPY7.jpg) И попробуем с компилировать `make` ![](https://i.imgur.com/uiYhfxl.jpg) Запустим установку через make-файл `make install` ![](https://i.imgur.com/Unu20Xz.jpg) Теперь необходимо установить **ModSecurity Nginx Connector** Клонируем `git clone --depth 1 https://github.com/SpiderLabs/ModSecurity-nginx.git /usr/local/src/ModSecurity-nginx/` ![](https://i.imgur.com/IBtS6u5.jpg) Переходим в директорию и устанавливаем зависимости `cd /usr/local/src/nginx/nginx-1.23.2` `apt build-dep nginx && apt install uuid-dev -y` ![](https://i.imgur.com/Try3dBV.jpg) Компилируем `./configure --with-compat --add-dynamic-module=/usr/local/src/ModSecurity-nginx` ![](https://i.imgur.com/LgtsJqO.jpg) Создадим динамические модули `make modules` ![](https://i.imgur.com/IiFnqFn.jpg) Скопируем динамический модуль в другую папку `cp objs/ngx_http_modsecurity_module.so /usr/share/nginx/modules/` ![](https://i.imgur.com/MvLXk0x.jpg) Включим ModSecurity в Nginx `nano /etc/nginx/nginx.conf` Добавляем следующую строчку в конфигурацию `load_module modules/ngx_http_modsecurity_module.so;` ![](https://i.imgur.com/tVPl5zb.jpg) В http добавим следующее >modsecurity on; modsecurity_rules_file /etc/nginx/modsec/modsec-config.conf; ![](https://i.imgur.com/kjlfqNP.jpg) Создадим каталог для хранения файлов конфигурации и будущих правил OWASP CRS. Создаем директорию и копируем в нее файл конфигурации `mkdir /etc/nginx/modsec/` `cp /usr/local/src/ModSecurity/modsecurity.conf-recommended /etc/nginx/modsec/modsecurity.conf` ![](https://i.imgur.com/ivoY6eD.jpg) Заходим в конфигурационный файл `nano /etc/nginx/modsec/modsecurity.conf` Меняем параметр `SecRuleEngine` на `On` ![](https://i.imgur.com/VXRUumV.jpg) Меняем `SecAuditLogParts` на `ABCEFHJKZ` ![](https://i.imgur.com/vN6Flp3.jpg) Создадим еще файл с конфигурацией `nano /etc/nginx/modsec/modsec-config.conf` Включим файл с правилами, исправленный ранее `Include /etc/nginx/modsec/modsecurity.conf` ![](https://i.imgur.com/smm27P0.jpg) Копируем `unicode.mapping` в другую папку `cp /usr/local/src/ModSecurity/unicode.mapping /etc/nginx/modsec/` И тестируем Nginx ![](https://i.imgur.com/WRsoBMe.jpg) Перезапустим Nginx `systemctl restart nginx` ![](https://i.imgur.com/nQ3JWG0.jpg) ## 3. Настроить WAF c детектом OWASP top 10 Скачаем архив OWASP CRS 3.3.4 `wget https://github.com/coreruleset/coreruleset/archive/refs/tags/v3.3.4.zip` ![](https://i.imgur.com/DHN2TNg.jpg) Разархивируем скачанный архив `unzip v3.3.4.zip -d /etc/nginx/modsec` ![](https://i.imgur.com/C5kyKXK.jpg) Переименуем конфигурационный файл OWASP CRS 3.3.2 и сделаем резервную копию `cp /etc/nginx/modsec/coreruleset-3.3.4/crs-setup.conf.example /etc/nginx/modsec/coreruleset-3.3.4/crs-setup.conf` ![](https://i.imgur.com/XWruAcm.jpg) Включим файлы конфигурации в modsec-config.conf >Include /etc/nginx/modsec/coreruleset-3.3.4/crs-setup.conf Include /etc/nginx/modsec/coreruleset-3.3.4/rules/*.conf ![](https://i.imgur.com/tlpxoVI.jpg) Проверим конфиг и перезагрузим Nginx ![](https://i.imgur.com/3PyfCU1.jpg) ## 4. Провести 3 атаки из списка OWASP top 10 и продемонстрировать работоспособность WAF (должны быть сработки правил WAF) SQL Injection ![](https://i.imgur.com/myVDApM.jpg) ![](https://i.imgur.com/RhDlKm8.jpg) XSS ![](https://i.imgur.com/wVPtqaE.jpg) ![](https://i.imgur.com/fOJDUd4.jpg) Local File Inclusion Attack ![](https://i.imgur.com/ktkVA2C.jpg) ![](https://i.imgur.com/7PeB5Vl.jpg) **Все атаки отражены**