# **Практическая работа №4 Web basic**
## **Цель работы:**
1) Получить знания по установке, настройке и работе Web Application Firewall
2) Научиться самостоятельно разворачивать WAF в базовой конфигурации
## Задание Практической работы:
1) Используя стенд первой практической работы - изменить инфраструктуру в соответсвии со схемой. Главное условие - чтобы машинка с WAF была проксей для WEB-сервера, развернутого во время первой практической работы

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

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

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

По айпишнику WAF подключение происходит успешно, значит настройка прокси произведена правильно
## Обновим систему

## Устанавливаем последнюю версию Nginx на Ubuntu
Удаляем существующую установку Nginx

Добавляем последнюю версию Nginx PPA

Теперь, когда мы установили PPA и обновили список репозиториев, устанавливаем Nginx


## Добавляем исходный код Nginx в репозиторий


## Скачиваем исходный код Nginx
Создаём и настраиваем каталоги

Устанавливаем зависимости и выполняем загрузку

Просмотрим, что содержится в каталоге /usr/src/local/nginx:

Затем проверяем, что исходный пакет совпадает с версией Nginx, установленной в нашей операционной системе

## Устанавливаем библиотеку modsecurity 3
### Клонируем ModSecurity Repsoitory с Github
Первым шагом является клонирование ModSecurity Repsoitory с Github, но для этого сначала нужно установить git

Затем клонируем репозиторий libmodsecurity3 GIT

### Устанавливаем зависимости libmodsecurity3
Для компиляции нам необходимо установить следующие зависимости

Теперь устанавливаем следующие подмодули GIT

Далее обновляем подмодули

### Создание среды ModSecurity
Создаём среду

Затем выполняем команду configure

## Компиляция исходного кода ModSecurity
Скомпилируем ее с помощью команды make.

После компиляции исходного кода запускаем команду установки

## Устанавливаем ModSecurity-nginx Connector
### Клонируем ModSecurity-nginx Repsoitory с Github
Клонируем репозиторий connector

### Установка зависимостей ModSecurity-nginx
Перейдём в исходный каталог Nginx и установим необходимые зависимости

Скомпилируем модуль ModSecurity-nginx Connector с флагом –with-compat

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

Скопируем только что созданный динамический модуль в каталог /usr/share/nginx/modules.

## Загрузим и настроим ModSecurity-nginx Connector с помощью Nginx
### Включаем ModSecurity в nginx.conf
Указываем **load_module** и путь к нашему модулю modsecurity.

Указываем местоположение правил

## Создание и настройка каталогов и файлов для ModSecurity
Создаём директорию /etc/nginx/modsec, затем скопируем и переименуем файл /usr/local/src/ModSecurity/modsecurity.conf-recommended в только что созданную директорию




Перезапускаем nginx

3) Настроить WAF c детектом OWASP top 10
## Скачаем OWASP правила для ModSecurity
Используем **wget**, чтобы скачать **OWASP CRS 3.3.2 archive**

Скачаем распаковщик архивов

Разархивируем скачанный архив

Скопируем и переименуем файл `crs-setup.conf.example` в файл `crs-setup.conf` в директории /etc/nginx/modsec/corerulleset-3.3.2

Чтобы включить правила, снова откройем файл /etc/nginx/modsec/modsec-config.conf с помощью любого текстового редактора:
```
sudo nano /etc/nginx/modsec/modsec-config.conf
```
Снова войдя в файл, добавим следующие две дополнительные строки

Протестируем новые дополнения к вашей службе Nginx
```
sudo nginx -t
```
Перезапустим сервис Nginx
```
sudo systemctl restart nginx
```

4) Провести 3 атаки из списка OWASP top 10 и продемонстрировать работоспособность WAF (должны быть сработки правил WAF)
### SQL Injection
Пробуем залогиниться под админом, вннедряя SQL инъекцию ``admin' OR 1=1 --`` и видим, что появляется ошибка

Правило отработало

### Cross Site Scripting(XSS)
XSS — это уязвимость, которая включает в себя внедрение вредоносного javascript в доверенные веб-сайты. После того, как злоумышленник внедрил вредоносный javascript, иногда браузер не будет знать, доверять ли ему, и запустит сценарий.
Помещаем ``<iframe src="javascript:alert('xss')">`` в поле поиска
Видим, что внедрение XSS не получилось

Правило отработало

### Sensitive Data Exposure
Пробуем получить доступ к FTP серверу, добавив в url ``/ftp``
Подключение не удалось

Правило отработало
