Биография xmlrpc php. Отключение XML-RPC в шаблоне. Что видно на диаграмме

Похоже, что файл WordPress xmlrpc.php теперь стал объектом для нового типа атак. Раньше это были XML-RPC Pingback Vulnerability . Теперь это расширенные атаки Brute Force . В этой статье я расскажу о том, что вы должны знать об этой угрозе и что должны предпринять, чтобы защитить свой сайт от этого нового вредоносного воздействия.

Что XML-RPC?

Прежде чем перейти к описанию защиты файла xmlrpc.php , важно понять, что он делает. Как поясняется здесь :

XML-RPC – это спецификация и набор реализаций, которые позволяют программному обеспечению работать на различных операционных системах, в различных средах, чтобы выполнять процедуру вызовов через Интернет. Это удаленная процедура вызовов, использующая HTTP для передачи данных и XML для кодировки. XML-RPC разрабатывался, чтобы передавать, обрабатывать и возвращать сложные структуры данных.

XML-RPC позволяет удаленным платформам взаимодействовать между собой через Интернет. Если более конкретно, то файл WordPress xmlrpc.php позволяет внешним приложениям подключаться, передавать и обрабатывать данные.

Нужен ли мне XML-RPC?

Существуют различные плагины, которым может быть необходимо использование функционала XML-RPC для различных удаленных операций. По моему опыту, 99% сайтов на WordPress не используют файл xmlrpc.php ни для чего. Если вы уверены, что вам не нужен этот файл, то лучше удалить его, отключить или заблокировать. Вот несколько способов защиты сайта от XML-RPC угроз.

Защита с помощью плагина

Если вы предпочитаете решать задачи с помощью плагинов, зайдите в WordPress Plugin Directory и задайте на поиск “xmlrpc plugin ” . Уверен, что вы найдете хотя бы один плагин, который подходит для отключения xmlrpc.php .

Защита с помощью.htaccess

Если вы хорошо разбираетесь в вопросах работы .htaccess , существует множество способов заблокировать доступ к файлу xmlrpc.php . Вот два самых простых из них:

Блокировка xmlrpc.php помощью RedirectMatch

# protect xmlrpc RedirectMatch 403 (?i)/xmlrpc.php

Преимуществом этого способа является то, что не имеет значения, где вы установили WordPress . Файлы xmlrpc.php будут защищены независимо от того, где они располагаются в структуре папок (например, /wp/xmlrpc.php , /wordpress/xmlrpc.php , /whatever/xmlrpc.php , и т.д. ). Этот способ также не зависит от регистра, так что вы защищены от любых вариаций атак типа «все прописные «.

Блокировка xmlrpc.php помощью Order/Deny

# protect xmlrpc Order Deny,Allow Deny from all

Лично я предпочитаю именно этот способ защиты от атак XML-RPC . Он простой, продуманный, надежный и не требующий поддержки. Можно настроить эти .htaccess-методы защиты xmlrpc.php , чтобы, например, разрешить доступ с конкретных IP-адресов и перенаправлять блокируемые запросы на определенную страницу.

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

Защита с помощью пользовательской функции

Если вы не хотите использовать сторонний плагин и возиться с .htaccess , существует еще один способ защиты от расширенных атак Brute Force — отключить выполнение метода system.multicall в файле xmlrpc.php . Ниже приведена функция, которую нужно добавить в файл functions.php вашей темы:

function shapeSpace_disable_xmlrpc_multicall($methods) { unset($methods["system.multicall"]); return $methods; } add_filter("xmlrpc_methods", "shapeSpace_disable_xmlrpc_multicall");

Несколько за и против этого метода:

  • За — не нужно использовать другой плагин;
  • За — не нужно использовать .htaccess ;
  • Против — связан с конкретной темой;
  • Против — связан с конкретными угрозами.

