Accès Réseaux Linux
Cours AdmiSys UPVD
Chapitre 1 : Introduction aux réseaux GNU/Linux
Support
Cette introduction repose sur les connaissances acquises des réseaux sous GNU/Linux, adaptées aux besoins des systèmes modernes. Ce cours s’appuie principalement sur la distribution Ubuntu 22.04 sur VirtualBox, avec un hôte fonctionnant sous Windows.
Rappels sur les réseaux : Notations
Les adresses réseau peuvent être exprimées en deux principaux formats, correspondant aux standards IPv4 et IPv6.
- IPv4 : Une adresse IPv4 est constituée de 32 bits, représentés sous forme de quatre octets décimaux séparés par des points.
- Exemple :
10.0.1.123
- Exemple :
- IPv6 : Plus moderne, l’adresse IPv6 utilise 128 bits, représentés en notation hexadécimale, séparés par des deux-points (
:). Les zéros consécutifs peuvent être omis pour simplifier la notation.- Exemple :
dead::beef/128
- Exemple :
La notation CIDR (Classless Inter-Domain Routing) est utilisée pour représenter les masques de sous-réseaux, comme à la fin de l’exemple IPv6.
Réseau IPv4 : Classes et sous-réseaux
Historiquement, les réseaux IPv4 étaient divisés en classes, définissant la proportion de bits alloués à l’identifiant du réseau (net ID) et à celui de l’hôte (host ID). Les classes les plus courantes sont :
- Classe A : 1 octet pour le net ID, 3 pour le host ID (plage :
0.0.0.0à127.255.255.255). - Classe B : 2 octets pour le net ID, 2 pour le host ID (plage :
128.0.0.0à191.255.255.255). - Classe C : 3 octets pour le net ID, 1 pour le host ID (plage :
192.0.0.0à223.255.255.255).
Avec la pénurie d’adresses IPv4, les sous-réseaux ont été introduits pour optimiser l’utilisation de l’espace d’adresses disponible, utilisant des masques plus flexibles en notation CIDR.
Adresses spéciales IPv4 et IPv6
- IPv4 :
127.0.0.1: Bouclage.192.168.x.x: Réseaux privés.224.0.0.0: Multicast.
- IPv6 :
::1: Bouclage.fe80::/10: Adresses locales de lien.ff00::/8: Multicast.
Ces plages facilitent des usages spécifiques, comme les tests locaux ou les communications multicast.
Périphériques Réseau Virtuels
GNU/Linux prend en charge divers périphériques réseau virtuels, souvent utilisés pour les VPN ou les configurations avancées.
- TUN : Simule un périphérique réseau au niveau de la couche 3 (réseau).
- TAP : Simule un périphérique réseau au niveau de la couche 2 (liaison).
Ces interfaces peuvent être configurées via des outils comme ip tuntap pour les besoins spécifiques d’un système.
Ce chapitre pose les bases essentielles pour comprendre l’architecture et les principes des réseaux GNU/Linux, préparant ainsi le terrain pour les chapitres suivants.
Chapitre 2 : Configuration des interfaces réseau sous GNU/Linux
Introduction aux périphériques réseau
Sous GNU/Linux, les interfaces réseau sont représentées par des noms désignés en fonction des pilotes matériels. Historiquement, les interfaces Ethernet étaient nommées sous la forme ethX, mais les systèmes modernes adoptent une convention de nommage plus descriptive, telle que enp0s3 ou wlp2s0, basée sur les informations matérielles. Les interfaces peuvent être physiques ou virtuelles.
Configuration des interfaces physiques
Les interfaces réseau physiques sont généralement configurées via le fichier /etc/network/interfaces sous Debian et Ubuntu, ou via des outils comme NetworkManager.
Exemple de configuration statique dans /etc/network/interfaces
# Bouclage local
auto lo
iface lo inet loopback
# Interface Ethernet avec une configuration statique
allow-hotplug eth0
iface eth0 inet static
address 192.168.1.10
netmask 255.255.255.0
gateway 192.168.1.1
dns-nameservers 8.8.8.8 8.8.4.4
Configuration dynamique via DHCP
Pour utiliser un serveur DHCP, la configuration est simplifiée comme suit :
allow-hotplug eth0
iface eth0 inet dhcp
Gestion avec NetworkManager
NetworkManager est un outil moderne pour gérer les interfaces réseau. Il offre des interfaces graphiques (GNOME Control Center) et en ligne de commande (nmcli, nmtui).
Exemple de commande nmcli
Lister les connexions disponibles :
nmcli connection showAjouter une connexion statique :
nmcli connection add type ethernet ifname eth0 con-name my-connection ipv4.addresses 192.168.1.10/24 ipv4.gateway 192.168.1.1 ipv4.dns "8.8.8.8" ipv4.method manualActiver une connexion :
nmcli connection up my-connection
Interfaces réseau virtuelles
Les interfaces réseau virtuelles sont largement utilisées pour les environnements virtuels, les conteneurs et les VPN. Elles comprennent :
- Alias d’interfaces
Permet d’assigner plusieurs adresses IP à une même interface physique.
Exemple :
ip address add 192.168.1.20/24 dev eth0 label eth0:1
- Interfaces TUN/TAP
Utilisées pour les tunnels réseau.
Commandes :
ip tuntap add mode tun dev tun0 ip tuntap add mode tap dev tap0
- Ponts réseau (bridges)
Permettent de relier plusieurs interfaces au niveau de la couche liaison.
Exemple avec
brctl:brctl addbr br0 brctl addif br0 eth0
Dépannage des interfaces réseau
En cas de problèmes de connectivité, voici quelques étapes pour diagnostiquer les interfaces réseau :
Vérifier l’état des interfaces
ip aTester la connectivité locale
ping 127.0.0.1Tester la passerelle par défaut
ping 192.168.1.1Vérifier les routes
ip routeInspecter les journaux système
dmesg | grep eth0
Ce chapitre couvre les bases de la configuration et de la gestion des interfaces réseau sous GNU/Linux, posant ainsi les fondations pour des configurations plus complexes.
Chapitre 3 : Protocoles de la couche réseau et transport sous GNU/Linux
Introduction à la couche réseau
La couche réseau du modèle OSI gère l’acheminement des paquets entre différents réseaux. Sous GNU/Linux, les protocoles les plus courants à ce niveau sont IPv4, IPv6, ICMP et IGMP. Ces protocoles sont configurés et gérés principalement via des fichiers systèmes et des outils comme ip et sysctl.
Protocole IP : IPv4 et IPv6
- IPv4
Utilise des adresses sur 32 bits.
Outils courants pour la gestion :
ip addr add 192.168.1.100/24 dev eth0 ip addr showParamètres configurables dans
/proc/sys/net/ipv4/(exemple :ip_forwardpour activer le routage).
- IPv6
Utilise des adresses sur 128 bits.
Supporte nativement les sous-réseaux et simplifie le routage global.
Commandes utiles :
ip -6 addr add 2001:db8::1/64 dev eth0 ip -6 addr show
Protocoles de diagnostic : ICMP et ICMPv6
- ICMP (Internet Control Message Protocol)
Utilisé pour envoyer des messages de diagnostic et d’erreur.
Outils associés :
ping 192.168.1.1 traceroute 8.8.8.8
- ICMPv6
Étendu pour IPv6.
Commandes associées :
ping6 2001:db8::1 traceroute6 2001:db8::1
Routage sous GNU/Linux
Le routage définit le chemin des paquets entre différents réseaux. Le noyau Linux gère des tables de routage accessibles via la commande ip.
Commandes courantes de routage
Ajouter une route statique :
ip route add 192.168.2.0/24 via 192.168.1.1Supprimer une route :
ip route del 192.168.2.0/24Afficher les routes :
ip route show
Routage par défaut
La route par défaut est utilisée pour tous les paquets destinés à des réseaux non spécifiquement mentionnés dans la table de routage.
ip route add default via 192.168.1.1 dev eth0Protocole de transport : TCP et UDP
- TCP (Transmission Control Protocol)
- Protocole connecté, fiable, assurant la retransmission des paquets perdus.
- Utilisé par les services comme HTTP, SSH et SMTP.
- UDP (User Datagram Protocol)
- Protocole sans connexion, rapide mais non fiable.
- Utilisé pour des applications comme DNS, VoIP et les jeux en ligne.
Surveillance des connexions
Netstat (outil classique, parfois remplacé par
ss) :netstat -tulnss (outil moderne) :
ss -tuln- Options communes :
-t: TCP.-u: UDP.-l: Ports à l’écoute.-n: Afficher les adresses de façon numérique.
- Options communes :
Gestion des pare-feu
Le pare-feu Linux est géré par le framework Netfilter, configuré avec iptables ou son successeur nftables.
Exemple d’utilisation avec iptables
Autoriser une connexion entrante sur le port 22 :
iptables -A INPUT -p tcp --dport 22 -j ACCEPTBloquer une adresse IP :
iptables -A INPUT -s 192.168.1.100 -j DROP
Exemple avec nftables
Créer une table et une chaîne :
nft add table ip filter nft add chain ip filter input { type filter hook input priority 0; }Ajouter une règle pour accepter SSH :
nft add rule ip filter input tcp dport 22 accept
Ce chapitre présente les protocoles essentiels de la couche réseau et transport sous GNU/Linux, ainsi que leur gestion. Les outils et méthodes décrits ici permettent une configuration optimale pour un large éventail d’environnements réseau.
Chapitre 4 : Services réseau et gestion des sockets sous GNU/Linux
Introduction aux services réseau
Un service réseau sous GNU/Linux est un processus qui écoute sur une interface réseau pour accepter des connexions entrantes ou établir des connexions sortantes. Les services réseau fonctionnent généralement via des sockets, qui permettent une communication standardisée entre les applications et le système d’exploitation.
Sockets : Fondamentaux
Un socket est une interface logicielle qui permet à une application de communiquer via un réseau. Les sockets peuvent être classés en plusieurs catégories :
- Sockets réseau
- Utilisés pour les communications basées sur des protocoles IP (IPv4, IPv6).
- Protocoles supportés : TCP, UDP.
- Sockets UNIX
- Limités aux communications locales entre processus sur le même système.
Création de sockets en ligne de commande
GNU/Linux fournit plusieurs outils pour inspecter et gérer les sockets :
netstat (outil classique, déprécié) :
netstat -tulnss (outil moderne, recommandé) :
ss -tuln- Options :
-t: Afficher les connexions TCP.-u: Afficher les connexions UDP.-l: Montrer uniquement les sockets en écoute.-n: Afficher les adresses IP sous forme numérique.
- Options :
Ports réseau
Les ports réseau permettent de distinguer les différents services utilisant une même interface réseau. Ils sont classés en trois catégories :
- Ports bien connus : 0 à 1023 (exemple : HTTP utilise le port 80, SSH le port 22).
- Ports enregistrés : 1024 à 49151 (réservés pour des applications spécifiques).
- Ports éphémères : 49152 à 65535 (attribués dynamiquement aux connexions sortantes).
Vérification des ports ouverts
Utilisation de
ss:ss -tulnAvec
nmap(scanner de ports) :nmap -p 1-65535 192.168.1.10
Superviseurs de services
Historiquement, les systèmes UNIX utilisaient inetd pour gérer les services réseau. De nos jours, systemd a largement remplacé inetd et xinetd pour fournir des outils de gestion avancée des services.
Gestion des services avec systemctl
Démarrer un service :
sudo systemctl start sshdArrêter un service :
sudo systemctl stop sshdActiver un service au démarrage :
sudo systemctl enable sshdVérifier l’état d’un service :
sudo systemctl status sshd
Configuration des services réseau
Les services réseau GNU/Linux sont configurés à l’aide de fichiers texte situés dans /etc. Voici quelques exemples :
- SSH : Configuration dans
/etc/ssh/sshd_configModifier le port :
Port 2222Redémarrer le service :
sudo systemctl restart sshd
- Apache : Configuration dans
/etc/apache2/apache2.confActiver un module :
sudo a2enmod ssl sudo systemctl restart apache2
- FTP : Configuration avec
vsftpddans/etc/vsftpd.confExemple de restriction :
anonymous_enable=NO
Dépannage des services réseau
Vérifier l’état du service
sudo systemctl status nom_du_serviceAnalyser les journaux système
sudo journalctl -u nom_du_serviceTester la connectivité
Tester une connexion TCP :
telnet 192.168.1.10 80Avec
nc(netcat) :nc -zv 192.168.1.10 22
Ce chapitre aborde les bases de la gestion des services réseau et des sockets sous GNU/Linux, offrant une vue d’ensemble des outils et méthodes essentiels pour les administrateurs systèmes.
Chapitre 5 : La sécurité réseau sous GNU/Linux
Introduction à la sécurité réseau
La sécurité réseau est essentielle pour protéger les systèmes GNU/Linux contre les menaces internes et externes. Ce chapitre explore les méthodes et outils pour sécuriser un système, en couvrant les pare-feu, les techniques de surveillance et les bonnes pratiques de gestion des accès.
Pare-feu : Netfilter et iptables
Netfilter est le framework du noyau Linux permettant de filtrer les paquets. iptables et nftables sont les outils principaux pour configurer des règles de pare-feu.
Exemple de configuration avec iptables
Bloquer une adresse IP :
iptables -A INPUT -s 203.0.113.0 -j DROPAutoriser un port :
iptables -A INPUT -p tcp --dport 22 -j ACCEPTEnregistrer et restaurer les règles :
iptables-save > /etc/iptables/rules.v4 iptables-restore < /etc/iptables/rules.v4
Migration vers nftables
nftables est une alternative moderne et plus performante à iptables.
Exemple :
nft add table ip filter nft add chain ip filter input { type filter hook input priority 0; } nft add rule ip filter input tcp dport 22 accept
Authentification et gestion des utilisateurs
Configurer SSH :
Désactiver l’authentification par mot de passe :
PasswordAuthentication noUtiliser des clés SSH pour l’authentification.
Surveiller les tentatives de connexion :
Lire les journaux :
sudo tail -f /var/log/auth.log
Fail2Ban : Protection contre les tentatives de connexion répétées.
Installation :
sudo apt install fail2banConfiguration :
[sshd] enabled = true port = 22 maxretry = 5
Surveillance et détection des intrusions
Auditd :
Outil pour auditer les événements système.
Commandes utiles :
sudo auditctl -w /etc/passwd -p wa sudo ausearch -f /etc/passwd
Intrusion Detection Systems (IDS) :
- Snort : Analyse les paquets pour détecter les menaces.
- OSSEC : Moniteur de journaux système.
VPN et chiffrement
OpenVPN :
Installation :
sudo apt install openvpnExemple de configuration serveur :
port 1194 proto udp dev tun ca ca.crt cert server.crt key server.key dh dh.pem
IPSec avec StrongSwan :
- Configuration d’une connexion sécurisée IPsec.
Gestion des mises à jour
Les mises à jour système sont critiques pour corriger les vulnérabilités connues.
Automatisation avec
unattended-upgrades:Installation :
sudo apt install unattended-upgradesActiver les mises à jour automatiques :
sudo dpkg-reconfigure unattended-upgrades
Mettre à jour manuellement :
sudo apt update && sudo apt upgrade
Bonnes pratiques de sécurité
Réduction des privilèges :
- Utiliser des comptes non root pour les opérations courantes.
- Implémenter
sudopour les élévations de privilèges.
Sauvegardes régulières :
Exemple avec
rsync:rsync -av /important/data /backup/location
Limiter les services exposés :
Désactiver les services inutiles avec
systemctl:sudo systemctl disable nom_du_service
Ce chapitre fournit une vue d’ensemble des pratiques et outils de sécurité essentiels sous GNU/Linux pour protéger les systèmes contre les menaces réseau et système.
Chapitre 6 : Diagnostic et dépannage réseau sous GNU/Linux
Introduction au dépannage réseau
Le diagnostic et le dépannage réseau sont des compétences cruciales pour identifier et résoudre les problèmes de connectivité sous GNU/Linux. Ce chapitre présente des outils et méthodes efficaces pour diagnostiquer les éventuels dysfonctionnements.
Outils de diagnostic réseau
- Commande
pingUtilisée pour tester la connectivité avec un hôte distant.
Exemple :
ping 8.8.8.8 ping -c 4 google.com
- Commande
tracerouteAffiche le chemin des paquets jusqu’à la destination.
Exemple :
traceroute google.com
- Commande
nslookupetdigUtilisées pour diagnostiquer les problèmes DNS.
Exemple avec
nslookup:nslookup google.comExemple avec
dig:dig google.com dig @8.8.8.8 google.com
- Commande
netstatetssAffichent les connexions réseau en cours, les sockets en écoute, et plus encore.
Exemple avec
netstat:netstat -tulnExemple avec
ss:ss -tuln
- Commande
ipAffiche et configure les interfaces réseau, les routes et les adresses IP.
Exemple :
ip addr show ip route show
Méthodologie de diagnostic
- Vérifier la configuration des interfaces
- Utiliser
ip addr showpour confirmer que l’interface réseau est configurée correctement.
- Utiliser
- Tester la connectivité locale
- Utiliser
ping 127.0.0.1pour vérifier si le bouclage local fonctionne.
- Utiliser
- Tester la connectivité au réseau local
Utiliser
pingavec l’adresse de la passerelle par défaut.Exemple :
ping 192.168.1.1
- Tester la résolution DNS
- Utiliser
nslookupoudigpour tester la résolution des noms.
- Utiliser
- Inspecter les routes
- Vérifier les routes configurées avec
ip route show.
- Vérifier les routes configurées avec
- Vérifier les journaux système
Lire les journaux pour identifier les erreurs réseau.
Exemple :
journalctl -u network.service dmesg | grep eth0
Outils avancés de diagnostic
- Tcpdump
Analyseur de trafic réseau en ligne de commande.
Exemple :
tcpdump -i eth0 port 80
- Wireshark
- Outil graphique d’analyse de paquets.
- nmap
Scanner de ports et analyseur de vulnérabilités.
Exemple :
nmap 192.168.1.1
- iperf
Outil de test de bande passante.
Exemple :
iperf3 -c 192.168.1.100
Problèmes courants et solutions
- Problème : Pas de connectivité Internet
- Solution :
- Vérifier les paramètres DNS avec
cat /etc/resolv.conf. - Tester la passerelle par défaut avec
ping.
- Vérifier les paramètres DNS avec
- Solution :
- Problème : Service inaccessible
- Solution :
- Vérifier si le service est actif avec
systemctl status. - Vérifier les règles de pare-feu avec
iptablesounftables.
- Vérifier si le service est actif avec
- Solution :
- Problème : Interfaces réseau désactivées
- Solution :
- Activer l’interface avec
ip link set eth0 up.
- Activer l’interface avec
- Solution :
Bonnes pratiques pour le dépannage
- Documenter les configurations :
- Maintenir un journal des modifications réalisées sur les interfaces et les services.
- Automatiser les tests :
- Utiliser des scripts pour vérifier la connectivité et les paramètres.
- Surveiller le réseau :
- Implémenter des outils comme Nagios ou Zabbix pour surveiller les équipements et services.
Ce chapitre fournit une approche systématique pour diagnostiquer et résoudre les problèmes réseau sous GNU/Linux, en exploitant des outils classiques et avancés.
Chapitre 7 : Administration avancée des réseaux sous GNU/Linux
Introduction
L’administration réseau avancée sous GNU/Linux repose sur des outils puissants et des configurations sophistiquées pour gérer des environnements complexes. Ce chapitre explore des sujets tels que le routage dynamique, la gestion des VLANs, les proxy réseau, et les environnements virtualisés.
Routage dynamique
Les protocoles de routage dynamique permettent aux routeurs de mettre à jour automatiquement leurs tables de routage en fonction des changements dans le réseau.
- Protocoles supportés :
- OSPF (Open Shortest Path First)
- BGP (Border Gateway Protocol)
- RIP (Routing Information Protocol)
- Outils pour le routage dynamique :
- Quagga et FRR (Free Range Routing) :
Installation :
sudo apt install frrExemple de configuration pour OSPF :
router ospf network 192.168.1.0/24 area 0 network 192.168.2.0/24 area 0
- Quagga et FRR (Free Range Routing) :
- Commandes utiles :
Vérifier la table de routage :
ip route showActiver le routage IPv4 :
echo 1 > /proc/sys/net/ipv4/ip_forward
Gestion des VLANs
Les VLANs (Virtual LANs) permettent de segmenter un réseau physique en plusieurs réseaux logiques pour améliorer la sécurité et la gestion du trafic.
- Configuration des VLANs avec
ip:Créer une interface VLAN :
ip link add link eth0 name eth0.100 type vlan id 100Assigner une adresse IP :
ip addr add 192.168.100.1/24 dev eth0.100Activer l’interface :
ip link set dev eth0.100 up
- Utilisation de
vconfig(outil classique) :Installer
vlan:sudo apt install vlanAjouter un VLAN :
vconfig add eth0 100
Proxy et cache réseau
Les proxys réseau permettent de contrôler et d’optimiser le trafic en agissant comme intermédiaires entre les clients et les serveurs.
- Squid :
Installation :
sudo apt install squidExemple de configuration de base dans
/etc/squid/squid.conf:acl localnet src 192.168.0.0/16 http_access allow localnet http_port 3128Démarrer le service :
sudo systemctl start squid
- HAProxy :
Utilisé pour l’équilibrage de charge.
Exemple de configuration :
frontend http-in bind *:80 default_backend servers backend servers server server1 192.168.1.2:80 maxconn 32 server server2 192.168.1.3:80 maxconn 32Démarrer le service :
sudo systemctl start haproxy
Gestion des environnements virtualisés
- Bridge Networking :
Les environnements virtualisés utilisent des ponts réseau pour permettre aux machines virtuelles de communiquer avec le réseau physique.
Créer un pont :
ip link add name br0 type bridge ip link set dev eth0 master br0 ip addr add 192.168.1.1/24 dev br0 ip link set dev br0 up
- Docker Networking :
Lister les réseaux Docker :
docker network lsCréer un réseau :
docker network create my-network
- Open vSwitch :
Installation :
sudo apt install openvswitch-switchCréer un switch virtuel :
ovs-vsctl add-br ovs-br0 ovs-vsctl add-port ovs-br0 eth0
Surveillance avancée
- Nagios :
Surveille les services et les équipements.
Installation :
sudo apt install nagios
- Zabbix :
Offre une solution de surveillance distribuée.
Installation :
sudo apt install zabbix-server-mysql
Bonnes pratiques pour l’administration avancée
- Automatisation :
- Utiliser des outils comme Ansible ou Puppet pour gérer la configuration.
- Documentation :
- Tenir à jour une documentation des configurations et topologies réseau.
- Sauvegardes :
- Sauvegarder les configurations critiques comme les tables de routage, les configurations VLANs et les fichiers proxy.
Ce chapitre explore des techniques avancées pour optimiser et gérer des infrastructures réseau complexes sous GNU/Linux, à l’aide d’outils puissants et flexibles.
Chapitre 8 : Surveillance et optimisation des performances réseau sous GNU/Linux
Introduction
La surveillance et l’optimisation des performances réseau sont cruciales pour garantir la fiabilité et l’efficacité des systèmes GNU/Linux. Ce chapitre présente des outils et techniques pour surveiller, analyser et améliorer les performances réseau.
Surveillance des performances réseau
- Commande
iftopVisualisation en temps réel de l’utilisation de la bande passante.
Installation :
sudo apt install iftopUtilisation :
sudo iftop -i eth0
- Commande
nloadAffiche graphiquement les données entrantes et sortantes sur une interface.
Installation :
sudo apt install nloadUtilisation :
nload eth0
- Outil
netdataPlateforme de surveillance réseau et système en temps réel.
Installation :
sudo apt install netdataAccès via navigateur :
http://localhost:19999
- Collecte de statistiques avec
sarFournit des rapports d’activité réseau et système.
Installation :
sudo apt install sysstatCommandes utiles :
sar -n DEV 1 10 sar -n TCP,ETCP 1 10
Analyse du trafic réseau
- Tcpdump
Analyse le trafic réseau en ligne de commande.
Exemple :
sudo tcpdump -i eth0 port 80
- Wireshark
Analyse graphique avancée du trafic.
Installation :
sudo apt install wireshark
- ntopng
Analyseur de flux réseau basé sur le web.
Installation :
sudo apt install ntopngAccès via navigateur :
http://localhost:3000
Optimisation des performances réseau
- Optimisation des paramètres du noyau
Ajuster les paramètres dans
/etc/sysctl.conf:net.ipv4.tcp_rmem = 4096 87380 6291456 net.ipv4.tcp_wmem = 4096 65536 6291456 net.core.netdev_max_backlog = 5000Appliquer les modifications :
sudo sysctl -p
- Contrôle de la bande passante avec
tcConfigurer une limite de bande passante :
sudo tc qdisc add dev eth0 root tbf rate 100mbit burst 32kbit latency 400ms
- Bonding des interfaces réseau
Combine plusieurs interfaces pour augmenter la bande passante et la redondance.
Exemple :
sudo modprobe bonding sudo ip link add bond0 type bond sudo ip link set dev bond0 up
Surveillance proactive
- Nagios : Surveillance avancée des équipements et services.
- Zabbix : Surveillance et collecte de métriques sur une longue période.
- Prometheus et Grafana : Collecte de données métriques et visualisation.
Bonnes pratiques
- Automatisation des tests :
- Planifier des tests réguliers de bande passante avec
iperfou des scripts.
- Planifier des tests réguliers de bande passante avec
- Documentation des performances :
- Tenir un historique des statistiques de performance pour identifier les tendances.
- Alertes automatisées :
- Configurer des alertes pour des seuils critiques avec des outils comme Zabbix ou Prometheus.
Ce chapitre fournit une approche complète pour surveiller et optimiser les performances réseau sous GNU/Linux, en utilisant des outils modernes et des configurations adaptées aux besoins des infrastructures complexes.
Chapitre 9 : Virtualisation et réseaux sous GNU/Linux
Introduction
La virtualisation est une technologie clé pour maximiser l’utilisation des ressources matérielles et simplifier la gestion des infrastructures. Sous GNU/Linux, la gestion des réseaux dans des environnements virtualisés est essentielle pour assurer une connectivité fiable et performante. Ce chapitre explore les principaux outils et configurations pour les réseaux virtualisés.
Concepts de base de la virtualisation
- Hyperviseurs
- Hyperviseurs de type 1 : Fonctionnent directement sur le matériel (ex. KVM).
- Hyperviseurs de type 2 : Fonctionnent au-dessus d’un système d’exploitation (ex. VirtualBox).
- Réseaux virtualisés
- Bridge Networking : Les VM partagent le réseau physique de l’hôte.
- NAT Networking : Les VM utilisent une adresse privée et accèdent au réseau via la machine hôte.
- Host-Only Networking : Les VM communiquent uniquement avec l’hôte.
KVM et réseaux virtualisés
- Installation de KVM
Installer les paquets requis :
sudo apt install qemu-kvm libvirt-daemon-system bridge-utils virt-manager
- Configuration d’un pont réseau (Bridge)
Créer un fichier de configuration pour le pont :
auto br0 iface br0 inet static address 192.168.1.10 netmask 255.255.255.0 gateway 192.168.1.1 bridge_ports eth0Activer la configuration :
sudo ifup br0
- Connexion des VM au pont
- Lors de la création d’une VM dans
virt-manager, sélectionnez le pontbr0comme interface réseau.
- Lors de la création d’une VM dans
Docker Networking
- Types de réseaux Docker
- Bridge : Par défaut, connecte les conteneurs entre eux.
- Host : Les conteneurs utilisent directement l’interface réseau de l’hôte.
- Overlay : Connecte des conteneurs sur plusieurs hôtes.
- Macvlan : Associe une adresse MAC unique à chaque conteneur.
- Gestion des réseaux Docker
Lister les réseaux :
docker network lsCréer un réseau :
docker network create my-networkConnecter un conteneur à un réseau :
docker network connect my-network my-container
Open vSwitch (OVS)
- Installation d’Open vSwitch
Installer le paquet :
sudo apt install openvswitch-switch
- Création d’un switch virtuel
Créer un pont virtuel :
sudo ovs-vsctl add-br ovs-br0Ajouter une interface au pont :
sudo ovs-vsctl add-port ovs-br0 eth0
Surveillance des réseaux virtualisés
- Prometheus et Grafana
- Collecter des métriques des VM et des hôtes.
- Visualisation via des tableaux de bord.
- Virt-top
Moniteur en temps réel des ressources utilisées par les VM.
Installation :
sudo apt install virt-top
- nload et iftop
- Surveiller la bande passante et les connexions sur les interfaces virtuelles.
Bonnes pratiques
- Isolation des réseaux
- Utiliser des VLANs pour séparer les réseaux des VM.
- Sauvegardes régulières
- Sauvegarder les configurations des hyperviseurs et des réseaux.
- Automatisation
- Utiliser des outils comme Ansible pour déployer et gérer les infrastructures virtualisées.
Ce chapitre offre une vue complète de la gestion des réseaux dans des environnements virtualisés sous GNU/Linux, fournissant les bases nécessaires pour créer et maintenir des infrastructures résilientes et performantes.
Chapitre 10 : Perspectives avancées et tendances futures des réseaux sous GNU/Linux
Introduction
Les réseaux sous GNU/Linux continuent d’évoluer pour répondre aux exigences croissantes en matière de performance, de scalabilité et de sécurité. Ce chapitre examine les technologies de pointe, les tendances futures et les perspectives pour les administrateurs réseau travaillant dans des environnements GNU/Linux.
Logiciel et virtualisation avancés
- NFV (Network Function Virtualization)
- Objectif : Virtualiser des fonctions réseau telles que les routeurs, les pare-feu et les VPN.
- Outils GNU/Linux courants :
- OpenStack pour la gestion d’infrastructures virtualisées.
- OVS (Open vSwitch) pour la gestion des switches virtuels.
- SDN (Software-Defined Networking)
- Objectif : Centraliser le contrôle du réseau à l’aide d’un plan de contrôle programmable.
- Outils compatibles GNU/Linux :
- OpenFlow pour le contrôle des flux réseau.
- ONOS et OpenDaylight comme plateformes de gestion SDN.
Protocoles de nouvelle génération
- IPv6
- L’adoption de l’IPv6 s’accélère pour faire face à la pénurie d’adresses IPv4.
- Avantages :
- Espace d’adresses pratiquement illimité.
- Améliorations en matière de routage et de sécurité (IPsec intégré).
- QUIC
- Protocole réseau émergent, développé par Google.
- Avantages :
- Basé sur UDP pour réduire la latence.
- Meilleure performance pour les applications web modernes.
- HTTP/3
- Basé sur QUIC, améliore la vitesse et la sécurité des communications web.
- Intégration facile sur les serveurs GNU/Linux avec des logiciels comme Nginx et Apache.
Sécurité renforcée des réseaux
- DNS-over-HTTPS (DoH) et DNS-over-TLS (DoT)
Chiffrement des requêtes DNS pour améliorer la confidentialité.
Configuration sous GNU/Linux :
sudo apt install unbound sudo systemctl enable unbound
- Zero Trust Architecture (ZTA)
- Approche qui exige une vérification stricte de chaque connexion.
- Implémentation sous GNU/Linux :
- Utilisation de solutions comme HashiCorp Boundary.
- Systèmes d’intrusion avancés
- Surveiller et réagir aux menaces en temps réel.
- Outils :
- Suricata pour l’inspection profonde des paquets.
- Wazuh pour la gestion des journaux et la surveillance des systèmes.
Scalabilité et résilience
- Réseaux distribués
- Adopter des architectures distribuées avec des outils comme Kubernetes pour gérer les conteneurs et leur réseau.
- Load Balancing avancé
Implémenter des équilibrages de charge performants avec HAProxy ou Traefik.
Exemples de configuration :
frontend http-in bind *:80 default_backend web-servers backend web-servers server server1 192.168.1.10:80 maxconn 32 server server2 192.168.1.11:80 maxconn 32
Automatisation et gestion
- Ansible et Terraform
- Ansible pour l’automatisation de la configuration.
- Terraform pour gérer l’infrastructure comme du code (IaC).
- Observabilité et monitoring
- Solutions modernes comme Prometheus pour collecter des métriques et Grafana pour les visualiser.
- Gestion centralisée
- Adopter des outils comme Cockpit pour une gestion centralisée et simplifiée des serveurs GNU/Linux.
Bonnes pratiques pour l’avenir
- Formation continue
- Se tenir informé des nouvelles technologies et protocoles.
- Standardisation
- Utiliser des outils et pratiques conformes aux standards de l’industrie pour une compatibilité maximale.
- Redondance
- Implémenter des solutions de redondance pour éviter les points de défaillance uniques.
Ce chapitre conclut le guide en explorant les technologies de pointe et les tendances qui façonnent l’avenir des réseaux sous GNU/Linux. Ces pratiques et outils permettent de rester à la pointe dans un domaine en constante évolution.
Chapitre 11 : Gestion du DNS sous GNU/Linux
Introduction
Le Domain Name System (DNS) est une technologie essentielle pour traduire des noms de domaine lisibles par l’homme (comme example.com) en adresses IP utilisables par les machines. Sous GNU/Linux, la gestion du DNS est une tâche courante pour les administrateurs systèmes et réseau, impliquant à la fois des clients DNS et des serveurs DNS.
Configuration du client DNS
**Fichier **
/etc/resolv.confContient la configuration du client DNS, y compris les serveurs à interroger.
Exemple de configuration :
nameserver 8.8.8.8 nameserver 1.1.1.1 search example.com
**Utilisation de **
systemd-resolvedService de gestion DNS modernisé, activé par défaut sur certaines distributions.
Commandes utiles :
resolvectl status resolvectl query example.com
**Override de DNS avec **
nmcliSi
NetworkManagerest utilisé :nmcli connection modify "nom_de_connexion" ipv4.dns "8.8.8.8 1.1.1.1" nmcli connection up "nom_de_connexion"
Configuration d’un serveur DNS avec BIND
BIND (Berkeley Internet Name Domain) est le serveur DNS le plus couramment utilisé sous GNU/Linux.
Installation de BIND
sudo apt install bind9Configuration de base
Fichier de configuration principal :
/etc/bind/named.conf.Exemple de zone DNS dans
/etc/bind/named.conf.local:zone "example.com" { type master; file "/etc/bind/db.example.com"; };
Fichier de zone
Créer
/etc/bind/db.example.com:$TTL 86400 @ IN SOA ns1.example.com. admin.example.com. ( 2025011501 ; Serial 3600 ; Refresh 1800 ; Retry 1209600 ; Expire 86400 ) ; Minimum TTL IN NS ns1.example.com. ns1 IN A 192.168.1.10 www IN A 192.168.1.20
Redémarrer le service
sudo systemctl restart bind9Test de la configuration
Tester la syntaxe des fichiers :
sudo named-checkconfValider les fichiers de zone :
sudo named-checkzone example.com /etc/bind/db.example.com
Serveurs DNS alternatifs
dnsmasq
Serveur DNS léger, souvent utilisé pour les petits réseaux ou les environnements de test.
Installation :
sudo apt install dnsmasqConfiguration de base dans
/etc/dnsmasq.conf:listen-address=127.0.0.1 server=8.8.8.8 domain-needed bogus-priv
Unbound
Serveur DNS récursif, axé sur la sécurité et la performance.
Installation :
sudo apt install unboundExemple de configuration :
server: interface: 0.0.0.0 access-control: 192.168.1.0/24 allow root-hints: "/etc/unbound/root.hints"
Sécurisation des serveurs DNS
DNSSEC
Protège contre les attaques de type empoisonnement de cache.
Activation dans
/etc/bind/named.conf.options:options { dnssec-validation auto; };
Limitation des requêtes
Exemple avec
rate-limitpour BIND :rate-limit { responses-per-second 5; };
Surveillance des logs
Activer les journaux DNS :
logging { channel query_log { file "/var/log/named_query.log"; severity info; print-time yes; }; category queries { query_log; }; };
Outils de diagnostic DNS
dig
Tester les enregistrements DNS :
dig example.com A dig example.com MX
host
Une alternative simple à
dig:host example.com
nslookup
Interroger un serveur DNS spécifique :
nslookup example.com 8.8.8.8
Bonnes pratiques DNS
Utiliser des serveurs secondaires
- Toujours configurer des serveurs DNS secondaires pour la redondance.
Surveiller les performances
- Implémenter des outils comme Zabbix pour surveiller les temps de réponse DNS.
Planifier les sauvegardes
- Sauvegarder les fichiers de configuration et les zones DNS régulièrement.
Ce chapitre offre une vue complète de la gestion des clients et serveurs DNS sous GNU/Linux, permettant de garantir une résolution de noms rapide, fiable et sécurisée.
Chapitre 12 : Gestion des protocoles HTTP et HTTPS sous GNU/Linux
Introduction
HTTP (HyperText Transfer Protocol) et HTTPS (HTTP Secure) sont les protocoles fondamentaux pour la communication sur le web. HTTP permet le transfert de données non chiffrées, tandis que HTTPS ajoute une couche de sécurité via SSL/TLS. Ce chapitre explore la gestion et la configuration de ces protocoles sous GNU/Linux.
Serveurs HTTP/HTTPS populaires
- Apache
Serveur web très utilisé pour sa flexibilité et sa modularité.
Installation :
sudo apt install apache2
- Nginx
Connu pour ses performances élevées et son faible usage de ressources.
Installation :
sudo apt install nginx
Configuration d’un serveur HTTP avec Apache
Activer un site
Créer un fichier de configuration pour le site :
sudo nano /etc/apache2/sites-available/monsite.confExemple de contenu :
<VirtualHost *:80> ServerName monsite.com DocumentRoot /var/www/monsite </VirtualHost>Activer le site et redémarrer le service :
sudo a2ensite monsite.conf sudo systemctl restart apache2
Tester la configuration
sudo apachectl configtest
Configuration HTTPS avec Apache
- Générer un certificat SSL/TLS auto-signé
Commande pour générer un certificat :
sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 \ -keyout /etc/ssl/private/monsite.key \ -out /etc/ssl/certs/monsite.crt
- Configurer le vhost HTTPS
Exemple de configuration :
<VirtualHost *:443> ServerName monsite.com DocumentRoot /var/www/monsite SSLEngine on SSLCertificateFile /etc/ssl/certs/monsite.crt SSLCertificateKeyFile /etc/ssl/private/monsite.key </VirtualHost>Activer le module SSL et le site HTTPS :
sudo a2enmod ssl sudo a2ensite monsite.conf sudo systemctl restart apache2
Configuration avec Nginx
- Serveur HTTP basique
Exemple de configuration dans
/etc/nginx/sites-available/monsite:server { listen 80; server_name monsite.com; root /var/www/monsite; location / { index index.html; } }Activer le site et redémarrer Nginx :
sudo ln -s /etc/nginx/sites-available/monsite /etc/nginx/sites-enabled/ sudo systemctl restart nginx
- Configuration HTTPS avec Let’s Encrypt
Installation de Certbot :
sudo apt install certbot python3-certbot-nginxObtenir un certificat SSL :
sudo certbot --nginx -d monsite.com -d www.monsite.comRenouveler les certificats automatiquement :
sudo certbot renew --dry-run
Diagnostic et optimisation
- Vérifier l’état des ports
Commande pour vérifier si les ports HTTP (80) et HTTPS (443) sont ouverts :
sudo ss -tuln | grep ':80\|:443'
- Analyser les journaux
Journaux Apache :
sudo tail -f /var/log/apache2/access.log sudo tail -f /var/log/apache2/error.logJournaux Nginx :
sudo tail -f /var/log/nginx/access.log sudo tail -f /var/log/nginx/error.log
- Test de sécurité HTTPS
- Utiliser des outils comme SSL Labs pour tester la configuration HTTPS.
Bonnes pratiques pour HTTP/HTTPS
- Forcer l’utilisation de HTTPS
Rediriger le trafic HTTP vers HTTPS :
server { listen 80; server_name monsite.com; return 301 https://$host$request_uri; }
- Désactiver les protocoles obsolètes
Désactiver SSLv3 et TLS 1.0 dans Apache :
SSLProtocol all -SSLv3 -TLSv1 -TLSv1.1
- Activer HTTP/2
Ajouter
http2à la directivelisten:listen 443 ssl http2;
Ce chapitre fournit une vue complète sur la configuration et la gestion des protocoles HTTP et HTTPS sous GNU/Linux, permettant de garantir des communications web sûres et performantes.
Chapitre 13 : Gestion du protocole SMTP sous GNU/Linux
Introduction
Le protocole SMTP (Simple Mail Transfer Protocol) est essentiel pour l’envoi de courriers électroniques. Sous GNU/Linux, plusieurs outils et serveurs permettent de configurer et de gérer des services de messagerie fiables et sécurisés. Ce chapitre détaille la mise en place d’un serveur SMTP et les meilleures pratiques associées.
Serveurs SMTP populaires
- Postfix
Léger, flexible, et largement utilisé.
Installation :
sudo apt install postfix
- Exim
Connu pour sa personnalisation avancée.
Installation :
sudo apt install exim4
- Sendmail
Historique mais complexe à configurer.
Installation :
sudo apt install sendmail
Configuration de Postfix
Installation de base
Installer Postfix :
sudo apt install postfixPendant l’installation, sélectionner “Site Internet” comme type de configuration.
Fichier de configuration principal
Fichier :
/etc/postfix/main.cfExemple de configuration de base :
myhostname = mail.example.com mydomain = example.com myorigin = /etc/mailname inet_interfaces = all inet_protocols = ipv4 mydestination = $myhostname, localhost.$mydomain, localhost relayhost = mailbox_size_limit = 0 recipient_delimiter = +
Redémarrer Postfix
sudo systemctl restart postfix
Configuration de la sécurité
- Activer l’authentification SMTP (SASL)
Installer
libsasl2-modules:sudo apt install libsasl2-modulesAjouter les lignes suivantes à
/etc/postfix/main.cf:smtpd_sasl_auth_enable = yes smtpd_tls_auth_only = yes smtpd_sasl_security_options = noanonymous smtpd_sasl_local_domain = $myhostname broken_sasl_auth_clients = yes
- Configurer le chiffrement TLS
Ajouter ou modifier ces lignes dans
/etc/postfix/main.cf:smtpd_use_tls = yes smtpd_tls_cert_file=/etc/ssl/certs/mail.crt smtpd_tls_key_file=/etc/ssl/private/mail.key smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache smtp_tls_session_cache_database = btree:${data_directory}/smtp_scacheGénérer un certificat auto-signé :
sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 \ -keyout /etc/ssl/private/mail.key \ -out /etc/ssl/certs/mail.crt
Diagnostic SMTP
- Tester la connectivité SMTP avec Telnet
Installer Telnet si nécessaire :
sudo apt install telnetSe connecter au serveur :
telnet mail.example.com 25Commandes utiles :
EHLO mail.example.com MAIL FROM:<user@example.com> RCPT TO:<recipient@example.com> DATA Test message . QUIT
- Vérifier les journaux
Postfix :
sudo tail -f /var/log/mail.logExim :
sudo tail -f /var/log/exim4/mainlog
Meilleures pratiques pour SMTP
- Protection contre le spam
Configurer SPF, DKIM et DMARC pour authentifier les courriels sortants.
Exemple d’enregistrement SPF :
v=spf1 mx -all
- Limitation des connexions
Ajouter des restrictions dans
/etc/postfix/main.cf:smtpd_client_connection_rate_limit = 10
- Sauvegarder les configurations
- Conserver une copie de
/etc/postfix/ou/etc/exim4/en cas de modifications majeures.
- Conserver une copie de
Ce chapitre couvre les bases de la gestion du protocole SMTP sous GNU/Linux, mettant l’accent sur Postfix pour sa popularité et sa flexibilité. Les bonnes pratiques assurent une messagerie fiable et sécurisée.
Chapitre 14 : Gestion des VPN sous GNU/Linux
Introduction
Les VPN (Virtual Private Networks) sont des outils essentiels pour sécuriser les communications sur des réseaux publics, créer des connexions privées entre des sites distants ou accéder à des ressources internes de manière sécurisée. Sous GNU/Linux, plusieurs solutions permettent de configurer et de gérer des VPN efficacement. Ce chapitre explore les outils, les configurations et les bonnes pratiques pour utiliser des VPN sous GNU/Linux.
Protocoles VPN courants
- OpenVPN
- Basé sur SSL/TLS, flexible et largement adopté.
- IPSec
- Standard industriel pour le chiffrement au niveau IP.
- WireGuard
- Récent, rapide, et conçu pour la simplicité.
- PPTP et L2TP
- Protocoles historiques mais considérés comme moins sécurisés aujourd’hui.
Configuration d’OpenVPN
Installation d’OpenVPN
sudo apt install openvpn easy-rsaCréation d’une autorité de certification (CA)
Initialiser l’environnement Easy-RSA :
make-cadir ~/openvpn-ca cd ~/openvpn-caModifier le fichier
varspour personnaliser les paramètres de la CA.Générer les clés et certificats :
./easyrsa init-pki ./easyrsa build-ca ./easyrsa gen-req server nopass ./easyrsa sign-req server server
Configuration du serveur OpenVPN
Exemple de fichier de configuration serveur :
/etc/openvpn/server.confport 1194 proto udp dev tun ca ca.crt cert server.crt key server.key dh dh.pem server 10.8.0.0 255.255.255.0 keepalive 10 120 cipher AES-256-CBC persist-key persist-tun status /var/log/openvpn-status.log verb 3Redémarrer le service OpenVPN :
sudo systemctl start openvpn@server
Configurer les clients
Exemple de fichier client :
client dev tun proto udp remote vpn.example.com 1194 ca ca.crt cert client.crt key client.key cipher AES-256-CBC
Configuration de WireGuard
Installation de WireGuard
sudo apt install wireguardGénération des clés
Générer une paire de clés pour le serveur :
wg genkey | tee privatekey | wg pubkey > publickey
Configuration du serveur
Fichier
/etc/wireguard/wg0.conf:[Interface] Address = 10.0.0.1/24 ListenPort = 51820 PrivateKey = [votre_clé_privée] [Peer] PublicKey = [clé_publique_client] AllowedIPs = 10.0.0.2/32Activer l’interface WireGuard :
sudo wg-quick up wg0
Configuration du client
Fichier
wg0.confpour le client :[Interface] Address = 10.0.0.2/24 PrivateKey = [clé_privée_client] [Peer] PublicKey = [clé_publique_serveur] Endpoint = vpn.example.com:51820 AllowedIPs = 0.0.0.0/0 PersistentKeepalive = 25
Sécurisation des VPN
- Pare-feu
Configurer
iptablesounftablespour autoriser uniquement le trafic VPN :sudo iptables -A INPUT -p udp --dport 1194 -j ACCEPT sudo iptables -A INPUT -i tun0 -j ACCEPT
- DNS sécurisé
Configurer des DNS privés pour éviter les fuites :
push "dhcp-option DNS 1.1.1.1" push "dhcp-option DNS 8.8.8.8"
- Chiffrement fort
- Utiliser AES-256 pour OpenVPN et les clés Curve25519 pour WireGuard.
Outils de diagnostic et surveillance
- Vérifier les connexions
OpenVPN :
sudo tail -f /var/log/openvpn-status.logWireGuard :
sudo wg show
- Tester la connectivité
- Utiliser
pingpour tester les connexions via le tunnel VPN.
- Utiliser
- Surveiller les performances
- Installer
iftopounloadpour analyser le trafic sur les interfaces VPN.
- Installer
Bonnes pratiques pour les VPN
- Mises à jour régulières
- Maintenir le logiciel et les clés à jour pour garantir la sécurité.
- Journalisation
- Activer des journaux pour surveiller les activités suspectes.
- Restreindre les accès
- Limiter les adresses IP autorisées via les fichiers de configuration des pairs.
Ce chapitre offre une vue complète sur la mise en place et la gestion des VPN sous GNU/Linux, en mettant l’accent sur la sécurité et les bonnes pratiques pour des communications fiables et protégées.