Дошли слухи о том, что WordPress далеко не идеал безопасности. Хоть обновления выходят достаточно часто, но в систему все равно умудряются пролезть. Но судя по тому, что официальный плагин "jetpack" от WordPress заявил, что за 2 дня с момента его установки меня пытались сломать 32 раза, то я решил обезопаситься.
Честно, не представляю как работает WordPress и в статье "Ссылки и ревизии статей в WordPress" уже упоминал о том, что обычно работаю с 1С-Битрикс. Поэтому выбрал самый надёжный метод - поставил пароль на главные файлы/папки управления, через которые можно проникнуть. Посчитал что к таким особо уязвимым относятся файл wp-login.php и папка /wp-admin/.
При закрытии паролем файла/папки необходимо выполнить два действия: создать файл с логином-паролем, указать какие папки надо закрыть. На Linux для создания файла с паролем необходимо использовать команду
htpasswd -c /etc/htpasswd/alexgur.ru/.htpasswd user_name
Объяснение по порядку:
- Ключ "-c" означает создание файла при его отсутствии. Значение всех параметров можно посмотреть в документации htpasswd
- Обратите внимание на директорию для хранения файла: "/etc/htpasswd/alexgur.ru/.htpasswd". Она находится вдалеке от сайта, поэтому достать файл и подобрать пароль будет крайне сложно. Не стоит класть файл с паролем в корневую папку сайта.
- "user_name" необходимо заменить на логин (думаю, не стоит ставить тут свой логин от входа в административную часть WordPress - лучше придумать другой).
- После ввода команды попросят задать пароль и подтвердить
Теперь осталось только указать какие папки и файлы хотим защитить этим паролем. Записываем в конец файла .htaccess (в корневой сайта) следующие строки:
<Files "wp-login.php" >
AuthUserFile /etc/htpasswd/alexgur.ru/.htpasswd
AuthName "Authentication Required"
AuthType Basic
Require valid-user
</Files>
Этот файл находится отдельно от панели администратора. Поэтому защищать его надо индивидуально, через .htaccess в корневой папке сайта. Теперь подробнее что же здесь написано:
- Внутри <Files "..." > пишем на какой файл/папку будет распространяться правило
- AuthUserFile - путь к файлу, где хранится пароль, который был создан ранее
- AuthName "..." - текст на табличке, которую увидит пользователь с просьбой авторизоваться
- AuthType Basic - тип аутентификации. Для простой аутентификации значение: Basic
- Require valid-user - разрешает доступ всем пользователям, прошедшим проверку
Попробуйте запустить браузер в режиме "инкогнито" и загрузить страницу сайта /wp-login.php. Если увидите требование к авторизации, то всё сделано верно.
Далее необходимо защитить панель администратора. Создаём файл .htaccess в папке /wp-admin/ со следующим содержанием:
AuthUserFile /etc/htpasswd/alexgur.ru/.htpasswd
AuthName "Authentication Required"
AuthType Basic
Require valid-user
Теперь при входе в панель администратора будет появляться запрос на ввод логина/пароля.