Как конфигурирате Fail2ban за WordPress (WP-Login, XMLRPC)
Pe scurt, în acest tutorial găsești liniile de comandă prin care poți să instalezi și să configurezi Fail2Ban pentru WordPress. Securizează autentificarea WordPress și interogările de tip brute force ale xmlrpc.php.
Blogurile și site-urile dezvoltate pe platforma WordPress sunt adesea ținte ale atacurilor cibernetice. Cele mai multe atacuri sunt de tip brute force și viziează sesiunea de autentificare sau exploatarea XML-RPC (Remote Procedure Call using XML). Din fericire, fail2ban este o soluție de securitate foarte utilă pentru aceste situații. Dacă vrei să securizezi un site WordPress cu fail2ban, urmează pașii de configurare din acest tutorial.
Първо се уверете, че имате достъп до уеб сървъра чрез SSH връзка и че приложението fail2ban е инсталирано.
Fail2ban конфигурация за WordPress на Debian
1. Първо трябва да се уверя, че приложението fail2ban е инсталирано и работи на сървъра. Изпълнете командния ред по-долу:
systemctl status fail2ban
В изхода трябва да видите нещо като:
● fail2ban.service - Fail2Ban Service
Loaded: loaded (/lib/systemd/system/fail2ban.service; enabled; preset: enabled)
Active: active (running) since Tue 2025-03-11 00:39:32 EET; 6 days ago
Docs: man:fail2ban(1)
Main PID: 917 (fail2ban-server)
Tasks: 17 (limit: 76843)
Memory: 33.2M
CPU: 17min 1.752s
CGroup: /system.slice/fail2ban.service
└─917 /usr/bin/python3 /usr/bin/fail2ban-server -xf start
Ако fail2ban не е инсталиран на сървъра, ще трябва да го инсталирате. Изпълнете командния ред, за да инсталирате fail2ban на Debian / Ubuntu:
sudo apt install fail2ban
2. Следващата стъпка е да създадете филтъра fail2ban за WordPress. Изпълнете командния ред в терминала, за да създадете и редактирате филтъра wordpress.conf.
sudo nano /etc/fail2ban/filter.d/wordpress.conf
Във файла wordpress.conf Задава филтри за удостоверяване на WordPress и удостоверяване на файлове xmlrpc.php, както следва:
[Definition]
failregex = ^<HOST> -.*"(GET|POST).*(/wp-login.php|/xmlrpc.php).*" 200
ignoreregex =
Това означава, че по всеки метод, GET или POST, ще има достъп до файловете wp-login.php или xmlrpc.php, може да се създаде правило fail2ban. Условието е тези файлове да съществуват и да могат да бъдат достъпни от нападателя. Тоест да върне кода 200 (ок) при достъп.
Запазва файла /etc/fail2ban/filter.d/wordpress.conf.
3. Следващата стъпка е да конфигурирате “затвор” за WordPress. Тази стъпка обърква повечето потребители, тъй като правилата трябва да бъдат зададени по различен начин в зависимост от системата за управление на хостинга (ако съществува) или конфигурацията на уеб сървъра.
Ако използвате HestiaCP, VestaCP или MyVesta, създайте и редактирайте файла /etc/fail2ban/jail.local.
nano /etc/fail2ban/jail.local
Добавете следните редове към този файл:
[wordpress]
enabled = true
port = http,https
filter = wordpress
logpath = /var/log/nginx/domains/*.log #or apache2.
maxretry = 5
findtime = 1800
bantime = 3600
action = hestia[name=WEB] #hestacp action.
Регулирайте горните параметри според вашите нужди. В конфигурацията, която дадох, ако има 5 повторни опита от същия IP в рамките на 1800 минути, той ще бъде блокиран за 3600 минути с помощта на уеб действието HestiaCP. (hestia[name=WEB]). Това е мястото, където ще трябва да помогнете в зависимост от системата, която имате на вашия сървър.
Също така е много важно и “logpath“. Данните, върху които ще се изпълни действието, се извличат от тези регистрационни файлове. Уверете се, че местоположението е правилно.
În cazul în care nu aveți un sistem de management instalat, va fi nevoie ca acțiunea de blocare a IP-urilor cu fail2ban pentru WordPress să se facă direct prin iptables. Linia pentru acțiune va fi următoarea:
action = iptables-multiport[name=wordpress, port="80,443", protocol=tcp]
Ca o paranteză, în loc de /etc/fail2ban/jail.local puteți utiliza și un fișier separat pentru configurare, precum: /etc/fail2ban/jail.d/wordpress.conf.
După ce ați făcut ajustările, aplicați modificările.
sudo systemctl restart fail2ban
4. După restart, verificați dacă fail2ban pentru WordPress funcționează:
fail2ban-client status wordpress
Status for the jail: wordpress
|- Filter
| |- Currently failed: 355
| |- Total failed: 33873
| `- File list: (log files per domain)
- Actions
|- Currently banned: 127
|- Total banned: 680
`- Banned IP list:
După ce găsiți în această listă IP-uri blocate, asigurați-vă că acestea sunt blocate și în iptables. Попаднах на ситуацията, че поради грешна конфигурация, в fail2ban виждам, че това е блокиран IP, но в действителност все още може да има достъп wp-login.php или xmlrpc.php.
За да проверите дали всичко работи правилно, изберете блокиран IP от списъка fail2ban и го потърсете в iptables.
Стартирайте командния ред:
iptables -L -v -n --line-numbers
Ако IP адресът, който изглежда блокиран от fail2ban, също е в този списък, това означава, че сте конфигурирали правилно fail2ban за WordPress.
Свързани: Как да нулирате потребителската парола на администратор в WordPress. Няма достъп до имейл.
В същото време е силно препоръчително да проверите дневника с действия fail2ban:
sudo tail -f /var/log/fail2ban.log
Като се има предвид това, ако имате въпроси или се нуждаете от помощ, мога да ви помогна в коментарите.
Как конфигурирате Fail2ban за WordPress (WP-Login, XMLRPC)
Какво ново
Около Stealth
Страстен по технологиите, с удоволствие пиша за StealthSettings.com от 2006 година. Имам богат опит със системи за операционни: macOS, Windows и Linux, както и с езици за програмиране и платформи за блогове (WordPress) и за онлайн магазини (WooCommerce, Magento, PrestaShop).
Вижте всички публикации от StealthМоже също да се интересувате от...