Хостинг и регистрация доменов

Чат онлайн
→  Хостинг →  Регистрация доменов →  VPS / VDS →  Выделенные сервера →  FAQ →  Форум →  Контакты →  Техподдержка

Простая защита от ботов (брутфорса админ-панели) при помощи nginx

Хостинг УкраинаFAQВыделенные сервера и VPS Простая защита от ботов (брутфорса админ-панели) при помощи nginx

Защитить сайт от взлома брутфорсом (подобором пароля к админ-панели сайта) и снизить нагрузку создаваемую ботами-взломщиками можно при помощи nginx, установленного фронтэндом на сервере, модифицировав конфигурационный файл nginx (чаще всего он находится в /etc/nginx/nginx.conf) вот таким образом: 

сразу после строки http { добавьте

#антибот
limit_req_zone $binary_remote_addr zone=antibot:16m rate=6r/m;
limit_req_log_level warn;
limit_req_status 403;

Далее найдите блок описывающий конкретный защищаемый сайт. Он начинается с server { и содержит директиву server_name с адресом сайта. Что-то вроде: 

server {
server_name sitename.com www.sitename.com;
listen xxx.xxx.xxx.xxx;
и дальше ряд location описывающих правила обработки запросов к server
 
В server добавьте новый location вот с таким содержимым: 
location = /wp-login.php {
limit_req   zone=antibot burst=2 nodelay;
proxy_pass http://127.0.0.1:81;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Real-IP $remote_addr;
}

где, 

/wp-login.php - путь к защищаемой странице. Для Opencart нужно его заменить на /admin , для Joomla - на /administrator
127.0.0.1:81 - заменить на IP-адрес:порт веб-сервера на котором размещен сайт. (можно подсмотреть в соседних директивах location)
 
После всех изменений сохраните изменения и проверьте правильность конфига выполнив в консоли сервера: 
nginx -t

если результат проверки  - syntax is ok, то перезапустите nginx: 

service nginx restart

Принцип работы: 

Этот конфиг задаёт зону разделяемой памяти с названием antibot, объёмом 16МБ  и скоростью обработки запросов - 6 запросов/минута или 1 обращение к /wp-login.php в 10 секунд  (ещё можно указывать этот параметр в запросах/сек - r/s). Если количество поступающих запросов больче чем значение rate - их обработка откладывается до тех пор, пока их количество не превысит значение заданное в limit_req....burst (в нашем случае - 2), после чего все последующие запросы будут получать в ответ ошибку 403 (можно задать любой другой код ошибки в строке limit_req_status , например 423 как более точный для определения ситуации) отдаваемую нжинксом, что значительно более экономно в плане потребляемых сервером ресурсов, чем отлов той же ситуации и блокировка на уровне apache.
 
Более подробную информацию о настройке модуля ngx_http_limit_req_module, который использовался в этой заметке, можно найти в официальной документации nginx: http://nginx.org/ru/docs/http/ngx_http_limit_req_module.html

Проверка работы системы:

С помощью утилиты ab (apache benchmark)  можно создать http флуд на определенную страницу, например wp-login.php и посмотреть при этом error лог nginx:

$ ab -n 100 -c 1 http://.../wp-login.php

 

Как можно проверить работу этой настройки?
А то что-то не могу понять, работает она или нет.
Написал toxi 27.09.2016 в 17:59 Ответить
Имя:
E-mail:

Обновить картинку
Ваш комментарий будет добавлен после проверки администратором
Есть утилита ab (apache benchmark) с ее помощью можно создать http флуд на определенную страницу, например wp-login.php и посмотреть при этом error лог nginx.
$ ab -n 100 -c 1 http://.../wp-login.php
Написал Илья 29.09.2016 в 00:43 Ответить
Имя:
E-mail:

Обновить картинку
Ваш комментарий будет добавлен после проверки администратором
Спасибо за ответ.
Может дополнить эту статью тем, как можно проверить данную настройку, чтобы не искать в комментариях ответ?)

Например, после главы "Принцип работы", написать следующую главу "Как проверить" или "Тестирование конфигурации" и дальше уже написать Ваш ответ )
Написал toxi 29.09.2016 в 10:28 Ответить
Имя:
E-mail:

Обновить картинку
Ваш комментарий будет добавлен после проверки администратором
Готово
Написал Андрей 29.09.2016 в 10:31 Ответить
Имя:
E-mail:

Обновить картинку
Ваш комментарий будет добавлен после проверки администратором

Добавить комментарий
Имя:
E-mail:

Обновить картинку
Ваш комментарий будет добавлен после проверки администратором.
Внимание! Чтобы ответить на существующий комментарий, пожалуйста, нажмите на кнопку Ответить, которая находится под соответствующим комментарием.

Другие полезные статьи:

Горячая линия
(044) 392 74 33 другие города
Copyright © 2006—2017 ООО "Хостинг «Украина»"

Все материалы данного сайта являются объектами авторского права.
Запрещается копирование, распространение или любое иное использование информации и объектов без письменного согласия правообладателя.
Нашли опечатку на странице - выделите ее и нажмите Ctrl+Enter
Идёт обновление информации, подождите...