• Lite IP Filter : un script php de filtrage d’IP.
• IP Range Tool : un utilitaire Mac, Windows et Linux de gestion des plages IP
incluant la base de données IP mondiale (en offline).
Voir plus bas pour les liens de téléchargement
– A quoi sert “Lite IP Filter” ?
“Lite IP Filter” est un script php qui permet de monitorer, voire de bloquer des plages entières d’IP, sans le recours à un serveur de base de données. Le script permet également de détecter les IP derrière un proxy, pour peu que ledit proxy ne soit pas totalement opaque.
– Pourquoi “Lite IP Filter” ?
De nombreux cas de figure peuvent nécessiter l’utilisation de “Lite IP Filter”, notamment :
– Si on est mal à l’aise avec le fichier .htaccess (ou ne pas y avoir accès du tout), “Lite IP Filter” permet de bloquer les plages IP des spammeurs et de ceux qui, de façon répétitive, abusent du blog.
– On peut avoir un blog, mais ne pas avoir accès au log du serveur web, dans ce cas, on peut utiliser “Lite IP Filter” pour loguer toutes les visites en résumant l’internet à une seule plage IP “0.0.0.0 255.255.255.255”. Dans ce cas de figure, il ne faut pas -évidemment- activer les options de blocage d’accès.
– On peut également, pour des raisons tout à fait légitimes, bloquer l’accès au blog à l’ensemble d’un ou plusieurs pays. Et ce script a été précisément développé pour bloquer l’accès à mon blog (astrubal.nawaat.org), celui de mon ami Sami Ben Gharbia et ceux de Nawaat.org à la police tunisienne de l’internet. Ces blogs étant censurés en Tunisie, les seules IP qui y accèdent sont en théorie celles des bureaucrates de la censure. Alors “censurés pour censurés” en Tunisie, autant bloquer l’accès à toutes les IP tunisiennes qui se connectent sans proxy. Alors si vous êtes Chinois, Syrien, Libyen Saoudien, Birman, Tunisien etc., et que votre blog fait partie de ceux qui ont été “honorés” par la censure de votre pays, n’hésitez pas, à votre tour, à leur bloquer l’accès à votre site (pour plus de détails sur la logique de ce blocage, voir cet article sur nawaat.org). Et c’est d’autant plus facile avec le second utilitaire IP Range Tool qui permet, en deux clics, d’extraire les plages IP à filtrer de n’importe quel pays pour les inclure dans Lite IP Filter (cf. infra).
– Installation du script
Après téléchargement de “Lite-ip-filter_1.0.zip”, décompressez puis uploadez le dossier “Lite-ip-filter” à la racine de votre dossier web (ne pas confondre avec la racine de votre compte chez l’hébergeur).
Si, chez l’hébergeur, la racine du dossier web est
“/home/subfolder/WhatEver/www/MonDomaine.org/”
alors le dossier “Lite-ip-filter” devrait être placé dans le dossier “MonDomaine.org“.
Et quand bien même votre blog pourrait être servi à partir d’un sous-dossier de la racine web, tel par exemple :
“http://www.MonDomaine.org/monblog/index.php“,
le dossier “Lite-ip-filter” devra toujours être placé à la racine web, c’est-à-dire, comme indiqué, dans le dossier “MonDomaine.org“.
Pour éviter que les fichiers log “ip-filter-log.txt” et “RawReq-log.txt” ne soient accessibles via un navigateur web, il est impératif de leur attribuer un chmod de “600”.
Ensuite, pour activer le filtrage, insérez tout en haut de la page de chargement du blog les deux lignes suivantes (juste après le “<?php”) :
$IpfilterPathfile=$_SERVER[‘DOCUMENT_ROOT’].”/Lite-ip-filter/Lite-ip-filter.php”;
if (file_exists($IpfilterPathfile)){require_once($IpfilterPathfile);}
Pour l’exemple, si votre blog est sous WordPress, insérez les deux lignes en haut du fichier “wp-blog-header.php” (ce fichier contient le module commun de chargement). Les deux lignes doivent être impérativement les premières (après le “<?php”). A noter qu’après chaque mise à jour de WordPress, ces deux lignes doivent être réinsérées (et ce en attendant la création d’un plugin spécialement dédié).
Si votre site est géré par un autre CMS n’ayant pas un module commun de chargement, il faudra alors insérer les deux lignes sur chaque template php (index.php, article.php, rubrique.php, printer.php, etc.).
– Paramétrage des options du script
Les options sont configurables au sein du fichier “Lite-ip-filter.php” :
1- Par defaut “Lite-ip-filter.php” ne bloque aucun visiteur, il logue uniquement les iPs contenues dans les plages IP. Le format du log est le suivant :
IP visiteur => IP Proxy => Date => Page demandée => Provenance => NavigateurPour bloquer l’accès au site, modifiez l’option $DenyIpAccess en lui attribuant la valeur “true“.
2- Pour gérer les connexions derrière les proxies, gardez l’option $DetectBehindProxy avec sa valeur “true“. Inversement, avec “false” les IP derrière les proxies ne seront pas detectées.
3- Si l’option $DenyIpAccessBehindProxy=true; alors les IP derrière les proxies (collant aux plages IP) seront rejetées.
4- L’option $ExtendedLog génère un log supplémentaire (RawReq-log.txt) avec davantage d’informations sur la provenance du visiteur. Pour activer cette option, attribuez-lui la valeur “true“.
– Comment paramétrer la liste des IP à filtrer ?
Les IP sont insérées sous forme de plages IP au format décimal au sein de la variable de type array $DecimalIpRanges. Le format de l’array doit respecter ces deux conditions:
1- Les deux valeurs de chaque plage IP (au format décimal) doivent être séparées par un seul espace. Le script ayant été écrit pour une exécution la plus rapide possible, il fait l’impasse sur la vérification d’un défaut de formatage. Cette vérification est censée avoir été faite par l’utilisateur lors de l’insertion des plages IP.
2- Les plages IP doivent être classées par ordre croissant.
Exemple (cf. illustrations plus bas) :
$DecimalIpRanges= array(
“702545920 703070207”, // 41.224.0.0 41.231.255.255
“1347754952 1347754959”, // 80.85.27.200 80.85.27.207
“1361036248 1361036251”, // 81.31.195.216 81.31.195.219
);
Le code de “Lite IP Filter” a été conçu pour une exécution très rapide, y compris pour filtrer des milliers de plages IP (soit potentiellement des centaines de millions d’IP) sans le recours à une base de données. Aussi, est-il capital que l’array $DecimalIpRanges soit préalablement trié par ordre croissant.
– Où trouver les IPs à filtrer et comment les formater correctement ?
Pour faciliter l’usage de “Lite IP Filter”, j’ai également développé un utilitaire baptisé “IP Range Tool” (Mac, Windows et Linux) contenant la base de données de l’intégralité des IP assignées par les 5 organismes officiels (Afrinic, Apnic, Arin, Iana, Lacnic, Ripencc), soit tout l’internet en IPv4.
IP Range Tool permet d’obtenir les plages IP de tout pays par simple clic, y compris dans leur format décimal, triées par ordre croissant et prêtes à être insérées dans le script php. Au-delà des besoins de “Lite IP Filter”, le logiciel “IP Range Tool” permet également des choses bien sympathiques telles que, entre autres, la création de listes de plages IP au format CIDR (slashé) destinées plutôt à un usage au sein du fichier .htaccess, tout comme une présentation synthétique de l’état de l’internet mondial par tête d’habitant et par pays.
Lancez le logiciel IP Range Tool, puis faites en sorte que
la case à cocher “Disable decimal conversion” soit décochée.
Cliquez ensuite sur le pays de votre choix… Pour l’illustration, on va choisir la Tunisie.
Copiez les plages IP au format décimal qui apparaissent à droite.
(Pour copier, utilisez le bouton droit de la souris ou, alternativement,
le bouton en haut à droite “Copy all converted IPs“).
Allez ensuite sur le script Lite-ip-filter.php et collez le résultat entre
les deux parenthèses “( )” de l’array $DecimalIpRanges.
Le logiciel “IP Range Tool” permet, par ailleurs, de dresser une liste de plages IP de plusieurs pays à la fois, tout comme de convertir des plages de différents formats insérées par l’utilisateur.
Pour obtenir une liste de plages IP de différents pays, utilisez le menu Tool>Search by ISO Code…
Puis saisir les codes ISO des pays désirés.
Accessoirement, pour convertir des listes de plages de différents formats, cliquez sur le menu “Tool>Batch converter…”
Une nouvelle fenêtre s’ouvrira, offrant le moyen de convertir les plages IP selon le format désiré.
Pour gérer individuellement des conversions, n’hésitez pas à cliquer sur le menu “Tool>Single converter…”
1 – Pour télécharger “Lite IP Filter” (le script php de filtrage d’IP) : Lite-ip-filter_1.0.zip (zip).
2 – Pour télécharger “IP Range Tool“, l’utilitaire Mac Windows et Linux de gestion des plages IP :
IP Range Tool 1.0 Windows (2000/XP/VISTA/7) (zip)
IP Range Tool 1.0 Mac OS X (Mac Intel pour 10.5+) (zip)
IP Range Tool 1.0 Mac OS X (PowerPc/Intel pour 10.4+) (zip)
IP Range Tool 1.0alpha Linux (x86-based avec GTK+ 2.8+ glibc-2.4,libstdc++.so.6, CUPS) (zip)S’agissant du logiciel IP Range Tool, après téléchargement, aucune installation n’est à faire… juste dézipper puis lancer IP Range Tool 1.0.exe sur Windows/Linux et IP Range Tool.app sur Mac.
Le cas échéant, pour virer le logiciel, il suffit de glisser le dossier de l’application dans la corbeille.
Astrubal, le 26 février 2010
http://astrubal.nawaat.org/
www.nawaat.org
Si tu commence toi aussi a casser l’internet, on ne s’en sort plus.
Signé: Ta conscience
Bonjour,
primo au sujet du millier d’adresse internet qui visitent le site en clair et qui sont tous de la Tunisie.
Cela ne veut pas dire que qu’il y a 1000 connexions qui ont libre accès à partir de la Tunisie pour visiter tous les sites sans restrictions, mais vu que les connexions en Tunisie sont à adresse flottante il se peut que tout au plus une dizaine ou une vingtaine de site ai un libre accès, mais comme les adresses sont flottantes, à chaque connexion il leur est attribuée une nouvelle adresse d’ou le gonflement du nombre d’adresse pour un petit nombre de connexions réelles.
pour ce qui est de la connexion à travers un proxy anonyme opaque ou non, il faut savoir que la plupart des internautes avertis savent jongler avec les connexions de types tunnel crypté à 128 ou même 256 bits.
D’ailleurs webmaster dites moi de quel pays je me connecte , et ai-je recours à un proxy ?
bonjour
je cherche justement se genre de script a mettre pour mon site car trops de spammeur et deja 3 fois hacké donc il serai temps que je me mette :) mais la j’ai lus tout le resumé de ton script qui me plait bien mais les liens me donne des page 404 dommage pourrai tu faire le necessaire pour me le refiller stp je cherche pas a censurer juste a proteger car des heures de boulot
Bonjour Cris,
Désolé pour la rupture des liens, et merci d’avoir attiré notre attention.
Les liens sont désormais rétablis.
Bonne chance pour la protection de votre site.
Cordialement
Astrubal.