Journal libloc, l'alternative à GeoIP/GeoLite

Posté par  . Licence CC By‑SA.
42
17
août
2020

J'avais abordé en janvier dernier le changement de licence de la base de données GeoIP, très utilisée pour trouver à quel pays correspond une adresse IP. Les développeurs du pare-feu IPFire annoncent avoir développé leur propre alternative : libloc. Ce journal est un résumé de leur billet de blog sur le sujet complété par des informations trouvées sur le forum. Je ne suis pas spécialiste du sujet, mais je me dis que ce genre d'outil peut intéresser les développeurs qui trainent sur LinuxFr.

GeoLite et GeoIP

Maxmind est une entreprise américaine qui fournit des bases de données de géolocalisation d'adresses IP :

  • GeoLite est une base de données gratuite, sous licence libre jusqu'à novembre 2019. C'est celle qui est utilisée dans le paquet Debian geoip-database.
  • GeoIP est une base de données payante et plus précise. En option, on peut ajouter les adresses IP "anonymes" (proxys, VPN, noeuds Tor), le type d'utilisateur (gouvernement, entreprise, particulier…), l'ISP et les domaines associés.

Hors sujet : si on utilise GeoIP Precision Insights Service uniquement accessible via l'API en ligne, et si l'IP recherchée est aux Etats-Unis, on a le droit à la densité de population et… au revenu moyen des habitants du code postal associé. Parfait pour les publicités ciblées.

Développement d'une alternative libre

L'équipe d'IPFire a commencé à développer une alternative à GeoIP pour plusieurs raisons :

  • GeoLite, auparavant sous licence Creative Commons, n'est plus sous licence libre. Il faut s'enregistrer pour pouvoir l'utiliser.
  • GeoLite n'est pas de bonne qualité, probablement pour encourager les utilisateurs à acheter GeoIP.
  • Maxmind n'indique pas de quelle manière la base de données est générée, ce qui peut poser des problèmes de sécurité si cette base de données sert pour établir des règles de filtrage.

Naissance de libloc

Début août, l'équipe d'IPFire annonce la sortie de libloc v1.0. C'est une bibliothèque écrite en C sous licence GPLv2 associée à une base de donnée qui donne pour chaque IP :

  • le pays
  • l'Autonomous System
  • si elle est associée à un proxy anonyme, un réseau anycast ou un fournisseur d'internet par satellite

Comme IPFire va utiliser libloc pour faire des règles de filtrage du pare-feu, il est important que la base de donnée soit non altérable. L'équipe d'IPFire l'a donc signée.

Pour construire la base de données, l'équipe d'IPFire a utilisé les données publiques des RIR, les annonces BGP. Certaines entrées ont été manuellement corrigées : "les réseaux indiquant être aux Etats-Unis pour contourner les restrictions géographiques des pare-feux, les proxys anonymes, les réseaux satellites et les services anycast" indique un développeur.

