Привет всем!!!
Давайте я еще раз расскажу как заблокировать xmlrpc.php в WordPress на Synology и не только.
Для чего это делать и почему я рассказывать не буду, я просто расскажу свой опыт как я это сделал. Если вы сюда пришли, значит вы уже знаете ответ на этот вопрос, если нет, то перейдите по ссылке.
Метод первый: установить плагины для блокировки. Метод хороший тем, что он простой, но не мой путь.
Метод второй: заблокировать через файл .htaccess. В корневом каталоге сайта лежит этот файл. Открываем его любым текстовым редактором (кстати на Synology он есть в центре пакетов) и в самый низ вставляем:
# BEGIN protect xmlrpc.php <Files xmlrpc.php> order deny,allow deny from all </Files> # END protect xmlrpc.php
Поидеи на этом можно было бы закончить, но в моем случаи сайт переставал работать и выдавал ошибку 500.
Начал я искать логи и смотреть что не так. Логи лежат в /var/log/httpd/apache24-error_log
.htaccess: Invalid command 'Order', perhaps misspelled or defined by a module not included in the server configuration, referer
Недолго искав решение в интернете я понял в чем дело. Оказалось, что я использую web сервер Apache2.4 и в нем поменялся синтаксис конфигурации. Все что осталось придумать как преобразовать:
# BEGIN protect xmlrpc.php <Files xmlrpc.php> Require all denied </Files> # END protect xmlrpc.php
Все, дело сделано, сайт работает, доступ к xmlrpc закрыт.
Я был бы не я если бы не проверил. Для начала просто открываем https:/имя_сайта/xmlrpc.php Если запрет работает, то увидите ошибку, а в логе web сервера сообщение:
[authz_core:error] [pid 21313:tid 139825569113856] [client IP:50690] AH01630: client denied by server configuration: /volume1/.../xmlrpc.php
Второй метод проверки:
curl -X POST -H 'Cache-Control: no-cache' -H 'Content-Type: application/xml' -d '<methodCall><methodName>system.listMethods</methodName></methodCall>' https://имя_сайта/xmlrpc.php
В ответ должны увидеть что угодно, но только не ответ протокола xmlrpc.
А что делать если у вас Nginx? В этом случаи нужно править файл кофигурации данного сервера, что для Synology совсем не правильный путь. Поэтому этот web сервер лучше не использовать, а очень хочется))) Но если у вас не Synology то привиду пример и для этого случая на всякий случай:
location = /xmlrpc.php { deny all; access_log off; log_not_found off; }
Естественно, что после правки web сервер надо рестартануть.
На этом статья закончена, но если будут дополнения появляться буду вносить. Желаю всем удачи!!!