Коротка відповідь: Обмежте спроби входу (плагін), увімкніть 2FA для всіх адмінів, заблокуйте або обмежте xmlrpc.php і додайте серверний rate limiting через fail2ban, що читає лог автентифікації WordPress. Разом це перетворює нескінченний ботовий підбір паролів із загрози на фоновий шум.
Огляд
Кожен публічний сайт на WordPress щодня брутфорсять — боти цілодобово довбуть wp-login.php і xmlrpc.php. Ризик не лише у вгаданому паролі: незадушений потік логінів також палить CPU. Захист має рівень застосунку (ліміти, 2FA) і рівень сервера (fail2ban, правила вебсервера) — використовуйте обидва.
Що потрібно мати
- Адмін-доступ до wp-admin і SSH.
- Уже активний фаєрвол (гайд по UFW) — fail2ban вбудовується в нього.
Покрокова інструкція
- Ліміт спроб: поставте «Limit Login Attempts Reloaded» (або вбудований лімітер Wordfence): блокування після 4–5 невдач зі зростаючим часом блокування.
- 2FA: додайте TOTP-плагін (WP 2FA, Two-Factor) і зробіть його обов'язковим для ролей адміністратора й редактора.
- xmlrpc.php: якщо не користуєтесь мобільним застосунком/Jetpack — заборонте на вебсервері (див. server block для Nginx); інакше обмежте по IP.
- fail2ban: встановіть плагін «WP fail2ban» (логує події автентифікації в syslog), потім:
Плагін постачає відповідні filter-файли; скопіюйте їх уsudo apt install fail2ban # /etc/fail2ban/jail.d/wordpress.conf [wordpress-hard] enabled = true filter = wordpress-hard logpath = /var/log/auth.log maxretry = 3 bantime = 3600 port = http,https/etc/fail2ban/filter.d/і перезапустіть fail2ban. - Перевірка: зробіть кілька невдалих логінів з VPN-IP і подивіться
sudo fail2ban-client status wordpress-hard.
Типові проблеми
- Заблокували самі себе: додайте свій IP у білий список лімітера та в
ignoreipfail2ban. - Атаки тривають через xmlrpc: лімітери логіну часто його не покривають — саме тому важливий явний блок.
- Перейменування wp-login ламає інтеграції: ховати сторінку входу — косметика; справжній захист це rate limiting + 2FA.
Коли звертатися в підтримку
Якщо потік логінів насичує сервер попри бани (нетипово), відкрийте тикет із часовими мітками та прикладами IP — події масштабу DDoS оцінюються на рівні мережі, а DDoS-захист доступний як опція послуги.
Часті запитання
Чи достатньо перейменувати сторінку входу, щоб зупинити brute force?
Ні — це лише ховає wp-login.php від лінивих ботів і ламає деякі інтеграції. Ліміт спроб, 2FA та fail2ban зупиняють атаки незалежно від того, чи відома адреса входу.
Чому атакують саме xmlrpc.php?
xmlrpc.php приймає автентифікацію і вміє пакувати багато спроб пароля в один запит, оминаючи прості лімітери — тож блокуйте його повністю, якщо не користуєтесь віддаленою публікацією чи Jetpack.
Що дає fail2ban понад плагін-лімітер входу?
fail2ban банить агресивні IP на фаєрволі, тож рецидивісти взагалі не доходять до PHP — це економить CPU під час потоків атак і тим самим механізмом покриває SSH та інші сервіси.
Схожі статті
- Як захистити WordPress на VPS
- Чекліст безпеки WordPress
- Як налаштувати фаєрвол UFW
- Як захистити VPS після розгортання
Потрібна допомога? Звернутися в підтримку Cloud2Y →
