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

06 Jul 2013 | Автор: anchous |

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

В этой связи как никогда встал вопрос защиты веб-сайта wp от атаки перебора пароля. Наиболее простым видом защиты является смена дефолтного администратора сайта admin на рандомное имя и задание ему отдельного ник-нейма, чтобы реальное имя пользователя нигде не светилось. И создание для этого пользователя сложного пароля, включающего как заглавные буквы, так и цифры со спец.символами.

Подобная защита способна защитить наш блог на 95% так как мало кто будет заниматься попытками взлома сайта, если за потраченное на взлом время, можно вскрыть 10 других сайтов.

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

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

Прилада идет в виде плагина для wp, скачиваемого напрямую из плагинов WordPress (аналогичный имеется для Drupal и Joomla) и программного токена для iPhone, Android или BlackBerry, которые ставятся из собственных магазинов. Приложение абсолютно бесплатно.

После того как мы подключаем плагин в CMS, то идем в настройки пользователя, для которого бы хотели включить двухфакторную аутентификация и в разделе Google Authenticator Settings настраиваем уникальный идентификатор для сайта и создаем новый секретный ключ, после чего либо вводим созданные уник.название и ключ- руками, либо фотографируем появившийся QR-код из приложения на телефоне (в Android необходимо будет доставить Zxing сканер), тем самым добавляя его в приложение. После чего в приглашении для логина в админку WP у нас появится дополнительное поле, куда необходимо будет ввести временный пароль, который генерится на нашем мобильном устройстве.

2. Изменение страницы логина в блог WordPress со стандартной wp-admin и wp-login на что нибудь другое. Данная процедура производится за счет добавления в файл .htaccess следующих строк:

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^new-uber-page wp-login.php?37dh49dh4djx8ej [R,L]
RewriteCond %{HTTP_COOKIE} !^.*wordpress_logged_in_.*$
RewriteRule ^new-uber-page1$ wp-login.php?37dh49dh4djx8ej&redirect_to=/wp-admin/ [R,L]
RewriteRule ^new-uber-page1$ wp-admin/?37dh49dh4djx8ej [R,L]
RewriteRule ^new-uber-page2$ wp-login.php?37dh49dh4djx8ej&action=register [R,L]
RewriteCond %{HTTP_REFERER} !^(.*)site.ru/wp-admin
RewriteCond %{HTTP_REFERER} !^(.*)site.ru/wp-login\.php
RewriteCond %{HTTP_REFERER} !^(.*)site.ru/new-uber-page
RewriteCond %{HTTP_REFERER} !^(.*)site.ru/new-uber-page1
RewriteCond %{HTTP_REFERER} !^(.*)site.ru/new-uber-page2
RewriteCond %{QUERY_STRING} !^37dh49dh4djx8ej
RewriteCond %{QUERY_STRING} !^action=logout
RewriteCond %{QUERY_STRING} !^action=rp
RewriteCond %{HTTP_COOKIE} !^.*wordpress_logged_in_.*$
RewriteRule ^wp-admin/?|^wp-login\.php http://site.ru/404.php [R=301,L]
RewriteCond %{QUERY_STRING} ^loggedout=true
RewriteRule ^.*$ /wp-login.php?37dh49dh4djx8ej  [R,L]
</IfModule>

где цифры 37dh49dh4djx8ej  являются случайным набором символов, а страницы вида new-uber-page также произвольными именами страниц, по которым будет доступен логин в CMS. В случае попытки открытия или запроса логина по стандартным адресам, клиент будет получать 404 ошибку, то есть в данном случае на блог даже не будет нагрузки (кроме первичной попытки установки соединения) в случае попытки брутфорса.

3. Установка банальной защиты паролем на уровне веб-сервера с помощью директив в файле .htaccess добавляющей запрос пароля при обращении к форме логина в wordpress по адресу /wp-login.php и /wp-admin. Для этого надо добавить в .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>

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

VN:F [1.9.21_1169]
Rating: 10.0/10 (1 vote cast)
VN:F [1.9.21_1169]
Rating: 0 (from 0 votes)
Защита WordPress от брутфорс атаки, 10.0 out of 10 based on 1 rating

Теги: , ,

Отзывов: 4 на «Защита WordPress от брутфорс атаки»

  1. Автор: Ruslan на 08 Sep 2013

    Добрый день, а что значит случайный набор символов? в виде цифр ибукв?

    [Reply]

    anchous Reply:

    ну не слова какие нить вася-петя, а случайные буквы в разных регистрах и цифры

    [Reply]

    VN:F [1.9.21_1169]
    Rating: 0.0/5 (0 votes cast)
    VN:F [1.9.21_1169]
    Rating: 0 (from 0 votes)
  2. Автор: Андрей на 15 May 2014

    Чет какой то косяк не получается не чего со вторым способом, посмотрите код видимо что то косячно

    [Reply]

    anchous Reply:

    проверяйте спец.символы, они обычно криво переносятся при копировании

    [Reply]

    VN:F [1.9.21_1169]
    Rating: 0.0/5 (0 votes cast)
    VN:F [1.9.21_1169]
    Rating: 0 (from 0 votes)

Ваш отзыв