Banyak permintaan POST ke /xmlrpc.php dari GoogleBot yang menghapus server?

9

Saya memiliki beberapa host blog wordpress, dan saya telah mencoba untuk mengunjungi mereka dan mereka sangat lambat. Saya melihat log server saya dan saya menemukan ini

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"

Saya mendapatkan ~ 10 hit per detik ke file /xmlrpc.php dari GoogleBot ke beberapa situs, dan ini sepertinya memperlambat server. saya sedang berlari

tail -f 

pada file log, dan hanya dapat melihat permintaan ini terus berlanjut. Adakah yang tahu mengapa ini mungkin terjadi atau apa yang dapat Anda lakukan untuk menghentikannya?

jkeesh
sumber
2
Saya harus mencari IP dan alamatnya tetapi saya berani bertaruh itu sebenarnya bukan perayap Google , hanya bot jahat (kemungkinan besar) yang berpura-pura.
s_ha_dum
ya saya tidak berpikir itu adalah googlebot - saya kira itu tidak jelas dalam pertanyaan saya. dalam hal apa pun, apa yang Anda lakukan tentang ini? saya harus memblokir ips?
jkeesh

Jawaban:

7

Saya akan memblokir IP dengan iptablesjika itu saya, dan jika Anda memiliki akses tingkat server semacam itu.

Anda juga bisa menonaktifkan xmlrpc. Sayangnya, sejak 3,5 opsi layar admin untuk menonaktifkan fitur itu telah dihapus. Namun, satu baris kode harus menonaktifkannya: add_filter( 'xmlrpc_enabled', '__return_false' );Itu mungkin menghemat beberapa biaya tambahan dari permintaan, meskipun tidak akan menghilangkan semuanya.

s_ha_dum
sumber
Terima kasih. Saya akhirnya memblokirnya dengan iptables, dan itu sepertinya membantu.
jkeesh
5

"Googlebot" tidak memiliki alasan untuk mengakses xmlrpc.php Anda dapat menambahkan ini ke bagian atas xmlrpc.php Anda

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

Saya menduga itu adalah file inti WordPress. Jadi mungkin menjengkelkan untuk terus memperbarui ini. Akan lebih baik jika Automattic menggunakan Akismet untuk daftar hitam IP ini dari semua skrip WP, di mana-mana.

Pembaruan: Saya akhirnya menghapus izin dengan chmod 0 xmlrpc.php(lihat komentar saya) setelah DDoS mulai mengenakan pajak pada server saya. Dengan kata lain, kode PHP bersyarat ini mungkin tidak menghentikan penyerang agresif dari menonaktifkan sementara blog Anda. Bagaimanapun, mereka biasanya menyerah dengan cepat.

PJ Brunet
sumber
Juga, jika Anda seorang blogger yang tidak menggunakan aplikasi klien blog seluler atau desktop yang terpisah, Anda tidak perlu xmlrpc.php, dan Anda dapat menghapusnya dengan aman. Dengan kata lain, jika Anda menulis posting blog Anda di dalam dashboard WordPress, di web, Anda tidak perlu xmlrpc.php. Akhir-akhir ini, xmlrpc.php benar-benar diserang oleh peretas dan secara pribadi, saya sarankan Anda hanya menghapus file ini.
PJ Brunet
Untuk merevisi komentar saya di atas: daripada menghapus xmlrpc.php, Anda dapat "chmod 0" file dan menghidupkannya kembali sesuai kebutuhan, karena Anda mungkin perlu xmlrpc.php untuk hal-hal tertentu, seperti saya samar-samar ingat Anda memerlukan xmlrpc.php untuk mengaktifkan Jetpack.
PJ Brunet
Terima kasih atas tipnya. Saya hanya meletakkan exit()di bagian atas file karena kami selalu menggunakan wp-admin untuk mengedit halaman. Saya menemukan ini kelemahan relatif pada Wordpress yang membuat saya khawatir menerapkan WP untuk organisasi besar. Dengan xmlrpc dinonaktifkan saya tidak perlu khawatir, kan?
Mattijs
1

blokir IP dengan 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
3m1l
sumber
Akan menyenangkan untuk melihat beberapa penjelasan dari perintah shell ini.
David
@ David Jelas IMOnya agak lancang dan canggung. Pada dasarnya apa yang akan dilakukan adalah memindai file access.log dan mencari permintaan apa pun ke xmlrpc.php. Kemudian ia menghitung duplikat alamat IP, mengurutkannya dari tertinggi ke terendah, dan mengembalikan 8 IP teratas (IP dengan permintaan duplikat terbanyak). Untuk masing-masing alamat IP ini, ia memberi tahu firewall untuk menghapus semua lalu lintas dari mereka. Di server saya, ada lebih dari 8 IP yang melakukan hal ini, dan ini juga dapat memblokir permintaan yang sah, karena tidak meneliti dengan cermat siapa yang membuatnya.
tdk2fe
0

Apakah ini terjadi baru-baru ini dan itu membunuh server dan kami sekarang menggunakan fail2ban untuk mengurangi masalah.

Menambahkan konfigurasi ini ke jail.local :

[apache-xmlrpc]

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

Dan buat filter di filter.d / apache-xmlrpc.conf :

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

Dalam kasus saya, serangan tidak selalu datang dari googlebot sehingga membuat regex sedikit lebih luas tetapi untuk tujuan saya hampir tidak ada alasan yang baik untuk IP mana pun untuk memukul xmlrpc 30+ kali dalam 5 menit.

billynoah
sumber