2. Réseaux et Infrastructure
2.1 Objectifs de ce chapitre
- ConnaĂźtre les diffĂ©rents composants matĂ©riels dâun rĂ©seau et leur rĂŽle
- Comprendre quels Ă©lĂ©ments sont utilisĂ©s lors de lâenvoi dâune requĂȘte rĂ©seau HTTP/HTTPS
- Savoir manipuler les différentes commandes de base liées au réseau
- DĂ©couper un rĂ©seau dâentreprise en sous-rĂ©seaux
2.2 Introduction


2.3 Couche 1 : Matériel
implĂ©mentation majoritaire : lâutilisation dâun rĂ©seau avec une topologie en Ă©toile et des cĂąbles Ethernet.
2.4 Couche 2 : Liaison de données
Lâidentifiant dâune machine est la MAC address. Le composant principal de cette couche (switch) conserve une table des MAC address permettant dâassocier chaque port du switch Ă une MAC address.
2.4.1 VLAN
Les VLAN (Virtual Local Area Network) permettent de sĂ©parer certains ports dâun switch par rapport Ă dâautres. Les ports se verront attribuĂ© un numĂ©ro de VLAN et les ports ayant un mĂȘme numĂ©ro de VLAN pourront uniquement communiquer entre eux.
LâintĂ©rĂȘt des VLAN est multiple :
- Sécurité : séparation des sous-réseaux
- Ăconomique : on peut utiliser au maximum les ports disponibles sur les switchs (on achĂštera moins de switch et des plus gros)
- Bande passante : optimisation de la bande passante en réduisant la taille des domaines de diffusion (broadcast)
- FacilitĂ© de gestion : on peut facilement changer le numĂ©ro de VLAN dâun port et donc faire basculer une machine cliente dâun sous-rĂ©seau Ă un autre
2.4.2 STP
le protocole STP (Spanning Tree Protocol), il va autoriser à créer des boucles en désactivant logiquement certains liens et en les réactivant en cas de panne.
2.5 Couche 3 : Réseau
La couche rĂ©seau est implĂ©mentĂ©e dans une infrastructure par des routeurs. Ceux-ci feront transiter des paquets IP dâun rĂ©seau Ă un autre. Lâidentifiant dâune machine pour cette couche est une adresse IP. Une adresse IP est composĂ©e dâune adresse rĂ©seau et dâun masque. Le masque dâune adresse IP est notĂ© soit sous le format A.B.C.D (Ex: 255.255.0.0) ou sous le format CIDR (Ex : /16).
2.5.1 Adresses spéciales
| Plage | Usage |
|---|---|
| 127.0.0.0/8 | Boucle locale |
| 10.0.0.0/8 | Adresses privées |
| 172.16.0.0/12 | Adresses privées |
| 192.168.0.0/16 | Adresses privées |
| 224.0.0.0/4 | Multicast |
Les adresses privĂ©es sont rĂ©servĂ©es pour ĂȘtre utilisĂ©es dans les rĂ©seaux dâentreprises (LAN) et ne sont pas routables sur Internet (Voir NAT).
2.5.3 Commandes réseau
| Linux | Windows | Explication |
|---|---|---|
| ifconfig OU ip addr | ipconfig | Configuration / Consultation des informations IP dâune machine |
| route | route | Configuration / Consultation des informations de routage dâune machine |
| ping | ping | Tester la connectivitĂ© IP dâune machine |
| traceroute | tracert | Voir le chemin parcouru par un paquet IP |
2.5.4 ARP
Il permet Ă une machine de demander lâadresse MAC dâune autre machine sur base de son adresse IP.

Dâun point de vue sĂ©curitĂ©, le protocole ARP est sensible aux attaques de type ARP cache poisoning/spoofing. Il sâagit pour lâattaquant de rĂ©pondre Ă toutes les requĂȘtes ARP en vue de dĂ©tourner le trafic du sous-rĂ©seau vers sa propre machine et dâeffectuer des Ă©coutes.
2.5.5 Découpage en sous-réseaux
Vous devez ĂȘtre capable de dĂ©couper un rĂ©seau en sous-rĂ©seaux. Ceci peut ĂȘtre demandĂ© dans la partie pratique de lâexamen.
2.5.6Â Table de routage
Le composant principal de cette couche 3, le routeur, maintient une table de routage. Une table de routage est un tableau qui prĂ©cise pour une destination dâun sous-rĂ©seau (adresse rĂ©seau + masque) une passerelle (adresse IP dâune machine/routeur).
2.5.7 Passerelle par défaut
chaque machine possĂ©dera une passerelle par dĂ©faut (0.0.0.0/.0.0.0.0). Celle-ci sera utilisĂ©e lorsquâaucune rĂšgle plus prĂ©cise ne pourra ĂȘtre utilisĂ©e dans la table de routage. GrĂące Ă cette passerelle par dĂ©faut, il est Ă©galement plus simple dâautomatiser la connexion de machines clientes Ă son rĂ©seau. En effet, il suffira de fournir Ă chaque machine cliente une adresse IP, un masque et une passerelle par dĂ©faut et celle-ci pourra utiliser notre rĂ©seau. Cette automatisation pourra se faire via un serveur DHCP.
2.5.8Â Routage IP
Une machine a toujours accÚs au(x) réseau(x) auquel(s) elle est connectée directement.
2.6Â Couche 4 : Transport
Une application sera donc identifiée via son port.
| Application | Port réservé |
|---|---|
| Web (HTTP) | 80 |
| SSH | 22 |
| HTTPS | 443 |
| DNS | 53 |
Une politique de sécurité de base pour les administrateurs systÚme est donc de bloquer sur le serveur tous les ports hormis ceux des applications utilisées.
3 Services réseaux (DHCP-DNS-NAT)
3.1Â Objectifs de ce chapitre
- Savoir expliquer le rÎle des 3 services réseaux de base
3.2Â Introduction
Pour quâun rĂ©seau dâentreprise fonctionne correctement, il est nĂ©cessaire dâavoir au minimum 3 services Ă savoir :
- DNSÂ (Domain Name System)
- DHCPÂ (Dynamic Host Configuration Protocol)
- NATÂ (Network Address Translation)
3.3Â DNS
Pour rappel, le systĂšme DNS permet de traduire un nom de domaine en une adresse IP et inversement.
dans un rĂ©seau dâentreprise, les machines clientes porteront des noms et ces noms devront ĂȘtre traduits en une adresse IP.
En tout cas, lâadministrateur systĂšme de lâentreprise devra gĂ©rer les enregistrements DNS de lâentreprise notamment les enregistrements DNS pointant vers les serveurs de lâentreprise et qui devront ĂȘtre accessibles depuis lâextĂ©rieur.
Un administrateur systĂšme installera gĂ©nĂ©ralement 2 serveurs DNS. Cette redondance permettra de gĂ©rer plus facilement la dĂ©faillance dâun serveur.
3.3.1 Configuration DNS
Une zone DNS contient diffĂ©rents types dâenregistrements :
- SOA : Start of Authority (informations générales sur la zone DNS)
- A : Enregistrement dâun hĂŽte (correspondance Nom â IP)
- CNAME : Alias
- PTR : Enregistrement dâune IP (correspondance IP â Nom)
- MX : Mail server (adresse IP du serveur mail de la zone)
- NS : Name Server (serveur DNS pour la zone)
3.3.2 RĂ©solution dâun nom
Il est trĂšs important de ne pas oublier que toute rĂ©solution de noms sur une machine commence par lâinspection du fichier hosts. Ce fichier est prĂ©sent sous Linux Ă cet endroit /etc/hosts et sous Windows Ă cet endroit c:\Windows\System32\Drivers\etc\hosts.
Les administrateurs systĂšme utilisent abondamment ce fichier pour tester des services car cela Ă©vite lâinstallation dâun serveur DNS. En production, un serveur DNS sera bien Ă©videmment employĂ©.
3.4Â DHCP
Pour quâune machine cliente puisse se connecter Ă un rĂ©seau et surfer sur Internet, cette machine a besoin au minimum des informations suivantes :
- se voir attribuer une adresse IP et un masque au sein de ce réseau
- obtenir une passerelle par défaut (pour aller sur Internet notamment)
- obtenir des serveurs DNS (pour traduire les noms en adresse IP)
Un serveur DHCP permettra de répondre à ces besoins de maniÚre automatique.

