Всем хорош движок Вордпресс, а именно:

  • прост в установке и использовании;
  • под этот движок без труда можно найти тысячи бесплатных русифицированных тем оформления;
  • функционал CMS расширяется сотнями бесплатных русифицированных плагинов.

А продолжать список можно долго. Но недавно я обнаружил за этим движком и один недостаток, который, к счастью, легко устранить.

Проблема CMS WordPress в её популярности. А ещё в том, что стандартными средствами невозможно изменить страницу авторизации /wp-login.php (также я не нашёл возможности изменить эту страницу при помощи популярных плагинов). И в свете вышеперечисленного любой «кул-хацкер» знает, что если запрос к сайту «GET /wp-login.php» возвращает ответ 200, то можно совершать запросы «POST /wp-login.php», передавая данные log = admin и pwd по словарю наиболее популярных страндартных паролей, в т.ч. и комбинации из 8 цифр, которые могут быть датой рождения автора блога (тоже очень частый пароль — а всего-то нужно 3 часа, чтобы перебрать все даты за последние 30 лет, а при быстром хостинге и того меньше).

Ладно, все мы давно не дети, и генерируем сложные пароли минимум из 10 символов, в состав которых входят строчные и прописные буквы, цифры и прочие знаки. Кстати, если вам сложно набрать подобный пароль, напечатав белиберду на клавиатуре, можете воспользоваться моим генератором [1], который я на досуге написал. Но проблема не только в том, что кул-хацкер имеет теоретическую возможность подобрать пароль, вероятность чего не больше вероятности 220-тикратного попадания молнии одному человеку прямо в темечко. Проблема в том, что подобный брут-форс обычно создаёт большую нагрузку на сервер и часто просто «вешает» ваш аккаунт, если вы «счастливый» обладатель виртуального хостинга или дешёвого VPS за 1000 рублей в месяц (а это 95% блогеров).

Как вы уже поняли, я на протяжении последних 30 минут пытаюсь предложить решение, но надо же описать ситуацию. В общем, я пробовал какой-то плагин для WP, который мне показался наиболее вменяемым — он даёт 5 попыток на подбор пароля, а потом вносит IP в чёрный список. Но заметил, что даже это не спасает от нагрузки на сервер: надо же соединиться с базой, проверить IP... Решением для меня стала двойная авторизация.

Вписываем в файл .htaccess подобную штуку:

AuthType Basic
AuthName 'Access restricted'
AuthUserFile /var/www/user/path/.passwd
<Files wp-login.php>
require valid-user
</Files>

И всё становится хорошо. Не забудьте только сгенерировать файл .passwd (ищем в инете информацию на эту тему). Лично я не использую программы для генерации .passwd, а делаю это в ISP manager-е: пункт меню «World Wide Web» → «Ограничение доступа», создаёте ограничение на любую ненужную папку (к моему недоумению, интерфейс ISP допускает создание базовой аутентификации только на директории, но это не проблема). Потом через файловый менеджер заходим в эту папку, копируем содержимое файла .htaccess и вставляем в корень вашего сайта, не забыв окружить строку require valid-user тегом Files, блокирующим доступ только к wp-login.php (см. код выше), иначе вы заблокируете весь сайт.

Если вам не ясно и половины из вышеописанного, тогда категорически не рекомендую лезть на сервер самостоятельно.

Спонсор поста: rommstudio.com [2] — какая-то студия.

Запись опубликована 20 июня 2013 года. Кто-то говорил, что я мало пишу в рубрику «Создание сайтов», так читайте же:

Подписка на RSS канал блога RSS подписка (как это?) поможет вам не пропустить ничего интересного на этом блоге.