¿Muchas solicitudes POST a /xmlrpc.php desde GoogleBot derribando el servidor?

9

Tengo varios blogs de WordPress alojados, y he estado tratando de visitarlos y son muy lentos. Miré los registros de mi servidor y encontré esto

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"

Recibo ~ 10 visitas por segundo al archivo /xmlrpc.php desde GoogleBot a varios sitios, y esto parece estar ralentizando el servidor. Estoy corriendo

tail -f 

en el archivo de registro, y puedo ver que estas solicitudes continúan. ¿Alguien sabe por qué esto podría estar sucediendo o qué podría hacer para detenerlo?

jkeesh
fuente
2
Tendría que buscar la dirección IP y las direcciones, pero apuesto a que en realidad no es el rastreador de Google , solo un robot malintencionado (lo más probable) que pretende ser.
s_ha_dum
Sí, no pensé que fuera un robot de Google. Supongo que eso no estaba claro en mi pregunta. en cualquier caso, ¿qué haces al respecto? ¿Debo estar bloqueando los ips?
jkeesh

Respuestas:

7

Bloquearía la IP iptablessi fuera yo, y si tiene ese tipo de acceso a nivel de servidor.

También puede deshabilitar xmlrpc. Desafortunadamente, desde 3.5 se ha eliminado la opción de pantalla de administrador para deshabilitar esa función. Sin embargo, una sola línea de código debería deshabilitarlo: add_filter( 'xmlrpc_enabled', '__return_false' );eso podría ahorrar algo de sobrecarga de las solicitudes, aunque no eliminará todo.

s_ha_dum
fuente
Gracias. Terminé bloqueándolo con iptables, y eso pareció ayudar.
jkeesh
5

"Googlebot" no tiene ninguna razón para acceder a xmlrpc.php. Puede agregar esto a la parte superior de su xmlrpc.php

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

Supongo que es un archivo central de WordPress. Por lo tanto, puede ser molesto mantener esto actualizado. Sería bueno si Automattic usara Akismet para poner en una lista negra estas IP de todos los scripts de WP, en todas partes.

Actualización: terminé eliminando el permiso con chmod 0 xmlrpc.php(ver mis comentarios) después de que un DDoS comenzó a gravar mi servidor. En otras palabras, este código PHP condicional podría no impedir que un atacante agresivo inhabilite temporalmente su blog. En cualquier caso, generalmente se rinden bastante rápido.

PJ Brunet
fuente
Además, si eres un blogger que no usa una aplicación cliente de blog móvil o de escritorio separada, no necesitas xmlrpc.php, y puedes eliminarlo de manera segura. En otras palabras, si escribe las publicaciones de su blog dentro del panel de WordPress, en la web, no necesita xmlrpc.php. Últimamente, xmlrpc.php está realmente bajo ataque de piratas informáticos y personalmente, le recomiendo que simplemente elimine este archivo.
PJ Brunet
Para revisar mi comentario anterior: en lugar de eliminar xmlrpc.php, puede "chmod 0" el archivo y volver a darle vida según sea necesario, porque puede necesitar xmlrpc.php para ciertas cosas, como recuerdo vagamente que necesita xmlrpc.php para activar Jetpack.
PJ Brunet
Gracias por el consejo. Acabo de poner una exit()en la parte superior del archivo ya que siempre usamos wp-admin para editar páginas. Me pareció una debilidad relativa en Wordpress que me preocupa de implementar WP para una gran organización. Con el xmlrpc deshabilitado no tendría que preocuparme, ¿verdad?
Mattijs
1

bloquear la 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
3m1l
fuente
Sería bueno ver alguna explicación de este comando de shell.
David
@David Es un poco presuntuoso y torpe IMO. Esencialmente, lo que esto hará es escanear el archivo access.log y buscar cualquier solicitud para xmlrpc.php. Luego cuenta las direcciones IP duplicadas, las ordena de mayor a menor y devuelve las 8 IP principales (IP con las solicitudes más duplicadas). Para cada una de estas direcciones IP, le dice al firewall que elimine todo el tráfico de ellas. En mi servidor, hay mucho más de 8 IPs haciendo esto, y esto también podría bloquear solicitudes legítimas, ya que no analiza quién lo está haciendo.
tdk2fe
0

Si esto sucedió recientemente y estaba matando al servidor y ahora estamos usando fail2ban para mitigar el problema.

Se agregó esta configuración a jail.local :

[apache-xmlrpc]

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

Y cree el filtro en filter.d / apache-xmlrpc.conf :

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

En mi caso, los ataques no siempre provenían de googlebot, por lo que la expresión regular era un poco más amplia, pero para mis propósitos casi no hay una buena razón para que cualquier IP golpee xmlrpc más de 30 veces en 5 minutos.

Billynoah
fuente