Защита CMS WordPress от перебора пароля

09 May 2013 | Автор: anchous |

Ближайшие несколько тем будут про защиту сайтов на базе CMS WordPress, хотя часть из них можно отнести и к другим системам управления контентом.
Начну с того что в середине апреля по инету прошла маcсированная брутфорс атака на сайты под управлением WordPress, в которой был задействован ботнет около 90к хостов. При это интенсивность атаки на популярные ресурсы, была зафиксирована на пике более 100к обращений в сутки, то есть порядка 1.5 запросов в секунду.

Атаковали, естественно, служебные файлы WordPress: wp-admin и wp-login.php, в связи с чем встал вопрос более серьезной защиты от перебора пароля админки, нежели нестандартное имя пользователя и сложный вопрос.

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

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

Создать его можно либо с помощью какого нить генератора, либо же из командной строки сервера:
# htpasswd -c /full-path-to/.htpasswd new-user

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

#########
ErrorDocument 401 “Unauthorized Access Attempted”
ErrorDocument 403 “Forbidden”
<FilesMatch “wp-login.php”>
AuthName “Authorized Access Only”
AuthType Basic
AuthUserFile /full-path-to/.htpasswd
require user new-user
</FilesMatch>
#########

Здесь надо заметить, что строка require может содержать директиву user, а может и нет, ибо это зависит от версии апача. В моем случае версии Apache 2.2 отсутвие директивы user приводило к 500 ошибке после прохождения аутентификации. В логах при этом присутствовала следующая ошибка “require directives present and no Authoritative handler“.

Путь до .htpasswd необходимо указывать от корня файловой структуры для веб-сервера, то есть если он работает в песочнице, то корневой chroot, если же общий, то от рута.

Для защиты блога под управлением WordPress этого вполне достаточно для предотвращения подбора пароля, так как с урла site/wp-admin идет редирект на site/wp-login.php

Если же нам надо закрыть еще и какую нить директорию (например в случае CMS Joomla: site/administrator/) то создаем в её корне собственный  .htaccess в который добавляем часть указанных строк:
AuthName “Authorized Access Only”
AuthType Basic
AuthUserFile /full-path-to/.htpasswd
require user new-user

VN:F [1.9.21_1169]
Rating: 10.0/10 (1 vote cast)
VN:F [1.9.21_1169]
Rating: 0 (from 0 votes)
Защита CMS WordPress от перебора пароля, 10.0 out of 10 based on 1 rating

Теги: ,

Отзывов: 4 на «Защита CMS WordPress от перебора пароля»

  1. Автор: Ayrat Zakirov на 25 Jul 2013

    Не спорю надежно но не продуктивно. Мой плагин легко справляется с 1500 запросами в сутки спам ботов в сутки легко.

    [Reply]

    anchous Reply:

    спам ботов- типо вашего сообщения?
    какое вообще отношение спам имеет к перебору пароля админки?
    и да согласен- защита от брут форса не очень продуктивна в отлове спама, как и комментаторы, которые лезут со своими комментами не сабжу

    [Reply]

    VN:F [1.9.21_1169]
    Rating: 0.0/5 (0 votes cast)
    VN:F [1.9.21_1169]
    Rating: +2 (from 2 votes)
  2. Автор: Анна на 28 Aug 2013

    А куда именно стоит убирать сгенерированный файл .htpasswd?

    Для этого стоит создавать ещё папки по типу матрёшки и блокировать к каждой из них доступ или можно обойтись одной папкой? И ещё, если работать с WP на локальном серваке(устроенном на ПК), то использовав определённые методы можно открыть скрытые файлы WP. Так можно ли использовать и этот метод дабы скрыть .htpasswd?

    [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)

Ваш отзыв