Les informations reçues en provenance du serveur DHCP ne seront valables quâun certain temps. On parle de bail. Le client pourra Ă©videmment renouveler son bail.
Un administrateur systĂšme installera plusieurs serveurs DHCP pour se prĂ©munir de la panne dâun serveur. Deux serveurs DHCP ne pouvant pas distribuer les mĂȘmes adresses IP, lâadministrateur systĂšme devra rĂ©partir ces adresses de maniĂšre intelligente entre les 2 serveurs.
3.5Â NAT
Le NAT est utilisĂ© abondamment par les rĂ©seaux dâentreprise pour traduire les adresses IP privĂ©es de clients en adresses publiques routables sur Internet. Pour rappel, les adresses IPv4 sont limitĂ©es Ă 4 milliards ce qui ne permet pas de couvrir la totalitĂ© du globe terrestre. Donc certaines plages dâadresses ont Ă©tĂ© rĂ©servĂ©es (adresses privĂ©es) pour pouvoir ĂȘtre attribuĂ©es dans les rĂ©seaux locaux des entreprises. Ceci est trĂšs bien, mais pour aller sur Internet, jâai besoin dâune adresse publique, autrement dit dâune adresse routable sur Internet. Câest ici quâintervient le NAT. Vous allez comprendre comment la terre entiĂšre peut surfer sur Internet avec seulement 4 milliards dâadresses disponibles.
3.5.1Â Source NAT (SNAT)
Chaque machine cliente sera connectĂ©e au rĂ©seau de lâentreprise via une adresse privĂ©e et recevra une passerelle par dĂ©faut qui sera gĂ©nĂ©ralement le routeur qui vous permettra dâaller sur Internet. Ce routeur disposera dâune adresse IP publique reçue par votre fournisseur dâaccĂšs Ă Internet et il disposera Ă©galement dâune adresse privĂ©e dans le rĂ©seau de lâentreprise. Nous activerons le NAT sur le routeur ce qui aura pour effet de traduire lâadresse IP source de tout paquet IP sortant sur Internet par lâadresse IP publique du routeur.
Le routeur va en fait identifier les machines clientes via un port choisi aléatoirement.
3.5.2Â Port forwarding
Le NAT introduit une isolation du rĂ©seau de lâentreprise. En effet, il est impossible dâatteindre une machine du rĂ©seau de lâentreprise depuis lâextĂ©rieur. La seule machine que lâon sait atteindre est le routeur. Ceci est intĂ©ressant en termes de sĂ©curitĂ©, mais nous devons quelquefois avoir accĂšs Ă un serveur prĂ©sent dans le rĂ©seau de lâentreprise. Pour ce faire, nous pouvons configurer le NAT pour quâil fasse du port forwarding.
Le principe est le suivant : pour accĂ©der Ă un serveur de lâentreprise, on attribue un port sur le routeur dĂ©diĂ© Ă ce serveur. DĂšs que le routeur reçoit une connexion de lâextĂ©rieur sur ce port, il transfĂšre les paquets vers lâadresse privĂ©e du serveur.
Le port forwarding est utilisĂ© abondamment dans les rĂ©seaux surtout depuis la virtualisation. Par exemple, VirtualBox dĂ©finit par dĂ©faut un rĂ©seau NAT entre la machine hĂŽte et la machine virtuelle invitĂ©e. Si vous installez un serveur dans la machine virtuelle invitĂ©e et que vous voulez y accĂ©der depuis lâextĂ©rieur (votre machine hĂŽte ici), vous devrez faire du port forwarding. Ceci nâest pas compliquĂ©, il suffit de faire une association entre un port de la machine hĂŽte et un port la machine virtuelle.
4Â Installation Serveurs Linux et Windows
4.1Â Objectifs de ce chapitre
- Comprendre les diffĂ©rents Ă©lĂ©ments qui mĂ©rite attention lors de lâinstallation dâun serveur
4.4Â Licences
4.4.1Â Logiciel Libre â GPL
GPL (GNU Public Licence).
Cette licence se caractérise par 4 libertés à respecter :
- La libertĂ© dâexĂ©cuter le logiciel, pour nâimporte quel usage
- La libertĂ© dâĂ©tudier le fonctionnement dâun programme et de lâadapter Ă ses besoins, ce qui passe par lâaccĂšs aux codes sources
- La liberté de redistribuer des copies
- Lâobligation de faire bĂ©nĂ©ficier la communautĂ© des versions modifiĂ©es (copyleft)
La derniĂšre libertĂ© (le copyleft) est la plus contraignante, car elle nĂ©cessite quâun logiciel utilisant une licence GPL doive ĂȘtre distribuĂ© sous licence GPL.
4.4.2Â LGPL
La licence LGPL (Lesser GNU Public Licence) reprend les fondements de la licence GPL en supprimant la restriction sur lâhĂ©rĂ©ditĂ© de la licence GPL. Cette licence permet Ă©galement la cohabitation de plusieurs licences (libres et propriĂ©taires) au sein dâun logiciel. Il sâagit pour ces raisons de la licence prĂ©fĂ©rĂ©e des dĂ©veloppeurs de librairies.
4.4.5Â Remarques
Gratuit ne veut pas dire libre ! La gratuitĂ© implique simplement que lâon ne paye pas pour un produit.
Open source ne veut pas dire libre ! LâOpen source implique simplement que nous avons la possibilitĂ© dâavoir accĂšs au code source.
La notion de logiciel libre fait référence aux 4 libertés citées ci-dessus.
4.5Â RAID
Le RAID (Redundant Arrays of Inexpensive Disks) est un mĂ©canisme de redondance de disques. Celui-ci a plusieurs objectifs combinables Ă savoir se prĂ©munir contre la panne dâun disque et amĂ©liorer les performances en Ă©criture sur les disques.
| Niveau | Explication | Avantages | Inconvénients |
|---|---|---|---|
| RAID 0 | Les donnĂ©es sont Ă©crites en parallĂšle sur plusieurs disques | Gain en performance | Perte dâun disque == perte des donnĂ©es |
| RAID 1 | Les données sont écrites sur des disque en miroir | Tolérance aux pannes disques | Coût -> disque en double |
| RAID 5 | Les données sont écrites en parallÚle sur au minimum 3 disques (2 disques de données + 1 disque de parité) | Tolérance aux pannes disques + performance | Minimum de 3 disques requis |
Le RAID 5 sâappuie sur lâopĂ©rateur logique XOR. La paritĂ© de chaque Ă©criture est calculĂ©e via cet opĂ©rateur. En cas de perte dâun disque, lâinformation peut ĂȘtre reconstituĂ©e Ă partir des 2 autres disques toujours via cet opĂ©rateur XOR.

