Muitas solicitações POST para /xmlrpc.php do GoogleBot desativando o servidor?

9

Eu tenho vários blogs wordpress hospedados, e eu tenho tentado visitá-los e eles são realmente lentos. Eu olhei para os logs do meu servidor e achei isso

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"

Estou recebendo ~ 10 ocorrências por segundo no arquivo /xmlrpc.php do GoogleBot para vários sites, e isso parece estar diminuindo a velocidade do servidor. eu estou correndo

tail -f 

no arquivo de log e pode apenas ver essas solicitações continuando. Alguém sabe por que isso pode estar acontecendo ou o que você pode fazer para impedir isso?

jkeesh
fonte
2
Eu teria que procurar o IP e os endereços, mas aposto que não é realmente o rastreador do Google , apenas um bot (provavelmente) malicioso que finge ser.
s_ha_dum
Sim, eu não achei que fosse um googlebot - acho que não estava claro na minha pergunta. de qualquer forma, o que você faz sobre isso? eu deveria estar bloqueando ips?
jkeesh

Respostas:

7

Eu bloquearia o IP com iptablesse fosse eu e se você tiver esse tipo de acesso no nível do servidor.

Você também pode desativar o xmlrpc. Infelizmente, desde a versão 3.5, a opção da tela do administrador para desativar esse recurso foi removida. Uma única linha de código deve desativá-lo: add_filter( 'xmlrpc_enabled', '__return_false' );Isso pode economizar um pouco de sobrecarga das solicitações, embora não elimine tudo.

s_ha_dum
fonte
Obrigado. Acabei bloqueando-o com iptables, e isso pareceu ajudar.
jkeesh
5

O "Googlebot" não tem motivos para acessar o xmlrpc.php. Você pode adicionar isso ao topo do seu xmlrpc.php

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

Eu estou supondo que é um arquivo WordPress principal. Portanto, pode ser chato manter isso atualizado. Seria bom se a Automattic usasse o Akismet para colocar esses IPs na lista negra de todos os scripts WP, em qualquer lugar.

Atualização: acabei removendo a permissão com chmod 0 xmlrpc.php(veja meus comentários) depois que um DDoS começou a tributar meu servidor. Em outras palavras, esse código PHP condicional pode não impedir que um invasor agressivo desative temporariamente o seu blog. De qualquer forma, eles geralmente desistem rapidamente.

PJ Brunet
fonte
Além disso, se você é um blogueiro que não usa um aplicativo cliente de blog para celular ou para desktop separado, não precisa do xmlrpc.php e pode excluí-lo com segurança. Em outras palavras, se você escrever as postagens do seu blog dentro do painel do WordPress, na Web, não precisará do xmlrpc.php. Ultimamente, xmlrpc.php está realmente sob ataque de hackers e, pessoalmente, recomendo que você exclua este arquivo.
PJ Brunet
Para revisar meu comentário acima: em vez de excluir xmlrpc.php, você pode "chmod 0" o arquivo e trazê-lo de volta à vida conforme necessário, porque você pode precisar de xmlrpc.php para certas coisas, como eu me lembro vagamente de que você precisa de xmlrpc.php para ativar o Jetpack.
PJ Brunet
Obrigado pela dica. Acabei de colocar um exit()no topo do arquivo, pois sempre usamos o wp-admin para editar as páginas. Achei isso uma fraqueza relativa no Wordpress que me preocupa em implementar o WP para uma grande organização. Com o xmlrpc desativado, eu não precisaria me preocupar, certo?
Mattijs
1

bloqueie o IP com 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
fonte
Seria bom ver algumas explicações sobre este comando shell.
David
@ David Seu IMO meio presunçoso e desajeitado. Essencialmente, o que isso fará é verificar o arquivo access.log e procurar qualquer solicitação para xmlrpc.php. Em seguida, ele contabiliza endereços IP duplicados, os classifica do mais alto para o mais baixo e retorna os 8 principais IPs (IPs com as solicitações mais duplicadas). Para cada um desses endereços IP, ele diz ao firewall para eliminar todo o tráfego deles. No meu servidor, há muito mais do que 8 IPs fazendo essas coisas, e isso também pode bloquear solicitações legítimas, pois não examina quem está fazendo isso.
Tdk2fe
0

Se isso tivesse acontecido recentemente e estava matando o servidor, agora estamos usando o fail2ban para atenuar o problema.

Adicionada esta configuração ao jail.local :

[apache-xmlrpc]

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

E crie o filtro em filter.d / apache-xmlrpc.conf :

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

No meu caso, os ataques nem sempre eram provenientes do googlebot, tornando o regex um pouco mais amplo, mas, para meus propósitos, dificilmente existe um bom motivo para qualquer IP atingir o xmlrpc mais de 30 vezes em 5 minutos.

billynoah
fonte