С плюсами все и так понятно, а вот насчет минусов нужно кое-что пояснить. Под «связан с конкретной темой » имеется в виду, что в принципе данная функция поможет защитить ваш сайт только тогда, когда тема, которая содержит ее, активна. Если вы переключитесь на другую тему, вы потеряете защиту. Если только вы не добавите функцию в новую тему.

А под «связан с конкретными угрозами » имеется в виду, что эта функция отключает только system.multicall для файла xmlrpc.php . Она защищает только против расширенных атак Brute Force , нацеленных на файл xmlrpc.php . Это еще одна причина того, почему метод с использованием .htaccess является идеальным выбором для защиты сайта: он защищает от всех типов атак на XML-RPC .

Подводя итог

Файл WordPress xmlrpc.php является целью для большого количества различных атак. Если вы используете последнюю версию WordPress , формально у вас нет причин волноваться. Но даже в этом случае файл остается вечной мишенью для злоумышленников. Плохие парни постоянно сканируют уязвимости, связанные с Pingback , расширенными атаками, brute-force атаками и всякими другими «пакостями ».

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

Перевод статьи «Protect Against WordPress Brute Force Amplification Attack » был подготовлен дружной командой проекта .

Хорошо Плохо

В WordPress всегда был встроенный инструмент для удалённого обращения к вашему сайту. Действительно, иногда нужно добраться до своего сайта, а компьютер далеко от вас. Длительное время решением был файл под названием xmlrpc.php. Однако последние годы этот файл стал большей проблемой, чем решением.

Ниже мы подробнее разберём xmlrpc.php и почему он был создан. Мы также рассмотрим общие проблемы безопасности, которые он может вызвать и как их исправить для вашего сайта на WordPress.

XML-RPC – это функциональное средство WordPress, которое позволяет передавать данные, с HTTP выступающим в качестве транспорта и XML – для кодирования. Поскольку WordPress не является закрытой системой и часто общается с другими системами, для этой задачи были найдены решения.

Например, скажем вы хотите сделать публикацию на своём сайте с вашего мобильного телефона. Вам нужно использовать удалённый доступ предоставляемый xmlrpc.php.

Главным функционалом xmlrpc.php являются возможность подключаться к сайту со смартфона, реализация трекбеков и линкбеков с других сайтов и некоторые функции, связанные с плагином Jetpack.

Зачем был создан Xmlrpc.php и как он использовался?

Реализация XML-RPC уходит далеко в ранние дни WordPress и даже до того, как WordPress стал WordPress-ом.

Возвращаясь в те времена, когда интернет только недавно появился, соединения были очень медленными и процесс записи и публикации в вебе был намного сложнее и времязатратнее. Вместо внесения изменений сразу через браузер, большинство делали их в офлайне и потом копировали и вставляли свой контент уже онлайн. И этот процесс был далёк от идеала.

Решением (на тот момент) было создание клиента для офлайн блоггинга, где вы могли составлять свой контент, затем подключаться к своему блогу и публиковать его. Это подключение осуществлялось через XML-RPC. С основным функционалом XML-RPC ранние приложения используя подобные подключения предоставляли людям возможность заходить на их сайты WordPress с других устройств.

XML-RPC сегодня

В 2008 году с версией 2.6 WordPress, появилась опция включения и выключения XML-RPC. Однако с релизом WordPress приложения для iPhone, поддержка XML-RPC была включена по умолчанию и не было возможности для отключения. Так осталось и поныне.

Конечно функциональность, предоставляемая этим файлом значительно уменьшилась со временем, и размер файла уменьшился с 83kb до 3kb, он уже не играет такой роли, как прежде.

Свойства XML-RPC

С новым интерфейсом программирования приложений (API) WordPress мы можем ожидать, что XML-RPC будет уже отключён полностью. Сегодня этот новый API всё ещё на этапе испытаний и может быть включён только через специальный плагин.

Хотя вы можете ожидать, что API будет включён непосредственно в ядро WordPress в будущем, что полностью исключит необходимость использования xmlrpc.php.

