Защита админки WordPress от перебора паролей
В интернете периодически наблюдаются массовые атаки на сайты, построенные на движке Wordpress
. Злоумышленники с помощью большого ботнета пытаются подобрать пароли к админкам с помощью брутфорс-атаки
. Вот и мой сайт начали атаковать с такой силой, что сервер не выдерживает нагрузки и периодически ложится.
Меняем логин администратора
Большинство атак направлено на подбор пароля для пользователя admin
. Поэтому необходимо его изменить на любой другой. Но сначала нужно создать нового пользователя с админскими правами и при удалении старого админа, передать все его посты вновь созданному.
В этом поможет плагин Admin Renamed Extended
Используем надежные пароли
Многие пользователи использует очень ненадежные пароли, которые достаточно просто подобрать по словарю. По возможности при выборе пароля следуйте следующим правилам:
- Пароль не должен совпадать с вашим реальным именем, логином, никнеймом, названием компании, где вы работаете и именем вашего сайта;
- Пароль не должен совпадать с словами из словарей на любом языке;
- Пароль не должен быть коротким (не менее 6-ти символов);
- Пароль не должен состоять только из цифр или букв (их надо смешивать, добавлять различные символы и менять регистр некоторых букв).
Для увеличения надежности пароля можете попробовать плагин Two Step Authentication.
Ставим лимиты на количество неверных авторизаций
Еще одним действенным способом защиты является ограничение числа попыток входа, сделанных на вашем сайте с последующей блокировкой пользователя и уведомлением об этом администратора. Здесь вам помогут такие плагины, как:
- Limit Login Attempts
- Block brute-force attacks
- BruteProtect
- Lockdown WP Admin
- WP Fail2Ban
- Admin Renamed Extended
- Enforce Strong Password
- Wordfence Security
- 3WP Activity Monitor
- All in one WP Security
- Rename wp-login.php
- Brute Force Login Protection
Паролим wp-login.php
Если Вы единственный пользователь админки, то достаточно включить basic-авторизацию
для страницы логина (wp-login.php
) и самой админки (wp-admin
).
Для этого открываем конфиг nginx.conf
для редактирования:
sudo nano /etc/nginx/nginx.conf
Добавляем новый блок location
к вашему сайту, запрашивающий пароль доступа к папке wp-admin
и файлу wp-login.php
:
location ~ ^/(wp-admin|wp-login.php) { auth_basic "Restricted area"; auth_basic_user_file /путь_до_htpasswd; try_files $uri @fallback; }
Для создания файла auth_basic_user_file
воспользуйтесь любым сервисом генерации .htaccess
файлов, например, этим.
Если Ваша тема или плагин работают по технологии AJAX
, то следует разрешить доступ к файлу /wp-admin/admin-ajax.php
, добавив ещё один location
:
location /wp-admin/admin-ajax.php { allow all; }
Перегружаем конфиг сервера:
sudo service nginx reload
Проверяем результат. Для этого пробуем зайти на страницу логина (wp-login.php
).
Если у вас Apache
Для этого веб-сервера достаточно в файле .htaccess
прописать следующее правило:
AuthType Basic AuthName "Protected page" AuthUserFile /путь_к/.htpasswd Require valid-user <files admin-ajax.php> Order allow,deny Allow from all Satisfy any </files> <files admin-post.php> Order allow,deny Allow from all Satisfy any </files> <files ".(css|gif|png|js)$"> Order allow,deny Allow from all Satisfy any </files>
Ну и в файле .htpasswd
добавить ваш логин и пароль в формате:
ваше_имя:ваш_пароль
Для генерации данного файла можно воспользоваться онлайн-сервисом.
Ссылки
- Brute Force Attacks (оригинал)
и кто вам сказал что вашу бейсик аутентификацию не пробьют так же легко как обычную вордпресса? что за полумеры даешь login limit
Я и не утверждал, что её не пробьют. Но жить станет заметно легче. Дополню статью про login limit.
Спасибо, поправил
Иногда возникает необходимость соорудить незатейливый сайт по-быстрому.
И приходит мысль использовать CMS. Но исторически так сложилось, что мне сложно принять чьи-то готовые решения, лишить себя свободы в написании кода. Я не заряжен на зарабатывание денег. Ну, не совсем так, конечно… Я зарабатываю фрилансом, написанием сайтов. Но мне интересен сам процесс создания, а не только итог работы в виде хрустящих бумажек…
Поэтому для меня использование CMS это как разогрев замороженной пиццы для повара. Я и фреймворки-то начал использовать переодолев большое внутреннее предубеждение…
Поэтому проблемы подобные обсуждаемой здесь укрепляют предубеждение.
Михаил, скажи, сильно связывает WordPress руки программеру? Насколько легко(да и возможно ли) написать свои классы для некоторых действий?
Можно ли например выбирать что использовать:PDO, MySQLi или ещё что-то?
Благодаря хукам WordPress(фильтры и экшены) у программиста полностью развязаны руки, все зависит от полета вашей фантазии. На базе данной CMS можно реализовать любой проект.
WordPress — фреймворк для разработки с низким порогом вхождения (протсо чаще читаем Кодекс). ООП или процедурное программирование — решать вам, сам движок не накладывает на это никаких ограничений. Сам WordPress использует принцип процедурного программирования, а WooCommerce (e-commerce плагин), например — ООП.
Использовать PDO и MySQLi в теории возможно, но не имеет смысла, так как есть класс WPDB, в котором реализованы весь нужный функционал. Если чего-то вам не хватает — расширяется при помощи наследования, фильтров, хуков и прочих прелестей WordPress
Спасибо. Попробую что-нибудь наваять на WordPress.
Не за что, обращайтесь)