[Tutoriel] Que se cache t’il derrière cette adresse IP ?

Hello la compagnie.

Petit billet autour de ce que l’on peut faire avec une adresse IP.

Comme introduction, laissez moi vous raconter ceci :
A la création de mon blog en ce mois d’août 2018, je m’étais amusé à installer Matomo comme solution de supervision de suivi statistiques (WebAnalytics), je l’ai gardé deux mois.
C’était bien trop évolué pour moi…, trop de données que je ne voulais pas sur les visiteurs ( Merci les cookies ), en gros Matomo c’est vraiment que pour du SEO.
Alors je l’ai enlevé et en plus ça me rajoutais une surface d’attaque supplémentaire à surveiller. Trop chronophage pour pas grand chose.
Si je vous parle de Matomo, c’est qu’avec on peut suivre les connexions par Pays, par région, et même par ville.
On peut anonymiser tout ça (en cas de dérobage de données, RGPD, toussa toussa, car ce logiciel vous en fournit beaucoup comme dit précédemment), et utiliser une IP que sur ses 16 derniers bits, donc 177.217.X.X imaginons.
Pour géolocaliser les visiteurs d’un site, Matomo utilise GeoIp, ouais toute cette introduction pour en arriver la….Mais c’est mon blog  !
Outre le fait de tracker des utilisateurs, il peut être utile de connaître l’origine d’une IP surtout dans le cadre de l’administration d’un serveur.

Dans un premier temps je vous présente donc le logiciel « Geoip » (Ça va gars, tu te répètes pas ?), il est très utilisé surtout sur le web.
Il est édité par MaxMindDB, fournissant aussi les bases de données d’IP (publiques).
Attention à la licence d’utilisation très restrictive.

On peut aussi utiliser Geoip avec Apache et Iptables.
Voir ces deux billets publiés récemment, d’où mon article, la boucle est bouclée.
https://blog.lecacheur.com/2018/11/27/apache-bloquer-lacces-http-a-certains-pays/
http://www.deltasight.fr/bloquer-pays-regles-iptables-xt_geoip/

Alors pour installer GeoIp sur Debian c’est très simple (et au passage on installe les logiciels qui seront présentés après GeoIp dans l’article):
apt-get install geoip-bin geoip-database geoip-database-extra geoipupdate whois traceroute

Et maintenant moussaillon ?

Déjà faut déterminer ce que l’on veut savoir sur cette IP,  le pays, la ville ? Avec l’incertitude à prendre en compte. Ou peut être juste savoir quel est l’entité et service associé derrière cette IP, un FAI, un hébergeur, un service cloud ?
Les bases que nous allons utiliser sont stockés ici :
ls /usr/share/GeoIP/
GeoIPASNum.dat GeoIPCity.dat GeoIP.dat GeoIPv6.dat

Les noms sont assez parlant, City pour les villes, IP pour les pays et IPASNum pour le numéro du système autonome (AS, désigne un ensemble de routeur gérant un stock d’IP sous la même bannière).

Faisons un test, je fais un ping sur Google, et ensuite je récupère l’IP.

Passons à la pratique (commande en bleu, retour en vert)

geoiplookup -f /usr/share/GeoIP/GeoIPASNum.dat 172.217.18.35
GeoIP ASNum Edition: AS15169 Google LLC
Ici vous voyez le numéro d’AS utilisé, un AS est un ensemble de routeur gérant un lot d’IP au nom de celui à qui il appartient, ici Google.

geoiplookup -f /usr/share/GeoIP/GeoIP.dat 172.217.18.35
GeoIP Country Edition: US, United States
Ici juste le Pays

geoiplookup -f /usr/share/GeoIP/GeoIPCity.dat 172.217.18.35
GeoIP City Edition, Rev 1: US, CA, California, Mountain View, 94043, 37.419201, -122.057404, 807, 650
Ici vous obtenez dans l’ordre le pays, l’état ou Région en caractère ISO puis Complet, la ville, le code postal et enfin les coordonnées GPS en degrés décimaux.

Comment exploiter ces données ?

Par exemple avec ce site vous rentrer le numéro de votre « système autonome » (ASnum) obtenu avec votre IP, et vous pouvez voir l’activité généré via celui-ci.
https://k-net-stats.lafibre.info/

Avec ce site vous avez des infos sur votre IP :
https://db-ip.com/. Mais autant utiliser directement GeoIp et ne pas subir les traceurs du site en question.

Avec Google Maps on peut placer sur la carte, d’où provient l’IP en rentrant la position GPS obtenue en degrés décimaux dans la barre de recherche :
Que du beau monde autours de Google, la NASA de partout , un aéroport (sûrement pas le RyanAir du coin), une Épicerie :D, en gros MountainView

Fin de la démo avec GeoIp, les possibilités sont nombreuses, de nombreuses API de tout genre l’utilise.

Maintenant si vous voulez juste avoir les infos légales disponibles sur l’IP (contacter le SysAdmin, reporter un abus liée à une IP, bref de l’administratif), il faut utiliser Whois, en conflit avec le RGPD.
whois 172.217.18.35

