Bloquear emisores de spam en vBulleting a través de Project Honey Pot
Los foros son un objetivo tradicional para los spammers. Ademas de bots automáticos y robots que se bloquean por diferentes métodos como captchas, hay muchos spammers humanos. Project Honey Pot facilita una gran base de datos con IPs desde las que se producen ataques por spam.
Puedes integrar sus scripts en tu foro vBulletin y bloquear todo acceso desde IPs sospechosas o maliciosas. Sigue estos pasos para completar la integración:
- Accede a la web de Project Honey Pot.
- Obtén tu clave personal API key httpBL.
- Abre tu área de administrador de vBulletin > Styles & Templates > Style Manager. Escoge la opción “Edit Templates” desde el menú desplegable al lado de tu estilo por defecto y haz clic en “Go”. Escoge la opción “header” en el lado izquierdo del menú desplegable y haz clic en “Edit”. Pega la siguiente línea al principio del código fuente:
$projecthp
y guarda los cambios.
4. Ve al Plugins & Products > Add New Plugin. Cambia la siguiente opción:
Hook Location: global_start
Title: Insert PHP For Project Honey Pot Block
Plugin PHP code:
ob_start();
include(‘projecthp.php’);
$projecthp = ob_get_contents();
ob_end_clean();
Plugin is Active : Yes
Guarda la configuración.
5. Usa un editor como NotePad y crea el archivo projecthp.php.
Introduce el siguiente código:
<?php
require_once(‘./httpbl.php’);
?>
Sube el archivo al directorio raíz de tu foro.
Por ejemplo, si tu foro esta en foro.tudominio.com y la ruta absoluta al foro es /home/user/public_html/forum/, carga el archivo en el subdirectorio forum.
Puedes encontrar más detalles sobre cómo subir los archivos en este tutorial FTP.
6. Crea httpbl.php e introduce el siguiente código:
<?php
/*
Script Name: Simple PHP http:BL implementation
Description: Simple script to check an IP against Project Honey Pot’s database and let only legitimate users access your script
*/
/*** EDIT LINE 22 WITH YOUR OWN HTTP:BL ACCESS KEY ! ***/
if ($_COOKIE[‘notabot’]) {
ozh_httpbl_logme(false, $_SERVER[‘REMOTE_ADDR’]);
} else {
ozh_httpbl_check();
}
function ozh_httpbl_check() { // your http:BL key
$apikey = ‘YOUR_API_KEY‘;
// IP to test
$ip = $_SERVER[‘REMOTE_ADDR’];
// build the lookup DNS query
// Example : for ‘127.9.1.2’ you should query ‘abcdefghijkl.2.1.9.127.dnsbl.httpbl.org’
$lookup = $apikey . ‘.’ . implode(‘.’, array_reverse(explode (‘.’, $ip ))) . ‘.dnsbl.httpbl.org’;
// check query response
$result = explode( ‘.’, gethostbyname($lookup));
if ($result[0] == 127) {
// query successful !
$activity = $result[1];
$threat = $result[2];
$type = $result[3];
if ($type & 0) $typemeaning .= ‘Search Engine, ‘;
if ($type & 1) $typemeaning .= ‘Suspicious, ‘;
if ($type & 2) $typemeaning .= ‘Harvester, ‘;
if ($type & 4) $typemeaning .= ‘Comment Spammer, ‘;
$typemeaning = trim($typemeaning,’, ‘);
// echo “$type : $typemeaning of level $threat “;
// Now determine some blocking policy
if (
($type >= 4 && $threat > 0) // Comment spammer with any threat level
||
($type < 4 && $threat > 20) // Other types, with threat level greater than 20
) {
$block = true;
}
if ($block) {
ozh_httpbl_logme($block,$ip,$type,$threat,$activity);
ozh_httpbl_blockme();
die();
}
}
}
function ozh_httpbl_logme($block = false, $ip=”, $type=”,$threat=”,$activity=”) {
$log = fopen(‘./block.log’,’a’);
$stamp = date(‘Y-m-d :: H-i-s’);
// Some stuff you could log for further analysis
$page = $_SERVER[‘REQUEST_URI’];
$ua = $_SERVER[“HTTP_USER_AGENT”];
if ($block) {
fputs($log,”$stamp :: BLOCKED $ip :: $type :: $threat :: $activity :: $page :: $uan”);
} else {
fputs($log,”$stamp :: UNBLCKD $ip :: $page :: $uan”);
}
fclose($log);
}
function ozh_httpbl_blockme() {
header(‘HTTP/1.0 403 Forbidden’);
echo <<<HTML
<script type=”text/javascript”>
function setcookie( name, value, expires, path, domain, secure ) {
// set time, it’s in milliseconds
var today = new Date();
today.setTime( today.getTime() );
if ( expires ) {
expires = expires * 1000 * 60 * 60 * 24;
}
var expires_date = new Date( today.getTime() + (expires) );
} function letmein() {
setcookie(‘notabot’,’true’,1,’/’, ”, ”);
location.reload(true);
}
</script>
<h1>Forbidden</h1>
<p>Sorry. You are using a suspicious IP.</p>
<p>If you are NOT a bot of any kind please <a href=”javascript:letmein()”>click here</a> to access the page.</p>
HTML;
}
?>
Cambia “YOUR_API_KEY” en la línea $apikey = ‘YOUR_API_KEY’; con tu clave httpBL API.
Sube el archivo en la misma carpeta que projecthp.php.
7. Las conexiones bloqueadas junto con las direcciones IP se almacenarán en el archivo block.log en la carpeta raíz del foro.
Puedes consultar las direcciones IP enumeradas en este archivo en http://www.projecthoneypot.org/search_ip.php
Allí verás el motivo del bloqueo de la IP.