Acabando con los falsos Googlebots gracias a Fail2Ban

GoogleBots

Todos sabemos que el todopoderoso Google no hace cosas malas, por eso los malos se hacen pasar por Google para hacerlas y viendo los bugs que van sacando como el último de Joomla, es curioso que siempre intentan hacerse pasar por Google.

¿Quién no ha revisado los logs de su web y ha visto accesos de googlebot desde China, Alemania, Rusia, …? Eso no es google y si no eres google y finges serlo es porque no estás haciendo nada bueno, haciendo un símil son como los falsos revisores del gas.

Hay una aplicación llamado Fail2Ban que sirve para revisar los logs y banear IPs gracias a unos patrones que podemos definirle, no voy a entrar en detalles sobre como instalarla porque es muy simple y hay mucha información en la red para ello, pero si vamos a ver como podemos usarla para que estos falsos googlebots no hagan cosas malas en nuestros servidores.

Hay varios ficheros importantes.

La regla en si es muy simple, pero muy peligrosa (luego explicaré como quitarle esta peligrosidad).

Nos crearíamos un fichero llamado /etc/fail2ban/filter.d/fake-googlebot.conf con este código:

[[Definition]
failregex = ^ -.*www.google.com/bot.html.*$
ignoreregex =

Esto lo que hace es todo lo que tenga en la entrada «www.google.com/bot.html» lo marque para banear (OJO los reales de Google también, ahora veremos como evitar esto).

Ahora tenemos que editar el fichero /etc/fail2ban/jail.conf y añadir a la línea que tena ignoreip el rango de IP de google. Ej:

ignoreip = 127.0.0.1 66.249.64.0/19

Esto lo que hace es que hagan lo que hagan esas IP no lo tome como malicioso, con esto salvamos la peligrosidad que comentábamos antes.

Luego al final del todo debemos añadir la regla en sí:

[fake-googlebot]
enabled = true
port = http,https
filter = fake-googlebot
logpath = RUTA_DE_LOS_LOGS
bantime = 36000
findtime = 10
maxretry = 1

Cuidado que hay que especificar la ruta de los logs.

Con esto lo que conseguimos es que si esa ruta da positivo en los logs (logpath) en un tiempo de busqueda de 10s (findtime) un numero de 1 veces (maxretry), lo banne por un tipo de 36000 seg (bantime).

Con esto baneamos esa IP durante 10 horas, pero realmente no acabamos con ellas. Si queremos acabar con ellas debemos hacer un pequeño trabajo a mano o si se quiere automatizarlo, eso ya depende de cada uno.

Para ello deberemos poner que Fail2Ban nos notifique cada IP que banee, para ello cambiamos en el jail.conf

action = %(action_mwl)s

Cuando recibamos el correo nos tocará hacerle un whois, ver la dirección de abuse y reenviarle el correo recibido, no es mucho, pero si cada uno ponemos un granito se podrán ir desactivando botnets que al fina si no es por una cosa es por otra acaban fastidiándolos.