Le site location.ipfire.org permet de tester libloc avec une IP et de voir si cette IP est inscrite chez un fournisseur de liste noire (blocklist.de, spamhaus.org…). Des modules Python et Perl sont disponibles pour utiliser libloc dans des programmes existants.

  • # l'Autonomous System

    Posté par  . Évalué à 5 (+6/-3).

    l'Autonomous System

    C'est quoi?

    Désolé pour la question conne…

  • # licence de la base de données?

    Posté par  (site Web personnel) . Évalué à 4 (+4/-2). Dernière modification le 18/08/20 à 08:17.

    GeoLite, auparavant sous licence Creative Commons, n'est plus sous licence libre.

    Autant je trouve le source pour la partie logicielle de libloc, autant je n'arrive à trouver ni la base de données elle-même ni sa licence, alors que c'est justement le plus important dans le projet (le logiciel est pas le plus difficile à refaire…)
    Tu as des sources la dessus?

  • # Licence

    Posté par  . Évalué à 10 (+8/-0).

    C'est une bibliothèque écrite en C sous licence GPLv2

    J'étais surpris et en vérifiant c'est du LGPLv2.1.

  • # Usage

    Posté par  . Évalué à 1 (+4/-5).

    au revenu moyen des habitants du code postal associé. Parfait pour les publicités ciblées.

    En même temps ça sert à quoi ce genre de trucs à part :

    • profilage des utilisateurs
    • créer des services non-neutres
    • [^] # Re: Usage

      Posté par  (site Web personnel) . Évalué à 4 (+2/-0).

      C’est pratique pour la modération d’un forum, ça élargit le faisceau d’indices pour savoir si un compte est légitime ou non.

      La connaissance libre : https://zestedesavoir.com

      • [^] # Re: Usage

        Posté par  . Évalué à 4 (+3/-1).

        Et c'est pas du profilage ?

        • [^] # Re: Usage

          Posté par  (site Web personnel) . Évalué à 2 (+1/-1).

          Tout dépend de ce que tu appelles « profilage » et de comment tu t’en sers. Ça peut très bien être une simple info ajoutée dans la section visible uniquement par les modérateurs du profil utilisateur.

          La connaissance libre : https://zestedesavoir.com

        • [^] # Re: Usage

          Posté par  . Évalué à 1 (+2/-3).

          Si.

          • Y.
    • [^] # Re: Usage

      Posté par  . Évalué à 3 (+2/-0).

      Bonjour,

      Je vois au moins 2-3 cas d'utilisations intéressantes et non-néfastes (pas comme le télédémarchage et la publicité ciblée)
      Parfois quand on fournit de la donnée, et que ces données émanent de programmes de recherches payés par des tiers (les contribuables, l'UE (et donc: les contribuables ) ) il peut être intéressant/imposé de montrer que ces données sont réellement accédées, et par qui (états/régions) et dans quelle proportion.
      Pour se prémunir d'attaques/trolls/spammers: par exemple si subitement des dizaines de demandes de création de comptes sur un certain forum francophone parviennent d'un même pays non francophone il est permis d'avoir quelques doutes.

      Mais c'est sûr qu'une autorité malveillante et coercitive y verra aussi un tout autre intérêt, pour filtrer/tracer les connections sortantes par exemple.

      • [^] # Re: Usage

        Posté par  . Évalué à -2 (+1/-5).

        Tu décris un objectif de non-neutralité. Pour rappel :

        le droit des utilisateurs « d’accéder aux informations et aux contenus et de les diffuser, d’utiliser et de fournir des applications et des services et d’utiliser les équipements terminaux de leur choix, quel que soit le lieu où se trouve l’utilisateur final ou le fournisseur, et quels que soient le lieu, l’origine ou la destination de l’information, du contenu, de l’application ou du service, par l’intermédiaire de leur service d’accès à l’internet ».

        C'est moi qui graisse. Tiré de l'arcep.

        Je suis d'accord qu'on peut trouver des raisons de le mettre en place.

        • [^] # Re: Usage

          Posté par  (site Web personnel) . Évalué à 5 (+4/-1). Dernière modification le 18/08/20 à 12:32.

          Tu parles d'ARCEP, qui est sur les communications (pour accéder au site: "acheminement de tous les flux d’information" écrit clairement sur la page citée), pas les sites visés qui ont d'autres contraintes légales.
          Sinon, ça serait utilisable contre les vendeurs de contenu qui bloquent ou font des prix différents par pays… Ou les gestionnaire de calcul de risque qui bloquent des cartes suivant critères x ou y.

          PS : je ne dis pas que c'est bien ou mal, juste que c'est hors sujet.

          • [^] # Re: Usage

            Posté par  . Évalué à 3 (+1/-0).

            Ah bien vu. Je ne l'avais pas vu comme ça.

    • [^] # Re: Usage

      Posté par  . Évalué à 7 (+5/-0). Dernière modification le 18/08/20 à 13:24.

      En même temps ça sert à quoi ce genre de truc

      J'ai vécu longtemps avec mon FAI (OVH pour ne pas le citer) qui avait récupéré des adresse Russes. Le nombre de sites qui posait problème parce qu'ils n'était pas à jour avec ça c'était vraiment super chiant. Il y avait une entrée du forum OVH dédiée à ce style de problème, des messages type à envoyer aux webmestres, parfois (souvent en fait) OVH tentait d'intervenir… mais c'était juste chiant.

      Pitié, n'utilisez pas une adresse IP pour géolocaliser :
      - c'est faux (une IP Russe était en fait Française)
      - c'est faux (en parallèle je passais par un VPN sur un serveur dédié français pour utiliser mon abonnement MyCanal depuis Espagne et Portugal avant que la loi n'impose d'ouvrir le service à l'Europe entière)

      En théorie, la théorie et la pratique c'est pareil. En pratique c'est pas vrai.

      • [^] # Re: Usage

        Posté par  . Évalué à 1 (+0/-0).

        Le problème c'est surtout que, dans ton cas, la base de données n'etait pas à jour. En soit, la localisation de la connexion d'origine (par son adresse IP ou autre) joue quand même un role dans la pondération permettant de classer une requete comme "sympa" ou "méchante".

        • [^] # Re: Usage

          Posté par  . Évalué à 0 (+1/-3). Dernière modification le 20/08/20 à 11:30.

          Donc les Russes sont "méchants" et les Français "sympas" ?

          En théorie, la théorie et la pratique c'est pareil. En pratique c'est pas vrai.

    • [^] # Re: Usage

      Posté par  . Évalué à 1 (+0/-0).

      Dans IPFire, libloc sert à:
      - créer des règles de pare-feu. Par exemple, autoriser les connexions ssh uniquement depuis des IP françaises
      - afficher le pays associé aux adresses IP des logs et du tableau des connexions établies
      - faire des statistiques sur la provenance des paquets bloqués

    • [^] # Re: Usage

      Posté par  . Évalué à 5 (+2/-0).

      Si un utilisateur est connecté à la fois deux endroits distincts, c'est un indice que son compte est compris.

      « Rappelez-vous toujours que si la Gestapo avait les moyens de vous faire parler, les politiciens ont, eux, les moyens de vous faire taire. » Coluche

      • [^] # Re: Usage

        Posté par  (site Web personnel) . Évalué à 3 (+1/-0).

        Ou qu'une des deux connexions utilise un VPN.

        • [^] # Re: Usage

          Posté par  . Évalué à 4 (+1/-0).

          Ou que la base de donnée n'est pas à jour ou que tu es connecté en 4G à l'étranger (et tu as une IP de ton opérateur GSM de ton pays) et que tu es connecté par un ADSL local aussi. C'est pour ça que je dis que c'est un indice. Qu'il faut corrélé avec d'autres informations.

          « Rappelez-vous toujours que si la Gestapo avait les moyens de vous faire parler, les politiciens ont, eux, les moyens de vous faire taire. » Coluche

    • [^] # Re: Usage

      Posté par  . Évalué à 7 (+5/-0).

      profilage des utilisateurs

      dit autrement : Faire des jolies stats d'accès à son site par pays

      créer des services non-neutres

      dit autrement : Bloquer les bots (IP cloud providers), les crackers russes et chinois.

      Mais aussi :

      • proposer une localisation par défaut, sur une carte par exemple.
      • proposer une langue par défaut, ou une monnaie).
      • appliquer une réglementation locale (GDPR, âge légale, etc.)
      • rediriger vers une instance plus proche pour une navigation plus fluide

      Oui, ça sert beaucoup en fait.

      • [^] # Re: Usage

        Posté par  . Évalué à 2 (+2/-1).

        • proposer une localisation par défaut, sur une carte par exemple.
        • proposer une langue par défaut, ou une monnaie).
        • appliquer une réglementation locale (GDPR, âge légale, etc.)
        • rediriger vers une instance plus proche pour une navigation plus fluide

        Ce n’est pas un peu une super mauvaise pratique de faire ça de manière transparente, sans que ce ne soit visible dans l’URL ?

        Je pense qu’une structure de site/CMS/cequevousvoulez en URL/<locale>/<page(s)> me semblerait vachement plus adaptée (par exemple : https://linuxfr.org/fr-fr/oh-oh-le-bel-article-d-extremiste-du-libre).

        Les avantages que j’y vois :
        - la version de chaque pays pourrait être fournie par les moteurs de recherche ;
        - l’utilisateur pourrait modifier ses préférences de localisation directement dans l’URL (on ne navigue pas tous en anglais avec bascule en Français pour troller sur LxFR  ;-) ) ;
        - fourni la majorité des informations de localisation, langue, monnaie, réglementation… (je ne suis pas trop au fait des écarts possibles de réglementation dans les pays fédéraux type l’Allemagne ; et ça ne couvre pas les problèmes genre pour les ouïghours qui sont fortement incités à faire tout bien comme leur pouvoir/oppresseur de tutelle…) ;
        - explicit is better than implicit…

        • [^] # Re: Usage

          Posté par  . Évalué à 4 (+2/-0). Dernière modification le 28/08/20 à 10:32.

          Ce n’est pas un peu une super mauvaise pratique de faire ça de manière transparente, sans que ce ne soit visible dans l’URL ?

          Ta proposition traite seulement de la langue et ne répond pas à "proposer par défaut". Les autres points que tu rappelles en citation me semble difficilement adressables par URL.

          L'idée d'utiliser la géolocalisation basée sur l'IP est justement que pour une seule et même URL du genre 'https://monsupersite.tld/', toute une combinatoire de choix (localisation, langue, monnaie, réglementation, instance plus proche) s'appliquent à l'utilisateur sans qu'il n'ait besoin de tout configurer.

          Donc pour "proposer une langue par défaut", la geolocalisation par IP est complémentaire : tu dirige le visiteur vers une "//" que tu penses être la bonne, libre à lui de la changer, par exemple avec un menu popup avec des drapeaux, un classique.

Envoyer un commentaire

Suivre le flux des commentaires

Note : les commentaires appartiennent à ceux qui les ont postés. Nous n’en sommes pas responsables.