4.6.1 Partitionnement
Le partitionnement dĂ©signe lâopĂ©ration de diviser un disque en partitions. Un partitionnement bien rĂ©flĂ©chi facilitera la maintenance des serveurs. Une partition systĂšme et une partition âdonnĂ©es utilisateurâ faciliteront par exemple la mise en place de sauvegardes.
4.6.1.1Â LVM
LVM (Logical Volume Manager) est une solution permettant une gestion dynamique du partitionnement disponible sous Linux.
4.6.1.2Â SystĂšmes de fichiers
Voici les principaux :
- Ext2,Ext3,Ext4 : systÚme de fichiers Linux incluant le concept de permissions (Ext4 est actuellement la version la plus utilisée sous Linux)
- NTFS : systÚme de fichiers Windows incluant le concept de permissions (NTFS est actuellement la version la plus utilisée sous Windows)
- FAT32 : ancien systÚme de fichiers limité à des fichiers de maximum 4GB , pas de systÚmes de permissions, multiplateforme
- exFAT : remplaçant de FAT32, pas de limitation à 4GB, pas de permissions, multiplateforme
- Swap : partition dâĂ©change (extension de la mĂ©moire RAM sous Linux)
- Btrfs : nouveau systĂšme de fichier permettant la prise dâinstantanĂ©s (snapshot dâune partition) et le redimensionnement de partitions Ă chaud. Ce systĂšme utilise en interne les arbres B-tree.
- tmpfs : systÚme de fichiers temporaire en mémoire vive (RAM), utilisé pour stocker des fichiers temporaires (
/tmp) qui ne nécessitent pas de persistance aprÚs un redémarrage.
4.6.1.3Â Montage des partitions
Chaque ligne du fstab indique donc une partition, son point de montage, le systĂšme de fichiers utilisĂ©, les options, si une sauvegarde doit ĂȘtre faite avec lâutilitaire dump (peu utilisĂ©), lâordre de vĂ©rification des disques lors dâune demande de vĂ©rification (fsck).
4.6.1.4Â Chiffrement des partitions
Une partition non chiffrĂ©e peut ĂȘtre lue facilement sans autorisations particuliĂšres via un live-cd si on a un accĂšs physique Ă une machine.
Linux propose LUKS (Linux Unified Key Setup) qui permet un chiffrement des partitions (Ă lâinstallation ou plus tard). Windows propose, quant Ă lui, BitLocker pour crypter ses partitions.
4.6.2 Amorçage
Lors du dĂ©marrage dâune machine, un chargeur dâamorçage (bootloader) est lancĂ©. Celui-ci sâoccupera de lancer le systĂšme dâexploitation ou de prĂ©senter les diffĂ©rents systĂšmes dâexploitation dans le cas dâun multi-boot. Windows propose winload comme chargeur dâamorçage tandis que Linux propose essentiellement GRUB (GRand Unified Bootloader).
4.7Â Installation Windows (Windows Server 2016)
Lâinstallation dâun serveur Windows est assez simple. Câest lâajout de service, appelĂ© rĂŽle sous Windows, qui reste plus complexe. Les rĂŽles permettent dâinstaller un Active Directory, un serveur DNS, DHCP, ⊠.
Un aspect important sous Windows est la gestion des licences. Les licences serveur doivent ĂȘtre comptabilisĂ©es suivant le nombre de cĆurs physiques du processeur. Il faut Ă©galement comptabiliser les licences dâaccĂšs client (CAL).
5Â Administration Linux (Debian)
5.1Â Objectifs de ce chapitre
- Savoir administrer un serveur Linux (Debian)
5.3Â APT
Toutes les distributions Linux disposent dâun systĂšme de gestion des packages
Lâoutil APT dispose dâun fichier de configuration (/etc/apt/sources.list) permettant de renseigner les dĂ©pĂŽts Ă utiliser.
5.3.1Â Commandes APT
Mise à jour du dépÎt local :
apt-get updateInstaller un logiciel :
apt-get install <paquet1> <paquet2> ... 5.4Â SSH
Les systĂšmes Linux actuels sont le plus souvent gĂ©rĂ©s en ligne de commande (pas dâinterface graphique) et Ă distance.
5.4.1Â Fonctionnement
Nous ne donnerons ici quâun rĂ©sumĂ© du fonctionnement du protocole SSH (Secure Socket Shell). Le protocole SSH effectue un Ă©change de clĂ©s de chiffrement avant dâutiliser ces derniĂšres pour crypter toutes les communications entre le client et le serveur. Le port 22 est le port par dĂ©faut utilisĂ© par SSH.
SSH est un service qui est initialisé/démarré par systemd.
5.4.3Â Configuration
Par défaut, SSH est installé pour permettre une authentification par login et mot de passe pour tous les utilisateurs présents sur le serveur (hormis root) ainsi que par clé (root compris).
Nous nous contenterons de ce comportement par défaut pour ce cours.
5.4.4Â Utilisation
Le client SSH a besoin des informations suivantes : un nom de machine ou une adresse IP, un login et un mot de passe. On peut remplacer lâauthentification par login/mdp par une clĂ©.
5.4.5Â Copie de fichiers
Il est à noter que dÚs que vous avez un accÚs SSH, vous pouvez copier des fichiers entre votre machine hÎte et invitée via SCP/SFTP. Ceci peut se faire en ligne de commande (Linux), avec le logiciel WinSCP (Windows) ou Cyberduck (Mac).
5.4.6 Authentification par clé sur un serveur Linux
Attention si vous utiliser Puttygen â copier le contenu de la clĂ© publique gĂ©nĂ©rĂ© dans un fichier texte. Nâutiliser pas le bouton « Save public key » car il enregistre la clĂ© sous un format non reconnu sous Linux.
Le fichier de la clĂ© publique est tranfĂ©rĂ©. Il faudra copier son contenu dans le fichier authorized_keys de lâutilisateur souhaitĂ©.
Attention aussi Ă mettre des droits corrects. Le fichier authorized_keys doit ĂȘtre propriĂ©tĂ© de lâutilisateur et accessible en lecture uniquement.
5.4.7Â Tunnel SSH
La crĂ©ation dâun tunnel SSH permet de connecter 2 machines en encapsulant le trafic de la premiĂšre et en le redirigeant vers la seconde. Cette technique est souvent appelĂ©e le VPN du pauvre car elle permet notamment de donner accĂšs Ă une machine du rĂ©seau local de lâentreprise Ă des ordinateurs distants et Ă moindres frais (de configuration).
5.5Â Gestion des utilisateurs
5.5.1Â adduser-deluser-addgroup-delgroup
Il est Ă noter que adduser crĂ©e un profil pour lâutilisateur basĂ© sur un rĂ©pertoire squelette situĂ© dans /etc/skel. Tout fichier placĂ© par lâadministrateur dans ce rĂ©pertoire squelette sera copiĂ© par dĂ©faut dans le rĂ©pertoire de lâutilisateur lors de lâappel Ă adduser.
Par dĂ©faut, la home directory créée par adduser est accessible uniquement au propriĂ©taire en lecture, Ă©criture et exĂ©cution (voir /etc/adduser.conf). Ceci peut ĂȘtre changĂ© dans /etc/adduser.conf au besoin.
5.5.3Â SUDO
5.5.3.1Â Fonctionnement
Pour quâun utilisateur puisse exĂ©cuter une commande avec « sudo », il doit faire partie du groupe sudo.
5.5.3.4Â Avantages de SUDO
Les avantages du SUDO sont les suivants:
- Permettre Ă des utilisateurs dâexĂ©cuter une commande en tant que superutilisateur sans devoir connaĂźtre le mot de passe de root.
- Travailler en mode non privilĂ©giĂ© et nâutiliser le mode privilĂ©giĂ© que quand cela est nĂ©cessaire. Ceci rĂ©duit le risque de commettre des dommages pour le systĂšme.
- ContrÎler et enregistrer qui fait quoi (SUDO enregistre toutes le commandes sudo effectuées dans le journal de systemd).
- Renforcer la sécurité. En désactivant le compte root et en le remplaçant par un compte « sudo », un attaquant ne connaßtra pas le mot de passe, ni le nom du compte !
5.6Â Passwd
Passwd permet de changer le mot de passe de son compte et de tous les comptes (pour le root).
5.7Â SystemD
Les niveaux dâexĂ©cution :
- 0 : arrĂȘt (la commande init 0 arrĂȘte le systĂšme)
- 1 : mono-utilisateur (utiliser par exemple pour la maintenance)
- 3 : multi-utilisateur sans environnement graphique
- 2-4 : idem que 3, mais peut ĂȘtre dĂ©fini par lâutilisateur (peu utilisĂ© en pratique)
- 5 : multi-utilisateur avec environnement graphique
- 6 : redémarrage (la commande init 6 redémarre le systÚme)
Lâobjectif principal de SystemD (tout comme SystemV) est de dĂ©marrer des services, appelĂ©s daemons dans le monde Linux. Il est donc normal que celui-ci propose diffĂ©rentes maniĂšres dâimplĂ©menter son service.
5.8 Débogage
Voici quelques méthodes et outils courants pour diagnostiquer et résoudre les problÚmes sur un serveur Linux :
- Consulter les logs systÚme :
Les fichiers de logs se trouvent gĂ©nĂ©ralement dansÂ/var/log/. Les plus importants sont :/var/log/syslog ouÂ/var/log/messages : logs systĂšme gĂ©nĂ©raux/var/log/auth.log : authentification et sudo/var/log/apache2/error.log : erreurs Apache/var/log/mysql/error.log : erreurs MySQL/MariaDB
- Utiliser les commandes de diagnostic :
journalctl : consulter les logs gĂ©rĂ©s par systemdsystemctl status <service> : Ă©tat dâun serviceps aux /Âtop /Âhtop : surveiller les processusdf -h /Âdu -sh : vĂ©rifier lâespace disquefree -h : vĂ©rifier la mĂ©moirenetstat -tulnp /Âss -tulnp : ports ouverts et services Ă©coutantping,Âtraceroute,Ânslookup : diagnostic rĂ©seau
- Redémarrer un service :
systemctl restart <service>
- VĂ©rifier la syntaxe dâun fichier de configuration :
- Par exemple, pour Apache :Â
apache2ctl configtest - Pour Nginx :Â
nginx -t
- Par exemple, pour Apache :Â
- Analyser les permissions :
ls -l pour vérifier les droits sur les fichiers et dossiers
- Utiliser des outils de surveillance :
uptime : charge systÚmedmesg : messages du noyau
Bonnes pratiques : - Toujours lire les messages dâerreur affichĂ©s par les commandes. - Appliquer les changements un par un et tester Ă chaque Ă©tape. - Documenter les problĂšmes rencontrĂ©s et leurs solutions pour rĂ©fĂ©rence future.
En rĂ©sumĂ© : savoir oĂč chercher les logs, utiliser les commandes de base, et adopter une dĂ©marche mĂ©thodique sont les clĂ©s dâun dĂ©bogage efficace en administration systĂšme.
6Â Serveurs Web (Apache)
6.1Â Objectifs du chapitre
- Déployer un site Web via Apache
6.3 Etapes de dĂ©ploiement dâun site Web
- Installer le paquet du serveur Web (Apache)
- Transférer/Installer le code du site Web sur le serveur (/var/www)
- Créer un VirtualHost
- Activer le site
- Faire correspondre la Directive ServerName et /etc/hosts
- Tester le site Web en local
6.5 CaractĂ©ristiques dâApache
Apache étant hautement configurable, il se caractérise par une configuration morcelée.
Ce fichier inclut tout simplement dâautres fichiers et rĂ©pertoires Ă savoir:
- /etc/apache2/sites-available : définitions de sites Web (VirtualHost)
- /etc/apache2/sites-enabled : définitions de sites Web (VirtualHost) activés
- /etc/apache2/mods-available : liste des modules (SSL, proxy, ..) installés
- /etc/apache2/mods-enabled : liste des modules (SSL, proxy, ..) activés
- /etc/apache2/conf-available : liste des configurations (charset, ..) disponibles
- /etc/apache2/conf-enabled : liste des configurations (charset, âŠ) activĂ©es
- /etc/init.d/apache2 : un service qui sera dĂ©marrĂ©/arrĂȘtĂ© par SystemD
- /etc/apache2/ports.conf : la configuration des ports pour apache (80 et 443 par défaut)
6.6Â VirtualHost
Les virtualhosts permettent de dĂ©ployer plusieurs sites Web sur un mĂȘme serveur (mĂȘme adresse IP). La distinction se fait en gĂ©nĂ©ral sur le nom du site, apache doit en effet savoir suivant lâURL quel site il doit prĂ©senter.
Ensuite, il faut activer le site comme suit :
#activer un site
#commande Ă entrer dans /etc/apache2/sites-available
a2ensite monsite.conf6.7Â Reverse proxy
Un proxy inverse est un serveur frontal câest-Ă -dire un serveur exposĂ© sur Internet et par lequel toutes les requĂȘtes passeront. Ce serveur ne traitera pas les requĂȘtes, mais se contentera de les rediriger vers dâautres serveurs internes Ă lâentreprise.
Les intĂ©rĂȘts de ce mĂ©canisme sont multiples. Vu quâil nây a quâun seul point dâaccĂšs, la sĂ©curitĂ© est plus facile Ă gĂ©rer. Cela permet Ă©galement de mettre en Ćuvre du «load balancing» entre des serveurs internes. Câest Ă©galement un moyen simple de rendre disponible un serveur interne sur le Web (pas besoin de configuration rĂ©seau).
6.9Â Apache et HTTPS
Le port par défaut pour les communications https est le 443.
6.9.3Â Letâs Encrypt
Letâs encrypt est une autoritĂ© de certification libre, gratuite et automatisĂ©e. Ceci permet dâobtenir un certificat valide pour son site Web sans trop dâeffort.
7 Partage et accÚs réseau
7.1Â Objectifs du chapitre
- ConnaĂźtre les diffĂ©rents moyens de partage et dâaccĂšs Ă un serveur et leur rĂŽle
7.2Â NFS
NFS est un protocole réseau couramment employé pour partager des fichiers sur un réseau. NFS fonctionne en mode client-serveur. NFS est un protocole performant, mais sans sécurité accrue. Ce protocole est le protocole de partage réseau par excellence sous Linux/MacOS.
7.2.3Â Fonctionnement NFS
NFS vĂ©rifie lâidentitĂ© des utilisateurs via les UID, GID. Il faut donc que les UID, GID de la machine distante et locale corresponde. LâUID de root est toujours le mĂȘme (0).
Il est donc important de comprendre que NFS (v2,V3) ne demande pas aux utilisateurs de sâauthentifier.
7.3Â SAMBA
SMB/CIFS est un protocole propriétaire utilisé sous Windows pour les partages réseau.
Vous connaissez certainement ces partages réseaux qui ont des paths UNC de la forme : \machineserveur\partage.
Il permet donc une interopérabilité entre les 2 mondes (Linux/Windows) notamment:
- Créer des partages sous Linux accessible sous Windows
- Transformer un serveur Linux en Domain Controler
- Authentifier des clients Linux sur un Active Directory
Samba fonctionne tout comme NFS en mode client-serveur. Samba possĂšde une gestion plus Ă©laborĂ©e au niveau de lâauthentification et des droits des utilisateurs par rapport Ă NFS.
7.4Â VPN
Un VPN (Virtual Private Network) est un systÚme permettant de relier 2 réseaux via un réseau non sûr tout en garantissant un trafic sécurisé (crypté) et de maniÚre transparente. On parle de tunnel.
7.4.1Â Classification VPN
Il existe différents types de VPN à savoir:
- LAN to LAN / Site to Site permettant de relier 2 rĂ©seaux ( Ex: relier des succursales dâune entreprise Ă©parpillĂ©es dans le monde)
- RoadWarrior permettant Ă un PC externe de se connecter Ă lâentreprise (Nomadisme des employĂ©s)
Il est important de comprendre que le VPN crĂ©e un rĂ©seau et le configure pour que le rĂ©seau distant (LAN to LAN) ou PC distant (Road Warrior) soit considĂ©rĂ© comme sâil Ă©tait dans lâentreprise. Lâutilisateur pourra donc utiliser tout ce qui accessible dans le LAN de lâentreprise (imprimantes ⊠).
7.4.3 Protocoles VPN
| Protocole | Couche Réseau | Remarques |
|---|---|---|
| OpenVPN | Couche Application | OpenVPN est un logiciel crĂ©ant un VPN en se basant sur SSL/TLS â RoadWarrior ou Site to Site |
7.5 FTP
Le FTP (File Transfer Protocol) est un protocole rĂ©seau standard. Le protocole FTP utilise un canal pour le transfert des donnĂ©es et un autre pour le contrĂŽle. Câest pourquoi il utilise par dĂ©faut 2 ports ( 20â donnĂ©es, 21 â contrĂŽle). Le canal de contrĂŽle permet dâenvoyer les commandes FTP ( put, get, open, close, ls, âŠ).
Il peut ĂȘtre sĂ©curisĂ© via SSL/TLS (FTPS) ou par SSH (SFTP). Regardez dans WinSCP, vous verrez que vous transfĂ©rez par dĂ©faut vos fichiers par SFTP!
7.5.1Â Modes
Le protocole FTP peut sâutiliser en mode actif ou passif.
Dans le mode actif, le client peut choisir son port de connexion pour la rĂ©ception des donnĂ©es. Le serveur initialisera une connexion de son port 20 vers le port choisi par le client. Le client doit donc accepter les connexions entrantes sur le port choisi. Ceci pose souvent problĂšme car les clients se trouvent gĂ©nĂ©ralement dans un LAN qui effectue du NAT vers lâextĂ©rieur. Câest pourquoi le mode actif est le moins utilisĂ©.
Dans le mode passif, le serveur impose le port de connexion pour le transfert des données. Le port choisi par le serveur est envoyé au client qui initialise alors la connexion.
7.6Â Terminal Server
Le Terminal Server repose sur le protocole RDP (Remote Desktop Protocol) développé par Microsoft.
Terminal Server permet non seulement la prise Ă distance dâun serveur avec son interface graphique, mais aussi de monter des lecteurs locaux sur le serveur distant.
8Â Annuaires et Authentification
8.1Â Objectifs du chapitre
- ConnaĂźtre les diffĂ©rents composants dâun Active Directory et leurs rĂŽles
Le protocole LDAP (Lightweight Directory Access Protocol) a Ă©tĂ© dĂ©fini pour permettre dâinterroger et de modifier un annuaire. Il est depuis devenu une rĂ©fĂ©rence et un standard pour lâauthentification.
LDAP est en fait devenu bien plus quâun protocole, câest une norme qui dĂ©finit:
- un protocole: comment sont échangées les données
- un modĂšle de nommage: comment sont nommĂ©es les entrĂ©es dans lâannuaire
- un modÚle fonctionnel: quelles sont les méthodes pour accéder aux données
- un modĂšle dâinformation: nature et description des donnĂ©es
- un modĂšle de sĂ©curitĂ©: description de la sĂ©curitĂ© des donnĂ©es (quel chiffrement âŠ)
- RĂ©plication: comment rĂ©pliquer des donnĂ©es entre serveurs LDAP pour se prĂ©munir des pannes? Ce point nâest pas encore standardisĂ©.
OpenLDAP est la solution reconnue du monde libre (paquet slapd dans Debian). La solution Active Directory de Microsoft est sans doute la plus connue et répandue.
8.2Â ModĂšle de nommage
Voici le vocabulaire de base utilisé dans un annuaire LDAP:
- DC : Domain Component. Racine de lâarbre
- DN : Distinguished Name. Chemin complet vers un élément (Les DN sont uniques)
- OU : Organizational Unit. Division de lâentreprise rassemblant des CN.
- CN : Common Name. Nom dâun Ă©lĂ©ment
Exemple :

