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

В этой статье пойдет речь о том, как максимально защитить свой сайт или блог на движке WordPress. Большая популярность этого движка несомненно подталкивает неадекватных личностей на неподобающие действия — «кража со взломом».

Вам повезет, если на месте главной страницы сайта будет красоваться надпись «Админ — дурак». Но обычно бывает все гораздо хуже. Сайты, сломанные для размещения рекламы, черного SEO, рассылки спама и тд., блокируются в крупнейших медиа и соцресурсах, например в Google. Если Ваш сайт про цветочки, выращенные на даче, взлом — это неприятность. А если сайт это одна из составляющих Вашей коммерческой деятельности? Итог будет печален.
Итак, перейдем к описанию способов и средств защиты WordPress

Первоначальные действия и советы

1. На этапе установки Вам предлагается по умолчанию пользователь с логином admin. Это явная дыра в безопасности. Обязательно придумайте что-нибудь своё, непохожее на admin, administrator или имя Вашего домена (mydomain.ru). По статистике такие логины наиболее часто используются при брутфорс (подбор паролей) атаках. Создать новый логин для администратора можно и после установки, а стандартный «admin» удалить.
2. Пароль для админского аккаунта должен быть максимально сложный, состоящий из цифр, букв и символов в верхнем и нижнем регистрах. Например, XpeH-te6e@M0i_naP0/\b!1:-). Тут, безусловно, присутствует элемент творчества. Старайтесь не сохранять пароль в браузерах, FTP-клиентах, которые вы используете для администрирования сайта. Лучше всего хранить пароль в голове или на бумажке, или в специальных программах, где пароли хранятся в зашифрованном виде.
3. По возможности используйте защищенные соединения (SSL, sFTP, ssh) для администрирования Вашего сайта, если Ваш провайдер предоставляет такие услуги.
4. Устанавливайте плагины и темы только с официального сайта WordPress. Следите за обновлениями движка, плагинов и тем. Обновления — это не просто увеличение циферок версий программы, это заплатки к найденным ранее уязвимостям, через которые взломщики могут проникнуть в Вашу обитель. Конечно, не всегда есть возможность обновить всё полностью из-за самописных скриптов и плагинов, но минорные обновления все равно необходимы. Например, текущая версия движка 4.5.x, а ветка 4.0.х обновляется до 4.0.10.

Практические советы

Исходя из статистики, в первую очередь, взломщики пытаются подобрать пароль на вход в админ-панель. Это так называемая брутфорс атака. Вход в нашем движке осуществляется через файл wp-login.php. Давайте защитим его от атак.

1. Защита с помощью файла .htaccess
Вам необходимо найти в корне Вашего сайта файл .htaccess или создать, если его нет. Записываем в этот файл или добавляем в конец следующий код.

Разберем содержимое кода:
AuthType — директива выбирает тип аутентификации. Обычное значение — basic.
AuthName — директива выводит для посетителя сайта сообщение заключенное в кавычках. В нашем случае ‘Private Area!’
AuthUserFile — директива указывает путь к файлу с паролями.
Тут есть два очень важных момента:
— Этот файл Вы создаете самостоятельно в месте недоступном для посетителей Вашего сайта. Например, на Вашем хостинге сайт располагается в директории /home/user/data/www/supersite.ru (адрес сайта — www.supersite.ru). Файл, в нашем случае, .top_secret_file помещаестя на уровень выше, то есть /home/user/data/www/.top_secret_file.
— На разных хостингах абсолютные пути есстественно разные, а нам необходимо для правильной настройки указать именно абсолютный путь к файлу (путь от корня сервера).
В этом нам поможет еще один небольшой файлик. Создадим его в корне Вашего сайта, назовем его path.php и вставим в него следующий код.

Теперь откроем в браузере адрес www.supersite.ru/path.php. На экране будет примерно следующая строчка /home/user/data/www/supersite.ru/path.php — это и есть абсолютный путь. Исходя из всего вышесказанного, в директиве AuthUserFile указываем /home/user/data/www/.top_secret_file и не забываем создать этот файл. Он пока пустой и нам надо заполнить его паролями.
require — директива определяет пользователей, которые могут получить доступ. Значение valid-user позволяет логиниться всем пользователям перечисленным в файле паролей. Если администрируете сайт только Вы, можно указать пользователя конкретно, например require user user1, где user1 — Ваш логин. Очень желательно, чтобы этот логин не совпадал с логином администратора WordPress.
Итак, в нашем файле /home/user/data/www/.top_secret_file записаны пользователи и их зашифрованные пароли. Как же нам зашифровать пароль?
Вот несколько способов:
— Используем опять небольшой файлик. Создаем в корне сайта файл password.php и вставляем туда следующий код.

Результатом посещения адреса www.supersite.ru/password.php будет всего одна строка примерно такого вида ZWWqMT6bwmxr. Это и есть наш зашифрованный пароль.
— Если у Вас под рукой есть компьютер с Linux системой, и на нем установлен вебсервер Apache, то наберите в терминале
htpasswd -b -n user1 M0i_naP0/\b! и получите ответ
user1:h7E1XVZ7Dy61c. Это опять наш шифрованный пароль.
— Существует сайт http://www.htaccesstools.com/htpasswd-generator/, где также можно получить зашифрованный пароль. Достаточно ввести логин пользователя и пароль в соответствующие поля.
wordpress .htaccess

