• 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).

animated-IP-filter.gif

– 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 => Navigateur

Pour 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.


IP Range Tool main window
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.





IP Range Tool getting country IP
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.

IP Range Tool Search by ISO Code
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.

IP Range Tool Batch converter

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é.




IP Range Tool Single converter

Pour gérer individuellement des conversions, n’hésitez pas à cliquer sur le menu “Tool>Single converter…”


LiteIpFilterDownload.jpg

1 – Pour télécharger “Lite IP Filter” (le script php de filtrage d’IP) : Lite-ip-filter_1.0.zip (zip).

 
 

IP-rangetool-download.jpg

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