---
# System prepended metadata

title: Практика 4.3

---

# Практика 4.3

**Практическая работа "Fail2Ban и Dos/DDoS attack" на примере nginx.**

### Задача:

- Организовать простую-тестовую атаку DoS.
- Защитить сервер от DoS/DDoS атак через встроенные возможности nginx.
- Защитить сервер от DoS/DDoS атак с помощью fail2ban при помощи iptables в автоматическом режиме.
- Защитить сервер от DoS/DDoS атак с помощью fail2ban при помощи ipset в автоматическом режиме.

Для начала установим веб сервер nginx

apt install nginx

после установки проверяем, заходим на по локальному адресу localhost

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

так как fail2ban устанавливали на предыдущем заниятии здесь добавим только дополнение  ipset

apt install ipset

В файле  /etc/nginx/sites-enable/default добавляем следюущие параметры

limit_req zone=ltwo burst=5 nodelay;

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

в файле /etc/nginx/nginx.conf добавляем 

limit_conn_zone $binary_remote_addr zone=lone:10m;
limit_req_zone $binary_remote_addr zone=ltwo:10m rate=3r/s;
limit_req_zone $binary_remote_addr zone=highspeed:10m rate=10r/s

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

пробуем в браузере быстро нажимать клавишу f5 или Ctrl+r (обновить страничку) и если усердно делать то можно увидить следующее сообщение

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


в логах /var/log/nginx/error.log видим следующие ошибки

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

**Настройке fail2ban от DDoS атак на наш сервер.**

добавим в наш конфигурационный файл /etc/fail2ban/jail.d/service.conf
 следующую секцию
 
 [nginx-limit-req]
port = http, https
enabled = true
filter = nginx-limit-req
action = iptables-multiport[name=ReqLimit, port="http,https", protocol=tcp]
logpath = /var/log/nginx/*error.log
findtime = 600
bantime = 3600
maxretry = 4

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

создаем файл  /etc/fail2ban/action.d/iptables-blocktype.local со следующим содержимым

[Init]
blocktype = DROP


перезапускакм сервис
service fail2ban restart

смотрим что iptables отрабатывает и наберём:iptables -L -v

и что настройки в fail2ban применились и введём:

`fail2ban-client status`

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

убеждаемся в отсутствии заблокированных адресов 
fail2ban-client status nginx-limit-req

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

после загружаем страничку в браузере, нажимаем ctrl+r несколько раз очень быстро, и видим следующую картину 

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

смотрим статус и видим что нас успешно заблокировали 

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

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


Конец.