Копируем полученные шифры паролей в наш файл /home/user/data/www/.top_secret_file. Он приобретает примерно такой вид.

В итоге мы получаем дополнительную парольную защиту нашей админ-панели. При заходе на страничку www.supersite.ru/wp-login.php посетитель увидит следующее:
access
Не забудьте удалить созданные вспомогательные файлы: password.php и path.php. Наличие таких названий файлов в корне сайта может спровоцировать взломщиков на более тщательные попытки проникновения. А мы, тем временем, продолжим строить стену нашего бастиона.

Выше мы узнали как защитить файл wp-login.php, но сами скрипты админ-панели находятся в директории wp-admin. Давайте защитим и её опять же с помощью .htaccess, создав его в директории wp-admin. Теперь нам нужно прописать в этот файл IP адреса, с которых разрешено заходить в данную директорию, и, следовательно, использовать админ-панель. Свой IP адрес можно узнать зайдя на страничку www.yandex.ru/internet. Это адрес, под которым Ваш провайдер выпускает Вас в Интернет. Не путайте с IP адресом в Вашей локальной сети. Содержание файла будет следующим:

Разберем подробно все записи.
Верхние директивы нам уже знакомы, а строка /dev/null сообщает, что никаких файлов паролей тут нет.
<LIMIT GET> — устанавливает следующие ограничения на директорию:
order deny,allow — устанавливает порядок: сначала запреты, потом разрешения.
deny from all — запрещено всем.
allow from 11.22.33.44 — разрешено с этого IP адреса.
allow from 11.11.22.0/24 — разрешено с этой сети.
Поясним подробнее две последние строчки. Если у Вас статический IP адрес (и/или у Вашего компаньона), то можно вписать его так allow from 11.22.33.44. Если же адрес динамический, то так allow from 11.11.22.0/24 или так allow from 11.11.0.0/16, в этом случае разрешение получает весь диапазон адресов в Вашей сети. Как правильно записать именно Ваш диапазон можно узнать у Вашего провайдера. Большинство домашних провайдеров выдает своим клиентам именно динамические адреса, а, например, на работе у Вас может быть статический адрес. В итоге мы получаем возможность пользоваться админ-панелью только из дома и/или с работы. Небольшое предостережение. Если Вы не уверены в правильности записи Вашего адреса и/или диапазона — не используйте этот вариант защиты.
Едем дальше. Кроме файла wp-login.php в движке присутствует еще один файл, который отвечает за удаленное управление сайтом: редактирование, создание, удаление записей, комментариев и тд. Это файл xmlrpc.php. Обычно таким функционалом никто не пользуется. А вот взломщики, к сожалению, используют и этот файл для проникновения. Но мы уже знаем как с ним поступить! Добавим в наш .htaccess, который в корне сайта, следующие строки:

Думаю, разбирать этот код уже не нужно.

2. Защита с помощью плагинов.
Плагин Limit Login Attempts (Ограничение попыток авторизации)
Этот плагин позволяет ограничить количество неудачных попыток логина в Вашу админ-панель. При попытке взлома скрипт злоумышленника, как правило, многократно подбирает пару логин-пароль. Вот тут его и поймает этот плагин. Вычисляется IP адрес, с которого ведется атака, и дальнешие попытки входа с этого адреса игнорируются. Попросту адрес банится на определенное время, которое, а также и другие параметры, можно указать в настройках. Настройки все прозрачные и понятные любому пользователю.
Защита wordpress limit login
Представим, что злоумышленник самостоятельно пытается подобрать логин и пароль к Вашему блогу. Тогда его взору предстанет следующая картина:
Защита wordpress limit login
Плагины Disable XML-RPC и Control XML-RPC publishing
Вернемся к файлу xmlrpc.php. Он, как мы помним, часто используется злоумышленниками для проникновения. Первый плагин отключает возможность управления сайтом удаленно. Второй позволяет Вам включать/отключать эту возможность. Но очень сомнительно, чтобы она когда пригодлилась. Выбрав в меню «Настройки» -> «Написание», в самом низу увидите пункт включения/отключения.
Защита wordpress xmlrpc
Плагин Wordfence
Хотелось тут упомянуть еще один плагин — Wordfence. На мой взгляд один из самых мощных плагинов для защиты нашего движка. Огромный набор функций даже в бесплатной версии:
— сканер целостности системных файлов;
— трафик в режиме реального времени;
— файервол;
— блокировка по IP-адресу
… и многое, многое другое.
Есть и один, по моему мнению, минус: плагин требователен к ресурсам Вашего сервера/хостинга. Так что, если Вы ограничены в таких ресурсах, для защиты Вам хватит и всего написанного выше. Приведу пару скриншотов для ознакомления.

защита wordpress wordfence
защита wordpress wordfence

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

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

Ваш адрес email не будет опубликован. Обязательные поля помечены *