Bloquer les spammeurs dans vBulletin grâce au projet Honey Pot
Les forums sont des cibles privilégiées des spammeurs. Outre les bots automatiques et les robots qui sont généralement bloqués par différentes techniques comme les scripts captcha, il existe de nombreux spammeurs humains. Le projet Honey Pot fournit une énorme base de données avec les adresses IP à partir desquelles des attaques de spam ont été effectuées.
Vous pouvez intégrer leur script dans votre forum vBulletin et bloquer tout accès aux adresses IP suspectes et malveillantes. Suivez ces étapes pour terminer l’intégration:
1. Inscrivez-vous sur le site Web du Projet Honey Pot.
2. Obtenez votre clé d’API httpBL personnelle.
3. Ouvrez la zone d’administration de vBulletin> Styles & Modèles> Gestionnaire des styles . Choisissez l’option « Modifier les modèles » dans le menu déroulant à côté de votre style par défaut et cliquez sur « Aller ». Choisissez l’option « header » dans le menu déroulant de gauche et cliquez sur « Edit ». Collez la ligne suivante en haut du code source:
$projecthp
et enregistrer les modifications.
4. Naviguez jusqu’à Plugins & Produits> Ajouter un nouveau plugin. Modifiez les options suivantes:
Emplacement du hook: global_start
Title: Insérer un bloc PHP pour le projet Honey Pot
Code PHP du greffon:
ob_start();
include('projecthp.php');
$projecthp = ob_get_contents();
ob_end_clean();
Le greffon est actif: Oui
Enregistrez la configuration.
5. Utilisez un éditeur de texte comme NotePad et créez le fichier projecthp.php .
Saisissez-y le code suivant:
<?php
require_once('./httpbl.php');
?>
Envoyez le fichier dans le dossier racine de votre forum.
Par exemple, si votre forum est situé à forum.votredomaine.com et que son chemin absolu est /home/user/public_html/forum/ , envoyez le fichier dans le sous-dossier forum.
Vous trouverez plus de détails sur l’envoi de fichiers dans ce didacticiel FTP.
6. Créez httpbl.php et saisissez le code suivant:
<?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;
}
?>
Remplacez « YOUR_API_KEY ” par le nom $apikey = ‘YOUR_API_KEY’; avec votre clé d’API httpBL.
Envoyez le fichier dans le même dossier que projecthp.php .
7. Les connexions bloquées avec les adresses IP seront stockées dans le fichier block.log sous le dossier racine du forum.
Vous pouvez vérifier les adresses IP répertoriées dans ce fichier à l’adresse http://www.projecthoneypot.org/search_ip.php
Vous y verrez la raison du blocage de l’adresse IP.