banip

Banip est un plugin simple de lutte contre le spam dans les forums SPIP. Il est basé sur le bannissement de groupe d’adresse IP.

Depuis quelque temps des messages de SPAM pullulent sur le site montbouge.info. Définitivement les king@yahoo.com avec leur Replica Watches, blogerit@gmail.com avec leur WOW GOLD ou encore le fameux test@test.com ne sont pas mes amis.

Ces messages sont postés depuis Hong Kong, la Chine, le Japon ou l’Ukraine en anglais ou en langue asiatique, à mille lieues de montbouge, webzine d’information locale sur Montrouge et ses environs.

Décidé à sauvegarder la bonne humeur des forums de montbouge :o)
... je me suis attelé à cette tâche. Compte tenu de la constatation faite sur la provenance des messages et que la catégorie Antispan de spip-contrib de répondait pas à mes besoins, voici banip.

banip

Banip est un plugin de lutte contre le spam dans les forums SPIP. Il est basé sur le bannissement de groupe d’adresse IP et de mail. Assez rudimentaire, il faut ajouter à la main les adresses à bannir dans des fichiers texte, l’avantage et qu’il n’utilise pas la base de données.

En test depuis le 11 octobre 2008 sur montbouge il se montre efficace. Sa limite étant que les adresses sont saisies à la main dans le fichier. Heureusement, les adresses ne sont pas comparées directement mais par rapport à un groupe d’adresse c’est-à-dire 61.144.83.214 est dans 61.144.83.0 .

Si comme dans l’exemple ci-dessus l’adresse IP est bannie, une simple page HTML, expliquant ce fait, est renvoyée en lieu est place du forum avec le nouveau message posté.

Initialiser les données
Un script python qui m’a permis d’initialiser le fichier d’adresses IP bannies est disponible document attaché.

Mise à jour de banip

La version 0.3 sortie en février 2009 ajoute le bannissement de mail, fini les test@test.com ! Pour sa configuration, j’utilise maintenant le plugin CFG.

La version 1.1 sortie en novembre 2009 utilise une nouvelle méthode pour tester l’appartenance d’une adresse IP à un réseau. L’algorithme a été trouvé dans le PHP MANUAL, sur la page de la fonction ip2long. Il faut maintenant utiliser la notation CIDR dans le fichier ip_black_list.txt. Voir CIDR et Adresse IPv4 pour le détail de la notation.

banip ne fonctionne que pour SPIP version 1.9.2

Un autre plugin

Un nouveau plugin est sorti en novembre 2008, il est disponible sur spip-contrib.net NoSPAM

S’il partage des buts communs avec banip, il ne fonctionne pas de la même manière et nécessite SPIP 2.0

