Que akismet hace un buen trabajo, no lo duda nadie.
Pero si tu server, como el mío, sufre los embates del spam que se dispara de repente como si dentro de dos horas se acabara el mundo, encontré dos sencillos truquitos para mitigarlo.
El primero:
Abrir el archivo wp-comments.php (o comments.php) y agregar:
input type=”hidden” name=”spammers” value=”putos”
(recuerden agregar el < al principio y el > al final)
justo después del
input name=”submit” type=”submit” …..
Abrir el archivo wp-comments-post.php y agregar:
if (‘putos’ != trim(strip_tags($_POST[‘spammers’])) )
die();
justo antes de que haga la primer consulta a la base de datos
En mi caso fue antes de esto:
$status = $wpdb-/>get_row(“SELECT post_status, comment_status ……
Fuente: diego sevilla’s blog
El segundo:
Agregar en el .htaccess:
RewriteCond %{REQUEST_METHOD} POST
RewriteCond %{REQUEST_URI} .wp-comments-post\.php*
RewriteCond %{HTTP_REFERER} !.*tusitio.com* [OR]
RewriteCond %{HTTP_USER_AGENT} ^$
RewriteRule . /index.html [G,L]
para que informe un error 410
Fuente : WordPress (y un poco de toqueteo para disminuir el tráfico)
En estos momentos estoy con unos 2200 intentos por hora sin un solo comment-spam.
En carpeta: estudiar como analizar las IPs, descubrir las que se repiten mas de x veces en un lapso de y minutos en integrarlas en una regla de iptables, purgandolas cada z dias.
Si alguno se ve capacitado y con mas tiempo que yo, agradecido.
4 comentarios
Saltar al formulario de comentarios
Lo de la “carpeta” podes mirarlo con Worst Offenders muy recomendado como “plugin” 🙂
El gran problema es que los pedidos igual te consumen ancho de banda.. y Ciclos de CPU… ¿se podría evitar eso?
Autor
si, pero tendrías que tener control sobre el sistema, de forma tal de poder instalar un firewall o configurar iptables, dependiendo si estás en win o linux.
Eso del worst offenders parece muy interesante, pero en mi caso el server se murió tres veces antes de poder identificar todo el spam.
Lo de reportar el 410 no solo me bajó ancho de banda (responde entre 300 y 340 bytes cada hilo contra 3 o 4K de un redirect al index o un 404 standard), sino que usando el error.log pude encontrar unos 5 rangos de IPs que me estaban matando, no solo a mi con el comment-post del wordpress sino a un cliente, con el AllMyGuest de un viejo PHPnuke que tenía antes de mudarse con nosotros.
Ya bajé de unos 2000 accesos / hora al wp-comments-post.php a unos 4 o 5 en el mismo tiempo. Y el akismet, que me estaba capturando estos últimos días unos 150-200 spam/dia pasó a 0.5 spam/dia.
Como comentaba al final, para armar un firewall dinámico falta poquito para tener un producto alpha. Despues tendré que definir los parámetros por los cuales se manda una ip al bloqueo o no, los tiempos que se mantiene asi, etc. Los mantengo al tanto.
Tengo conocimientos muy básicos del htaccess. Podrías por favor comentar para que sirve (y como funciona) la modificación que proponés al htaccess ?
Entiendo que las primeras 4 líneas son condiciones, y la última redirige a los bots a una web que no existe, no ?
Gracias !
Autor
Germán:
Si, las primeras 4 son condiciones : para un método POST, al archivo wp-comments-post.php y sin referer a tu propio sitio, O si el navegador no tiene user-agent, entonces redirigir el post a index.html informando un error 410, que es como un 404 pero insistiendo en que NO ESTA MAS PORQUE NO QUIERO QUE ESTE MAS.
Otra cosita que implementé es cambiar el nombre del archivo wp-comments-post.php por otro, modificando convenientemente el archivo comments.php de tu theme.
Y estoy pensando en hacer un mecanismo que determine, en forma aleatoria, cual es el archivo que recibirá el comentario en forma correcta, con varios botones de “enviar comentario” pero uno solo con el texto que lo identifique correctamente.