Защита админки WordPress

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

Но не сможет ли кто-то другой без вашего ведома попасть в админку? Насколько надежна защита с помощью одного только пароля? Как показывает практика, лучше перестраховаться и усложнить жизнь потенциальным хакерам.

Предлагаю вашему вниманию способы защиты админки WordPress от взлома.

Защита файла wp-login.php паролем

Для защиты от подбора пароля и уменьшения нагрузки на сервер существует простой способ: закрыть файл wp-login.php (вход в админку) паролем средствами веб сервера.

Для этого сначала надо создать специальный файл с паролем. Проще всего это сделать, перейдя по этому адресу

Введите имя пользователя и пароль (можно ввести пользователя и пароль от админки вордпресса, но лучше придумать другие). После нажатия на кнопку Create .htpasswd file будет сгенерировано содержимое нужного вам файла:Vasya:$apr1$cBunF0ft$JA.tpq/nn68lGSOGVbUgr/

Вам надо его просто скопировать и вставить с помощью текстового редактора в файл .htpasswd (с точкой в начале). Впрочем, имя файла может быть и другим.

Теперь надо загрузить этот файл по ftp на ваш сервер. Лучше всего его расположить в вашей домашней директории, т.е. не в корне вашего сайта, а выше.

В случае, если ваши сайты работают под управлением Apache (99.9% всех shared хостингов) создайте рядом с .htpasswd файл .htaccess (это имя должно быть именно таким):

.htaccess
ErrorDocument 401 "Unauthorized Access"
ErrorDocument 403 "Forbidden"
<FilesMatch "wp-login.php">
AuthName "Authorized Only"
AuthType Basic
AuthUserFile /home/username/.htpasswd #Путь к файлу .htpasswd
require valid-user
</FilesMatch>

Естественно, вы можете создать этот файл локально, после чего загрузить его на сервер по ftp.

Вместо /home/username/.htpasswd надо прописать путь к месту расположения файла .htpasswd. В зависимости от хостига он может быть разным. Чтобы его узнать, создайте в корне своего сайта файл path.php с таким содержимым:

path.php
<?php
    echo __FILE__;
?>

После этого введите в браузере url_вашего_сайта/path.php и вы увидите полный путь к файлу path.php (что-то типа /home/u/user34/site.ru/public_html/path.php). Вам надо взять левую часть этого пути (в приведенном примере это будет /home/u/user34/.htpasswd).

Вместо создания отдельного файла .htaccess можно добавить приведенный код к содержимому .htaccess из корня сайта. Но эту процедуру придется проделать с .htaccess каждого сайта.

А что делать, если у вас собственный VPS и вместо Apache установлен только nginx? В этом случае надо дописать в .conf файл сайта примерно следующее:

location = /wp-login.php {
fastcgi_pass                php;
include                     /etc/nginx/fastcgi_params;
fastcgi_split_path_info     ^(.+\.php)(.*)$;
fastcgi_param               PATH_INFO $fastcgi_path_info;
fastcgi_param               SCRIPT_FILENAME $document_root$fastcgi_script_name;
 
#deny all;
auth_basic "Admin Zone";
auth_basic_user_file /home/username/.htpasswd;
}

Собственно пароль устанавливают последние две строки, а строки перед ними зависят от вашей конфигурации (их можно скопировать из вашего nginx.conf).

Или второй вариант:

location ~ ^/(wp-admin|wp-login\.php) {
  auth_basic "Restricted area";
  auth_basic_user_file /путь_до_htpasswd;
  try_files $uri @fallback;
}

Теперь при обращении к странице /wp-login.php будет появляться окошко для ввода логина и пароля:

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

Боты же при запросе страницы /wp-login.php будут получать код ошибки 401 и, либо уходить, если они достаточно умны, либо повторять запросы, но при этом важно то, что общением с ними занимается веб сервер, а не код на php, поэтому нагрузка на сервер значительно снижается.

Итак, описанный способ является наиболее надежным и эффективным способом защиты админки WordPress от взлома с помощью перебора паролей. Очень важно, что при этом существенно снижается нагрузка на сайт, создаваемая запросами ботов.

Если же вам этот способ не подходит (например, описанная процедура вам показалась слишком сложной, или у блога много пользователей, которым надо логиниться в админку), то для защиты блога можно воспользоваться другими методами.

Плагин Lockdown WP Admin

Этот плагин меняет url админ панели блога и страницы логина, и является отличным способом борьбы с ботнетами. Бот, запросив url /wp-login.php или /wp-admin/ получит ошибку 404 (страница не найдена) и пойдет искать другую жертву.

Плагин Limit Login Attempts

С помощью этого плагина можно ограничить количество неудачных попыток логина с одного IP. Благодаря этому подбор даже простого пароля будет очень затруднителен.

Плагин работает очень просто: после заданного в настройках количества неправильно введенных логина и пароля дальнейшие попытки входа с этого IP игнорируются на определенное время (также указывается в настройках плагина). Дополнительно можно задать более длинный временной интервал, на который будет заблокирован злоумышленник после нескольких коротких блокировок.

Плагин Better WP Security

Это просто священный грааль безопасности WordPress, возможности которого включают функциональность двух предыдущих плагинов и еще много других полезных вещей.

Хотя Better WP Security и превосходит по возможностям своих конкурентов, это не значит, что он будет лучшим выбором в любой ситуации.

Дополнительные рекомендации по защите блога

  • Используйте длинные пароли, состоящие из букв разного регистра, цифр и спецсимволов. Длинные пароли (более 10-12 символов), состоящие из случайного набора символов, практически невозможно подобрать. Но и запомнить такой пароль непросто. Для этого используйте специальные менеджеры паролей.
  • В том случае, если вы предпочитаете придумывать запоминающиеся пароли, которые состоят из слов, необходимо использовать не менее 2-3 слов, вставляя между ними цифры или спецсимволы. Боты как раз проверяют пароли из общеупотребительных слов и их комбинаций.
  • По умолчанию в Вордпрессе создается пользователь с логином admin. Для надежности лучше создать другого пользователя с полными правами, а админа удалить.

Ссылки

Обсуждение

Ваш комментарий:
  __  __   ___    __ __   __    ____ ______
 / / / /  / _ \  / //_/  / /   / __//_  __/
/ /_/ /  / // / / ,<    / /__ / _/   / /   
\____/  /____/ /_/|_|  /____//_/    /_/