Как защитить сайт на Wordpress от атак через файл xmlrpc.php

Как защитить сайт на WordPress от атак через файл xmlrpc.php

19.10.2018 Web 0
Как защитить сайт на Wordpress от атак через файл xmlrpc.php

Есть у меня сайт, который я делал для моих друзей — oktyabrsky-ufa.ru. Сегодня зашёл в админку ISPManager и наблюдаю на хостинге загрузку процессора на 99-100%. Понимая, что идёт атака на один из сайтов и скоро хостер надаст по шапочке, сразу лезу в ssh решать пробелму. 

top показывает, что бешеную нагрузку даёт процесс apache именно от пользователя этого сайта. Возможно конкуренты, возможно просто ищут лазейки в дырявом wordpress, однако не хочется опять остаться со взломанными сайтами. Анализ error.log и фссуыыюдщп выдал следующее:

5.188.62.117 — — [19/Oct/2018:16:15:00 +0500] «POST //xmlrpc.php HTTP/1.0» 200 439 «-» «Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/61.0.3163.100 Safari/537.36»
5.188.62.117 — — [19/Oct/2018:16:15:00 +0500] «POST //xmlrpc.php HTTP/1.0» 200 439 «-» «Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/61.0.3163.100 Safari/537.36»
5.188.62.117 — — [19/Oct/2018:16:15:00 +0500] «POST //xmlrpc.php HTTP/1.0» 200 439 «-» «Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/61.0.3163.100 Safari/537.36»
5.188.62.117 — — [19/Oct/2018:16:15:02 +0500] «POST //xmlrpc.php HTTP/1.0» 200 439 «-» «Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/61.0.3163.100 Safari/537.36»
5.188.62.117 — — [19/Oct/2018:16:15:03 +0500] «POST //xmlrpc.php HTTP/1.0» 200 439 «-» «Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/61.0.3163.100 Safari/537.36»
5.188.62.117 — — [19/Oct/2018:16:15:03 +0500] «POST //xmlrpc.php HTTP/1.0» 200 439 «-» «Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/61.0.3163.100 Safari/537.36»
5.188.62.117 — — [19/Oct/2018:16:15:04 +0500] «POST //xmlrpc.php HTTP/1.0» 200 439 «-» «Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/61.0.3163.100 Safari/537.36»
5.188.62.117 — — [19/Oct/2018:16:15:05 +0500] «POST //xmlrpc.php HTTP/1.0» 200 439 «-» «Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/61.0.3163.100 Safari/537.36»
5.188.62.117 — — [19/Oct/2018:16:15:05 +0500] «POST //xmlrpc.php HTTP/1.0» 200 439 «-» «Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/61.0.3163.100 Safari/537.36»
5.188.62.117 — — [19/Oct/2018:16:15:06 +0500] «POST //xmlrpc.php HTTP/1.0» 200 439 «-» «Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/61.0.3163.100 Safari/537.36»

Лог файла access.log

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

Статья на https://firstvds.ru/technology/xmlrpc даёт понимание проблемы и первое решение — это плагин Disable XML-RPC Pingback.

К сожалению, нагрузка на сервер вообще не снизилась, а значит толку от этого плагина почти нет. Да и к тому же работает он как плагин, то бишь злоумышленники проходят через nginx, затем apache и только потом движок сайта должен сказать — нет. Так что нахер этот плагин!

Второй вариант решения — в .htaccess прописать запрет на доступ к xmlrpc.php примерно таким кодом

<Files «xmlrpc.php»>
Order allow,deny
Deny from all
</Files>

добавить в файл .htaccess

Неплохой вариант, но apache всё равно будет подгружать сервер, значит решать надо на уровне nginx или вообще файервола. Кстати, защита от DDOS-атак в ISPManager тоже никак не помогла, сомнительная штука.

Мысль была настроить редирект на zip-бомбу или какой-либо посторонний ресурс. Но это всё равно даст нагрузку на свой или чужой сайт, хотя сделать редирект на рикролл — это было бы забавно))

На сайте https://www.inmotionhosting.com/support/community-support/server-usage/defending-against-wordpress-xmlrpc-attacks подглядел изящное решение, которое мне очень понравилось.

В nginx прописываем редирект 301 на самого атакующего следующим образом

Redirect 301 /xmlrpc.php http://127.0.0.1

прописать редирект в nginx, например через панельку ISPManager

Я просто ссал кипятком был безумно рад такому решению, пусть атакующий сам себе компуктер загрузит на 100% хе-хе.

В итоге нагрузка на сервер сразу упала. Всем советую!

Оранжевая линия — нагрузка на процессор

P.S. ещё есть мысль, что так делать нельзя. Не в том смысле, что обманывать хакеров, а в том что, запрещать xmlrpc.php. Хотя кому он нужен?)

Отблагдарить автора статьи также можно переводом, +100 вам в карму!

 

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

Ваш адрес email не будет опубликован. Обязательные поля помечены *