Commandes Réseau Essentielles Sous Linux
Linux est un pilier dans la gestion de réseau. Que ce soit pour l'administration de serveurs, le diagnostic réseau ou la maintenance de sécurité, les commandes réseau sous Linux offrent des capacités robustes.
- Configuration des Interfaces Réseau
1.1 ip (Remplacement moderne de ifconfig)
La commande ip est l'outil moderne et plus puissant pour gérer la configuration réseau. Elle remplace avantageusement ifconfig.
Afficher toutes les interfaces réseau et leurs adresses IP
ip addr show
Exemple de sortie :
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
link/ether 08:00:27:4e:66:a1 brd ff:ff:ff:ff:ff:ff
inet 192.168.1.100/24 brd 192.168.1.255 scope global dynamic eth0
valid_lft 86329sec preferred_lft 86329sec
inet6 fe80::a00:27ff:fe4e:66a1/64 scope link
valid_lft forever preferred_lft forever
Ajouter une adresse IP à une interface
sudo ip address add 192.168.1.101/24 dev eth0
Supprimer une adresse IP d'une interface
sudo ip address del 192.168.1.101/24 dev eth0
Activer/Désactiver une interface réseau
sudo ip link set eth0 up
sudo ip link set eth0 down
1.2 ping
Utilisée pour tester la connectivité avec un hôte distant en envoyant des paquets ICMP Echo Request.
Vérifier la connectivité de base
ping google.com
Exemple de sortie :
PING google.com (142.250.72.14) 56(84) bytes of data.
64 bytes from muc11s06-in-f14.1e100.net (142.250.72.14): icmp_seq=1 ttl=115 time=21.3 ms
64 bytes from muc11s06-in-f14.1e100.net (142.250.72.14): icmp_seq=2 ttl=115 time=20.6 ms
Options courantes
- Spécifier le nombre de pings :
ping -c 4 google.com - Définir la taille des paquets :
ping -s 128 google.com
1.3 traceroute
Permet de visualiser le chemin emprunté par les paquets pour atteindre une destination.
Afficher la route vers un hôte
traceroute google.com
Exemple de sortie :
traceroute to google.com (142.250.72.14), 30 hops max, 60 byte packets
1 192.168.1.1 (192.168.1.1) 2.374 ms 2.361 ms 2.350 ms
2 10.0.0.1 (10.0.0.1) 8.259 ms 8.243 ms 8.228 ms
3 142.250.72.14 (142.250.72.14) 19.085 ms 19.068 ms 19.051 ms
Options courantes
- Limiter le nombre de sauts :
traceroute -m 20 google.com - Utiliser le protocole ICMP :
traceroute -I google.com
1.4 mtr
Combine les fonctionnalités de ping et traceroute pour un diagnostic réseau en temps réel et interactif.
Utilisation de base
mtr google.com
Options courantes
- Définir le nombre d'échantillons :
mtr -c 10 google.com - Générer un rapport statique :
mtr -r google.com
- Diagnostic DNS
2.1 nslookup
Outil pour interroger les serveurs DNS et résoudre des noms de domaine.
Requête de base
nslookup google.com
Exemple de sortie :
Server: 8.8.8.8
Address: 8.8.8.8#53
Non-authoritative answer:
Name: google.com
Address: 142.250.72.14
Intreroger un serveur DNS spécifique
nslookup google.com 8.8.8.8
2.2 dig
Un outil plus avancé et flexible pour interroger les serveurs DNS.
Obtenir les enregistrements A (adresses IPv4)
dig google.com
Exemple de sortie :
; <<<<< DiG 9.16.1-Ubuntu >>>>> google.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 12345
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1
;; QUESTION SECTION:
;google.com. IN A
;; ANSWER SECTION:
google.com. 299 IN A 142.250.72.14
;; Query time: 20 msec
;; SERVER: 192.168.1.1#53(192.168.1.1)
;; WHEN: Sat Jul 06 10:00:00 UTC 2024
;; MSG SIZE rcvd: 55
Interroger des types d'enregistrements spécifiques
- Enregistrements MX (Mail Exchanger) :
dig google.com MX - Enregistrements NS (Name Server) :
dig google.com NS
- Analyse de Trafic Réseau
3.1 tcpdump
Un puissant analyseur de paquets en ligne de commande pour capturer et examiner le trafic réseau.
Capture de trafic
sudo tcpdump
Exemple de sortie :
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eth0, link-type EN10MB (Ethernet), capture size 262144 bytes
10:00:00.000000 IP myhost.local > 192.168.1.1: ICMP echo request, id 12345, seq 1, length 64
10:00:00.000001 IP 192.168.1.1 > myhost.local: ICMP echo reply, id 12345, seq 1, length 64
Options courantes
- Spécifier l'interface :
sudo tcpdump -i eth0 - Capturer un nombre limité de paquets :
sudo tcpdump -c 10 - Filtrer par port :
sudo tcpdump port 80 - Sauvegarder les captures :
sudo tcpdump -w capture.pcap - Lire un fichier de capture :
sudo tcpdump -r capture.pcap
3.2 wireshark
Un outil d'analyse réseau graphique, offrant une visualisation détaillée du trafic, plus intuitive que tcpdump pour des analyses approfondies.
Lancement
wireshark
Dans l'interface graphique, sélectionnez l'interface réseau et utilisez les filtres (ex: http, tcp.port==80) pour affiner l'analyse.
- Surveillance des Connexions et Services
4.1 ss
Un outil moderne et performant pour l'inspection des sockets et des statistiques réseau, plus rapide que netstat.
Afficher toutes les connexions actives
ss -tulnp
Exemple de sortie :
Netid State Recv-Q Send-Q Local Address:Port Peer Address:Port
tcp LISTEN 0 128 0.0.0.0:22 0.0.0.0:* users:(("sshd",pid=1234,fd=3))
udp UNCONN 0 0 0.0.0.0:68 0.0.0.0:* users:(("dhclient",pid=5678,fd=6))
Options courantes
- Afficher les ports en écoute :
ss -l - Afficher les connexions TCP :
ss -t - Afficher les connexions UDP :
ss -u - Afficher les processus associés aux sockets :
ss -p
4.2 netstat
L'outil classique pour afficher les connexions réseau, les tables de routage et les statistiques d'interface.
Afficher toutes les connexions et ports d'écoute
netstat -tulnp
Exemple de sortie :
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 1234/sshd
udp 0 0 0.0.0.0:68 0.0.0.0:* 5678/dhclient
Options courantes
- Afficher la table de routage :
netstat -r - Afficher les statistiques d'interface :
netstat -i - Affichage continu :
netstat -c
- Surveillance du Trafic en Temps Réel
5.1 iftop
Affiche l'utilisation de la bande passante par connexion sur une interface réseau spécifique.
Utilisation de base
sudo iftop
Exemple de sortie :
Interface: eth0
Hostname: myhost.local
10.0.0.1 => 192.168.1.1 0b 0b 0b
10.0.0.1 <= 192.168.1.1 0b 0b 0b
Options courantes
- Spécifier l'interface :
sudo iftop -i eth0 - Afficher en octets :
sudo iftop -B
5.2 nload
Un outil simple pour surveiller la bande passante réseau en temps réel avec des graphiques.
Utilisation de base
sudo nload
Exemple de sortie :
Device eth0 [10.0.0.1] (1/1):
In: 0.00 kBit/s
Out: 0.00 kBit/s
Options courantes
- Spécifier l'interface :
sudo nload eth0
- Gestion des Services et Transfert de Fichiers
6.1 systemctl
L'outil de gestion des services et de l'état du système sous les distributions utilisant systemd.
Commandes courantes
- Démarrer un service :
sudo systemctl start <nom_service></nom_service> - Arrêter un service :
sudo systemctl stop <nom_service></nom_service> - Redémarrer un service :
sudo systemctl restart <nom_service></nom_service> - Vérifier l'état d'un service :
sudo systemctl status <nom_service></nom_service>
Exemple de sortie :
● nginx.service - A high performance web server and a reverse proxy server
Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset: enabled)
Active: active (running) since Sat 2024-07-08 10:00:00 UTC; 5min ago
Gestion du démarrage automatique
- Activer au démarrage :
sudo systemctl enable <nom_service></nom_service> - Désactiver au démarrage :
sudo systemctl disable <nom_service></nom_service> - Recharger la configuration :
sudo systemctl reload <nom_service></nom_service>
6.2 service
Commande traditionnelle pour gérer les services sous les systèmes SysVinit et Upstart, encore fonctionnelle sur certains systèmes.
Commandes courantes
- Démarrer un service :
sudo service <nom_service> start</nom_service> - Arrêter un service :
sudo service <nom_service> stop</nom_service> - Redémarrer un service :
sudo service <nom_service> restart</nom_service> - Vérifier l'état d'un service :
sudo service <nom_service> status</nom_service>
6.3 scp
Permet la copie sécurisée de fichiers entre des hôtes via SSH.
Transferts de base
- Copier un fichier local vers un hôte distant :
scp fichier_local utilisateur@hote_distant:/chemin/distant/ - Copier un fichier distant vers un hôte local :
scp utilisateur@hote_distant:/chemin/distant/fichier_distant chemin_local/ - Copier un répertoire (récursif) :
scp -r repertoire_local utilisateur@hote_distant:/chemin/distant/
Options courantes
- Spécifier un port SSH :
scp -P 2222 fichier_local utilisateur@hote_distant:/chemin/distant/ - Afficher la progression :
scp -v fichier_local utilisateur@hote_distant:/chemin/distant/
6.4 rsync
Outil puissant pour la synchronisation de fichiers et de répertoires, très efficace grâce à son algorithme de transfert delta.
Synchronisation de base
- Synchroniser un répertoire local vers un répertoire distant :
rsync -avz repertoire_local/ utilisateur@hote_distant:/chemin/distant/ - Synchroniser un répertoire distant vers un répertoire local :
rsync -avz utilisateur@hote_distant:/chemin/distant/ repertoire_local/
Options courantes
- Supprimer les fichiers dans la destination qui n'existent pas dans la source :
rsync -av --delete repertoire_local/ utilisateur@hote_distant:/chemin/distant/ - Simuler l'opération (dry run) :
rsync -avn repertoire_local/ utilisateur@hote_distant:/chemin/distant/
6.5 sftp
Protocole de transfert de fichiers sécurisé basé sur SSH, offrant une interface interactive similaire à FTP.
Connexion et commandes
- Se connecter à un serveur :
sftp utilisateur@hote_distant - Téléverser un fichier :
put fichier_local - Télécharger un fichier :
get fichier_distant - Lister les fichiers distants :
ls - Changer de répertoire distant :
cd repertoire_distant - Quitter :
bye
Options courantes
- Spécifier un port SSH :
sftp -P 2222 utilisateur@hote_distant
- Sécurité Réseau et Pare-feu
7.1 iptables
L'outil fondamental sous Linux pour configurer le pare-feu au niveau du noyau (filtrage de paquets).
Afficher les règles actuelles
sudo iptables -L -v -n
Exemple de sortie :
Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
Chain OUTPUT (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
Opérations courantes
- Ajouter une règle (autoriser le port SSH en entrée) :
sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT - Supprimer une règle :
sudo iptables -D INPUT -p tcp --dport 22 -j ACCEPT - Sauvegarder les règles (Debian/Ubuntu) :
sudo iptables-save > /etc/iptables/rules.v4
7.2 ufw
Un pare-feu simplifié (Uncomplicated Firewall) pour une gestion plus aisée des règles iptables, courant sous Ubuntu/Debian.
Gestion de base
- Activer UFW :
sudo ufw enable - Désactiver UFW :
sudo ufw disable - Afficher le statut :
sudo ufw status verbose
Exemple de sortie :
Status: active
To Action From
-- ------ ----
22/tcp ALLOW Anywhere
80/tcp ALLOW Anywhere
Gestion des règles
- Autoriser un port :
sudo ufw allow 22/tcp - Bloquer un port :
sudo ufw deny 22/tcp - Supprimer une règle :
sudo ufw delete allow 22/tcp
7.3 fail2ban
Logiciel de prévention des intrusions qui analyse les journaux système et bannit temporairement les adresses IP suspectes (ex: tentatives de connexion SSH échouées répétées).
Configuration
Modifiez le fichier de configuration pour activer et personnaliser les règles.
sudo nano /etc/fail2ban/jail.local
Exemple de configuration pour SSH :
[sshd]
enabled = true
port = ssh
logpath = /var/log/auth.log
maxretry = 3
Gestion du service
- Démarrer :
sudo systemctl start fail2ban - Statut :
sudo fail2ban-client status sshd
Exemple de sortie :
Status
|- Number of jail: 1
`- Jail list: sshd
- Outils Avancés
8.1 ethtool
Utilisé pour configurer et afficher les informations détaillées des cartes réseau Ethernet.
Afficher les paramètres d'une interface
sudo ethtool eth0
Exemple de sortie :
Settings for eth0:
Supported ports: [ TP ]
Supported link modes: 10baseT/Half 10baseT/Full
100baseT/Half 100baseT/Full
1000baseT/Full
Speed: 1000Mb/s
Duplex: Full
Port: Twisted Pair
Auto-negotiation: on
Opérations courantes
- Modifier la vitesse et le duplex :
sudo ethtool -s eth0 speed 1000 duplex full autoneg on - Afficher les informations du pilote :
sudo ethtool -i eth0
8.2 nmap
Un scanner de réseau puissant pour découvrir des hôtes, des ports ouverts et des services sur un réseau.
Scans de base
- Scanner un hôte :
nmap example.com - Scanner des ports spécifiques :
nmap -p 22,80,443 example.com - Scanner une plage d'adresses IP :
nmap 192.168.1.0/24 - Détection du système d'exploitation et des versions de services :
nmap -A example.com
Exemple de sortie :
Starting Nmap 7.80 ( https://nmap.org ) at 2024-07-08 10:00 UTC
Nmap scan report for example.com (93.184.216.34)
Host is up (0.010s latency).
Not shown: 998 filtered ports
PORT STATE SERVICE
80/tcp open http
443/tcp open https