8.3 ModĂšle fonctionnel
LDAP a dĂ©fini diffĂ©rentes mĂ©thodes permettant de modifier et consulter lâannuaire. Voici la liste des principales mĂ©thodes :
- Bind : sâauthentifier auprĂšs du serveur LDAP. Ceci est nĂ©cessaire avant de demander au serveur une opĂ©ration au serveur
- Add/Modify/Delete : mise Ă jour de lâannuaire.
- Search : «search» permettra de rechercher un Ă©lĂ©ment ou plusieurs Ă©lĂ©ments dans lâannuaire en prĂ©cisant une base, une portĂ©e et Ă©ventuellement des filtres (voir ci-dessous).
- Compare : vĂ©rifie quâun Ă©lĂ©ment contient ou non un attribut
- Unbind : se déconnecter du serveur
8.4Â ModĂšle dâinformations
LDAP dĂ©finit le modĂšle dâinformation suivant :
- EntrĂ©e: composĂ© dâattributs, possĂšde un type (classe dâobjets)
- SchĂ©ma: dĂ©finition des attributs possibles et classes dâobjets
- DN (Distinguished Name)
8.5 ModÚle de sécurité
Le transport des messages LDAP sera chiffrĂ© via SSL/TLS.  Lâutilisateur, une fois authentifiĂ© (via un bind), aura accĂšs aux donnĂ©es suivant les rĂšgles Ă©tablies dans les ACL (Access Control List).
8.6Â ModĂšle de replication
Un modĂšle de rĂ©plication est prĂ©vu dans la norme LDAP, mais il nâest pas encore standardisĂ©. La rĂ©plication est un Ă©lĂ©ment important pour assurer une redondance qui reste le moyen privilĂ©giĂ© par les administrateurs systĂšme pour se prĂ©munir des pannes. Les diffĂ©rentes implĂ©mentations LDAP (Active Directory, OpenLDAP, ..) ont dĂ©veloppĂ© leurs systĂšmes de rĂ©plication.
Ă noter Ă©galement que LDAP fournit un format dâĂ©change standard nommĂ© LDIF (LDAP Data Interchange Format) qui permet dâĂ©changer/sauvegarder de lâinformation entre serveurs LDAP. Cependant celui-ci ne permet pas une rĂ©plication aisĂ©e.
8.7Â LDAP vs SGBD
| LDAP | SGBD |
|---|---|
| Attribut multi-valeurs | / |
| Query LDAP | Query SQL |
| ModÚle de données défini, mais extensible facilement | Définition du modÚle par le dévelopeur, extensible mais difficile |
8.8Â Active Directory
LâActive Directory permettra de gĂ©rer lâauthentification des utilisateurs dâun ou plusieurs domaines, de gĂ©rer les droits des utilisateurs via des groupes de sĂ©curitĂ©. Un Active Directory dĂ©finira une forĂȘt qui sera composĂ©e dâarbres (domaine parent avec des domaines enfants) et/ou de domaines. Les domaines seront, quant Ă eux, constituĂ©s dâunitĂ©s dâorganisation et enfin dâordinateurs, de groupes et utilisateurs.
Dans un Active Directory, nous allons retrouver diffĂ©rents objets. Les plus importants sont les utilisateurs, les ordinateurs du domaine, les groupes de sĂ©curitĂ©, les GPO (Voir GPO), les unitĂ©s dâorganisation.
Un serveur hĂ©bergeant un Active Directory est appelĂ© contrĂŽleur de domaine. Il est conseillĂ© dâavoir au minimum 2 contrĂŽleurs de domaine par Active Directory pour se prĂ©munir des pannes.
8.8.1 UnitĂ© dâorganisation
Une unitĂ© dâorganisation est un regroupement dâobjets de lâActive Directory. Câest un nĆud dans lâarbre LDAP. Les unitĂ©s dâorganisation trouvent essentiellement leur utilitĂ© par le fait que des GPO puissent ĂȘtre dĂ©finies Ă ce niveau.
Ne pas confondre les unitĂ©s dâorganisation et les groupes de sĂ©curitĂ©. Des GPO ne peuvent pas ĂȘtre dĂ©finies sur des groupes et des permissions ne peuvent pas ĂȘtre dĂ©finies sur des unitĂ©s dâorganisations. Un objet (utilisateur) peut appartenir Ă plusieurs groupes, il ne pourra pas contre ĂȘtre placĂ© que dans une seule unitĂ© dâorganisation.
8.8.2 Groupes de sécurité
Microsoft propose une recommandation pour la gestion des droits et des groupes. Il sâagit de la recommandation AG(U)DLP.
Account â Global â (Universel) â Domain Local â Permission
schéma utile à connaßtre pour expliquer AG(U)DLP :

