Wordpress — наиболее популярная блоговая система управления контентом. Это значит, что на ней создано большое число сайтов, и это несомненно привлекает к ней излишнее внимание злоумышленников. И сегодня мы расскажем, как защититься от XML-RPC атаки на сайт. Атака сама по себе не несет угрозы взлома сайта с дальнейшим использованием уязвимости, но она может вызвать отказ в обслуживании атакуемого ресурса. В данном руководстве мы рассмотрим процесс защиты от такой атаки.
Что такое XML-RPC в Wordpress?
В Wordpress XML-RPC – протокол, который вызывает удалённо некоторые действия на вашем сайте. Так, плагин JetPack используется XML-RPC для своей работы. Грешит этим и мобильное приложение Wordpress. Но с помощью XML-RPC можно «заддосить» сайт, отправляя к сайту в единицу времени большое число запросов на выполнение каких-то действий, что довольно часто вызывает отказ в обслуживании атакуемого ресурса.
Как определить атаку XML-RPC (в частности в Wordpress)?
Если в логах веб-сервера вы обнаружите большое количество записей типа "POST /xmlrpc.php HTTP/1.0”, то, скорее всего, вы подверглись XML-RPC атаке.
Расположение лог-файлов веб-сервера различается в зависимости от дистрибутива Linux.
Для выявления атак XML-RPC на Apache в Ubuntu используйте можно воспользоваться следующей командой:
grep xmlrpc /var/log/apache2/access.log
Если у вас работает Nginx, то используйте следующую команду:
grep xmlrpc /var/log/nginx/access.log
Если в результате работы этих команд вы получите большой список вида:
111.222.333.444:80 555.666.777.888 - - [24/Jan/2017:00:03:50 -0500] "POST /xmlrpc.php HTTP/1.0" 200 674 "-" "Mozilla/4.0 (compatible: MSIE 7.0; Windows NT 6.0)"
то вероятнее всего ваш проект был подвержен атаке XML-RPC.
Решение проблемы
Вариант 1: Установка плагина Jetpack.
В плагине JetPack есть функция Protect, которая блокирует запросы multicall протокола XML-RPC. Записи XML-RPC по-прежнему будут поступать в логи сервера, но Jetpack снизит нагрузку на базу данных сайта, создаваемую вредоносной активностью, до 80-90%.
Вариант 2: Блокировка трафика XML-RPC вручную.
Трафик можно заблокировать в настройках сервера Apache или Nginx. Хотим заметить, что при блокировке XML-RPC может не работать мобильное приложение и некоторые модули на сайте.
Внесите изменения в файл конфигурации Apache:
sudo nano /etc/apache2/sites-available/000-default.conf
Добавьте строки в блок :
……...
order allow,deny
deny from all
……...
Сохраните и закройте файл.
Необходимо перезапустить веб-сервер, чтобы применились настройки:
sudo service apache2 restart
Для редактирования Nginx-файла конфигурации, введите:
sudo vim /etc/nginx/sites-available/example.com
**examle.com — нужно заменить на название файла конфигурации вашего сайта
Необходимо добавить в блок server следующие строки:
server {
……...
location /xmlrpc.php {
deny all;
}
……...
}
Сохраните и закройте файл, а также перезапустите Nginx:
sudo service nginx restart
Проверка защиты
Если вы выбрали метод блокировки трафика XML-RPC через файлы конфигураций apache и nginx, в логи по-прежнему будут записываться подключения, но код ответа с 200 изменится на 500.
Запись будет выглядеть так:
111.222.333.444:80 555.666.777.888 - - [24/Jan/2017:02:04:21 -0500] "POST /xmlrpc.php HTTP/1.0" 500 674 "-" "Mozilla/4.0 (compatible: MSIE 7.0; Windows NT 6.0)"
111.222.333.444:80 555.666.777.888 - - [24/Jan/2017:02:04:21 -0500] "POST /xmlrpc.php HTTP/1.0" 500 674 "-" "Mozilla/4.0 (compatible: MSIE 7.0; Windows NT 6.0)"
111.222.333.444:80 555.666.777.888 - - [24/Jan/2017:02:04:22 -0500] "POST /xmlrpc.php HTTP/1.0" 500 674 "-" "Mozilla/4.0 (compatible: MSIE 7.0; Windows NT 6.0)"