Большое число запросов к wp-login.php и xmlrpc.php

Начал тормозить сервер, полез в логи и увидел нездоровую нагрузку на процессор, и огромное количество запросов с разных IP адресов к двум файлам.wp-login.php и xmlrpc.php

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

Затем встал вопрос как прикрыть доступ всяким лохам к этим файлам. Способов несколько. Самый тупой — установить плагин, типа такого. Но лишный плагинЮ лишняя нагрузка, поэтому було решено запаролить доступ к файлу wp-login.php через файл .htpasswd

При помощи .htaccess можно установить http авторизацию или «двойную авторизазацию» для вашего сайта. Покажу на примере движка WordPress. Вначале переходим сюда http://www.htaccesstools.com/htpasswd-generator/ и генерируем файл .htpasswd, указывая ваши логин и пароль.

Сгенерированный файл помещаем в корень своего сайта. Далее, в корневом файле .htaccess добавляем следующие строки:

1
2
3
4
5
6
AuthUserFile .htpasswd
AuthName "Private access"
AuthType Basic
<FilesMatch "wp-login.php">
Require valid-user
</FilesMatch>

Иногда, на некоторых хостинг провайдерах необходимо в первой строчке указывать полный путь до файла .htpasswd:

1
AuthUserFile /home/k/lucky/lucky-seo.com/public_html/.htpasswd

Чтобы узнать абсолютный путь от корня сервера нужно создать любой файл .php и вписать туда:

1
2
3
<?php
echo $_SERVER['DOCUMENT_ROOT'];
?>

и поместить в файл в корень, затем перейти на него.

Если все сделано правильно, то при переходе в админ панель сайта по адресу /wp-admin или /wp-login.php будет запрашиваться аутентификация:

Запрет по IP

Также, при помощи .htaccess можно запретить доступ к админке wordpress по IP адресу.

Для того, чтобы сделать это, нужно в файл .htaccess, размещенном в корне, добавить специальный код:

1
2
3
4
5
<Files "wp-login.php">
    Order deny,allow
    Allow from All
    Deny from 00.00.00.00
</Files>

Где 00.00.00.00 — это IP адрес, которому вы хотите закрыть доступ к админке.

Но лучше закрыть доступ всем IP, кроме своего (если у вас постоянный IP), тогда код будет таким:

1
2
3
4
5
<Files "wp-login.php">
    Order deny,allow
    Deny from All
    Allow from 00.00.00.00
</Files>

Где вместо 00.00.00.00 — должен быть ваш IP адрес.

В случае, если вы хотите закрыть доступ всем, то нужно убрать строку Allow:

1
2
3
4
<Files "wp-login.php">
    Order deny,allow
    Deny from All
</Files>

Зачем это нужно?

Это самая простая и надежная защита от брутфорс атак на ваш сайт.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *