04 · Réseau de base

moyen  ·  Durée estimée : 30 min

🎯 Objectif

Comprendre comment un système Linux communique sur le réseau : voir ses interfaces, tester la connectivité, inspecter les connexions ouvertes, télécharger des fichiers. C'est le socle avant d'aborder Nmap (tutoriel 05).

Toutes les commandes de ce tutoriel sont utilisables dans la console.

1. Mes interfaces réseau — ifconfig / ip

ifconfig (ancienne commande) affiche les interfaces réseau et leurs adresses IP :

ifconfig
Sortie typique :
eth0: inet 10.0.2.15 netmask 255.255.255.0
lo: inet 127.0.0.1 netmask 255.0.0.0

La commande moderne (à privilégier sur Kali) :

ip a
ip addr
ip link

Comprendre les interfaces

127.0.0.1 est toujours toi-même. 0.0.0.0 signifie "toutes les interfaces".
Lance ip a et trouve ton adresse IP (probablement 10.0.2.15 dans jslinux).
Tu dois voir au moins une interface avec une adresse en 10.x.x.x ou 192.168.x.x.
2. Tester la connectivité — ping

ping envoie des paquets ICMP à une cible et mesure le temps de réponse.

ping google.com

Arrêter avec Ctrl+C.

Limiter à 4 paquets :

ping -c 4 google.com

Changer l'intervalle (par défaut 1 s) :

ping -i 0.5 google.com
Sortie :
64 bytes from 142.250.75.14: icmp_seq=1 ttl=115 time=12.3 ms

Interpréter

Beaucoup de serveurs bloquent ICMP. Un ping qui échoue ne veut pas forcément dire que la cible est morte.
Ping 127.0.0.1 (toi-même), puis google.com, puis une adresse inventée 192.0.2.1. Compare.
127.0.0.1 doit répondre instantanément. google.com doit répondre si Internet est dispo. 192.0.2.1 doit timeout.
3. Résoudre un nom — nslookup / host / dig

Pour traduire un nom de domaine en adresse IP :

nslookup google.com
host google.com
dig google.com
host google.com → google.com has address 142.250.75.14

Sur Alpine, ces commandes peuvent nécessiter apk add bind-tools. Si elles ne sont pas disponibles, utilise ping qui résout aussi le nom :

ping -c 1 google.com

Le fichier /etc/hosts

Tu peux forcer la résolution manuellement :

cat /etc/hosts
127.0.0.1 localhost
/etc/hosts est consulté avant les serveurs DNS. C'est une astuce classique en test d'intrusion pour rediriger un domaine vers une machine contrôlée.
Résous google.com avec la commande disponible sur ton système (nslookup, host ou ping).
Tu dois obtenir une adresse IP en réponse.
4. Voir les connexions — netstat / ss

netstat (ancien) et ss (moderne) listent les connexions réseau actives et les ports en écoute.

netstat -tuln
ss -tuln

Décryptage des options

-t   → TCP seulement
-u   → UDP seulement
-l   → ports en écoute (listening)
-n   → afficher les ports en chiffres (pas les noms)
-p   → afficher le processus (nécessite root)
Sortie :
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN
→ Un serveur SSH écoute sur toutes les interfaces, port 22.

États TCP courants

ss -tulnp avec les droits root est la commande à connaître pour voir quels services écoutent sur ta machine.
Lance netstat -tuln (ou ss -tuln) et note les ports en écoute sur ta machine.
Tu dois voir au moins une ligne LISTEN. Sur jslinux, probablement aucun port ouvert, c'est normal.
5. Télécharger un fichier — wget

wget télécharge un fichier depuis une URL.

wget https://example.com/fichier.txt

Options utiles :

wget -O nouveau_nom.txt https://example.com/fichier.txt
wget -c https://example.com/gros_fichier.iso    # reprise
wget -q https://example.com/fichier.txt         # silencieux
wget -r https://example.com/dossier/            # récursif
wget -O page.html https://example.com → télécharge la page d'accueil dans page.html.
wget -r peut saturer un serveur si mal utilisé. Ne l'utilise jamais sur un site que tu ne possèdes pas sans autorisation écrite.
Dans la console jslinux, tu peux tester sur des sites publics comme https://example.com.
Télécharge https://example.com dans un fichier test_wget.html, puis vérifie avec ls et cat test_wget.html.
Le fichier doit exister et contenir du HTML.
6. Interroger une URL — curl

curl est plus puissant que wget : il affiche la réponse sans la sauvegarder par défaut.

curl https://example.com

Sauvegarder dans un fichier :

curl -o page.html https://example.com

Voir uniquement les en-têtes HTTP :

curl -I https://example.com

Suivre les redirections :

curl -L https://example.com

Envoyer des données POST :

curl -X POST -d "nom=valeur" https://example.com/api

Différences wget vs curl

wget   → conçu pour télécharger (miroir, récursif)
curl   → conçu pour interroger des API, tester des URLs
Pour tester si un service web répond, curl -I est parfait : tu vois le code HTTP (200, 301, 404, 500) en une ligne.
Fais curl -I https://example.com et identifie le code de statut HTTP dans la première ligne.
La première ligne doit ressembler à HTTP/2 200 ou HTTP/1.1 200 OK.
7. Tracer un chemin — traceroute

traceroute montre tous les routeurs traversés pour atteindre une cible.

traceroute google.com

Sur Alpine, cette commande peut ne pas être installée par défaut :

apk add traceroute

Alternative avec BusyBox :

traceroute -n google.com
Sortie :
1 10.0.2.2 0.5 ms
2 192.168.1.1 3.2 ms
3 * * *
Chaque ligne = un routeur (hop). Les * signifient que le routeur ne répond pas au ICMP.
Trace le chemin vers google.com si traceroute est disponible.
Tu dois voir au moins 2-3 hops avant d'atteindre ta cible.
🎓 Récapitulatif
ip a / ifconfig           → interfaces et IP
ping host                 → tester connectivité
ping -c 4 host            → 4 paquets
nslookup host / host host → résolution DNS
netstat -tuln / ss -tuln  → ports en écoute
wget URL                  → télécharger
wget -O nom URL           → télécharger en renommant
curl URL                  → interroger une URL
curl -I URL               → en-têtes seulement
curl -L URL               → suivre redirections
traceroute host           → chemin réseau

Ports bien connus à retenir

22    SSH
23    Telnet (obsolète, non chiffré)
25    SMTP (mail)
53    DNS
80    HTTP
110   POP3
143   IMAP
443   HTTPS
3306  MySQL
3389  RDP
8080  HTTP alternatif
🏆 Défi final
  1. Trouver ton IP avec ip a
  2. Pinger 127.0.0.1 en 4 paquets
  3. Résoudre example.com
  4. Lister tes ports en écoute avec ss -tuln
  5. Télécharger https://example.com avec wget
  6. Vérifier le contenu avec cat ou head
  7. Faire un curl -I https://example.com et noter le code HTTP
  8. Supprimer les fichiers téléchargés
À la fin : ls ne doit plus afficher index.html ni test_wget.html.
Ces commandes, tu les réutiliseras dans 90 % de tes missions d'analyse réseau. C'est ton kit de base.
📚 Sommaire