Много POST-запросов к /xmlrpc.php от GoogleBot сносит сервер?


9

У меня есть несколько блогов WordPress, и я пытался посетить их, и они очень медленные. Я посмотрел журналы своего сервера и нашел это

stanfordflipside.com:80 188.138.33.149 - - [17/Aug/2013:17:14:28 -0700] "POST /xmlrpc.php HTTP/1.1" 200 595 "-" "GoogleBot/1.0"
stanfordflipside.com:80 188.138.33.149 - - [17/Aug/2013:17:14:28 -0700] "POST /xmlrpc.php HTTP/1.1" 200 595 "-" "GoogleBot/1.0"
stanfordflipside.com:80 188.138.33.149 - - [17/Aug/2013:17:14:28 -0700] "POST /xmlrpc.php HTTP/1.1" 200 595 "-" "GoogleBot/1.0"
stanfordflipside.com:80 188.138.33.149 - - [17/Aug/2013:17:14:28 -0700] "POST /xmlrpc.php HTTP/1.1" 200 595 "-" "GoogleBot/1.0"
stanfordflipside.com:80 188.138.33.149 - - [17/Aug/2013:17:14:29 -0700] "POST /xmlrpc.php HTTP/1.1" 200 595 "-" "GoogleBot/1.0"
stanfordflipside.com:80 188.138.33.149 - - [17/Aug/2013:17:14:29 -0700] "POST /xmlrpc.php HTTP/1.1" 200 595 "-" "GoogleBot/1.0"
stanfordflipside.com:80 188.138.33.149 - - [17/Aug/2013:17:14:29 -0700] "POST /xmlrpc.php HTTP/1.1" 200 595 "-" "GoogleBot/1.0"
stanfordflipside.com:80 188.138.33.149 - - [17/Aug/2013:17:14:29 -0700] "POST /xmlrpc.php HTTP/1.1" 200 595 "-" "GoogleBot/1.0"
stanfordflipside.com:80 188.138.33.149 - - [17/Aug/2013:17:14:31 -0700] "POST /xmlrpc.php HTTP/1.1" 200 595 "-" "GoogleBot/1.0"
stanfordflipside.com:80 188.138.33.149 - - [17/Aug/2013:17:14:31 -0700] "POST /xmlrpc.php HTTP/1.1" 200 595 "-" "GoogleBot/1.0"
stanfordflipside.com:80 188.138.33.149 - - [17/Aug/2013:17:14:31 -0700] "POST /xmlrpc.php HTTP/1.1" 200 595 "-" "GoogleBot/1.0"

Я получаю ~ 10 обращений в секунду к файлу /xmlrpc.php из GoogleBot на несколько сайтов, и это, похоже, замедляет работу сервера. я бегу

tail -f 

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


2
Мне пришлось бы искать IP-адреса и адреса, но я бы поспорил, что на самом деле это не сканер Google , а (скорее всего) злонамеренный бот, притворяющийся таковым.
s_ha_dum


да, я не думал, что это был googlebot - я думаю, это не было ясно в моем вопросе. в любом случае, что вы делаете по этому поводу? я должен блокировать IPS?
Jkeesh

Ответы:


7

Я бы заблокировал IP, iptablesесли бы это был я, и если бы у вас был такой доступ на уровне сервера.

Вы также можете отключить xmlrpc. К сожалению, начиная с 3.5, опция экрана администратора для отключения этой функции была удалена. Хотя одна строка кода должна отключить его: add_filter( 'xmlrpc_enabled', '__return_false' );это может сэкономить некоторые накладные расходы на запросы, хотя это не устранит все это.


Спасибо. Я закончил тем, что заблокировал это с iptables, и это, казалось, помогло.
Jkeesh

5

У "Googlebot" нет причин для доступа к xmlrpc.php. Вы можете добавить это в начало своего xmlrpc.php.

// Block fake Googlebot
if ( strpos($_SERVER['HTTP_USER_AGENT'], "Googlebot") === true ) { exit(); }

Я предполагаю, что это основной файл WordPress. Так что может быть раздражает держать это в курсе. Было бы неплохо, если бы Automattic использовал Akismet для внесения в черный список этих IP-адресов из всех сценариев WP, везде.

Обновление: я закончил тем, что удалил разрешение с chmod 0 xmlrpc.php(см. Мои комментарии) после того, как DDoS начал облагать налогом мой сервер. Другими словами, этот условный код PHP не может помешать агрессивному злоумышленнику временно отключить ваш блог. В любом случае они обычно сдаются довольно быстро.


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

Чтобы изменить мой комментарий выше: вместо удаления xmlrpc.php, вы можете «chmod 0» файл и вернуть его к жизни по мере необходимости, потому что вам может понадобиться xmlrpc.php для определенных вещей, как я смутно помню, вам нужен xmlrpc.php активировать джетпак.
PJ Brunet

Спасибо за совет. Я просто поставил exit()вверху файла, так как мы всегда используем wp-admin для редактирования страниц. Я обнаружил, что это относительный недостаток Wordpress, который заставляет меня беспокоиться о внедрении WP для большой организации. С отключенным xmlrpc мне бы не пришлось беспокоиться, верно?
Маттийс

1

заблокировать IP с помощью iptables:

for ip in $(grep xmlrpc /var/log/apache2/access.log | cut -d' ' -f1 | sort | uniq -c | sort -rn | head -n8 | awk '{print $2}'); do \
iptables -A INPUT -s $ip -j DROP; \
done

Было бы приятно увидеть некоторые объяснения этой команды оболочки.
Дэвид

@ Дэвид Это своего рода самонадеянное и неуклюжее ИМО. По сути, это будет сканирование файла access.log и поиск любых запросов к xmlrpc.php. Затем он подсчитывает дубликаты IP-адресов, сортирует их по возрастанию и сортировке и возвращает 8 лучших IP-адресов (IP-адреса с наибольшим количеством дублированных запросов). Для каждого из этих IP-адресов он говорит брандмауэру отбросить весь трафик с них. На моем сервере этим занимаются более 8 IP-адресов, и это также может блокировать законные запросы, так как он не проверяет, кто это делает.
tdk2fe

0

Если бы это произошло недавно, это убивало сервер, и теперь мы используем fail2ban, чтобы смягчить проблему.

Добавил этот конфиг в jail.local :

[apache-xmlrpc]

enabled = true
port = http,https
filter = xmlrpc
logpath = /var/log/apache2/*access.log
maxretry = 30
findtime = 300
bantime = -1

И создайте фильтр в файле filter.d / apache-xmlrpc.conf :

[Definition]
failregex = ^<HOST> -.*"(GET|POST) .*xmlrpc.php
ignoreregex =

В моем случае атаки не всегда исходили от googlebot, поэтому регулярное выражение сделало его более широким, но для моих целей вряд ли есть веская причина для того, чтобы какой-либо IP-адрес выполнял xmlrpc более 30 раз за 5 минут.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.