XML-RPC – это протокол удаленных процедур, который позволяет удаленно взаимодействовать с вашим сайтом WordPress. Другими словами, это способ управлять сайтом без необходимости входа в систему вручную через стандартную страницу «wp-login.php». Он широко используется плагинами, наиболее известным из собственного плагина Jetpack от Automattic. Однако в эти дни слово «XML-RPC» получило плохое имя. В этой статьи мы объясним, что такое XML-RPC в WordPress и как остановить атаку XML-RPC на вашем веб-сайте WordPress.
Быстрый способ проверить, является ли ваш сайт уязвимым, – это посетить следующий URL-адрес из браузера:
yoursite.ru/xmlrpc.php
Если он включен, вы должны получить ответ, в котором говорится, что «сервер XML-RPC принимает только запросы POST».
В сообществе безопасности WordPress было много вопросов о XML-RPC. В основном есть две проблемы:
По крайней мере, это было возможно. С тех пор WordPress подключил лазейки (https://core.trac.wordpress.org/ticket/34336) , которые позволили людям одновременно попробовать сотни имен пользователей и паролей. Начиная с версии 4.4, она была улучшена. Теперь WordPress будет молча выполнять все последующие попытки входа в систему, как только один вызов XML-RPC завершился неудачно. Большой!
Тем не менее, есть те, кто по-прежнему обеспокоен легкостью, в то время как удаленные вызовы процедур, подобные этому, могут быть сделаны. Итак, вот несколько способов защитить ваш сайт от XML-RPC – начиная с самого легкого способа, до самого тяжелого.
Это процесс, который использует ваш сервер в качестве невольного участника в атаке на другой сервер. В основном, кто-то говорит вашему сайту «Эй, этот URL-адрес, связанный с вашим блогом!», А затем ваш сайт отвечает «pingback» на этот URL. Кроме того, нет никакой проверки, что URL на самом деле сделал ссылку на вас. Сделайте это с сотнями уязвимых сайтов WordPress, и у вас есть DDoS-атака на ваших руках! Самый простой способ запретить использование вашего сайта таким образом – добавить следующий код в функции functions.php вашей темы:
function stop_pings ($vectors) { unset( $vectors['pingback.ping'] ); return $vectors; } add_filter( 'xmlrpc_methods', 'stop_pings');
Этот второй метод определяет, хотите ли вы разрешать методы XML-RPC, которые аутентифицируют пользователей. Возьмем, к примеру, публикацию блога по электронной почте. Сайт получит ваше электронное письмо, проверит вас через XML-RPC, а затем опубликует его, если совпадают учетные данные.
Многим людям неудобно, когда XML-RPC может просто принимать случайные вызовы, подобные этому. Это привело к попыткам сотен или тысяч попыток аутентификации. Несмотря на то, что WordPress с тех пор обращался к этой конкретной форме взлома, есть те, кто рекомендует просто отключить ее.
Для этого введите этот код в functions.php:
add_filter('xmlrpc_enabled','__return_false');
Важно отметить, что это не то же самое, что и первый метод. Этот код только отключает методы проверки подлинности и оставляет все остальные нетронутыми – например, pingbacks.
Это самый экстремальный метод, который полностью отключает все функции XML-RPC. Он требует, чтобы вы редактировали файл .htaccess в корневом каталоге вашего WordPress. Добавьте следующий код вверху:
<files xmlrpc.php> Order allow,deny Deny from all </files>
# BEGIN WordPress <IfModule mod_rewrite.c> RewriteEngine On RewriteBase / RewriteRule ^index\.php$ - [L] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . /index.php [L] </IfModule> # END WordPress
Теперь, когда действуют выше правила отказа, попытка доступа к xmlrpc.php будет выполняться со следующей страницей:
И это все, что нужно. Вы успешно отключили XML-RPC на своем сайте WordPress.