Et pour finir avec cet article, si vous voulez voir le chemin emprunté depuis votre pc, en passant par votre routeur/modem puis les différents points d’accès pour atteindre le serveur, ce qu’il vous faut, c’est le logiciel « traceroute ».
traceroute www.google.fr

J’en profite pour affirmer que quand on marche dans la rue on inscrit pas son adresse dans son dos, sur le web commercial qui plus est, cela devrait être encore plus vraie ! Utilisons Tor !

J’espère que cet article vous a plus, ou sera utile (pas à des fins malveillantes !).
Si vous avez des remarques, corrections, compléments, n’hésitez pas et laissez un commentaire 😉

Edit1 : Merci @Tetsumaki & @Cascador, de m’avoir indiqué que le site avait un tit souci. Et des compléments/corrections.


https://www.maxmind.com/en/home
https://fr.wikipedia.org/wiki/Mountain_View_(Californie)
https://fr.wikipedia.org/wiki/Autonomous_System
https://www.torproject.org/projects/torbrowser.html.en

RkHunter 1.4.6, Bug lors de la mise à jour

Édit du 28/10/18 à 12h30 :

Comme expliqué dans le commentaire de PG (Merci encore), ce n’est pas un BUG, mais un changement intentionnel pour éviter de faire les MAJS en HTTP, et afin d’éviter un RCE.

https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=869760
https://www.cvedetails.com/cve/CVE-2017-7480/

donc ne pas faire les manips ci-dessous.

Je laisse l’article initial en guise de leçon (Envers moi).

 

Hello,

Sur Rkhunter  dans sa dernière version, j’ai eu une petite surprise que voici en image

Invalid WEB_CMD configuration option: Relative pathname: « /bin/false »

En regardant le fichier de config : /etc/rkhunter.conf
On voit de suite que ça va pas. Les commentaires indiquent les valeurs par défaut, mais pourtant les valeurs ne sont pas bonnes.

donc en modifiant comme ceci on règle le problème :
MIRRORS_MODE=0
UPDATE_MIRROR=1
WEB_CMD=

Et Hop It’s Magic !

 

Et voilou !

Rkhunter (sourceforge.net)

Virtualisation matérielle libre sur Linux avec QEMU/KVM

Définition  :
Simuler une machine complète pour avoir son propre environnement d’exécution.

Les avantages sont nombreux, isolations des processus, plusieurs environnements différents, etc.

La virtualisation matérielle est possible au moyen de ce que l’on appelle des hyperviseurs.
Il existe plusieurs types d’hyperviseurs, classés en 2 niveau.

Le niveau 1 est dit « natif ».
Natif car les instructions processeurs du système virtuelle sont directement transmis aux hardware. Il faut donc vérifier la compatibilité entre les systèmes virtualisés et les composants matérielles.
Le niveau 2 est dit « hosted ».
Hosted car la virtualisation s’effectue grâce à un logiciel installé sur un système d’exploitation. Donc la machine virtualisée n’interagit pas directement avec le Hardware.

KVM est un hyperviseur de type 1, il est intégré de manière native à beaucoup de distribution basées sur le noyau Linux. KVM pour Kernel-based Virtual Machine car il transforme le noyau linux sur lequel il est exécuté en hyperviseur, proxmox est basé dessus.
Il en existe d’autres.

Dans ce tuto on va utiliser QEMU (QuickEmulator) pour interagir avec KVM.

Qemu c’est pas très clair au début, il est de type 1 et 2. Il peut simuler un environnement pour une machine totalement différente de la votre, par exemple une py sur un PC. Dans ce cas la il transforme les exécutions de processeurs pour les rendre compatibles avec le hardware, donc la il est de type2. Mais quand il est utilise avec KVM dans ce cas la il fonctionne en type 1 et donc avec des performances bien meilleures, ça envoi du pâté !!.
En clair Qemu sert à manager les machines virtuels, c’est un client.
Et la liaison entre Qemu et KVM est faite via l’API libvirt ( management du réseau, stockages, clavier, souris, etc )

Cas pratique  ( Tuto réalisé sur Debian ):

en tant que root :
apt-get install qemu-kvm qemu-utils virt-manager libvirt-daemon
usermod -a -G libvirt-qemu USER

Pour pouvoir utiliser virt-manager avec votre compte utilisateur

Vérifier que tout est bon :
virt-host-validate

Et voila.

Maintenant graphiquement vous pouvez utiliser virt-manager ( si vous savez utiliser virtualbox vous ne serez pas dépaysé )
D’ailleurs si vous prêtez attention à l’interface vous vous rendrez compte que l’interface graphique est un gestionnaire de connexion pour hyperviseur KVM via libvirt.
Donc vous pouvez créez puis administrer graphiquement un serveur de VMs à distance via ssh.

Interface graphique de virt-manager, les options ne manquent pas 😉

Pour la gestion graphique j’en arrête la.

Pour configurer en terminal, voici (en root):