8.8.3 Permissions
8.8.3.1Â Permissions NTFS
Microsoft utilise le systÚme de fichiers NTFS et dÚs lors les permissions seront des permissions NTFS. Les permissions NTFS sont trÚs riches (beaucoup de possibilités).
8.8.3.2 Permissions Partage réseau
Attention Ă ne pas confondre les permissions NTFS qui sâappliquent directement sur des fichiers et dossiers locaux (prĂ©sents sur le systĂšme de fichiers) et les permissions de partage qui sont dĂ©finies sur les partages rĂ©seau.
 Lors de lâaccĂšs Ă un partage rĂ©seau, le systĂšme Ă©value tout dâabord les permissions du partage rĂ©seau et ensuite les permissions NTFS (puisque tout partage rĂ©seau se retrouve toujours physiquement sur un systĂšme de fichiers).
8.9Â GPO
Les GPO (Group Policy Object) permettent de dĂ©finir des stratĂ©gies de sĂ©curitĂ© et/ou de configurer des paramĂštres de maniĂšre centralisĂ©e pour un domaine ou une forĂȘt. Par exemple, on peut imposer un proxy pour les clients, dĂ©finir un fond dâĂ©cran, dĂ©finir une politique de mot de passe (longueur, complexitĂ© âŠ).
Les GPO, aussi appelĂ©es stratĂ©gie de groupe en français, permettent de dĂ©ployer des stratĂ©gies/paramĂštres sur 2 types objets de lâActive Directory : les utilisateurs et les ordinateurs. Les GPO se crĂ©ent le plus souvent sur des Organizational Unit.
Les GPO machines (configuration ordinateur) sâappliquent au dĂ©marrage de la machine. Les GPO utilisateurs (configuration utilisateur) sâappliquent Ă lâouverture de session dâun utilisateur.
9 Gestion des données
9.1Â Objectifs du chapitre
- Etablir un plan de sauvegarde des données
9.2 Base de données
9.2.2Â Exemple PostgreSQL
Un moteur de base de donnĂ©es est constituĂ© de plusieurs programmes. PostgreSQL est composĂ© dâun programme superviseur (postmaster), du serveur exĂ©cutant les requĂȘtes (postgres) et dâun client interactif (psql).
9.2.2.3Â Sauvegarde PostgreSQL
Il est important de sauvegarder les bases de données. Voici les erreurs à ne pas commettre :
- Pas de sauvegarde
- Sauvegarde jamais testée
- Ne pas documenter sa sauvegarde (qui lâa fait/ quand, comment âŠ)
- Sauvegarder sur le mĂȘme disque
- Sauvegarder au mĂȘme endroit (incendie ?)
- Nâavoir quâune sauvegarde trĂšs rĂ©cente car elle contiendra Ă©galement lâerreur
Les sauvegardes de type fichiers ou instantanĂ©s ne conviennent pas aux bases de donnĂ©es. Il est prĂ©fĂ©rable dâutiliser lâoutil fourni par le moteur de base de donnĂ©es. Dans le cas de PostgreSQL, nous avons pg_dump.
9.2.2.4Â Performance PostgreSQL
Il est important de savoir que les limitations des bases de donnĂ©es se situent essentiellement du cĂŽtĂ© des composants sous-jacents (CPU, RAM, vitesse disque, capacitĂ© disque âŠ).
La performance passe Ă©galement par lâajout dâindex. Un index peut accĂ©lĂ©rer par 1000 000 une requĂȘte !
Lâutilisation de LIMIT est Ă©galement Ă envisager. Doit-on vraiment charger lâentiĂšretĂ© dâune table, les premiers rĂ©sultats ne sont-ils pas suffisants ?
Lâutilisation rĂ©guliĂšre de VACUUM pour supprimer dĂ©finitivement les donnĂ©es expirĂ©es est Ă envisager, particuliĂšrement sur les bases de donnĂ©es des dĂ©veloppeurs qui crĂ©ent et dĂ©truisent souvent leurs bases de donnĂ©es.
Lâutilisation dâANALYSE permet de collecter des statistiques en vue dâoptimiser la base de donnĂ©es.
Un petit mot sur les ORM pour finir. Ceux-ci sont trĂšs utiles, mais lâoptimisation sâavĂšre souvent plus complexe Ă gĂ©rer vu que vous laissez lâORM crĂ©er les requĂȘtes SQL pour vous. En tant que dĂ©veloppeur, posez-vous (ou Ă votre chef de projet) donc la question de la performance avant de vous dĂ©cider.
9.2.2.5 Réplication PostgreSQL
Comme dâhabitude, les administrateurs systĂšmes ou DBA vont vouloir se prĂ©munir des pannes en installant de la redondance. Avec les bases de donnĂ©es, ceci peut se faire en activant la rĂ©plication. Ce mĂ©canisme permet Ă 2 moteurs de base de donnĂ©es de partager des bases de donnĂ©es. Les donnĂ©es de ces bases de donnĂ©es se retrouvent alors rĂ©pliquĂ©es/dupliquĂ©es au minimum sur 2 serveurs de bases de donnĂ©es.
La rĂ©plication la plus utilisĂ©e est celle dite du maĂźtre â esclave. Toutes les opĂ©rations sont faites sur le serveur maĂźtre et celui-ci envoie rĂ©guliĂšrement au serveur esclave ses journaux de transactions. Ce dernier rejoue alors le journal de transactions sur sa base de donnĂ©es.
9.3Â Sauvegardes
Un administrateur systÚme sera en charge de la pérennité des données. Pour cette tùche, des sauvegardes ou backups seront nécessaires.
Bien sĂ»r il est souvent impossible de tout sauvegarder, câest pourquoi il faut dĂ©finir une politique de sauvegarde qui rĂ©pond aux questions suivantes.
9.3.2Â Sur quel support sauvegarder ?
Les entreprises auront donc souvent recours Ă des NAS (Network Area Storage) ou SAN distants ou encore Ă un stockage dans le Cloud.
9.3.3 Quel type de sauvegarde, quelle fréquence ?
Il existe différents types de sauvegarde à savoir :
- complÚte : une copie complÚte des données est faite
- incrémentielle : une copie des modifications depuis la derniÚre sauvegarde (complÚte ou incrémentielle) est faite
- différentielle : une copie des modifications depuis la derniÚre sauvegarde complÚte est faite
- miroir : une seule sauvegarde complĂšte.
- instantané/snapshot : pas vraiment une sauvegarde car difficile de restaurer un seul fichier
9.3.4 Conservation des données ?
La déduplication est un autre moyen mis en place par les entreprises. Ce mécanisme est souvent intégré au SAN.
Il est nĂ©cessaire de crypter ses backups pour Ă©viter Ă une personne mal intentionnĂ©e de rĂ©cupĂ©rer facilement les donnĂ©es de lâentreprise. Lâutilisation grandissante du Cloud renforce Ă©galement ce besoin.
9.3.6Â La rĂšgle du 3-2-1
Il existe une rĂšgle fortement conseillĂ©e pour les sauvegardes de donnĂ©es. Il sâagit de la fameuse rĂšgle 3-2-1.
- 3 : conserver 3 copies des données (originale + 2 sauvegardes)
- 2 : conserver les données sur 2 supports différents
- 1 : conserver 1 copie de sauvegarde dans un lieu différent (des 2 autres copies)
9.4Â Quotas
Les quotas permettent donc de rĂ©gler ce problĂšme en imposant une limite aux utilisateurs. Le mĂ©canisme de quotas propose une limite soft et une limite hard. Quand un utilisateur dĂ©passe sa limite soft, il reçoit un avertissement lui indiquant quâil peut continuer Ă travailler pour une pĂ©riode de grĂące dĂ©finie par lâadministrateur. Une fois cette pĂ©riode grĂące Ă©coulĂ©e, il est bloquĂ© sâil nâest pas redescendu en dessous de la limite soft.
10Â Virtualisation
10.1Â Objectifs du chapitre
- Comprendre la virtualisation, les différents types de virtualisation
10.2Â Avantages de la virtualisation
La virtualisation consiste en lâabstraction dâun Ă©lĂ©ment du monde rĂ©el en le rendant virtuel. Ceci dans lâobjectif de rendre lâĂ©lĂ©ment plus facilement :
- Configurable
- Transportable
- Optimisé (meilleure allocation des ressources)
- Disponible (facilité de déploiement)
- Sécurisé (isolation)
10.4 Inconvénients de la virtualisation
LâinconvĂ©nient majeur de la virtualisation est lâajout dâune couche de virtualisation entre le systĂšme physique et le composant virtualisĂ©. Ceci permet dâobtenir les avantages citĂ©s ci-dessus, mais dĂ©grade les performances.
10.5Â Hyperviseurs
Un hyperviseur est un logiciel de virtualisation permettant Ă plusieurs machines virtuelles de fonctionner simultanĂ©ment sur un mĂȘme systĂšme physique.
- Hyperviseur type 1 / natif / bare-metal
- Hyperviseur type 2 / hosted
Un hyperviseur de type 1 sera utilisé dans le cadre de la virtualisation de serveurs.
serveurs privés virtuel (VPS)
Ce que vous connaissez le plus est certainement les hyperviseurs de type 2. Ces hyperviseurs sâinstallent dans un systĂšme dâexploitation comme un logiciel classique. On peut citer VirtualBox.
10.6Â Virtualisation du stockage
La virtualisation du stockage consiste donc en la crĂ©ation dâune baie de stockage (ensemble de disques physiques) qui sera prĂ©sentĂ©e en un ou plusieurs ensembles logiques et dynamiques. On parle de LUN (Logical Unit Number). Une LUN est donc un espace de stockage logique et dynamique.
Un SAN est donc une baie de stockage avec des LUN accessibles via le réseau.
10.8Â Le cas VirtualBox
La possibilitĂ© de rĂ©aliser un instantanĂ©/snapshot dans les solutions de virtualisation est un Ă©norme avantage. Ceci permet de revenir facilement Ă un Ă©tat antĂ©rieur en cas de souci. Il est donc vivement conseillĂ© de rĂ©aliser un instantanĂ© avant toute modification importante dâun systĂšme.
11Â Conteneurs (Docker)
11.1Â Objectifs du chapitre
- Comprendre les architectures Ă base de conteneurs
- Savoir créer un Dockerfile
- Déployer des applications via Docker, docker-compose
11.2Â Docker
11.2.1Â Introduction
Docker est une solution dâarchitecture Ă base de conteneurs. Les architectures Ă base de conteneurs sont une Ă©volution avantageuse de la virtualisation.
Docker nâest donc pas un logiciel de virtualisation, mais un isolateur.
Les cgroups (Control Groups) permettent de fixer/limiter les ressources (CPU, Réseau, disque, nombre de processus) allouées à un conteneur ou un ensemble de conteneurs.
Les namespaces permettent dâisoler des ressources. Ainsi un conteneur ou ensemble de conteneurs ne voient que les ressources de son namespace.
Les conteneurs sont proches des machines virtuelles, mais prĂ©sentent un avantage important. Alors que la virtualisation consiste Ă exĂ©cuter de nombreux systĂšmes dâexploitation sur un seul et mĂȘme systĂšme, les containers se partagent le mĂȘme noyau de systĂšme dâexploitation et isolent les processus de lâapplication du reste du systĂšme.
Les architectures Ă base de conteneurs sont trĂšs utilisĂ©es car elles permettent facilement des mises Ă lâĂ©chelle (scaling).
En effet, on peut facilement augmenter le nombre de conteneurs lorsquâune application est fortement demandĂ©e. On appelle cela la mise Ă Ă©chelle horizontale (horizontal scaling). On peut Ă©galement augmenter les ressources des conteneurs via les cgroups. On appelle cela la mise Ă Ă©chelle verticale (vertical scaling). On peut bien Ă©videmment combiner les 2 mises Ă lâĂ©chelle. Quand la demande est moins forte, on peut rĂ©duire le nombre de conteneurs et/ou les ressources et par consĂ©quent Ă©pargner de lâargent.
11.2.2Â Docker vs Virtualisation
La grosse diffĂ©rence entre Docker et les systĂšmes de virtualisation classiques se situe au niveau de lâinteraction avec le systĂšme dâexploitation hĂŽte.
- Docker partagera/utilisera le mĂȘme noyau (Linux) pour tous les conteneurs.
- Chaque VM géré par un hyperviseur aura son propre OS
11.2.4Â Utilisation de Docker
Pour déployer une application via Docker, il y a donc 3 étapes essentielles :
- CrĂ©ation dâun Dockerfile (recette de cuisine de lâapplication Ă dĂ©ployer)
- CrĂ©er lâimage Docker (
docker build -t <imagename> <pathToDockerfile>) - CrĂ©er un conteneur Ă partir de lâimage créée (
docker run -d -p 9000:80 --name <containername> <imagename>)
Les points suivants de ce syllabus détailleront les différents éléments de ce schéma à savoir :
- Le Dockerfile et ses principales instructions
- Les commandes de gestion des images Docker
- Les commandes de gestion des conteneurs Docker
- Les Registry et DockerHub
11.2.4.1 Dockerfile et instructions principales
La conteneurisation dâune application commence par la crĂ©ation dâun dossier contenant tout ce qui est nĂ©cessaire Ă lâapplication. Ce dossier doit contenir au minimum :
- le code de lâapplication
- un fichier Dockerfile
11.2.4.4Â Registry et DockerHub
Le DockerHub est lâendroit oĂč vous devez rechercher votre image de base !
11.2.5Â Points importants
11.2.5.1Â Couches
A noter que Docker utilise un systĂšme de couche (layer) Ă des fins dâoptimisation des build dâimages. Une couche est une image intermĂ©diaire.
Pour chaque ligne du Dockerfile, Docker crĂ©e une couche. Une image Docker est donc un empilement de couches câest-Ă -dire dâimages intermĂ©diaires. Ainsi nul besoin pour Docker de tout refaire Ă chaque build, il va rĂ©utiliser les couches qui nâont pas changĂ©.
11.2.5.2Â RUN vs CMD
Ces 2 instructions ne sont pas similaires. RUN crĂ©e une nouvelle couche (image intermĂ©diaire) en incluant le rĂ©sultat de la commande quâon lui transmet. Cette instruction agit donc au niveau de lâimage (docker build).
CMD exĂ©cute une commande Ă chaque dĂ©marrage dâun conteneur. Cette instruction agit donc au niveau du conteneur. Cette instruction est souvent nĂ©cessaire pour le dĂ©marrage de services (Apache, nodeJS, âŠ).
11.3Â docker compose
Docker est prĂ©vu pour faire fonctionner des architectures microservices. Dans ce type dâarchitecture, on crĂ©e un conteneur par service.
Ceci est bien beau mais :
- Comment gÚre-t-on la communication entre les différents conteneurs ? Le conteneur application devra vraisemblablement communiquer avec le conteneur db.
- Comment rend-on des donnĂ©es persistantes ? Un conteneur est stateless mais les donnĂ©es dâun conteneur db devront ĂȘtre persistĂ©es.
docker compose permet Ă©galement facilement la crĂ©ation de volumes. Ceci permet dâeffectuer la persistance de donnĂ©es en dehors dâun conteneur.
11.3.4 Directives intéressantes
La directive «build» permet de construire une image Docker Ă partir dâun Dockerfile.
La directive «ports» permet dâeffectuer la redirection de ports (port forwarding) entre la machine hĂŽte et le conteneur.
La directive «volumes» permet de lier un rĂ©pertoire de la machine hĂŽte au conteneur. Les volumes ne sont pas dĂ©truits par dĂ©faut lors de la destruction du conteneur. Câest donc via ce biais que les donnĂ©es persistantes des conteneurs sont gĂ©rĂ©es.
11.3.5 Réseau
Les noms des services (conteneurs) deviennent des noms réseaux.
11.4Â The Twelve Factor App
La conception de Docker sâest inspirĂ©e de la mĂ©thodologie des 12 facteurs, une mĂ©thodologie pour crĂ©er des applications SaaS ModĂšles de service. Voici un lien vers cette mĂ©thodologie https://12factor.net/fr/. Voyons comment Docker applique celle-ci.
Retenez cinq facteurs avec leurs exemples Docker.
- Code de base : La notion dâimage en Docker permet clairement de dĂ©ployer plusieurs fois un mĂȘme code ou des versions diffĂ©rentes de ce mĂȘme code.
- Dépendances : Le Dockerfile rend explicite les dépendances.
- Configuration : Il est possible de passer des variables dâenvironnement Ă un conteneur. Cependant un orchestrateur (k8s, voir paragraphe suivant) pourra le faire de maniĂšre plus Ă©lĂ©gante.
- Services externes : Les ressources peuvent ĂȘtre dĂ©couvertes via leur nom. Cependant un orchestrateur (k8s) pourra le faire de maniĂšre plus Ă©lĂ©gante.
- Build, Release, Run : docker build, docker run
- Processus : Docker est principalement stateless. Les volumes existent mais il sera plus Ă©lĂ©gant de gĂ©rer cela avec un orchestrateur. Il nâest pas rassurant de savoir ces volumes stockĂ©s sur une machine hĂŽte qui peut faillir.
- Association de ports : docker run -p 8080:80
- Concurrence : Le cÎté stateless des conteneurs permet facilement de créer plusieurs conteneurs pour faire face à la montée en charge.
- Jetable: Avec Docker, on crée, on déploie et supprime facilement une application.
- ParitĂ© Dev / Prod : la mĂȘme image peut ĂȘtre lancĂ©e en prod ou en dev.
- Logs : Par dĂ©faut tous les logs Docker sont envoyĂ©s vers stdout (dâoĂč le fait que Docker oblige les applications Ă tourner en avant-plan).
- Processus dâadministration : Il est trĂšs facile de se connecter et dâinteragir avec un conteneur (docker exec -it).
11.5Â Kubernetes (K8s)
11.5.1Â Introduction
Kubernetes est un orchestrateur de conteneurs.
11.5.2 Utilité
Kubernetes permet dâapprĂ©hender les dĂ©fis liĂ©s Ă la gestion des conteneurs notamment :
- lâĂ©quilibrage de charge entre plusieurs conteneurs (load balancing)
- la gestion des diffĂ©rents stockages pour les conteneurs (volumes). Ceux-ci peuvent ĂȘtre locaux, dans le Cloud, âŠ
- la gestion et lâallocation des ressources aux conteneurs de maniĂšre dynamique
- la gestion de lâĂ©tat de santĂ© des conteneurs
- la gestion des informations de configuration et des secrets (clé SSH, password, .. )
11.5.3 Vue générale et concepts k8s
Kubernetes est composĂ© dâun nĆud maĂźtre permettant la gestion du cluster k8s. Un cluster est un ensemble de machines physiques ou virtuelles. Chaque machine du cluster est appelĂ©e un âworker nodeâ et contiennent une solution de dĂ©ploiement de conteneurs (Docker par ex.).
Chaque âworker nodeâ hĂ©berge un pod. Un pod est lâunitĂ© de dĂ©ploiement dâune application dans k8s. Il sâagit dâun ou plusieurs conteneurs. Dans la pratique, le plus souvent un pod == un conteneur/un processus.
Un label est un couple âclĂ©:valeurâ que lâon peut attacher Ă un objet, notamment un pod. Les selectors permettent de sĂ©lectionner un objet k8s suivant son label

