---
# System prepended metadata

title: '**Практическая работа №4 Web basic**'

---

# **Практическая работа №4 Web basic**

## **Цель работы:**

1) Получить знания по установке, настройке и работе Web Application Firewall
2) Научиться самостоятельно разворачивать WAF в базовой конфигурации

## Задание Практической работы:

1) Используя стенд первой практической работы - изменить инфраструктуру в соответсвии со схемой. Главное условие - чтобы машинка с WAF была проксей для WEB-сервера, развернутого во время первой практической работы

![](https://i.imgur.com/INr5WO1.png)

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

![](https://i.imgur.com/5TCSECc.png)

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

![](https://i.imgur.com/y4ILVld.png)


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

Пробуем открыть сайт через WAF

![](https://i.imgur.com/ka4ptDt.png)

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

## Обновим систему

![](https://i.imgur.com/Vm6A6jM.png)

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

Удаляем существующую установку Nginx

![](https://i.imgur.com/Yz8QNM9.png)

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

![](https://i.imgur.com/lqfC4EP.png)

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

![](https://i.imgur.com/POP7XBK.png)

![](https://i.imgur.com/FZs1kZl.png)

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

![](https://i.imgur.com/NnVRcGM.png)

![](https://i.imgur.com/g3yROnt.png)

## Скачиваем исходный код Nginx

Создаём и настраиваем каталоги

![](https://i.imgur.com/G5BNucq.png)

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

![](https://i.imgur.com/fXmQ6v7.png)

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

![](https://i.imgur.com/H7Npvvs.png)

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

![](https://i.imgur.com/pghq0u5.png)

## Устанавливаем библиотеку modsecurity 3

### Клонируем ModSecurity Repsoitory с Github

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

![](https://i.imgur.com/jOKYLud.png)

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

![](https://i.imgur.com/jWyDF93.png)

### Устанавливаем зависимости libmodsecurity3

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

![](https://i.imgur.com/Lyfl5l9.png)

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

![](https://i.imgur.com/OQaEvRg.png)

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

![](https://i.imgur.com/jXk4kcz.png)

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

Создаём среду

![](https://i.imgur.com/JKGjf2y.png)

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

![](https://i.imgur.com/xrjR1Pj.png)

## Компиляция исходного кода ModSecurity

Скомпилируем ее с помощью команды make.

![](https://i.imgur.com/Orq2y2w.png)

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

![](https://i.imgur.com/rMBP80g.png)

## Устанавливаем ModSecurity-nginx Connector

### Клонируем ModSecurity-nginx Repsoitory с Github

Клонируем репозиторий connector

![](https://i.imgur.com/SzmvGKa.png)

### Установка зависимостей ModSecurity-nginx

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

![](https://i.imgur.com/TKur0wU.png)

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

![](https://i.imgur.com/5Y67bV8.png)

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

![](https://i.imgur.com/tzhATSd.png)

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

![](https://i.imgur.com/I7bobIm.png)

## Загрузим и настроим ModSecurity-nginx Connector с помощью Nginx

### Включаем ModSecurity в nginx.conf

Указываем **load_module** и путь к нашему модулю modsecurity.

![](https://i.imgur.com/g7CaM5g.png)

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

![](https://i.imgur.com/FJEy6yq.png)

## Создание и настройка каталогов и файлов для ModSecurity

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

![](https://i.imgur.com/BlBHSdR.png)

![](https://i.imgur.com/YTjANiR.png)

![](https://i.imgur.com/vmbpaWP.png)

![](https://i.imgur.com/a5CETyE.png)

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

![](https://i.imgur.com/3hWLcms.png)

3) Настроить WAF c детектом OWASP top 10


## Скачаем OWASP правила для ModSecurity

Используем **wget**, чтобы скачать **OWASP CRS 3.3.2 archive**

![](https://i.imgur.com/1JYV1o3.png)


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

![](https://i.imgur.com/k6391ts.png)


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

![](https://i.imgur.com/JZBlO3O.png)

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

![](https://i.imgur.com/NslLXH0.png)


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

```
sudo nano /etc/nginx/modsec/modsec-config.conf
```

Снова войдя в файл, добавим следующие две дополнительные строки

![](https://i.imgur.com/an2Sp35.png)


Протестируем новые дополнения к вашей службе Nginx

```
sudo nginx -t
```

Перезапустим сервис Nginx

```
sudo systemctl restart nginx
```
![](https://i.imgur.com/VP3qavZ.png)






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


### SQL Injection

Пробуем залогиниться под админом, вннедряя SQL инъекцию ``admin' OR 1=1 --`` и видим, что появляется ошибка

![](https://i.imgur.com/B1NZq68.png)

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

![](https://i.imgur.com/1JpNaHU.png)




### Cross Site Scripting(XSS)

XSS — это уязвимость, которая включает в себя внедрение вредоносного javascript в доверенные веб-сайты. После того, как злоумышленник внедрил вредоносный javascript, иногда браузер не будет знать, доверять ли ему, и запустит сценарий.

Помещаем ``<iframe src="javascript:alert('xss')">`` в поле поиска

Видим, что внедрение XSS не получилось
    
![](https://i.imgur.com/rnNlfwP.png)

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

![](https://i.imgur.com/PReQRlE.png)



### Sensitive Data Exposure

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

Подключение не удалось

![](https://i.imgur.com/vX1QSV7.png)

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

![](https://i.imgur.com/lakH97F.png)
