Защита WordPress от атак Brute Force приложений

Похоже, что файл 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
<IfModule mod_alias.c>
	RedirectMatch 403 (?i)/xmlrpc.php
</IfModule>

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

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

# protect xmlrpc
<Files xmlrpc.php>
	Order Deny,Allow
	Deny from all
</Files>

Лично я предпочитаю именно этот способ защиты от атак 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 атаками и всякими другими «пакостями».

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