# Катенин Владимир - WEB Basic. Занятие 4. Web Application Firewall
[toc]
## 1. Используя стенд первой практической работы - изменить инфраструктуру в соответсвии со схемой. Главное условие - чтобы машинка с WAF была проксей для WEB-сервера, развернутого во время первой практической работы
Установим nginx, затем настроим конфигурационный файл

Сетевые настройки WAF сервера

Сетевые настройки Web сервера

## 2. Установить WAF (ModSecurity 3) на машинку c названием WAF, продемонстрировать что ранее развернутый web-сайт открывается при коннекте на машинку с WAF
Запустим наш сервер

Подключимся по IP веб-сервера

Подключимся через прокси

Теперь обновим все пакеты на WAF машине
`apt update && apt upgrade -y`

Остановим nginx и удалим его, чтобы установить новейшую версию
`service nginx stop`
`apt-get purge nginx -y && apt autoremove nginx -y`

Установим nginx PPA MAINLINE
`add-apt-repository ppa:ondrej/nginx-mainline -y && apt update`

Теперь установим nginx
`apt install nginx-core nginx-common nginx nginx-full`

Т.к. исходный код не устанавливается при загрузке PPA, включим это вручную
`nano /etc/apt/sources.list.d/ondrej-ubuntu-nginx-mainline-*.list`
И снимем комментарий у второй строчки

Обновим репозиторий
`apt update`

Теперь нам нужно загрузить Nginx Source. Создаем директорию и переходим в нее
`mkdir /usr/local/src/nginx && cd /usr/local/src/nginx`

Загружаем
`apt install dpkg-dev -y && apt source nginx`

Посмотрим, скачались ли файлы
`ls`

Теперь установим **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/`

Еще следует установить следующие утилиты для компиляции
`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`

Далее установим сабмодули Git и обновим их
`git submodule init`
`git submodule update`

Создадим среду **ModSecurity**
`./build.sh`

Настроим ее
`./configure`

И попробуем с компилировать
`make`

Запустим установку через make-файл
`make install`

Теперь необходимо установить **ModSecurity Nginx Connector**
Клонируем
`git clone --depth 1 https://github.com/SpiderLabs/ModSecurity-nginx.git /usr/local/src/ModSecurity-nginx/`

Переходим в директорию и устанавливаем зависимости
`cd /usr/local/src/nginx/nginx-1.23.2`
`apt build-dep nginx && apt install uuid-dev -y`

Компилируем
`./configure --with-compat --add-dynamic-module=/usr/local/src/ModSecurity-nginx`

Создадим динамические модули
`make modules`

Скопируем динамический модуль в другую папку
`cp objs/ngx_http_modsecurity_module.so /usr/share/nginx/modules/`

Включим ModSecurity в Nginx
`nano /etc/nginx/nginx.conf`
Добавляем следующую строчку в конфигурацию
`load_module modules/ngx_http_modsecurity_module.so;`

В http добавим следующее
>modsecurity on;
modsecurity_rules_file /etc/nginx/modsec/modsec-config.conf;

Создадим каталог для хранения файлов конфигурации и будущих правил OWASP CRS. Создаем директорию и копируем в нее файл конфигурации
`mkdir /etc/nginx/modsec/`
`cp /usr/local/src/ModSecurity/modsecurity.conf-recommended /etc/nginx/modsec/modsecurity.conf`

Заходим в конфигурационный файл
`nano /etc/nginx/modsec/modsecurity.conf`
Меняем параметр `SecRuleEngine` на `On`

Меняем `SecAuditLogParts` на `ABCEFHJKZ`

Создадим еще файл с конфигурацией
`nano /etc/nginx/modsec/modsec-config.conf`
Включим файл с правилами, исправленный ранее
`Include /etc/nginx/modsec/modsecurity.conf`

Копируем `unicode.mapping` в другую папку
`cp /usr/local/src/ModSecurity/unicode.mapping /etc/nginx/modsec/`
И тестируем Nginx

Перезапустим Nginx
`systemctl restart nginx`

## 3. Настроить WAF c детектом OWASP top 10
Скачаем архив OWASP CRS 3.3.4
`wget https://github.com/coreruleset/coreruleset/archive/refs/tags/v3.3.4.zip`

Разархивируем скачанный архив
`unzip v3.3.4.zip -d /etc/nginx/modsec`

Переименуем конфигурационный файл 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`

Включим файлы конфигурации в modsec-config.conf
>Include /etc/nginx/modsec/coreruleset-3.3.4/crs-setup.conf
Include /etc/nginx/modsec/coreruleset-3.3.4/rules/*.conf

Проверим конфиг и перезагрузим Nginx

## 4. Провести 3 атаки из списка OWASP top 10 и продемонстрировать работоспособность WAF (должны быть сработки правил WAF)
SQL Injection


XSS


Local File Inclusion Attack


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