Un fichier deployment.yml permet de dĂ©finir comment un Pod sera dĂ©ployĂ©. Ce fichier contient une instruction âreplicaâ qui indiquera Ă K8s combien dâinstances de ce Pod il devra lancer/maintenir.
Un fichier services.yml permet de dĂ©finir et gĂ©rer le rĂ©seau Ă lâintĂ©rieur du cluster. Vu que les pods peuvent ĂȘtre créés, dĂ©truits et recréés, il est nĂ©cessaire quâun service puisse cibler les pods encore actifs Ă un moment t.
Ingress est un load balancer qui permet de faire communiquer le monde extérieur avec le cluster k8s.
Les Persistent Volume Claim (PVC) permettent de persister des donnĂ©es. Cela va beaucoup plus loin que lâutilisation de simples volumes (PV). Il sâagit dâune demande dâespace adressĂ©e Ă k8s. Celui-ci attribuera alors au pod un stockage suivant sa demande. A noter aussi que lâintĂ©rĂȘt de k8s par rapport au stockage est de pouvoir utiliser des stockages variĂ©s (Amazon, Azure, Local, âŠ).
12Â DevOps
12.1Â Objectifs du chapitre
- Consolider les notions DevOps
- Déployer des configurations via Ansible
- Déployer une pipeline via Jenkins
12.2 Introduction
Le dĂ©ploiement dâune application faisant maintenant partie du produit ainsi que les mises Ă jour en continu, il est donc nĂ©cessaire dâavoir une infrastructure avec le concours des opĂ©rationnels pour mener Ă bien ce nouveau mode de dĂ©veloppement logiciel.

