Wordpress Security
Время для прочтения: 1 мин. 39 сек.

Защита админки WordPress от перебора паролей

В интернете периодически наблюдаются массовые атаки на сайты, построенные на движке Wordpress. Злоумышленники с помощью большого ботнета пытаются подобрать пароли к админкам с помощью брутфорс-атаки. Вот и мой сайт начали атаковать с такой силой, что сервер не выдерживает нагрузки и периодически ложится.

Меняем логин администратора

Большинство атак направлено на подбор пароля для пользователя admin. Поэтому необходимо его изменить на любой другой. Но сначала нужно создать нового пользователя с админскими правами и при удалении старого админа, передать все его посты вновь созданному.

В этом поможет плагин Admin Renamed Extended

Используем надежные пароли

Многие пользователи использует очень ненадежные пароли, которые достаточно просто подобрать по словарю. По возможности при выборе пароля следуйте следующим правилам:

  • Пароль не должен совпадать с вашим реальным именем, логином, никнеймом, названием компании, где вы работаете и именем вашего сайта;
  • Пароль не должен совпадать с словами из словарей на любом языке;
  • Пароль не должен быть коротким (не менее 6-ти символов);
  • Пароль не должен состоять только из цифр или букв (их надо смешивать, добавлять различные символы и менять регистр некоторых букв).

Для увеличения надежности пароля можете попробовать плагин Two Step Authentication.

Ставим лимиты на количество неверных авторизаций

Еще одним действенным способом защиты является ограничение числа попыток входа, сделанных на вашем сайте с последующей блокировкой пользователя и уведомлением об этом администратора. Здесь вам помогут такие плагины, как:

Паролим 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 добавить ваш логин и пароль в формате:


ваше_имя:ваш_пароль

Для генерации данного файла можно воспользоваться онлайн-сервисом.

Ссылки

Для вставки кода используйте HTML-теги
<pre><code class="php">ваш код</code></pre>

Добавить комментарий

Такой e-mail уже зарегистрирован. Воспользуйтесь формой входа или введите другой.

Вы ввели некорректные логин или пароль

Извините, для комментирования необходимо войти.

7 комментариев

по хронологии
по рейтингу сначала новые по хронологии
Владимир Петрозаводский

и кто вам сказал что вашу бейсик аутентификацию не пробьют так же легко как обычную вордпресса? что за полумеры даешь login limit

Я и не утверждал, что её не пробьют. Но жить станет заметно легче. Дополню статью про login limit.

Спасибо, поправил

Иногда возникает необходимость соорудить незатейливый сайт по-быстрому.
И приходит мысль использовать CMS. Но исторически так сложилось, что мне сложно принять чьи-то готовые решения, лишить себя свободы в написании кода. Я не заряжен на зарабатывание денег. Ну, не совсем так, конечно... Я зарабатываю фрилансом, написанием сайтов. Но мне интересен сам процесс создания, а не только итог работы в виде хрустящих бумажек...
Поэтому для меня использование CMS это как разогрев замороженной пиццы для повара. Я и фреймворки-то начал использовать переодолев большое внутреннее предубеждение...
Поэтому проблемы подобные обсуждаемой здесь укрепляют предубеждение.
Михаил, скажи, сильно связывает WordPress руки программеру? Насколько легко(да и возможно ли) написать свои классы для некоторых действий?
Можно ли например выбирать что использовать:PDO, MySQLi или ещё что-то?

Благодаря хукам WordPress(фильтры и экшены) у программиста полностью развязаны руки, все зависит от полета вашей фантазии. На базе данной CMS можно реализовать любой проект.

WordPress - фреймворк для разработки с низким порогом вхождения (протсо чаще читаем Кодекс). ООП или процедурное программирование - решать вам, сам движок не накладывает на это никаких ограничений. Сам WordPress использует принцип процедурного программирования, а WooCommerce (e-commerce плагин), например - ООП.

Использовать PDO и MySQLi в теории возможно, но не имеет смысла, так как есть класс WPDB, в котором реализованы весь нужный функционал. Если чего-то вам не хватает - расширяется при помощи наследования, фильтров, хуков и прочих прелестей WordPress

Спасибо. Попробую что-нибудь наваять на WordPress.

Не за что, обращайтесь)