Новый API не идеален, но он обеспечивает хорошую надёжную защиту, в отличие от xmlrpc.php.

Зачем отключать Xmlrpc.php

Самой большой проблемой, связанной с XML-RPC, является безопасность. Проблема не напрямую связана с XML-RPC, но его можно использовать для включения атаки на ваш сайт.

Конечно вы можете защититься очень надёжный паролем и плагинами WordPress, обеспечивающими безопасность. Но лучшим режимом защиты будет просто его отключить.

Есть два основных слабых места XML-RPC, которые использовали в прошлом.

Первое – использует атаку путём прямого подбора пароля (brute force attacks) для получения доступа к вашему сайту. Атакующий попытается получить доступ к вашему сайту, используя xmlrpc.php подбирая различные комбинации имён пользователей и паролей. Они могут эффективно использовать одну команду для тестирования сотен различных паролей. Это позволяет им обходить инструменты безопасности, которые обычно обнаруживают и блокируют атаки прямого подбора.

Второе – перевод сайта в офлайн путём DDoS атаки. Хакеры будут использовать обратное уведомление в WordPress для отправки его тысячам сайтов одновременно. Этот функционал xmlrpc.php даёт хакерам почти бесконечное количество IP-адресов для распространения атаки DDoS.

Чтобы проверить, работает ли XML-RPC на вашем сайте, вы можете запустить его с помощью инструмента под названием XML-RPC Validator . Запустите свой сайт с помощью инструмента, и если вы получите сообщение об ошибке, значит, у вас нет поддержки XML-RPC.

Если вы получите сообщение об успешном завершении, вы можете остановить xmlrpc.php одним из двух подходов ниже.

Метод 1: отключение Xmlrpc.php при помощи плагина

Отключить XML-RPC на вашем сайте WordPress невероятно просто.

Перейдите в раздел Плагины › Добавить новый в вашей админ консоли WordPress. Найдите плагин Disable XML-RPC и установите его, он выглядит как на картинке ниже:

Активируйте плагин и всё готово. Этот плагин автоматически вставит необходимый код для отключения XML-RPC.

Однако помните, что установленные плагины могут использовать части XML-RPC, и тогда его отключение может вызвать конфликт плагинов или отдельных их частей и вывод их из рабочего режима.

Если вы хотите только отключить отдельные элементы XML-RPC, но позволить другим плагинам и функциям работать, тогда обратитесь к таким плагинам:

  • Stop XML-RPC Attack . Этот плагин остановить все XML-RPC атаки, но он позволить продолжить работу таких плагинов как Jetpack и другие автоматические инструменты и плагины, предоставляя им доступ к файлам xmlrpc.php.
  • Control XML-RPC Publishing . Это позволяет вам сохранить контроль и использовать удалённо публикации.

Метод 2: отключение Xmlrpc.php вручную

Если вы не хотите использовать плагин и предпочитаете делать это вручную, следуйте этому подходу. Он остановит все входящие запросы xmlrpc.php до того, как он будет передан в WordPress.

Откройте файл.htaccess. Возможно, вам придется включить ‘показать скрытые файлы’ в файловом менеджере или FTP-клиенте, чтобы найти этот файл.

Вставьте этот код в файл .htaccess :

# Block WordPress xmlrpc.php requests order deny,allow deny from all allow from 123.123.123.123

Заключительные мысли

В целом, XML-RPC был добротным решением некоторых проблем, которые возникали из-за удаленной публикации на вашем сайте WordPress. Однако вместе с тем появились некоторые дыры в безопасности, которые оказались довольно опасными для некоторых владельцев сайтов на WordPress.

Чтобы ваш сайт оставался в безопасности, рекомендуется полностью отключить xmlrpc.php, если вам не нужны некоторые функции, необходимые для удаленной публикации и плагина Jetpack. Затем вы можете использовать обходные плагины, которые позволяют использовать эти функции, при этом исправляя дыры в безопасности.

