Portail / Sécurité informatique(Sommaire)

Géolocalisation d'une adresse IP.

Mise à jour du 09/09/2024.

La géolocalisation est l'action qui consiste à déterminer où se situe une adresse IP. Le whois donne des informations sur l'attributaire d'une adresse IP, sa durée de validité, son greffier (registrar), son mécanisme d'enregistrement, le chaînage éventuel des différents attributaires, etc.

Pourquoi est-il difficile d'obtenir des informations ?

L'enregistrement d'une adresse IP ou plus généralement d'une plage d'adresses IP se fait toujours par le biais d'un "greffier". Cet enregistrement est public. Le protocole qui permet de retrouver ces informations d'enregistrement se nomme whois. La recherche peut se faire par "registre de régions géographiques" (5 régions) ou par "registre de noms de domaine" (.com, .fr, etc.).

Chaque registre peut être vu comme une base de données. Mais chaque registre a son propre schéma de modèle de données car il n'existe pas de structure type de ce schéma. Il y a peu de chance qu'il y ait un jour une convergence des modèles. De plus, la protection des individus et des sociétés amènent à stocker de moins en moins d'informations dans ces base de données.

Enfin, chaque registre dispose de son propre serveur de données. Les mécanismes de liaison entre registres ne sont pas normalisés ce qui nuit aux capacités de renvoi d'un registre vers un autre. L'IETF face a ces limitations a émis avec la RFC 3981 un nouveau protocole (IRIS) mais il n'est actuellement pas mis en oeuvre par les registres et ne le sera probablement jamais.

Il ressort de tout ceci, qu'il est ardu d'obtenir des informations sur un domaine ou une adresse et encore plus d'unifier la présentation des ces informations.

La commande GNU whois.

Les système Linux dispose néanmoins d'une commande whois assez pratique pour obtenir des informations. Par exemple si l'on interrgoge le domaine free.fr, on obtient :

%%
%% This is the AFNIC Whois server.
%%
%% complete date format: YYYY-MM-DDThh:mm:ssZ
%%
%% Rights restricted by copyright.
%% See https://www.afnic.fr/en/domain-names-and-support/everything-there-is-to-know-about-domain-names/find-a-domain-name-or-a-holder-using-whois/
%%
%%

domain:                        free.fr
status:                        ACTIVE
eppstatus:                     clientUpdateProhibited
eppstatus:                     clientTransferProhibited
eppstatus:                     clientDeleteProhibited
hold:                          NO
holder-c:                      FS1435-FRNIC
admin-c:                       FS1435-FRNIC
tech-c:                        FS1435-FRNIC
registrar:                     SCALEWAY
Expiry Date:                   2025-12-23T11:20:00Z
created:                       1999-03-15T17:36:09Z
last-update:                   2024-02-24T04:23:08.309802Z
source:                        FRNIC

nserver:                       freens1-g20.free.fr
nserver:                       freens2-g20.free.fr
nserver:                       freens3-scw.free.fr
source:                        FRNIC

registrar:                     SCALEWAY
address:                       8, rue de la ville l'Eveque
address:                       75008 PARIS
country:                       FR
phone:                         +33.184130069
fax-no:                        +33.173502901
e-mail:                        frnic-admin@free.org
website:                       https://www.bookmyname.com
anonymous:                     No
registered:                    1999-03-29T00:00:00Z
source:                        FRNIC

nic-hdl:                       FS1435-FRNIC
type:                          ORGANIZATION
contact:                       Free SAS
address:                       16 rue de la ville l'Eveque
address:                       75008 Paris
country:                       FR
phone:                         +33.173502000
fax-no:                        +33.173502501
e-mail:                        26ec12896f4b2cdf.152599@spamfree.bookmyname.com
registrar:                     SCALEWAY
changed:                       2024-08-19T16:53:46.584497Z
anonymous:                     NO
obsoleted:                     NO
eppstatus:                     associated
eppstatus:                     active
eligstatus:                    ok
eligsource:                    REGISTRAR
eligdate:                      2024-08-19T16:53:46.584499Z
reachstatus:                   ok
reachmedia:                    email
reachsource:                   REGISTRAR
reachdate:                     2024-08-19T16:53:46.5845Z
source:                        FRNIC

>>> Last update of WHOIS database: 2024-09-09T15:16:42.562489Z <<<

