Localiser des adresses ip

Localiser des adresses ip

Vous savez tous, qu’il existe des sites internet permettant à partir d’une ip de connaitre sa localisation à minima, le pays, voir la ville…. avec une certaine incertitude)

Il est probable que vous en avez déjà utilisé un comme : https://whatismyipaddress.com/ip-lookup

Mais imaginez que vous avez 2000 ip dans un fichier et que vous souhaitez toutes les localiser : on ne va pas faire ça par copier/coller sur ce site web !

Non, on va récupérer la base mondiale de localisation des ip (elle change tout le temps) et l’interroger

Maxmind met à disposition depuis … bien 20 ans, une base de données mondiale pour cela. Avant son usage était totalement libre et gratuit. Je pense qu’ils se sont fait débordés par la demande car ce n’est plus tout à fait le cas  il existe maintenant :

  • un accès payant illimité
  • un accès gratuit aux API (méthode qui ne demande aucune installation) mais limité à 100 IP par jour
  • un accès gratuit au téléchargement de leur base de données (moyennant inscription)

La base de données est dans un format très connu et de multiples bibliothèques existent pour l’utiliser donc on va faire cela.

Ce qu’il faut faire :

  1. Créer un compte pour obtenir les accès à GeoLite2 : https://www.maxmind.com/en/geolite2/signup
  2. Remplissez le formulaire sans crainte : pas de demande de CB, et ce qu’ils vous demandent en plus de votre email est d’expliquer un peu votre projet.
  3. Vous allez recevoir un email avec un lien, ouvrez-le
  4. La page qui s’ouvre vous demande de choisir votre mot de passe, faites-le
  5. Connectez vous et sur la page des clés, demandez la création d’une clé d’authentification, vous obtiendrez un numéro de compte (AccountID) et une clé(Key), notez-les.
  6. Téléchargez et installer sur votre serveur linux préféré geoipupdate : apt-get (ou dnf) install geoipupdate
  7. Ouvrez le fichier /etc/GeoIP.conf et mettez-y aux endroits indiqués votre votre compte et votre clé

Petites vérifications : est-ce que ça fonctionne ?

Faites la commande suivante pour trouver où le programme a été installé, il est surement dans /usr/bin/ mais ça dépend de votre distribution, alors pour être sûr…)

whereis geoipupdate

Lancez-le (si c’est bien dans /usr/bin, ça donne)  :

sudo /usr/bin/geoipupdate

Il s’est écoulé quelques secondes et rien ne s’est affiché : c’est bon signe

Maintenant vous devriez avoir 2 bases de données qui ont été téléchargées :

  • /usr/share/GeoIP/GeoLite2-Country.mmdb
  • /usr/share/GeoIP/GeoLite2-City.mmdb

Faites un petit “ls” pour vérifier

Comme ça fonctionne, et que cette base de données est mise à jour par maxmind 1 fois par semaine, on met un petit script en crontab pour le lancer 1 fois par semaine :

sudo crontab -e
* * * 1 * /usr/bin/geoipupdate > /dev/null 2>&1

Bravo : vous avez la base de données de localisation des IP qui sera mise à jour régulièrement.

Comment s’en servir ?

L’utilisation de cette base de données est possible dans une foule de langages. Mais comme python a le vent en poupe, voici un exemple pour python3 :

Il faut installer la bibliothèque qui va bien (python3-geoip2)

apt-get (ou dnf) install python3-geoip2

La méthode est simple et très rapide !

  1. import de la bibliothèque : import geoip2.database
  2. stocker le chemin vers la base de données : geodbfile=”/usr/share/GeoIP/GeoLite2-Country.mmdb”
  3. créer l’objet qui va lire la base de données : reader = geoip2.database.Reader(geodbfile)
  4. pour chaque ip, exécuter : response = reader.country(ip)
  5. pour chaque ip lire le résultat dans response : print(format(response.country.iso_code))

Voici, en téléchargement un script python “getipcountry.py” que j’ai réalisé il y a quelques années, on l’utilise ainsi , en quelques secondes, vous aurez la localisation de plusieurs centaines d’ip !

python3 getipcountry.py infile outfile

infile est un fichier contenant une liste d’ip (une ip par ligne)

outfile est le résultat  : 1 ligne par ip, chaque ligne contient l’ip suivi par “:” puis le code ISO du pays.

Vous avez réussi ! Bravo, maintenant vous allez pouvoir découvrir où sont localiser les ip des serveurs qui vous veulent du mal ! Oui, tout ces petits pirates et autres entités obscures qui veulent faire tomber votre serveur dédié ou votre petit raspberry !

Bon, ok, vous aurez où l’ip de l’attaquant sera localisée, on sait tous que ce peut-être un autre pays grâce aux VPN. Ce n’est pas grave, vous saurez alors qu’elle est le pays préféré pour ces pirates qui veulent se cacher !

Evidement, cela n’apporte rien à la protection, mais cela permet de se faire une bonne idée de la situation réelle, loin, très loin de celle présentée par les médias.