---
# System prepended metadata

title: Катенин Владимир - WEB Basic. Занятие 4. Web Application Firewall

---

# Катенин Владимир - 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)

**Все атаки отражены**