Ainsi, Free contrairement à de nombreux fournisseurs n'est pas son propre greffier. Si on effectue une commande ping sur son 1er serveur de domaine, on obtient l'adresse 2a01:e0c:1:1599::22.

Une interrogation de cette adresse IP via la commande whois retourne :

% This is the RIPE Database query service.
% The objects are in RPSL format.
%
% The RIPE Database is subject to Terms and Conditions.
% See https://apps.db.ripe.net/docs/HTML-Terms-And-Conditions

% Note: this output has been filtered.
%       To receive output for a database update, use the "-B" flag.

% Information related to '2a01:e00::/26'

% Abuse contact for '2a01:e00::/26' is 'abuse@proxad.net'

inet6num:       2a01:e00::/26
netname:        FR-PROXAD-20080121
country:        FR
org:            ORG-PISP1-RIPE
admin-c:        ACP23-RIPE
tech-c:         TCP8-RIPE
status:         ALLOCATED-BY-RIR
mnt-by:         RIPE-NCC-HM-MNT
mnt-by:         PROXAD-MNT
mnt-routes:     PROXAD-MNT
mnt-domains:    PROXAD-MNT
created:        2008-01-21T14:17:01Z
last-modified:  2018-02-14T01:51:58Z
source:         RIPE # Filtered

organisation:   ORG-PISP1-RIPE
org-name:       Free SAS
country:        FR
org-type:       LIR
address:        16 rue de la Ville l'Eveque
address:        75008
address:        Paris
address:        FRANCE
phone:          +33173502000
fax-no:         +33173922555
admin-c:        ACP23-RIPE
admin-c:        TCP8-RIPE
mnt-ref:        PROXAD-MNT
mnt-ref:        RIPE-NCC-HM-MNT
mnt-by:         RIPE-NCC-HM-MNT
mnt-by:         PROXAD-MNT
tech-c:         TCP8-RIPE
remarks:        Pour les requisitions judiciaires/administratives, merci de contacter par fax le 33 1 73 92 25 55
abuse-c:        ACP23-RIPE
created:        2004-04-17T11:23:24Z
last-modified:  2020-12-16T12:45:25Z
source:         RIPE # Filtered

role:           Administrative Contact for ProXad
address:        Free SAS / ProXad
address:        8, rue de la Ville L'Eveque
address:        75008 Paris
phone:          +33 1 73 50 20 00
fax-no:         +33 1 73 92 25 69
remarks:        trouble:      Information: http://www.proxad.net/
remarks:        trouble:      Spam/Abuse requests: mailto:abuse@proxad.net
admin-c:        APfP1-RIPE
tech-c:         TPfP1-RIPE
nic-hdl:        ACP23-RIPE
mnt-by:         PROXAD-MNT
abuse-mailbox:  abuse@proxad.net
created:        2002-06-26T12:46:56Z
last-modified:  2013-08-01T12:16:00Z
source:         RIPE # Filtered

role:           Technical Contact for ProXad
address:        Free SAS / ProXad
address:        8, rue de la Ville L'Eveque
address:        75008 Paris
phone:          +33 1 73 50 20 00
fax-no:         +33 1 73 92 25 69
remarks:        trouble:      Information: http://www.proxad.net/
remarks:        trouble:      Spam/Abuse requests: mailto:abuse@proxad.net
admin-c:        APfP1-RIPE
tech-c:         TPfP1-RIPE
nic-hdl:        TCP8-RIPE
mnt-by:         PROXAD-MNT
created:        2002-06-26T12:29:10Z
last-modified:  2011-06-14T09:03:07Z
source:         RIPE # Filtered
abuse-mailbox:  abuse@proxad.net

% Information related to '2a01:e00::/26AS12322'

route6:         2a01:e00::/26
descr:          ProXad network / Free SAS
origin:         AS12322
mnt-by:         PROXAD-MNT
created:        2008-01-22T14:41:54Z
last-modified:  2008-01-22T14:41:54Z
source:         RIPE

% This query was served by the RIPE Database Query Service version 1.113.2 (DEXTER)

Si on exécute la commande whois sur d'autres registres (région ou domaine) on obtient des informations structurées différemment.

Les fournisseurs d'informations.

L'absence de standards de l'IETF à l'origine de la mise en place des premiers plans d'adressage se révèle être une des plus grande faille de sécurité de l'Internet. Cela a ouvert la voie à l'anonymat et donc à a possibilité pour de nombreuses personnes ou organisations indélicates d'entreprendre des tentatives de piratage ou d'usurpation sans vraiment prendre de risque.

