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 :
- Créer un compte pour obtenir les accès à GeoLite2 : https://www.maxmind.com/en/geolite2/signup
- 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.
- Vous allez recevoir un email avec un lien, ouvrez-le
- La page qui s’ouvre vous demande de choisir votre mot de passe, faites-le
- 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.
- Téléchargez et installer sur votre serveur linux préféré geoipupdate : apt-get (ou dnf) install geoipupdate
- 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 !
- import de la bibliothèque : import geoip2.database
- stocker le chemin vers la base de données : geodbfile= »/usr/share/GeoIP/GeoLite2-Country.mmdb »
- créer l’objet qui va lire la base de données : reader = geoip2.database.Reader(geodbfile)
- pour chaque ip, exécuter : response = reader.country(ip)
- 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.