Molte richieste POST a /xmlrpc.php da GoogleBot eliminano il server?


9

Ho diversi blog wordpress ospitati e ho cercato di visitarli e sono molto lenti. Ho guardato i miei registri del server e ho trovato questo

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"

Ricevo ~ 10 hit al secondo sul file /xmlrpc.php da GoogleBot su diversi siti, e questo sembra rallentare il server. Sto correndo

tail -f 

sul file di registro e può solo vedere queste richieste continuare. Qualcuno sa perché questo potrebbe accadere o cosa potresti fare per fermarlo?


2
Dovrei cercare l'IP e gli indirizzi ma scommetto che in realtà non è il crawler di Google , solo un (molto probabilmente) bot malevolo che finge di essere.
s_ha_dum,


sì, non pensavo fosse un googlebot - suppongo che non fosse chiaro nella mia domanda. in ogni caso, cosa fai al riguardo? dovrei bloccare ips?
jkeesh,

Risposte:


7

Bloccerei l'IP iptablesse fossi in me e se avessi quel tipo di accesso a livello di server.

Puoi anche disabilitare xmlrpc. Sfortunatamente, dal 3.5 è stata rimossa l'opzione schermata di amministrazione per disabilitare quella funzione. Una singola riga di codice dovrebbe disabilitarlo però: add_filter( 'xmlrpc_enabled', '__return_false' );ciò potrebbe risparmiare un certo overhead dalle richieste, anche se non lo eliminerà tutto.


Grazie. Ho finito per bloccarlo con iptables e questo mi è sembrato di aiuto.
jkeesh,

5

"Googlebot" non ha motivo di accedere a xmlrpc.php Puoi aggiungerlo all'inizio del tuo xmlrpc.php

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

Immagino sia un file WordPress di base. Quindi potrebbe essere fastidioso tenerlo aggiornato. Sarebbe bello se Automattic usasse Akismet per inserire nella lista nera questi IP da tutti gli script WP, ovunque.

Aggiornamento: ho finito per rimuovere l'autorizzazione con chmod 0 xmlrpc.php(vedi i miei commenti) dopo che un DDoS ha iniziato a tassare il mio server. In altre parole, questo codice PHP condizionale potrebbe non impedire a un aggressore aggressivo di disabilitare temporaneamente il tuo blog. In ogni caso, di solito si arrendono abbastanza velocemente.


Inoltre, se sei un blogger che non utilizza un'applicazione client di blog mobile o desktop separata, non hai bisogno di xmlrpc.php e puoi tranquillamente eliminarlo. In altre parole, se scrivi i post del tuo blog nella dashboard di WordPress, sul Web, non hai bisogno di xmlrpc.php. Ultimamente, xmlrpc.php è davvero sotto attacco da parte degli hacker e personalmente, ti consiglio di eliminare questo file.
PJ Brunet,

Per rivedere il mio commento sopra: piuttosto che eliminare xmlrpc.php, potresti "chmod 0" il file e riportarlo in vita secondo necessità, perché potresti aver bisogno di xmlrpc.php per certe cose, come ricordo vagamente che hai bisogno di xmlrpc.php per attivare Jetpack.
PJ Brunet,

Grazie per il consiglio. Ho appena inserito un exit()in cima al file poiché usiamo sempre wp-admin per modificare le pagine. Ho trovato questo un relativo punto debole su Wordpress che mi preoccupa di implementare WP per una grande organizzazione. Con xmlrpc disabilitato non dovrei preoccuparmi, vero?
Mattijs,

1

bloccare l'IP con 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

Sarebbe bello vedere qualche spiegazione di questo comando di shell.
David,

@David È un po 'presuntuoso e goffo IMO. Essenzialmente ciò che farà sarà scansionare il file access.log e cercare eventuali richieste su xmlrpc.php. Quindi conta gli indirizzi IP duplicati, li ordina dal più alto al più basso e restituisce i primi 8 IP (IP con le richieste più duplicate). Per ciascuno di questi indirizzi IP, indica al firewall di eliminare tutto il traffico da essi. Sul mio server, ci sono molti più di 8 IP che fanno queste cose, e questo potrebbe anche bloccare le richieste legittime, dal momento che non controlla chi lo sta facendo.
tdk2fe,

0

È successo di recente e stava uccidendo il server e ora stiamo usando Fail2ban per mitigare il problema.

Aggiunta questa configurazione a jail.local :

[apache-xmlrpc]

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

E crea il filtro in filter.d / apache-xmlrpc.conf :

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

Nel mio caso, gli attacchi non venivano sempre da googlebot, quindi la regex era un po 'più ampia, ma per i miei scopi non c'è quasi alcun buon motivo per cui un IP colpisca xmlrpc più di 30 volte in 5 minuti.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.