Schéma à connaßtre
12.2.1 Pipeline de développement
Lâapproche DevOps mise Ă©galement sur lâautomatisation via des outils. On parlera souvent de pipeline de dĂ©veloppement. Il sâagit dâune chaĂźne de production logicielle la plus automatisĂ©e possible jusquâau client. Celle_ci se divise gĂ©nĂ©ralement en une partie CI (Continuous Integration) qui sâoccupe de tester lâapplication et une partie CD (Continuous Deployment) qui sâoccupe de dĂ©ployer lâapplication pour les clients.
Sans surprise, les pipelines utiliseront les éléments vus dans les chapitres précédents surtout les conteneurs, les orchestrateurs, le Cloud et les outils de configurations.
DevOps du cÎté développeurs :
DevOps va privilégier une architecture microservice, car celle-ci permet un meilleur contrÎle et une montée en charge facilitée.
DevOps du coté des sysadmins : Les outils utilisés par les sysadmins dans ce cadre sont des outils de gestion de configuration (Chef, Puppet, Ansible, ..), des outils de gestion et utilisation des conteneurs (Docker, K8s).
12.3Â Pipeline - Jenkins
Jenkins est un outil open source Ă©crit en Java permettant notamment la crĂ©ation de pipelines. Il sâintĂšgre parfaitement avec dâautres outils comme Docker , Github, ⊠.
12.4Â Ansible
12.4.1Â Introduction
Pour les administrateurs systĂšmes, il est nĂ©cessaire de disposer dâoutils pour automatiser les tĂąches dâinstallations et de configurations. En effet, les administrateurs systĂšmes doivent sâoccuper dâun parc de machines et il est donc insensĂ© de configurer toutes ses machines Ă la main.
Pour ce faire, il existe diffĂ©rents outils permettant dâautomatiser les installations et configurations. Nous pouvons citer Puppet, Chef et Ansible. Nous verrons Ansible en labos car il peut Ă©galement se rĂ©vĂ©ler utile pour un dĂ©veloppeur.
Ansible a dĂ©fini son propre vocabulaire. On parle de contrĂŽleur qui est est la machine qui exĂ©cute Ansible en tant que tel et de cibles qui sont les machines (hosts) quâAnsible configure. Les cibles sont dĂ©finies dans lâinventaire dâAnsible, simple fichier reprenant des noms de machines ou IP de machines. A noter que le contrĂŽleur et la cible peuvent ĂȘtre la mĂȘme machine. Dans ce cas, cela signifie que nous automatisons alors simplement un ensemble de tĂąches pour une seule machine. Nous procĂ©derons de cette maniĂšre durant les labos. Vous verrez que lâon prĂ©cisera toujours dans notre fichier Ansible localhost comme cible !
12.4.8Â RĂŽle Ansible
Ansible permet de sĂ©parer un playbook dans plusieurs fichiers. On appelle cela un rĂŽle Ansible. Un rĂŽle Ansible est un rĂ©pertoire contenant lâarborescence suivante :
- defaults : valeurs par défaut des variables
- files : fichiers statiques à déployer
- handlers : tĂąches pouvant ĂȘtre appelĂ©es par notification
- tasks : tĂąches Ă effectuer
- templates: modĂšles de fichier de configuration
- tests : tests pour le rĂŽle
- vars : variables spécifiques du playbook
- README.md : description générale du rÎle
12.5 Observabilité
12.5.1Â Introduction
Sur un serveur isolĂ©, on peut facilement consulter les logs, regarder certaines mĂ©triques pour Ă©tablir un bilan de santĂ© du serveur ou de notre applciation. Cependant dans une infrastructure avec plusieurs serveurs, ayant eux-mĂȘmes des milliers de conteneurs, il est nĂ©cessaire de sâoutiller et de faire remonter les informations sur celle-ci vers un endroit centralisĂ©.
Composantes principales :
-
Logs - Enregistrements textuels des événements systÚme ou applicatifs. - Utiles pour le debugging et les audits.
-
Métriques - Données numériques sur les performances (CPU, mémoire, latence, etc.). - Utilisées pour les alertes et les tableaux de bord.
-
Traces distribuĂ©es - Suivi dâune requĂȘte Ă travers plusieurs services. - Essentiel pour les architectures microservices.
-
EvĂ©nements - Actions ou changements dâĂ©tat dĂ©tectĂ©s dans le systĂšme. - Peuvent dĂ©clencher des alertes ou des automatisations.
12.5.2Â Outils de surveillance
| Outil | Type | Description courte |
|---|---|---|
| Prometheus | Monitoring/metrics | Collecte de métriques, intégration avec Grafana |
| Grafana | Visualisation | Tableaux de bord pour visualiser les informations remontées |
| Loki | Logs/Analyse | Collecte et indexation centralisée de logs, intégré à Grafana |
| Alloy | Collecte/Agent | Agent unifié pour collecter logs, métriques et traces, compatible Grafana |
12.5.3Â Architecture de surveillance - Logs
| Composant | RĂŽle | Fonction principal | Exemple dâoutil |
|---|---|---|---|
| Agent | Collecte | Capture les logs, métriques et traces depuis les sources | Grafana Alloy, Fluentd |
| Répartiteur | Distribution | Valide et répartit les logs vers les composants de traitement | Loki Distributor |
| Stockage temporaire | Indexation et buffer | Stocke les logs en mémoire, les indexe avant archivage | Loki Ingester |
| Ăvaluateur de rĂšgles | Analyse et alertes | Applique des rĂšgles pour gĂ©nĂ©rer des alertes ou transformer les donnĂ©es | Loki Ruler |
| Moteur de requĂȘtes | Interrogation | Permet la recherche et lâanalyse des logs | Loki Querier |
| Interface utilisateur | Visualisation | Affiche les logs, métriques, traces et dashboards interactifs | Grafana |
13Â Cloud (Terraform notamment)
13.1Â Objectifs du chapitre
- ConnaĂźtre les modĂšles de service Cloud
- Architecture Multi-tenant et Cloud
- Déployer des services PaaS avec Terraform
13.2Â Introduction Cloud
Le Cloud est une abstraction de lâinfrastructure.
13.4Â ModĂšles de service
13.4.1Â Infrastructure as a Service (IaaS)
IaaS : DĂ©ploiement dâune infrastructure via les outils du fournisseur Cloud. Lâutilisateur peut paramĂ©trer le rĂ©seau, les serveurs, ⊠. Ex: Amazon EC2, Azure VM, âŠ
Terraform est certainement lâoutil le plus utilisĂ© pour dĂ©ployer de lâIaaS. Il permet de crĂ©er des VM et dâautres Ă©lĂ©ments dâinfrastructure sur AWS, Azure, ⊠. Cet outil est dĂ©crit dans la section suivante.
13.4.2Â Platform as a Service (PaaS)
PaaS : DĂ©ploiement dâune plateforme via les outils du fournisseur Cloud. Lâutilisateur peut paramĂ©trer la plateforme mais celui ci nâa aucun accĂšs, vue sur lâinfrastructure. Ceci est un des modĂšles de service Cloud les plus employĂ©s par les dĂ©veloppeurs. Ex: Heroku, AWS Elastic Beanstalk, Cloud Foundry, âŠ
13.4.3Â Function as a Service (FaaS)
FaaS: DĂ©ploiement dâune fonction dans le Cloud. Ici lâutilisateur ne paramĂštre rien. Il choisit son langage et Ă©crit son code. Aucun accĂšs, vue sur lâinfrastructure, paramĂ©trage. Ceci est un des modĂšles de service Cloud les plus employĂ©s par les dĂ©veloppeurs. Ex: fonctions lambda AWS,âŠ
13.4.4Â Software as a Service (SaaS)
SaaS: AccĂšs Ă une application via Internet. Aucun accĂšs, vue sur lâinfrastructure, paramĂ©trage par lâutilisateur limitĂ©. Ex: Gmail, Office365,âŠ
13.5Â Architecture Multi-tenant et Cloud
13.5.1Â Introduction
Dans une architecture multi-tenant, une mĂȘme instance dâune application logicielle est utilisĂ©e par plusieurs clients, ces derniers Ă©tant des « tenants ».
Le modĂšle multi-tenant peut sâavĂ©rer Ă©conomique, Ă©tant donnĂ© que les coĂ»ts liĂ©s au dĂ©veloppement et Ă la maintenance des logiciels sont partagĂ©s.
| Architecture | Instance App | Base de données | Isolation | Coût |
|---|---|---|---|---|
| Single-Tenant | 1 par client | 1 par client | TrĂšs forte đ | ĂlevĂ© đž |
| Multi-Tenant | 1 partagĂ©e | 1 partagĂ©e ou multi-DB | Moyenne Ă forte đ§© | Faible Ă moyen đ° |
| Multi-DB (option) | Variable | 1 par client | Forte đ | Moyen Ă Ă©levĂ© đ” |
Les modÚles de service SaaS présentes dans le Cloud proposent souvent les approches multi-tenant et single-tenant.
13.6Â Terraform / OpenTofu
13.6.1Â Introduction
Terraform est un outil permettant de dĂ©ployer des ressources dans le Cloud. En clair, il permet dâautomatiser la crĂ©ation de ressources (VM, image docker, âŠ) en local ou dans le Cloud. Il dispose de nombreux connecteurs (providers) permettant de crĂ©er des ressources aussi bien dans AWS (Amazon), Azure, en local, ⊠Ce dernier point le rend particuliĂšrement intĂ©ressant au sein des entreprises.
Ces noms de rĂ©fĂ©rence doivent ĂȘtre en minuscules et sans caractĂšres spĂ©ciaux (pas dâunderscore !).
13.6.4.4 Déploiement LocalStack
Pour rappel, LocalStack permet dâĂ©muler des services AWS en local. Nous nâutiliserons que quelques services (les principaux) dâAWS Ă savoir :
- s3 : Ce service est aussi appelĂ©e Bucket. Il sâagit dâun service de stockage de fichiers en tout genre. Ceci permet notamment de stocker des fichiers images pour une application ou encore de dĂ©ployer un site Web statique.
- lambda : Il sâagit dâun service FaaS. Ceci permet de dĂ©ployer une fonction (morceau de code JS, Python, âŠ.) directement dans le Cloud.
- dynamodb : Il sâagit dâun moteur de base de donnĂ©es NoSQL de type clĂ©-valeur.
- ec2 : Il sâagit dâun service IaaS. Ceci permet de dĂ©ployer des âinstances EC2â câest-Ă -dire des machines virtuelles.