Защищаем WordPress от брутфорса

Писать в очередной раз про то, что на свои сайты необходимо устанавливать хорошие пароли, наверное бессмысленно, но в середине апреля была зафиксированная массированная брутфорс атака на сайты под управлением CMS WordPress. Для этой атаки использовался ботнет с более чем 90к хостами, которые производили обращение к служебным разделам сайтов /wp-login.php и /wp-admin, с последующей попыткой подбора пароля.
На наиболее популярных сайтах число перебора в сутки достигало более 100к, то есть фактически полтора обращения в секунду.

Естественно наиболее часто использованные имена для перебора были: admin, test, administrator, Admin, root , что говорит нам о необходимости переименовывания дефолтного пользователя WP в рандомного с выставлением сложного пароля, содержащего не только буквы в разных регистрах, но также использовать цифры и спец.символы.

Теоретически вы можете разрешить обращение к указанным урлам только с определенных IP, но тогда при смене IP, которая при использовании технологии ADSL осуществляется каждый раз при разрыве связи (по дефолту раз в сутки), вам придется переписывать правила .htaccess.

Но тогда лучше установить дополнительный пароль на файл отвечающий за логин в WP, путем задания его в том же самом .htaccess, добавив в корневой .htaccess следующие строки:
ErrorDocument 401 “Unauthorized Access”
ErrorDocument 403 “Forbidden”
<FilesMatch “wp-login.php”>
AuthName “Authorized Only”
AuthType Basic
AuthUserFile /full-path-to/.htpasswd
require user your-login-username  # (user может работать или нет, в зависимости от версии апача)
</FilesMatch>

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

После этого оба адреса будут запрашивать пароль, так как при обращении к  /wp-admin идет редирект на /wp-login.php

Но помимо этого, есть возможность подключить к WP дополнительный функционал двухфакторной аутентификации, при которой ввод пароля является лишь первым шагом к попаданию внутрь админки, и после чего необходимо будет предпринять некие дополнительные действия, чаще всего в виде ввода доп-кода, получаемого либо от токена, либо по sms/почте/инъекции в мозх. Подобная технология защиты уже давно реализована для блог-хостинга WordPress.com, но уже некоторое время как это же можно организовать и на свободно хостящихся блогах WP. Основано это на дополнительных плагинах для wp, среди которых есть платные и условно бесплатные. Платные отправляют SMSки, так что если вам это интересно можете посмотреть Clockwork SMS (его же можно прикрутить и к контактной форме и прочим тулзам), вторые же предлагают софтовый токен, генерящий временные пароли, и при небольших объемах приложение предлагается бесплатно. Так что их и рассмотрим:

Google Authenticator:
Специальная тулза которая подключает метод двухфакторной аутентификации к вашему блогу, путем установки софтового токена Google Authenticator app на мобильный аппарат. Тулзятина совершенно бесплатная и главное элементарная в настройке- ставим плагин Google Authenticator на WP, после чего идем в админку пользователя (раздел Users) и включаем ему двухфакторную аутентификацию, после чего генерим ‘Secret’, вписываем в поле ‘Description’ название сайта или какой нить идентификатор под которым мы и запомним наш логин, после чего открываем штрих код и фоткаем его из установленного на мобильный приложения Google Authenticator app. Выходим из админки и видим, что у нашего приглашения появился доп.пароль Google Authenticator code, который мы и берем с софтового токена, установленого на наш телефон.

Authy:
Это уже профессиональное приложение, для защиты, анонсированное в начале года, и имеющее бесплатный план. Регаемся на сайте, где указываем наше мыло и мобильный, после чего устанавливаем плагин на сайте и ставим приложение на мобильное устройство iPhone, Android и BlackBerry. Тут надо заметить, что для окончательной верификации необходимо указывать мобильный к которому вы имеете доступ, так как пин будет выслан sms’кой. Но устанавливать можно на любое устройство.

После этого вы вводите токен, высветившийся у вас в телефоне, на сайте и активировав аккаунт, генерите API, которое вводите на сайте в настройки плагина. Там же можно выбирать роли для которых использовать многофакторную атунтификацию- поскольку у большинства блоггеров всего один пользователь, то оставляем админа и включаем использование двухфакторной аутентификации в настройках пользователя. Далее выбираем план которым мы будет пользоваться – для 10-20 блогов вполне сгодится бесплатный Starter, чья активация обойдется в $0.5.

Перелогиниваемся и после ввода пароля, вводим уже токен, который у нас высвечивается в данный момент на мобильном приложении. Единственно что стоит- это подредактировать надпись логина, чтобы не палить свой мобильник в паблики. Делается это в файле authy-two-factor/helpers.php, где удаляем выражение:
<strong><?php echo esc_attr( $user_data[‘phone’] ); ?></strong>

В консоли управления на сайте Authy у вас будет представлена статистика с заходами, логинами и прочими делами, что довольно удобно, если вам надо контролировать логины.

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

Оставить комментарий