banip v0.3
Le plugin à télécharger. Version 0.3 de février 2009
banip v0.2
Le plugin à télécharger.
Logo No Spam
Source du logo en svg.
get_ip.py
Script python pour initialiser la liste noire d’IP.
banip v1.1
22 commentaires
  • banip 15 novembre 2008 14:29, par jpm

    test@test.com me gave sérieux.... comment puis-je utiliser ton mega-super-genial plugin ?
    merci et ultra merci d’avance !

    jp

  • banip 15 novembre 2008 22:25, par Benoit

    Bien sûr ! Il est mis à disposition pour ça.

    banip s’installe comme n’importe quel plugin spip.
    Je te renvois à la doc officielle : spip.net - Installer un plugin

    Le fichier ip_black_list.txt fournis dans l’archive comporte de nombreuse IP qui m’ont embêtées. A toi d’en rajouter si des messages passent au travers du filtre. L’activité du plugin est visible dans le fichier de log tmp/plugin_banip.log

    Voilà, cette version 0.2 n’est pas très évoluée mais j’espère qu’elle te rendra service.

    Benoît

  • banip 17 janvier 2009 06:08, par delorimier

    Il me semble avoir configuré correctement.

    Je reçois ce message dans l’interface du plugin :

    Warning : file() [function.file] : URL file-access is disabled in the server configuration in [...monsite]/htdocs/plugins/interdire_ip/exec/interdire_ip.php on line 113

    Warning : file(http://api.hostip.info/get_html.php?ip=&position=true) [function.file] : failed to open stream : no suitable wrapper could be found in [...monsite]/htdocs/plugins/interdire_ip/exec/interdire_ip.php on line 113

    lignes 111-115 de ce fichier :

    /*ou $no_ip=getenv("HTTP_X_FORWARDED_FOR") ;*/
    $hostip= "http://api.hostip.info/get_html.php?ip=$no_ip"."&position=true" ;
    $result = file($hostip) ;echo $ip," - " ; echo $result[0] ;echo $result[1] ;echo $result[2] ; echo $result[3] ;
    echo fin_cadre_trait_couleur(true) ;
    echo fin_page(true) ;

  • banip 17 janvier 2009 06:12, par delorimier

    Désolé, je suis dans le mauvais forum ! Il s’agit du plugin "interdire_ip" (contrôle des ip)

    http://www.plugandspip.com/?Bloquer-les-IP-s

  • banip 10 mars 2009 23:04, par LMD

    hum ...
    je viens d’installer la 0.3, en cliquant sur "Configuration de banip" j’ai une page :

    Erreur...
    Fichier exec/cfg introuvable

    C’est normal docteur ?

    PS : je suis en SPIP 1.9.2g

    • banip 10 mars 2009 23:32, par LMD

      en fait je crois qu’il suffit d’ajouter dans la doc que le plug-in CFG doit être installé aussi ...

      • banip 11 mars 2009 08:52, par Benoît LAURENT

        Bonjour,

        C’est vrai l’utilisation de CFG n’est pas clairement spécifié même si cela apparait dans les fichiers modifications.txt et plugin.xml .

        Un autre point est l’existence d’un fichier de log ou sont tracé les actions de banip :
        ./tmp/plugin_banip.log

        N’hésitez pas à laisser votre adresse mail si vous voulez que je vous contacte, il n’apparaitra pas sur le site.

        Benoît

        • banip 25 mars 2009 19:58, par lmd

          Effectivement, intéressant ce ./tmp/plugin_banip.log !

          Petite question : j’ai le fichier ip_black_list.txt classique, avec :

          ...
          59.156.0.0
          59.157.0.0
          ...

          Or aujourd’hui j’ai eu des posts de 59.156.7.21 et 59.156.7.36. Ils n’auraient pas du être filtrés ?

          Sinon le top pour une future version serait l’edit de ces fichiers via navigateur ...

          Merci, @+

          • banip 26 mars 2009 09:22, par Benoît LAURENT

            Je suis désolé de vous apprendre que mon plugin est plus bête que vous pensez.

            Aujourd’hui il supprime la dernière partie de l’IP et ensuite compare avec celle du fichier. On peut faire mieux, c’est sûr ! (je pense que c’est a ma porté)

            Édition directe des fichiers de black list depuis le navigateur je ne sais pas comment on fait. J’avais pensé à des boutons bannir l’IP, bannir l’email côté gestion des forum, je ne sais pas comment faire non plus.

            Merci d’utiliser le plugin et de faire des retours.

            • banip 26 mars 2009 23:23, par LMD

              Je suis désolé de vous apprendre que mon plugin est plus bête que vous pensez.

              il est très très bien.

              Aujourd’hui il supprime la dernière partie de l’IP et ensuite compare avec celle du fichier.

              Soit. Alors que faut-il mettre dans le fichier pour bloquer une IP comme 59.156.7.21 ? 59.156.0, 59.156, ?

              J’avais pensé à des boutons bannir l’IP, bannir l’email côté gestion des forum, ...

              non non, juste un truc hyper simple, la possibilité de faire un edit du fichier pour y coller une ip ou un mail, ce serait déjà top.

              • banip 27 mars 2009 10:18, par Benoît LAURENT

                Merci pour le compliment.

                Dans ip_black_list.txt vous pouvez mettre 59.156.7.21 ou 59.156.7.0 pour vous rappeler que ce seront toutes les adresses commençant en 59.156.7.* qui serons bloquées. La notation correcte possible est je crois 59.156.7.0/24 i.e. masque de sous réseau 255.255.255.0

  • banip 28 octobre 2009 16:29, par Julius

    Bonjour,

    Je voudrais juste signaler que ce plugin ne fonctionne (malheureusement) pas avec SPIP 1.9.2g...

    • banip 28 octobre 2009 21:47, par Benoît LAURENT

      Bonjour Julius,

      Cela m’étonne ... banip a été développé fin 2008 et utilisé pendant un bon moment. La 1.9.2g date de décembre 2008.

      Quels sont les symptômes ?

      Tu peux laisser ton adresse mail, dans le champ prévu à cet effet, si tu souhaites que te contacte. (elle ne sera bien sûr pas affichée sur le site)

      Benoît

      • banip 29 octobre 2009 15:33, par Julius

        Bonjour Benoît,

        Merci beaucoup pour ta réponse rapide !

        Bon finalement comme souvent le problème venait de l’utilisateur (c’est à dire moi) !
        Je faisais le test avec ma propre adresse ip, et je pouvais continuer à poser des messages par ce que j’étais authentifié !
        Dès lors que je me suis déconnecté, le filtrage a fonctionné :)

        En tous cas merci encore à toi !

        Pour revenir à ce que disait LMD, le filtrage avec .0.0 à la fin ne fonctionne pas, on ne peut filtrer que la dernière partie de l’adresse ip avec .0

        Pour contourner cette limitation, je me suis permis cette petite modification du fichier banip.php (ligne 23) :

        function bannirIp($ip)

        $ip_group1 = substr($ip, 0, - 1 * (strlen($ip)- strrpos($ip, ’.’))) ;

        $ip_group = substr($ip_group1, 0, - 1 * (strlen($ip_group1)- strrpos($ip_group1, ’.’))) ;

        $pos = strpos(file_get_contents(_DIR_PLUGIN_BANIP.’ip_black_list.txt’), $ip_group) ;

        //spip_log("banip - Position IP, $ip_group : $pos", "plugin_banip") ;

        return $pos === false ? false : true ;

        Avec ceci on peut désormais filtrer, pour reprendre l’exemple de LMD, toutes les ip commencant par 59.156 en entrant dans le fichier .txt "59.156.0.0"

        Qu’en penses-tu ?

        Encore bravo pour ton boulot Benoit !

        • banip 29 octobre 2009 22:12, par Benoît LAURENT

          Bonsoir,

          Merci pour ta proposition d’amélioration.

          Qu’en penses-tu ?

          Le problème est que la comparaison qui suit ne tient pas compte du nombre de zéros saisis et donc se fait toujours sur les deux premières parties de l’IP.

          Idéalement, il faudrait tester si l’adresse IP est dans un sous-réseau donné et utiliser les notations CIDR dans le fichier ip_black_list.txt (i.e. 192.168.0.0/24)

          Il y a des pistes sur cette page : PHP : ip2long - Manual
          Et plus particulièrement cette entrée : 28-Jul-2009 10:41

          Si ça te tente ;-)

          Benoît

          • banip 30 octobre 2009 02:15, par Julius

            Malheureusement je n’ai pas les connaissances nécessaires pour m’atteler à ce genre d’exercice ! Au premier abord ça a l’air simple mais dès qu’on se penche un peu sur la question ça ne l’est plus du tout (en tous cas pour moi) !

            Le problème est que la comparaison qui suit ne tient pas compte du nombre de zéros saisis et donc se fait toujours sur les deux premières parties de l’IP.

            En effet, je viens de voir ça :/

            Bon c’est un peu radical comme filtrage mais j’ai l’impression que pour le moment ça répond à mon besoin !

            Bonne continuation à toi et merci une fois de plus !

            • banip 2 novembre 2009 09:10, par Benoît LAURENT

              J’ai implémenté ce dont je parlais au dessus. Attention, cette version est très peu testée ! Merci pour les retours. Benoît

  • banip 2 janvier 2010 18:37, par Petarel

    Bonjour,
    Je pense que Banip est exactement ce dont j’ai besoin : j’ai fait un site "genre" pétition qui demande de donner sa position sur un point, mais qui s’adresse à assez peu de monde et on a des visites de farfelus, toujours en adresses "yopmail".

    J’ai essayé de mettre dans la liste de mail "blacklistés" : *@yopmail.com et simplement @yopmail.com, mais les farfeluteries continuent de passer.
    Je ne sais pas comment mettre la troncature pour interdire tous les messages en yopmail.
    Quelqu’un peut m’aider ? Merci !!!
    Pétarel

    • banip 2 janvier 2010 21:56, par Benoît LAURENT

      Merci pour le message.

      Non il ne sait pas faire. Regarder les adresses IP correspondantes, si elles sont toujours dans le même groupe, vous pouvez utiliser le filtrage par adresse.

      Ce plugin évolue suivant les demandes, mais je ne peux pas promettre d’implémenter cette fonction. Si vous avez la possibilité de le faire, n’oubliez pas de partager.

      Benoît

  • banip 19 avril 2010 13:46, par jmax

    fonctionne bien chez moi. Il faudrait juste un sujet_black_list.txt pour supprimer sur le titre du message et ainsi virer "RFID - INES La police totale" qui fait des ravages sur les forums spip

  • banip 20 avril 2010 08:55, par Benoît LAURENT

    Merci pour ce message, ça fait plaisir de savoir que ce plugin est encore utile !

    L’ajout d’un contrôle du sujet est envisageable, mais je ne crois pas pouvoir l’ajouter rapidement. Si tu as la possibilité de le faire avant moi, merci de partager !

    Benoît

  • banip 19 janvier 2011 21:31, par Benoît Laurent

    Je viens de découvrir en même temps le site http://stats.spip.org/ et par les statistiques d’utilisation des plugin que banip est aujourd’hui utilisé sur 28 site ! Il y a encore environ 30% des sites SPIP qui tournent sur la version 1.9 concerné par par ce plugin.

 
A propos de INTRW

Journal web de Benoît LAURENT, entre photos, voyages et logiciels libres selon les périodes.

Fils de nouvelles RSS
Thèmes