###### tags: `WEB` Город проживания: Москва. # Отчет по заданиям к практической работе №4. Web Application Firewall : | 1.Начальные настройки ОС.| |-| |`sudo apt update`| |![](https://i.imgur.com/Lu9RiBo.png =500x)| |`sudo apt upgrade -y`| |![](https://i.imgur.com/Wu1xSKz.png =500x)| | 2.Устанавливаем последнюю версию `Nginx`.| |-| |`sudo add-apt-repository ppa:ondrej/nginx-mainline -y && sudo apt update`| |![](https://i.imgur.com/a4htISO.png =500x)| |`sudo apt install nginx-core nginx-common nginx nginx-full`| |![](https://i.imgur.com/MMMdqCF.png =500x)| |Добавим `Nginx Source Code` в репозиторий.| |`sudo nano /etc/apt/sources.list.d/ondrej-ubuntu-nginx-mainline-*.list`| |Расскомментируем строку.| |`# deb-src http://ppa.launchpad.net/ondrej/nginx-mainline/ubuntu/ focal main`| |![](https://i.imgur.com/CJISbcc.png =500x)| |Cкачаем `Nginx Source Code`.| |Для этого создадим необходимые директории.| |`sudo mkdir /usr/local/src/nginx && cd /usr/local/src/nginx`| |![](https://i.imgur.com/nObkuSJ.png =500x)| |Назначим права для каталога.| |`sudo chown ubuntuwaf:ubuntuwaf /usr/local/src/ -R`| |![](https://i.imgur.com/6ksRCox.png =500x)| |Загрузим необходимые пакеты.| |`sudo apt install dpkg-dev -y && sudo apt source nginx`| |![](https://i.imgur.com/JpBNTkD.png =500x)| ![](https://i.imgur.com/UReSmqE.png =500x)| |Проверяем, что все установили корректно.| |`nginx -v`| |![](https://i.imgur.com/oBh0ZJ0.png =500x)| |3. Установим `libmodsecurity3` для `ModSecurity`.| |-| |Устанавливаем `Git`.| |`sudo apt install git -y`| |![](https://i.imgur.com/O1wbBtP.png =500x)| |Клонируем `libmodsecurity3` с `GIT`-репозитория.| |`git clone --depth 1 -b v3/master --single-branch https://github.com/SpiderLabs/ModSecurity /usr/local/src/ModSecurity/`| |![](https://i.imgur.com/VIZ29C1.png =500x)| |![](https://i.imgur.com/PAecLJ7.png =500x)| |Установим зависимости `libmodsecurity3`.| |`sudo 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/U6krB3F.png =500x)| |Установим и обновим `GIT submodules`.| |`git submodule init`| |`git submodule update`| |![](https://i.imgur.com/DnSN9xS.png =500x)| |Создание среды `ModSecurity`.| |`./build.sh`| |![](https://i.imgur.com/boL1MwC.png =500x)| |`./configure`| |![](https://i.imgur.com/LQgxKqg.png =500x)| |Компиляция исходного кода `ModSecurity`.| |`make -j 4`| |![](https://i.imgur.com/YuJZYSW.png =500x)| |`sudo make install`| |![](https://i.imgur.com/3W0rnlK.png)| |4. Устанавливаем `ModSecurity-nginx Connector`.| |-| |Клонируем `ModSecurity-nginx` репозиторий с `Github`.| |`sudo git clone --depth 1 https://github.com/SpiderLabs/ModSecurity-nginx.git /usr/local/src/ModSecurity-nginx/`| |![](https://i.imgur.com/aaYObLU.png)| |Устанавливаем зависимости `ModSecurity-nginx`.| |`cd /usr/local/src/nginx/nginx-1.23.1`| |`sudo apt build-dep nginx && sudo apt install uuid-dev -y`| |![](https://i.imgur.com/kprfOeP.png)| |Далее вы скомпилируете модуль M`odSecurity-nginx Connector` только с флагом `–with-compat`.| |`sudo ./configure --with-compat --add-dynamic-module=/usr/local/src/ModSecurity-nginx`| |![](https://i.imgur.com/VKVXzQt.png)| |Теперь создадим динамические модули.| |`sudo make modules`| |![](https://i.imgur.com/Sk19RpT.png)| |Переместим только что созданный динамический модуль, который был сохранен в расположении в каталог `/usr/share/nginx/modules`.| |`sudo cp objs/ngx_http_modsecurity_module.so /usr/share/nginx/modules/`| |![](https://i.imgur.com/kZOuRGF.png)| |5. Загрузка и настройка `ModSecurity-nginx Connector` с помощью `Nginx`.| |-| |Включим `ModSecurity` в `nginx.conf`.| |Во-первых, нам нужно указать `load_module` и путь к нашему модулю `modsecurity`. Откроем `nginx.conf`| |`sudo nano /etc/nginx/nginx.conf`| |Добавим следующую строку в конфиг:| |`load_module modules/ngx_http_modsecurity_module.so;`| |![](https://i.imgur.com/SN3XZc7.png)| |Теперь добавим текст в раздел `HTTP {}`:| |`modsecurity on; modsecurity_rules_file /etc/nginx/modsec/modsec-config.conf;`| |![](https://i.imgur.com/7XyFqDT.png)| |Создание и настройка каталогов и файлов для `ModSecurity`.| |`sudo mkdir /etc/nginx/modsec/`| |![](https://i.imgur.com/zRBw4bL.png)| |Теперь нам нужно скопировать пример файла конфигурации `ModSecurity` обратно из нашего клонированного каталога `GIT`:| |`sudo cp /usr/local/src/ModSecurity/modsecurity.conf-recommended /etc/nginx/modsec/modsecurity.conf`| |![](https://i.imgur.com/5HNnPiG.png)| |Откроем `modsecurity.conf`.| |По умолчанию в конфигурации `ModSecurity` механизм срабатывания правил указан как **(DetectionOnly)**, который запускает `ModSecurity` и обнаруживает все вредоносные действия, но не блокирует их , а просто регистрирует эти действия. Это следует использовать только в том случае, если у вас много ложных срабатываний или вы увеличили настройки уровня безопасности до крайнего уровня и проверяете, не происходит ли каких-либо ложных срабатываний.| |Изменим правило.| |`SecRuleEngine On`| |Теперь найдем следующее правило, которое находится в строке `224`, и изменим его:| |`SecAuditLogParts ABCEFHJKZ`| |![](https://i.imgur.com/Ypm65Kh.png)| |Создадим файл **modsec-config.conf**. В него мы добавим файл **modsecurity.conf** вместе с другими правилами, такими как **OWASP CRS**.| |`sudo nano /etc/nginx/modsec/modsec-config.conf`| |Добавим в файл строку:| |`Include /etc/nginx/modsec/modsecurity.conf`| |![](https://i.imgur.com/o4VSYD3.png)| |Скопируем файл `ModSecurity` **unicode.mapping**.| |`sudo cp /usr/local/src/ModSecurity/unicode.mapping /etc/nginx/modsec/`| |![](https://i.imgur.com/uXBjV7d.png)| |Запустим `Nginx`.| |`sudo nginx -t`| |![](https://i.imgur.com/VWyCcsm.png)| |Перезапустим `Nginx`.| |`sudo systemctl restart nginx`| |![](https://i.imgur.com/ReX7jIt.png)| |6. Установим базовый набор правил `OWASP` для `ModSecurity`.| |-| |`wget https://github.com/coreruleset/coreruleset/archive/refs/tags/v3.3.2.zip`| |![](https://i.imgur.com/sQpnueF.png)| |Распакуем архив.| |`sudo unzip v3.3.2.zip -d /etc/nginx/modsec`| |![](https://i.imgur.com/7Es5Tsv.png)| |Скопируем кофигурацию.| |`sudo cp /etc/nginx/modsec/coreruleset-3.3.2/crs-setup.conf.example /etc/nginx/modsec/coreruleset-3.3.2/crs-setup.conf`| |![](https://i.imgur.com/sVrDTYh.png)| |Чтобы включить правила, снова откроем файл `/etc/nginx/modsec/modsec-config.conf`| |`sudo nano /etc/nginx/modsec/modsec-config.conf`| |Внесем правила.| |`Include /etc/nginx/modsec/coreruleset-3.3.2/crs-setup.conf`| |`Include /etc/nginx/modsec/coreruleset-3.3.2/rules/(star).conf`| |![](https://i.imgur.com/0fm7uBx.png)| |Протестируем новые дополнения к нашей службе `Nginx`.| |`sudo nginx -t`| |![](https://i.imgur.com/ixSI8kk.png)| |Перезапустим `Nginx`.| |`sudo systemctl restart nginx`| |![](https://i.imgur.com/3aB3U7h.png)| |7. Настроим `proxy`.| |-| |`IP WAF:`| |![](https://i.imgur.com/fM3ZGwj.png)| |`IP Ubuntu:`| |![](https://i.imgur.com/VuCTArq.png)| |Настроим прокси для `Ubuntu`:| |![](https://i.imgur.com/Lw98euu.png)| |Настроим `WAF`:| |`sudo nano /etc/nginx/sites-enabled/default`| |![](https://i.imgur.com/jtZ7QLr.png)| |Настройка прошла успешно.| |![](https://i.imgur.com/EGtTdfC.png)| |8. Проводим атаки.| |-| |**SQL-injection**| |![](https://i.imgur.com/Da2GHOw.png)| |Инъекция не удалась,увидим логи.| |![](https://i.imgur.com/8rJ3D74.png)| ![](https://i.imgur.com/pywdiOd.png) |**Path Traversal**| |Отправим POST-запрос с /etc/passwd.| |![](https://i.imgur.com/ZDgNnPo.png)| |Логи.| |![](https://i.imgur.com/TeGU8f6.png)| |**XSS**| |Введем в поле фидбека `<script>alert(123)</script>`| |Атака не прошла.| |![](https://i.imgur.com/nzXI83C.png)| |Увидим в логах данное событие.| |![](https://i.imgur.com/vrF5d6L.png)| |![](https://i.imgur.com/ZzbRsnV.png)|