Activer l’accès au LAN, le réseau :
virsh net-start default
créer et démarre l’interface virtuelle virbr0, qui est naté ( je sais pas si ca se dit ).

créer et démarre automatiquement virbr0 au démarrage de l’hôte:
virsh net-autostart default

pour personnaliser sa configuration réseau :
virsh net-edit default

Vérifier que c’est OK pour le réseau :
ifconfig
Normalement une interface virbr0 a était crée.

Pour vérifier le port forwadding :
cat /proc/sys/net/ipv4/ip_forward
Si la valeur est a 0, dé-commenter dans /etc/sysctl.conf le paramètre suivant pour l’activer au démarrage :
# Uncomment the next line to enable packet forwarding for IPv4
#net.ipv4.ip_forward=1

Et entrez la commande suivante pour l’activer de suite :
sysctl -w net.ipv4.ip_forward=1

On configure le pare-feux, en remplaçant avec le nom de l’interface physique, par exemple eth0 ou enp3s0 :
iptables -A FORWARD -i interfacephysique -j ACCEPT
iptables -A FORWARD -o interfacephysique -j ACCEPT

Par défaut les images des machines virtuelles qui seront crées avec virt-manager seront stockes dans : /var/lib/libvirt/images
Si comme moi vous avez votre OS sur un SSD pas pratique, donc perso j’ai supprimé le répertoire par défaut pour ensuite créer un lien
symbolique à la place qui pointe vers un HDD de 1TO, voici la manipulation :
rm -rf /var/lib/libvirt/images
ln -s /lechemindevotrestockage /var/lib/libvirt/images

Créer l’image :
qemu-img create -f qcow2 /var/lib/libvirt/images/DOMAIN.img 20G
-f ; format de KVM pour le fichier image, qcow2 est le format kvm par défaut, raw est compatible avec Virtualbox et VMware
20G ; Remplacer par la valeur souhaité, ce sera la taille du disque dur virtuel

Booter sur une ISO et installer l’OS via KVM :
kvm -m 1024 -cdrom /CHEMIN_VERS_VOTRE_ISO -boot d /var/lib/libvirt/images/DOMAINE.img
-m 1024 ; La quantité de ram allouée
-cdrom ; spécifie le chemin vers votre ISO
-boot d ; spécifie sur quelle domaine booter, un système émulé s’appelle domaine, remplacer DOMAINE par un titre parlant par exemple DebianVM

Booter simplement sur l’OS fraîchement installé directement via KVM :
kvm -boot -d /var/lib/libvirt/images/DOMAINE.img

Attention en utilisant KVM directement et non avec libvirt, les machines virtuelles ne seront pas listés avec virtmanager ou la commande : virsh list

Créer une VM et procéder à son installation via une ISO en utilisant KVM via libvirt :
virt-install -n DomainKVM --virt-type kvm --memory 1024 --cpu host --vcpus 2 --cdrom /CheminVersISO --disk /var/lib/libvirt/images/DOMAINE.qcow2 --network default --os-variant BASEOS
-n ; le nom du domaine
–virt-type ; on choisit le type de virtualisation, ici KVM
–memory ; idem que tout à l’heure
–cpu ; la machine virtuelle utilisera le même processeur que l’hôte
–vcpus ; nombre de cœurs alloués
–cdrom ; le chemin vers votre ISO
–network; on indique la configuration reseau que l’on veut, mettre defaut si on suit ce tuto
–os-variant ; la base du systeme, par exemple debian, fedora, etc et sa version, par exemple debian8 ou fedora19

Importer une VM existante avec libvirt, de type KVM :
virt-install -n DomainKVM --virt-type kvm --memory 1024 --cpu host --vcpus 2 --disk /var/lib/libvirt/images/DOMAINE.qcow2 --network default --os-variant --import

Live de Kali en utilisant virt-install pour booter sur une ISO

En utilisant libvirt, les machines crées apparaissent dans virt-manager pour rappel qui est le client graphique.

Démarrer son OS :
virsh start DOMAINE

Éteindre son OS, méthode 1 propre, méthode 2 sale :
methode1 : virsh shutdown DOMAINE
methode2 : virsh destroy DOMAINE

Les configurations des VMs crées sont stockés au format XML dans : /etc/libvirt/qemu/

Et voila, en espérant que cet article vous aura était utile, et donner envie d’essayer autre chose que Virtualbox ou VMware, ce qui est con du coup si on utilise au quotidien un noyau Linux.

Pour aller plus loin :

man virt-install, man virsh, man virt-clone

Si vous avez des remarques/suggestions/corrections ou autre, ne pas hésiter à laisser un commentaire, promis j’essaie de pas me vexer 🙂

Sources et Liens :
https://wiki.qemu.org/Main_Page
https://libvirt.org/
https://en.wikipedia.org/wiki/Libvirt
https://fr.wikipedia.org/wiki/Hyperviseur
https://linux.goffinet.org/09-virtualisation-kvm/
https://cloudbuilder.in/blogs/2014/03/09/kvhttps://cloudbuilder.in/blogs/2014/03/09/kvm-and-qemu/m-and-qemu/