# Практика 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) Конец.