###### tags: `WEB`
Город проживания: Москва.
# Отчет по заданиям к практической работе №4. Web Application Firewall :
| 1.Начальные настройки ОС.|
|-|
|`sudo apt update`|
||
|`sudo apt upgrade -y`|
||
| 2.Устанавливаем последнюю версию `Nginx`.|
|-|
|`sudo add-apt-repository ppa:ondrej/nginx-mainline -y && sudo apt update`|
||
|`sudo apt install nginx-core nginx-common nginx nginx-full`|
||
|Добавим `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`|
||
|Cкачаем `Nginx Source Code`.|
|Для этого создадим необходимые директории.|
|`sudo mkdir /usr/local/src/nginx && cd /usr/local/src/nginx`|
||
|Назначим права для каталога.|
|`sudo chown ubuntuwaf:ubuntuwaf /usr/local/src/ -R`|
||
|Загрузим необходимые пакеты.|
|`sudo apt install dpkg-dev -y && sudo apt source nginx`|
||
|
|Проверяем, что все установили корректно.|
|`nginx -v`|
||
|3. Установим `libmodsecurity3` для `ModSecurity`.|
|-|
|Устанавливаем `Git`.|
|`sudo apt install git -y`|
||
|Клонируем `libmodsecurity3` с `GIT`-репозитория.|
|`git clone --depth 1 -b v3/master --single-branch https://github.com/SpiderLabs/ModSecurity /usr/local/src/ModSecurity/`|
||
||
|Установим зависимости `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`|
||
|Установим и обновим `GIT submodules`.|
|`git submodule init`|
|`git submodule update`|
||
|Создание среды `ModSecurity`.|
|`./build.sh`|
||
|`./configure`|
||
|Компиляция исходного кода `ModSecurity`.|
|`make -j 4`|
||
|`sudo make install`|
||
|4. Устанавливаем `ModSecurity-nginx Connector`.|
|-|
|Клонируем `ModSecurity-nginx` репозиторий с `Github`.|
|`sudo git clone --depth 1 https://github.com/SpiderLabs/ModSecurity-nginx.git /usr/local/src/ModSecurity-nginx/`|
||
|Устанавливаем зависимости `ModSecurity-nginx`.|
|`cd /usr/local/src/nginx/nginx-1.23.1`|
|`sudo apt build-dep nginx && sudo apt install uuid-dev -y`|
||
|Далее вы скомпилируете модуль M`odSecurity-nginx Connector` только с флагом `–with-compat`.|
|`sudo ./configure --with-compat --add-dynamic-module=/usr/local/src/ModSecurity-nginx`|
||
|Теперь создадим динамические модули.|
|`sudo make modules`|
||
|Переместим только что созданный динамический модуль, который был сохранен в расположении в каталог `/usr/share/nginx/modules`.|
|`sudo cp objs/ngx_http_modsecurity_module.so /usr/share/nginx/modules/`|
||
|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;`|
||
|Теперь добавим текст в раздел `HTTP {}`:|
|`modsecurity on; modsecurity_rules_file /etc/nginx/modsec/modsec-config.conf;`|
||
|Создание и настройка каталогов и файлов для `ModSecurity`.|
|`sudo mkdir /etc/nginx/modsec/`|
||
|Теперь нам нужно скопировать пример файла конфигурации `ModSecurity` обратно из нашего клонированного каталога `GIT`:|
|`sudo cp /usr/local/src/ModSecurity/modsecurity.conf-recommended /etc/nginx/modsec/modsecurity.conf`|
||
|Откроем `modsecurity.conf`.|
|По умолчанию в конфигурации `ModSecurity` механизм срабатывания правил указан как **(DetectionOnly)**, который запускает `ModSecurity` и обнаруживает все вредоносные действия, но не блокирует их , а просто регистрирует эти действия. Это следует использовать только в том случае, если у вас много ложных срабатываний или вы увеличили настройки уровня безопасности до крайнего уровня и проверяете, не происходит ли каких-либо ложных срабатываний.|
|Изменим правило.|
|`SecRuleEngine On`|
|Теперь найдем следующее правило, которое находится в строке `224`, и изменим его:|
|`SecAuditLogParts ABCEFHJKZ`|
||
|Создадим файл **modsec-config.conf**. В него мы добавим файл **modsecurity.conf** вместе с другими правилами, такими как **OWASP CRS**.|
|`sudo nano /etc/nginx/modsec/modsec-config.conf`|
|Добавим в файл строку:|
|`Include /etc/nginx/modsec/modsecurity.conf`|
||
|Скопируем файл `ModSecurity` **unicode.mapping**.|
|`sudo cp /usr/local/src/ModSecurity/unicode.mapping /etc/nginx/modsec/`|
||
|Запустим `Nginx`.|
|`sudo nginx -t`|
||
|Перезапустим `Nginx`.|
|`sudo systemctl restart nginx`|
||
|6. Установим базовый набор правил `OWASP` для `ModSecurity`.|
|-|
|`wget https://github.com/coreruleset/coreruleset/archive/refs/tags/v3.3.2.zip`|
||
|Распакуем архив.|
|`sudo unzip v3.3.2.zip -d /etc/nginx/modsec`|
||
|Скопируем кофигурацию.|
|`sudo cp /etc/nginx/modsec/coreruleset-3.3.2/crs-setup.conf.example /etc/nginx/modsec/coreruleset-3.3.2/crs-setup.conf`|
||
|Чтобы включить правила, снова откроем файл `/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`|
||
|Протестируем новые дополнения к нашей службе `Nginx`.|
|`sudo nginx -t`|
||
|Перезапустим `Nginx`.|
|`sudo systemctl restart nginx`|
||
|7. Настроим `proxy`.|
|-|
|`IP WAF:`|
||
|`IP Ubuntu:`|
||
|Настроим прокси для `Ubuntu`:|
||
|Настроим `WAF`:|
|`sudo nano /etc/nginx/sites-enabled/default`|
||
|Настройка прошла успешно.|
||
|8. Проводим атаки.|
|-|
|**SQL-injection**|
||
|Инъекция не удалась,увидим логи.|
||

|**Path Traversal**|
|Отправим POST-запрос с /etc/passwd.|
||
|Логи.|
||
|**XSS**|
|Введем в поле фидбека `<script>alert(123)</script>`|
|Атака не прошла.|
||
|Увидим в логах данное событие.|
||
||