Начал тормозить сервер, полез в логи и увидел нездоровую нагрузку на процессор, и огромное количество запросов с разных IP адресов к двум файлам.wp-login.php и xmlrpc.php
Очевидно идет брутфорс атака на сайт, подбор пароля администратора. Пароль сложный, никакому бруту не по зубам, однако такая нагрузка нам не нужна. В первую очередь побанил все IP атакующего, чтобы можно было нормально работать с сервером и он не тормозил и не отказывал в обслуживании.
Затем встал вопрос как прикрыть доступ всяким лохам к этим файлам. Способов несколько. Самый тупой — установить плагин, типа такого. Но лишный плагинЮ лишняя нагрузка, поэтому було решено запаролить доступ к файлу wp-login.php через файл .htpasswd
При помощи .htaccess можно установить http авторизацию или «двойную авторизазацию» для вашего сайта. Покажу на примере движка WordPress. Вначале переходим сюда https://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> |
Зачем это нужно?
Это самая простая и надежная защита от брутфорс атак на ваш сайт.