Ми використовуємо cookie-файли
Для оптимізації роботи нашого сайту ми використовуємо cookie-файли. Продовжуючи використовувати сайт, Ви погоджуєтеся з використанням cookie-файлів.
Новий дизайн
Панель керування
  • Русский
  • Українська
  • English
  • UAH
  • USD
  • RUB
  • EUR
  • 0-800-307-307 Гаряча лінія
  • +38 (044) 392-74-33 Київ
  • +38 (057) 728-39-00 Харків
  • +38 (056) 794-38-31 Дніпро
  • +38 (032) 229-58-93 Львів
  • +38 (048) 738-57-70 Одеса
  • +38(093) 170-15-42  Life
  • +38 (067) 400-88-44 Київстар
  • +1(888)393-24-51  USA, Toll free
  • +44(131)507-01-14  Great Britain
  • +7 (499) 348-28-61 Москва

4.4.7. Проста захист від ботів (брутфорса адмін-панелі) за допомогою 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 example.com www.example.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, як більш точний для визначення ситуації), що віддається nginx, що значно економніше в плані споживаних сервером ресурсів, ніж вилов тієї ж ситуації і блокування на рівні Apache.

Більш детальну інформацію про налаштування модуля ngx_http_limit_req_module можна знайти в офіційної документації nginx.

За допомогою утиліти ab (apache benchmark) можна створити HTTP-флуд на певну сторінку, наприклад /wp-login.php, І подивитися при цьому Error-лог nginx:

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