Блокировка xmlrpc.php в WordPress на Synology

Привет всем!!!

Давайте я еще раз расскажу как заблокировать xmlrpc.php в WordPress на Synology и не только.

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

Блокировка 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 сервер надо рестартануть.

На этом статья закончена, но если будут дополнения появляться буду вносить. Желаю всем удачи!!!

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

20 − 3 =