Hace días estoy siendo spameado por un servicio de podcasting gratuito llamado PodBean.com

Como pueden ver en esta captura de PopStats, todos los subdominios de este sitio no llegan a nada, y lo peor es que le estoy dando PR a un sitio que en mi vida había visitado o escuchado nombrar.

Así que vamos a ver como modificar el .htaccess para eliminar estos referers malignos y bloquearlos permanentemente.
Ésta es mi primera prueba con .htaccess asi que espero no cagarla xD.
Primero, tengo que entender que mierda dice el .htaccess que viene por omisión en Wordpress
# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /wp/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /wp/index.php [L]
</IfModule>
# END WordPress
Como en todos los lenguajes, hay un par de lineas de comentario para especificar y dejar documentado que estamos haciendo. Luego, utiliza una función IfModule mod_rewrite.c para evitar que se caiga el blog en caso de que mod_rewrite no esté habilitado en el server. Después, RewriteEngine On inicializa el motor de reescritura. RewriteBase, le indica explicitamente al server que el directorio base del blog está en la carpeta /wp y evita accesos hacia atrás.
No instalé el blog en la raíz porque tenía otros proyectos en mente para el root, pero que están en el limbo actualmente jejeje.
Las siguientes condiciones son:
RewriteCond %{REQUEST_FILENAME} !-f = Ésta verifica que lo que buscamos no sea un archivo.
RewriteCond %{REQUEST_FILENAME} !-d = Ésta verifica que lo que buscamos no sea un directorio
La explicación de esto, no la tengo… jaja. Ni idea porque pero así está y funciona. xD
Y finalmente, RewriteRule . /wp/index.php [L] le indica al navegador, que la página principal es index.php y que termine de buscar ( o finalice el Loop)
Sabiendo esto, es hora de experimentar con nuevas condiciones y comandos para ver si el bloqueo funciona. Luego de revisar varios tutoriales online, que pondré al final de este artículo, llegué a esta conclusión.
RewriteCond %(HTTP_REFERER) (podbean) [NC,OR]
RewriteCond %(HTTP_REFERER) (xanax) [NC,OR]
RewriteCond %(HTTP_REFERER) (pills) [NC,OR]
RewriteCond %(HTTP_REFERER) (mindnmagick) [NC]
RewriteRule .* - [F]
La primera condición, verifica que el referer sea podbean, NC indicaque sea insensible a mayúsculas o minúsculas, OR permite que en caso de no venir de ese referer siga preguntando por el siguiente hasta que se terminen las condiciones.
Finalmente RewriteRule indica que cualquier carácter (.), ya sea cero o más veces (*), reciba la cabecera de Forbidden (403).
Ahora, me asalta la duda si debo hacer un bloque nuevo o añadirlo a lo que viene por wordpress. Voy a hacer un bloque separado. De todas formas, mañana veremos si funciona esto, y al dia siguiente veremos si se puede poner en un solo bloque.
Espero que no me bloquee visitas reales, pero creo que estoy siendo lo suficientemente cuidadoso con las reglas y condiciones como para que se caiga el sitio.
Hasta mañana con los resultados.
SIlla!
PD: A medida que reciba más referer spam, voy a hacer un txt para que lo descarguen y lo agreguen a su propio .htaccess.
Fuentes:
Apache Docs
Foros del Web
Ask Apache
Helicon Tech
Added Bytes - Block Referal Spam
Added Bytes - Mod_Rewrite for Beginners