Со временем мы можем ожидать, что функции XML-RPC станут интегрированными в новый WordPress API, который будет поддерживать удаленный доступ, не жертвуя безопасностью.

Вы заблокировали доступ к XML-RPC через плагин или вручную? Или возникли какие-либо проблемы с безопасностью из-за того, что он был прежде активным? Поделитесь своим опытом в комментариях ниже.

Технология XML-RPC применяется в системе WordPress для разных приятных фишек по типу пингбэков, трекбеков, удаленного управления сайтом без входа в админку и т.п. К сожалению, злоумышленники могут использовать ее для DDoS атаки на сайты. То есть вы создаете красивые интересные WP проекты для себя или на заказ и при этом, ничего не подозревая, можете быть частью ботнета для DDoS`а. Соединяя воедино десятки и сотни тысяч площадок, нехорошие люди создают мощнейшую атаку на свою жертву. Хотя при этом ваш сайт также страдает, т.к. нагрузка идет на хостинг, где он размещен.

Свидетельством такой нехорошей активности могут быть логи сервера (access.log в nginx), содержащие следующие строки:

103.238.80.27 - - «POST /wp-login.php HTTP/1.0» 200 5791 "-" "-"

Но вернемся к уязвимости XML-RPC. Визуально она проявляется в медленном открытии сайтов на вашем сервере или же невозможностью их загрузки вообще (502 ошибка Bad Gateway). В тех.поддержке моего хостера FASTVPS подтвердили догадки и посоветовали:

  1. Обновить WordPress до последней версии вместе с плагинами. Вообще, если вы следите за , то могли читать о необходимости установки последней 4.2.3. из-за критических замечаний в безопасности (точно также как предыдущих версий). Короче говоря, обновляться полезно.
  1. Установить плагин Disable XML-RPC Pingback.

Отключение XML-RPC в WordPress

Раньше, как мне кажется, опция включения/отключения XML-RPC была где-то в настройках системы, однако сейчас не могу ее там найти. Поэтому самый простой метод избавиться от нее — использовать соответствующий плагин.

Найти и скачать Disable XML-RPC Pingback либо установив его непосредственно из админки системы. Вам не нужно ничего дополнительно настраивать, модуль сразу же начинает работать. Он удаляет методы pingback.ping и pingback.extensions.getPingbacks из XML-RPC интерфейса. Кроме того, удаляет X-Pingback из HTTP заголовков.

В одном из блогов нашел еще парочку вариантов удаления отключения XML-RPC.

1. Отключение XML-RPC в шаблоне.

Для этого в файл функций темы functions.php добавляется строка:

Order Deny,Allow Deny from all

Последние два метода лично я не использовал, т.к. подключил плагин Disable XML-RPC Pingback — думаю, его будет достаточно. Просто для тех, кто не любит лишние установки, предложил альтернативные варианты.

Несколько дней назад я заметил, что нагрузка моих сайтов на хостинг выросла в разы. Если обычно она составляла в районе 100-120 "попугаев" (CP), то за последние несколько дней она возросла до 400-500 CP. Ничего хорошего в этом нет, ведь хостер может перевести на более дорогой тариф, а то и вовсе прикрыть доступ к сайтам, поэтому я начал разбираться.

Но я выбрал метод, который позволит сохранить функциональность XML-RPC: установку плагина Disable XML-RPC Pingback . Он удаляет лишь "опасные" методы pingback.ping и pingback.extensions.getPingbacks, оставляя функционал XML-RPC. После установки плагин нужно всего лишь активировать - дальнейшая настройка не требуется.

Попутно я забил все IP атакующих в файл.htaccess своих сайтов, чтобы заблокировать им доступ. Просто дописал в конец файла:

Order Allow,Deny Allow from all Deny from 5.196.5.116 37.59.120.214 92.222.35.159

Вот и все, теперь мы надежно защитили блог от дальнейших атак с использованием xmlrpc.php. Наши сайты перестали грузить хостинг запросами, а также атаковать при помощи DDoS сторонние сайты.