Or la première des protections passe par un filtrage efficace des adresses IP illicites. De nombreuses sociétés de sont engouffrées dans ce créneau et proposent des mécanismes simples d'obtention d'informations soit de géolocalisation soit de structure organisationnelle associée à une adresse IP. Bien entendu ces sociétés se font rénumérer car le ratissage systèmatique et continu des millions d'adresses de l'Internet est une charge conséquente. De plus elles doivent user de moyens d'enquête non tous techniques pour obtenir leurs informations. Leur tarif dépend donc du nombre d'informations souhaité et du nombre de requêtes de gélolocalisation ou d'interrogation organisationnelle sur une période donnée (généralement le mois).

Pour un faible nombre de requêtes mensuelles ainsi qu'un faible nombre d'informations, il est possible d'obtenir un "abonnement" gratuit. Nous citerons deux organisations offrant cette possibilité :

  1. IPHunter.info (Espagne) ;
  2. IP2Location.io (Malaysie).

Ces deux organisations proposent en plus des informations de géolocalisation de préciser si l'adresse IP est celle d'un proxy (dans la version payante cela peut aller plus loin avec VPN et autres technologies).

Nous avons retenu ces deux organisations car elles proposent une forme assez proche de requête HTTP basée sur un identifiant ou "clef d'API" délivrée une fois la souscription réalisée. Cela permet d'utiliser toute sorte de programmes et scripts pour interroger le fournisseur (commande curl par exemple).

Exemple de mise en oeuvre.

Le programme ipl est chargé d'effectuer l'interrogation d'un fournisseur donné et d'afficher le résultat à la console. Quel que soit le fournisseur, les informations présentées sont soit les mêmes, soit absentes. Ce programme est un programme console C++ développé sur la base de l'infrastructure Qt 6.7.2.

Principe succinct du programme.

Lorsque les interrogations se font via une requête HTTP, il est aisé d'écrire un programme capable de s'adapter facilement au fournisseur considéré. C'est ce que fait le programme ipl.

Le programme s'appuie sur une librairie dynamique iplocation ainsi qu'une autre qui implémente les spécificités du founisseur interrogé. La librairie iplocation fournit une classe nommée IpDetail chargée de recenser les informations à retourner au code qui a lancé l'interrogation. Cette classe permet de s'abstraire de la représentation choisie par un founisseur donné. Le fichier d'en-têtes de cette librairie (iplocation.hpp) comporte la définition de deux classes qu'elle n'implémente pas : IProvider et ProviderFactory.

Ces deux classes doivent être implémentées par la librairie spécifique au fournisseur. Cela oblige donc cette dernière à référencer pour chargement la librairie iplocation.

La classe ProviderFactory permet d'instancier la classe du fournisseur dérivée de IProvider. Cette dernière classe est fournit au programme principal l'URL d'interrogation du founisseur et permet de convertir le résultat en une instance de la classe IpDetail.

Lancement du programme.

Le programme nécessite 3 paramètres :

  1. lib=  nom du fichier qui contient la librairie spécifique au fournisseur ;
  2. init=  liste des paramètres nécessaires à l'initialisation du fournisseur ou à l'élaboration de la requête ; Ces paramètres sont une liste de propriétés séparées par des points-virgules. Le caractère séparateur entre le nom de la propriété et sa valeur est le double-point.
  3. ip=  adresse IP à interroger.

L'installation consiste à placer sur un chemin référencé par le système comme chemin des librairies la librairie iplocation, la librairie jmp(>= 1.0.7). L'exécutable ipl, quant à lui, doit être placé sur un chemin référencé par la variable PATH.

Voici un exemple de lancement de la commande sous Linux :

/usr/sbin/ipl lib=/usr/lib/x86_64-linux-gnu/libip2location.so.1.0.0   \
              init=key:{cf. compte IP2Location}  \
              ip=8.216.90.1

Voici la réponse affichée :

                 IP : 8.216.90.1
               Pays : Japan [JP]
             Région : Tokyo
        Code postal : 214-0021
              Ville : Tokyo
        Coordonnées : (35.689500°, 139.692320°)
       Attributaire : Alibaba US Technology Co. Ltd.
                ASN : 45102
Niveau de confiance : probable

Rédaction par Jean-Marie Piatte (1983-2021)