Защита CMS WordPress от перебора пароля
09 May 2013 | Автор: dd |Ближайшие несколько тем будут про защиту сайтов на базе 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
Автор:Ayrat Zakirov на 25 Jul 2013
Не спорю надежно но не продуктивно. Мой плагин легко справляется с 1500 запросами в сутки спам ботов в сутки легко.
[Reply]
anchous Reply:
July 25th, 2013 at 11:48 am
спам ботов- типо вашего сообщения?
какое вообще отношение спам имеет к перебору пароля админки?
и да согласен- защита от брут форса не очень продуктивна в отлове спама, как и комментаторы, которые лезут со своими комментами не сабжу
[Reply]
Автор:Анна на 28 Aug 2013
А куда именно стоит убирать сгенерированный файл .htpasswd?
Для этого стоит создавать ещё папки по типу матрёшки и блокировать к каждой из них доступ или можно обойтись одной папкой? И ещё, если работать с WP на локальном серваке(устроенном на ПК), то использовав определённые методы можно открыть скрытые файлы WP. Так можно ли использовать и этот метод дабы скрыть .htpasswd?
[Reply]
anchous Reply:
September 19th, 2013 at 2:10 am
куда нить вглубь серверной структуры, главное чтобы вне пределов сайта
[Reply]