Vous êtes sur la page 1sur 27

Linux 3 édition

ième

Administration système

Linux
et exploitation des services réseau

et exploitation des services réseau


Ce livre présente les connaissances nécessaires à la bonne Philippe BANQUET est ingénieur infor-
exploitation des systèmes Linux en réseaux local et étendu. maticien indépendant depuis près de 20
Il s’adresse à tout administrateur désireux d’assurer la gestion
matérielle des serveurs, une bonne administration du système,
et d’utiliser les services applicatifs courants dans les environne-
ans. Il est spécialisé dans le développe-
ment (Perl, C, C++, shell …) en environ-
nement Unix/Linux. Il assure également
Nouvelle édition
ments Open Source. Une connaissance raisonnable de la ligne des missions de formation auprès d’un
de commande Unix ou Linux est un pré-requis souhaitable pour public d’informaticiens pour les préparer
tirer pleinement profit de cet ouvrage.

Administration système
à l’administration de systèmes Linux. Il
La gestion du matériel couvre les techniques avancées de partage à travers cet ouvrage toute son
stockage (local ou iSCSI), la reconnaissance des périphériques
par le système, ainsi que la configuration de l’accès au réseau.
L’administration du système d’exploitation traite du démarrage
expérience dans ce domaine.
Après avoir été Administrateur Systèmes
et Réseaux, Sébastien BOBILLIER évo-
Administration système
et exploitation
du système, des niveaux d’administration, de la gestion des lue depuis de nombreuses années dans
comptes utilisateurs, locaux ou au sein d’un annuaire. Enfin, le monde de la formation. Aujourd’hui
une bonne partie de l’ouvrage est dédiée aux équipements d’in- Consultant Formateur chez Global
frastructure comme les serveurs DNS et DHCP, les services Knowledge, il transmet au lecteur toute

des services réseau


applicatifs courants tels que le partage de fichiers et la mes- son expérience terrain en tant que spé-
sagerie, ainsi que les services web (Apache, Nginx, squid). La cialiste des systèmes Linux.
sécurité n’est pas oubliée, que ce soit sur les services applica-
tifs traités ou sur le système lui-même avec la configuration et
l’exploitation du pare-feu natif des systèmes Linux. Un chapitre
est consacré au suivi des ressources et aux principes de pla-
nification de charge.
Les auteurs ont conçu ce livre comme une boîte à outils dans

Linux
laquelle l’administrateur retrouve les éléments de compétences
nécessaires à l’exploitation de son réseau avec tout ou partie
des services applicatifs. Pour plus
d’informations :

Les chapitres du livre

Avant-propos • Gestion du stockage • Démarrage du sys-


tème • Gestion du réseau local • Authentification des utili-
sateurs • Partage de fichiers • Résolution de noms DNS •
Serveurs web • Messagerie • Protection des réseaux • Sécu-
ISBN : 978-2-7460-9217-4

risation du trafic • Compilation des applications et du noyau


Linux • Gestion et planification des ressources Philippe BANQUET
39 € Sébastien BOBILLIER
Table des matières 1

Avant-propos

Chapitre 1
Gestion du stockage
1. Gestion et configuration des systèmes de fichiers . . . . . . . . . . . . . . . 21
1.1 Gestion des systèmes de fichiers . . . . . . . . . . . . . . . . . . . . . . . . . 21
1.1.1 Les systèmes de fichiers courants . . . . . . . . . . . . . . . . . . . 21
1.1.2 Les systèmes de fichiers virtuels ou pseudo-filesystems . 25
1.1.3 Création des filesystems . . . . . . . . . . . . . . . . . . . . . . . . . . 26
1.1.4 Vérification des filesystems . . . . . . . . . . . . . . . . . . . . . . . . 27
1.1.5 Commandes spécialisées des filesystems ext . . . . . . . . . . 27
1.1.6 Création de filesystems ext . . . . . . . . . . . . . . . . . . . . . . . . 28
1.1.7 Affichage et modification des filesystems ext . . . . . . . . . 28
1.1.8 Dénomination des systèmes de fichiers . . . . . . . . . . . . . . 30
1.1.9 Commandes spécialisées des filesystems XFS . . . . . . . . . 32
1.2 Gestion du swap . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
1.2.1 Pourquoi le swap et en quelle quantité ? . . . . . . . . . . . . . 40
1.2.2 Optimisation du swap . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
1.3 Montage des filesystems . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
1.3.1 Montage et démontage . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
1.3.2 Visualisation des filesystems montés . . . . . . . . . . . . . . . . 45
1.3.3 Fichier fstab. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
1.3.4 Automontage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
1.4 Protection des données stockées . . . . . . . . . . . . . . . . . . . . . . . . . 51
1.4.1 Protection au niveau fichier . . . . . . . . . . . . . . . . . . . . . . . . 51
1.4.2 Protection au niveau disque ou partition . . . . . . . . . . . . . 52
1.4.3 Protection au niveau filesystem. . . . . . . . . . . . . . . . . . . . . 53
1.5 Gestion des disques durs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
1.5.1 Détermination des fichiers spéciaux . . . . . . . . . . . . . . . . . 56
1.5.2 Informations sur les périphériques de stockage . . . . . . . . 56
1.5.3 Gestion des performances avec hdparm . . . . . . . . . . . . . . 59
1.5.4 Gestion des défaillances matérielles . . . . . . . . . . . . . . . . . 61
2 LINUX
Administration système et exploitation des services réseau

1.6 Gestion des disques iSCSI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61


1.6.1 Terminologie. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62
1.6.2 Paquetages iSCSI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63
1.6.3 Linux client iSCSI. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66
1.6.4 Linux serveur iSCSI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72
2. Sauvegardes. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75
2.1 Les utilitaires d'archivage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75
2.1.1 La commande tar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75
2.1.2 La commande cpio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77
2.2 Les sauvegardes au niveau filesystem . . . . . . . . . . . . . . . . . . . . . 78
2.2.1 Sauvegardes de filesystems ext . . . . . . . . . . . . . . . . . . . . . 78
2.2.2 Sauvegardes de filesystems xfs . . . . . . . . . . . . . . . . . . . . . 80
2.3 Les logiciels de sauvegarde . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82
2.3.1 AMANDA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82
2.3.2 Bacula . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82
2.3.3 BackupPC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82
2.3.4 Les logiciels commerciaux . . . . . . . . . . . . . . . . . . . . . . . . . 82
2.4 Duplication et synchronisation de données . . . . . . . . . . . . . . . . 83
2.4.1 Copie binaire avec dd . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83
2.4.2 Génération de fichiers ISO avec mkisofs . . . . . . . . . . . . . 84
2.4.3 Synchronisation de données avec rsync . . . . . . . . . . . . . . 85
3. RAID . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89
3.1 Les principaux niveaux de RAID . . . . . . . . . . . . . . . . . . . . . . . . . 89
3.1.1 Le RAID 0 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89
3.1.2 Le RAID 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90
3.1.3 Le RAID 5 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90
3.2 Configuration du RAID . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90
3.2.1 Création du volume RAID . . . . . . . . . . . . . . . . . . . . . . . . . 90
3.2.2 Vérification d'un volume RAID. . . . . . . . . . . . . . . . . . . . . 91
3.2.3 Exploitation des volumes RAID . . . . . . . . . . . . . . . . . . . . 93
4. Logical Volume Manager . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93
4.1 Architecture des volumes logiques . . . . . . . . . . . . . . . . . . . . . . . 94
Table des matières 3

4.2 Commandes LVM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95


4.2.1 Création des éléments . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95
4.2.2 Diagnostics LVM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96
4.2.3 Extension de volumes logiques . . . . . . . . . . . . . . . . . . . . . 99
4.2.4 Réduction de volumes logiques . . . . . . . . . . . . . . . . . . . . 100
4.3 Exploitation des volumes logiques . . . . . . . . . . . . . . . . . . . . . . 101
4.3.1 Données sur les volumes logiques . . . . . . . . . . . . . . . . . . 101
4.3.2 Exploitation du snapshot LVM pour les sauvegardes . . 103

Chapitre 2
Démarrage du système
1. Le processus init et les niveaux d'exécution . . . . . . . . . . . . . . . . . . . 107
1.1 Les niveaux d'exécution . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107
1.1.1 Qu'est-ce qu'un niveau d'exécution ? . . . . . . . . . . . . . . . 107
1.1.2 Les niveaux d'exécution possibles . . . . . . . . . . . . . . . . . . 108
1.1.3 Qui décide de ce qu'on met
dans les différents niveaux ? . . . . . . . . . . . . . . . . . . . . . . 109
1.2 Configuration du processus init . . . . . . . . . . . . . . . . . . . . . . . . 109
1.2.1 Le premier processus démarré sur le système . . . . . . . . . 109
1.2.2 Le fichier inittab . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 110
1.2.3 Rappels sur le lancement des services . . . . . . . . . . . . . . . 112
1.2.4 Liens entre les niveaux d'exécution et les services . . . . . 113
1.2.5 Gestion des niveaux d'exécution . . . . . . . . . . . . . . . . . . . 114
1.2.6 Commandes de gestion des liens de services . . . . . . . . . 115
1.2.7 Script indépendant du niveau d'exécution : rc.local. . . . 116
1.3 Utilisation des niveaux d'exécution . . . . . . . . . . . . . . . . . . . . . 117
2. Démarrage et chargement du noyau . . . . . . . . . . . . . . . . . . . . . . . . . 118
2.1 Le gestionnaire de démarrage GRUB . . . . . . . . . . . . . . . . . . . . . 118
2.1.1 Configuration de GRUB 1 . . . . . . . . . . . . . . . . . . . . . . . . 118
2.1.2 Configuration de GRUB 2 . . . . . . . . . . . . . . . . . . . . . . . . 120
2.1.3 Le fonctionnement de GRUB. . . . . . . . . . . . . . . . . . . . . . 121
4 LINUX
Administration système et exploitation des services réseau

2.2 Utilisation de GRUB 1 en mode interactif . . . . . . . . . . . . . . . . 122


2.2.1 Édition des sections déjà présentes . . . . . . . . . . . . . . . . . 122
2.2.2 Chargement d'un noyau non listé . . . . . . . . . . . . . . . . . . 122
2.3 Réinstallation de GRUB . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123
2.3.1 Réinstallation simple depuis un système actif . . . . . . . . 123
2.3.2 Réinstallation depuis un système non démarrable. . . . . 124
2.4 Maintenance et mode single . . . . . . . . . . . . . . . . . . . . . . . . . . . 125
2.4.1 Passage en mode single planifié . . . . . . . . . . . . . . . . . . . . 125
2.4.2 Ouverture d'un shell en cas d'échec au démarrage . . . . . 125
2.5 Les autres méthodes de chargement du noyau. . . . . . . . . . . . . 126
2.5.1 LILO. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 126
2.5.2 ISOLINUX . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 128
2.5.3 Démarrage PXE. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 128

Chapitre 3
Gestion du réseau local
1. Configuration du réseau. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 131
1.1 Adressage IP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 131
1.1.1 Adressage IPv4 et notation CIDR . . . . . . . . . . . . . . . . . . 131
1.1.2 Adressage IPv6 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132
1.2 Configuration universelle du réseau . . . . . . . . . . . . . . . . . . . . . 135
1.2.1 Détermination de l'interface réseau. . . . . . . . . . . . . . . . . 135
1.2.2 Affectation de l'adresse IP : ifconfig . . . . . . . . . . . . . . . . 135
1.2.3 Configuration du client DNS : fichier /etc/resolv.conf . 136
1.2.4 Configuration de la passerelle par défaut : route . . . . . . 137
1.2.5 Configuration du nom d'hôte : hostname . . . . . . . . . . . 138
1.3 Spécificités des distributions . . . . . . . . . . . . . . . . . . . . . . . . . . . 139
1.3.1 Configuration réseau dans /etc/network . . . . . . . . . . . . 139
1.3.2 Configuration réseau
dans /etc/sysconfig/network-scripts. . . . . . . . . . . . . . . . 140
Table des matières 5

1.4 Autres commandes et fichiers de gestion du réseau . . . . . . . . . 141


1.4.1 Gestion des adresses MAC avec arp . . . . . . . . . . . . . . . . 141
1.4.2 TCP Wrappers. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 143
1.5 Configuration Wi-Fi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 144
1.5.1 Détermination de l'interface Wi-Fi . . . . . . . . . . . . . . . . . 144
1.5.2 Visualisation des réseaux disponibles . . . . . . . . . . . . . . . 145
1.5.3 Connexion à un réseau non sécurisé . . . . . . . . . . . . . . . . 146
2. Diagnostic réseau . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 146
2.1 Outils de diagnostic en couche réseau. . . . . . . . . . . . . . . . . . . . 146
2.1.1 ping et ping6 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 146
2.1.2 Indicateurs de la commande route . . . . . . . . . . . . . . . . . 147
2.1.3 traceroute . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 148
2.2 Outils de diagnostic en couches transport et application . . . . 149
2.2.1 netstat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 149
2.2.2 nc . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 150
2.3 Diagnostics et informations en couche application . . . . . . . . . 150
2.3.1 lsof . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 150
2.3.2 Journaux sur /var/log/syslog et /var/log/messages . . . . 151
2.4 libpcap et les captures de paquets . . . . . . . . . . . . . . . . . . . . . . . 152
2.4.1 La bibliothèque libpcap . . . . . . . . . . . . . . . . . . . . . . . . . . 152
2.4.2 tcpdump . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 152
2.4.3 Wireshark . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 154
3. Configuration automatique avec DHCP. . . . . . . . . . . . . . . . . . . . . . 155
3.1 Le protocole DHCP. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 155
3.1.1 Fonctionnement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 156
3.1.2 Le service DHCP sur les systèmes Linux. . . . . . . . . . . . . 157
3.2 Configuration du serveur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 158
3.2.1 Le fonctionnement général du serveur . . . . . . . . . . . . . . 158
3.2.2 Les paramètres transmis aux clients . . . . . . . . . . . . . . . . 158
3.2.3 Déclaration de plages d'adresses . . . . . . . . . . . . . . . . . . . 159
3.2.4 Paramètres spécifiques à une machine . . . . . . . . . . . . . . 160
3.2.5 Serveurs à plusieurs interfaces . . . . . . . . . . . . . . . . . . . . . 161
3.2.6 Visualisation des baux DHCP . . . . . . . . . . . . . . . . . . . . . 161
6 LINUX
Administration système et exploitation des services réseau

3.3 Configuration du client . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 162


3.4 Agent relais DHCP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 163
3.4.1 Principe du relais DHCP. . . . . . . . . . . . . . . . . . . . . . . . . . 163
3.4.2 Configuration de l'agent de relais . . . . . . . . . . . . . . . . . . 164

Chapitre 4
Authentification des utilisateurs
1. Évolution de l'authentification . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 165
1.1 Les premiers systèmes Unix et le fichier passwd . . . . . . . . . . . 165
1.1.1 Mots de passe dans le fichier /etc/passwd . . . . . . . . . . . 165
1.1.2 Mots de passe dans le fichier /etc/shadow . . . . . . . . . . . 166
1.2 D'autres bases d'informations . . . . . . . . . . . . . . . . . . . . . . . . . . 166
1.3 NSS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 167
1.4 Modules d'authentification . . . . . . . . . . . . . . . . . . . . . . . . . . . . 168
2. PAM. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 169
2.1 Le principe. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 169
2.2 Les modules PAM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 170
2.2.1 Les principaux modules PAM . . . . . . . . . . . . . . . . . . . . . 170
2.2.2 Fonctionnement en piles de modules . . . . . . . . . . . . . . . 172
2.3 Configuration de PAM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 172
2.3.1 Structure des fichiers de configuration . . . . . . . . . . . . . . 172
2.3.2 Les types d'action de PAM . . . . . . . . . . . . . . . . . . . . . . . . 174
2.3.3 Les comportements des modules. . . . . . . . . . . . . . . . . . . 175
3. LDAP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 177
3.1 Généralités . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 177
3.1.1 Les annuaires. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 177
3.1.2 Structure et terminologie. . . . . . . . . . . . . . . . . . . . . . . . . 177
3.1.3 Schéma . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 178
3.1.4 Le protocole LDAP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 179
3.1.5 Désignation des objets . . . . . . . . . . . . . . . . . . . . . . . . . . . 179
3.1.6 Authentification auprès d'un annuaire LDAP . . . . . . . . 180
3.1.7 Le format LDIF . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 180
Table des matières 7

3.2 Le serveur OpenLDAP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 181


3.2.1 Gestion du service. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 181
3.2.2 Configuration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 181
3.3 Les outils clients LDAP. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 183
3.3.1 Recherche d'informations avec ldapsearch . . . . . . . . . . . 183
3.3.2 Ajout d'objets dans un annuaire avec ldapadd . . . . . . . . 186
3.3.3 Modification d'objets existants avec ldapmodify. . . . . . 186
3.3.4 Suppression d'objets avec ldapdelete. . . . . . . . . . . . . . . . 187
3.3.5 Modification de mot de passe avec ldappasswd . . . . . . . 187
3.3.6 Allègement des syntaxes
pour les utilitaires clients LDAP . . . . . . . . . . . . . . . . . . . 188
3.3.7 Clients graphiques . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 189
4. Authentification par LDAP des systèmes Linux. . . . . . . . . . . . . . . . 190
4.1 Configuration NSS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 190
4.1.1 Configuration de la bibliothèque NSS pour LDAP. . . . . 191
4.1.2 Renseignement des sources de noms. . . . . . . . . . . . . . . . 191
4.1.3 Vérification des sources de noms. . . . . . . . . . . . . . . . . . . 191
4.2 Configuration PAM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 192
4.2.1 Identification des services nécessaires . . . . . . . . . . . . . . . 192
4.2.2 Configuration des fichiers PAM . . . . . . . . . . . . . . . . . . . 192

Chapitre 5
Partage de fichiers
1. Partage de données avec NFS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 195
1.1 Partage de répertoires . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 195
1.1.1 Observation des partages actifs . . . . . . . . . . . . . . . . . . . . 195
1.1.2 Partage ponctuel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 196
1.1.3 Service NFS et partage permanent . . . . . . . . . . . . . . . . . 197
1.1.4 Options de partage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 198
1.2 Configuration des clients . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 199
1.2.1 Affichage des partages distants . . . . . . . . . . . . . . . . . . . . 199
1.2.2 Montage d'un répertoire distant . . . . . . . . . . . . . . . . . . . 199
8 LINUX
Administration système et exploitation des services réseau

1.3 Gestion des identités . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 200


1.3.1 Les droits du client . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 200
1.3.2 Le cas particulier du superutilisateur . . . . . . . . . . . . . . . 200
2. Partage de données avec Samba. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 200
2.1 Configuration générale. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 201
2.1.1 Les démons Samba . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 201
2.1.2 Les fichiers de configuration . . . . . . . . . . . . . . . . . . . . . . 201
2.1.3 Configuration globale. . . . . . . . . . . . . . . . . . . . . . . . . . . . 202
2.2 Partage de répertoire. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 203
2.3 Gestion des identités . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 204
2.3.1 Algorithmes de hachage et stockage des mots de passe. 204
2.3.2 Authentification auprès des serveurs Samba . . . . . . . . . 205
2.3.3 Génération des mots de passe MD4 . . . . . . . . . . . . . . . . 206
2.3.4 Synchronisation avec les mots de passe Linux . . . . . . . . 206
2.3.5 Suppression ou désactivation d'un compte Samba . . . . 206
2.4 Le client Samba. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 207
2.4.1 Exploitation ponctuelle de ressources avec smbclient . . 207
2.4.2 Montage d'un partage SMB avec smbmount . . . . . . . . . 209
2.4.3 Montage d'un partage CIFS . . . . . . . . . . . . . . . . . . . . . . . 210
3. Partage de fichiers avec FTP. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 210
3.1 Le protocole FTP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 210
3.1.1 Historique . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 210
3.1.2 Paramètres techniques . . . . . . . . . . . . . . . . . . . . . . . . . . . 211
3.1.3 Modes FTP actif et FTP passif . . . . . . . . . . . . . . . . . . . . . 211
3.2 Les clients FTP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 212
3.2.1 Les clients FTP graphiques . . . . . . . . . . . . . . . . . . . . . . . . 212
3.2.2 Le client FTP en lignes de commande . . . . . . . . . . . . . . . 212
3.3 Le serveur Pure-FTPd . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 213
3.3.1 Fonctionnement pour accès des utilisateurs
à leurs répertoires personnels213
3.3.2 Fonctionnement en accès anonyme . . . . . . . . . . . . . . . . 213
3.3.3 Options de fonctionnement . . . . . . . . . . . . . . . . . . . . . . 214
3.4 Le serveur vsftpd. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 214
Table des matières 9

Chapitre 6
Résolution de noms DNS
1. Généralités . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 217
1.1 Les débuts de la résolution de noms et l'apparition du DNS . . 217
1.2 Concept de zones DNS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 218
1.3 Mécanisme de la résolution de noms . . . . . . . . . . . . . . . . . . . . 220
1.4 Les enregistrements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 222
1.4.1 Enregistrement de type A . . . . . . . . . . . . . . . . . . . . . . . . 222
1.4.2 Enregistrement de type AAAA . . . . . . . . . . . . . . . . . . . . 223
1.4.3 Enregistrement de type PTR . . . . . . . . . . . . . . . . . . . . . . 223
1.4.4 Enregistrement de type CNAME. . . . . . . . . . . . . . . . . . . 223
1.4.5 Enregistrement de type MX. . . . . . . . . . . . . . . . . . . . . . . 224
1.4.6 Enregistrement de type SOA . . . . . . . . . . . . . . . . . . . . . . 224
1.4.7 Enregistrement de type NS . . . . . . . . . . . . . . . . . . . . . . . 224
1.5 DNS sur Linux . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 224
1.5.1 Le serveur DNS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 224
1.5.2 Le client DNS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 225
2. Configuration de base du serveur . . . . . . . . . . . . . . . . . . . . . . . . . . . 226
2.1 Fonctionnement du serveur BIND . . . . . . . . . . . . . . . . . . . . . . 226
2.1.1 Structure du fichier named.conf
et principaux éléments de configuration . . . . . . . . . . . . 226
2.1.2 Les fichiers de définition de zone préinstallés. . . . . . . . . 227
2.2 Serveur de cache . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 228
2.2.1 Configuration du serveur de cache . . . . . . . . . . . . . . . . . 229
2.2.2 Redirection . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 229
2.3 Commande de pilotage rndc . . . . . . . . . . . . . . . . . . . . . . . . . . . 230
3. Gestion de zones DNS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 231
3.1 Gestion de zones locales. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 231
3.1.1 Création d'un fichier de zone directe. . . . . . . . . . . . . . . . 231
3.1.2 Création d'un fichier de zone inverse . . . . . . . . . . . . . . . 233
3.1.3 Création d'enregistrements dans les fichiers de zone. . . 234
3.1.4 Déclaration de zone principale
dans le fichier named.conf . . . . . . . . . . . . . . . . . . . . . . . . 235
10 LINUX
Administration système et exploitation des services réseau

3.1.5 Prise en compte de la nouvelle configuration . . . . . . . . . 235


3.2 Gestion de zones secondaires. . . . . . . . . . . . . . . . . . . . . . . . . . . 235
3.2.1 Déclaration de la zone secondaire dans named.conf . . . 236
3.2.2 Prise en compte de la nouvelle configuration . . . . . . . . . 236
3.3 Délégation de zone . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 237
3.4 Outils de test . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 237
3.4.1 ping . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 237
3.4.2 nslookup . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 238
3.4.3 dig . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 239
3.4.4 host . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 241
3.4.5 time . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 242
4. Sécurisation du DNS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 242
4.1 Limitation des clients . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 242
4.2 Utilisation d'un compte de service . . . . . . . . . . . . . . . . . . . . . . 243
4.2.1 Pourquoi un compte de service ? . . . . . . . . . . . . . . . . . . . 243
4.2.2 Lancement de named avec un compte de service . . . . . . 243
4.3 BIND en mode chroot . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 244
4.3.1 Pourquoi enfermer le processus ? . . . . . . . . . . . . . . . . . . 244
4.3.2 Création de l'environnement nécessaire . . . . . . . . . . . . . 244
4.3.3 Lancement du programme en mode chroot . . . . . . . . . . 245
4.4 Échange sécurisé entre serveurs . . . . . . . . . . . . . . . . . . . . . . . . . 246
4.4.1 Génération du secret partagé . . . . . . . . . . . . . . . . . . . . . . 246
4.4.2 Déclaration du secret dans named.conf . . . . . . . . . . . . . 247
4.4.3 Les deux serveurs doivent utiliser la clé . . . . . . . . . . . . . 248
4.4.4 Tout service est refusé en l'absence de signature . . . . . . 248

Chapitre 7
Serveurs web
1. Configuration de base d'un serveur Apache . . . . . . . . . . . . . . . . . . . 249
1.1 Apache et les serveurs web. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 249
1.2 Fichier de configuration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 250
1.2.1 Format du fichier de configuration . . . . . . . . . . . . . . . . . 250
Table des matières 11

1.2.2 Les directives de conteneur . . . . . . . . . . . . . . . . . . . . . . . 251


1.2.3 Validation de la syntaxe. . . . . . . . . . . . . . . . . . . . . . . . . . 252
1.2.4 Démarrage et arrêt du serveur . . . . . . . . . . . . . . . . . . . . . 252
1.3 Les modules Apache . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 253
1.3.1 Chargement des modules. . . . . . . . . . . . . . . . . . . . . . . . . 253
1.3.2 Visualisation des modules . . . . . . . . . . . . . . . . . . . . . . . . 254
1.3.3 Choix des modules . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 255
1.4 Gestion des ressources . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 257
2. Hôtes virtuels d’un serveur Apache. . . . . . . . . . . . . . . . . . . . . . . . . . 257
2.1 Configuration globale. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 258
2.1.1 Gestion des contenus . . . . . . . . . . . . . . . . . . . . . . . . . . . . 258
2.1.2 Organisation des sites virtuels. . . . . . . . . . . . . . . . . . . . . 258
2.2 Configuration des hôtes virtuels . . . . . . . . . . . . . . . . . . . . . . . . 258
2.2.1 Hôtes virtuels sur adresse IP . . . . . . . . . . . . . . . . . . . . . . 259
2.2.2 Hôtes virtuels sur nom d'hôte . . . . . . . . . . . . . . . . . . . . . 260
3. Restriction de l'accès utilisateur d’un serveur Apache . . . . . . . . . . . 261
3.1 Restriction de l'accès aux pages web . . . . . . . . . . . . . . . . . . . . . 261
3.1.1 Déclaration du répertoire à protéger . . . . . . . . . . . . . . . . 261
3.1.2 Directives d'authentification . . . . . . . . . . . . . . . . . . . . . . 262
3.2 Authentification locale. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 262
3.2.1 Création d'une base de comptes locale . . . . . . . . . . . . . . 262
3.2.2 Chargement des modules d'authentification . . . . . . . . . 263
3.2.3 Configuration de l'authentification locale . . . . . . . . . . . 264
3.3 Authentification par annuaire LDAP . . . . . . . . . . . . . . . . . . . . 265
3.3.1 Vérification de la disponibilité des informations
de l'annuaire . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 265
3.3.2 Chargement des modules nécessaires . . . . . . . . . . . . . . . 266
3.3.3 Configuration de l'authentification. . . . . . . . . . . . . . . . . 266
3.4 Authentification simple par fichier .htaccess . . . . . . . . . . . . . . 266
4. Configuration d'Apache avec SSL . . . . . . . . . . . . . . . . . . . . . . . . . . . 268
4.1 Cryptographie et certificats . . . . . . . . . . . . . . . . . . . . . . . . . . . . 268
4.1.1 Concepts cryptographiques . . . . . . . . . . . . . . . . . . . . . . . 268
4.1.2 Les certificats numériques X509 . . . . . . . . . . . . . . . . . . . 269
12 LINUX
Administration système et exploitation des services réseau

4.1.3 Génération locale d'un certificat . . . . . . . . . . . . . . . . . . . 270


4.2 Configuration SSL d’un serveur Apache . . . . . . . . . . . . . . . . . . 272
4.2.1 Chargement du module SSL . . . . . . . . . . . . . . . . . . . . . . 272
4.2.2 Configuration des clés de serveur . . . . . . . . . . . . . . . . . . 272
4.2.3 Gestion du fonctionnement SSL . . . . . . . . . . . . . . . . . . . 272
4.2.4 Authentification des clients par certificat . . . . . . . . . . . 273
5. Serveur proxy Apache . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 273
5.1 Les serveurs proxy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 273
5.1.1 Protection des clients . . . . . . . . . . . . . . . . . . . . . . . . . . . . 274
5.1.2 Serveurs de cache . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 274
5.1.3 Filtrages . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 274
5.1.4 Inconvénients . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 274
5.2 Le serveur proxy squid . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 275
5.2.1 Configuration de base . . . . . . . . . . . . . . . . . . . . . . . . . . . 275
5.2.2 Gestion des accès clients . . . . . . . . . . . . . . . . . . . . . . . . . 277
6. Configuration de base d'un serveur Nginx . . . . . . . . . . . . . . . . . . . . 279
6.1 Nginx et les serveurs web . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 279
6.2 Fichier de configuration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 280
6.2.1 Format du fichier de configuration . . . . . . . . . . . . . . . . . 280
6.2.2 Directives générales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 281
6.2.3 Règles de syntaxe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 285
6.2.4 Validation de la syntaxe. . . . . . . . . . . . . . . . . . . . . . . . . . 285
6.2.5 Configuration par défaut de type Debian. . . . . . . . . . . . 286
6.2.6 Démarrage et arrêt du serveur . . . . . . . . . . . . . . . . . . . . . 287
6.3 Les modules Nginx . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 288
6.3.1 Chargement des modules. . . . . . . . . . . . . . . . . . . . . . . . . 288
6.3.2 Visualisation des modules . . . . . . . . . . . . . . . . . . . . . . . . 288
6.3.3 Choix des modules . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 290
6.4 Gestion des ressources . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 291
6.5 Nginx et les expressions régulières . . . . . . . . . . . . . . . . . . . . . . 293
Table des matières 13

7. Hôtes virtuels d’un serveur Nginx. . . . . . . . . . . . . . . . . . . . . . . . . . . 299


7.1 Configuration globale. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 299
7.2 Configuration des hôtes virtuels . . . . . . . . . . . . . . . . . . . . . . . . 300
7.2.1 Hôtes virtuels sur adresses IP/numéros de port . . . . . . . 300
7.2.2 Hôtes virtuels sur nom d'hôte . . . . . . . . . . . . . . . . . . . . . 301
8. Les filtres d'URI de Nginx : le bloc de type location . . . . . . . . . . . . 304
8.1 Définition d'un bloc location de sélection d'URI . . . . . . . . . . . 305
8.1.1 Syntaxe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 305
8.1.2 Priorité de sélection . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 306
8.1.3 Exemples de sélection. . . . . . . . . . . . . . . . . . . . . . . . . . . . 307
8.2 Bloc de location nommé. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 309
9. Restrictions de l'accès utilisateur d’un serveur Nginx . . . . . . . . . . . 310
9.1 Contrôle par adresse IP. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 310
9.2 Contrôle par authentification . . . . . . . . . . . . . . . . . . . . . . . . . . 313
9.3 Contrôle par authentification locale . . . . . . . . . . . . . . . . . . . . . 314
9.3.1 Choix de la portée de la restriction d'accès simple . . . . . 314
9.3.2 Directives d'authentification . . . . . . . . . . . . . . . . . . . . . . 315
9.3.3 Création d'une base de comptes locale . . . . . . . . . . . . . . 316
9.4 Authentification par LDAP . . . . . . . . . . . . . . . . . . . . . . . . . . . . 317
9.4.1 Utilisation de PAM. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 317
9.4.2 Sous-requête . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 317
9.4.3 Module LDAP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 318
10. Configuration de Nginx avec SSL . . . . . . . . . . . . . . . . . . . . . . . . . . . 318
10.1 Configuration d'un serveur virtuel SSL . . . . . . . . . . . . . . . . . . . 318
10.2 Optimisation d'un serveur SSL . . . . . . . . . . . . . . . . . . . . . . . . . 321
11. Gestion des pages dynamiques avec un serveur Nginx . . . . . . . . . . 322
11.1 Les modules FastCGI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 322
11.2 Configuration de FastCGI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 323
12. Nginx en reverse proxy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 324
12.1 Reverse proxy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 324
12.2 Le module ngx_http_proxy . . . . . . . . . . . . . . . . . . . . . . . . . . . . 325
12.3 Déclaration du serveur cible. . . . . . . . . . . . . . . . . . . . . . . . . . . . 325
14 LINUX
Administration système et exploitation des services réseau

12.4 Sélection des demandes à rediriger . . . . . . . . . . . . . . . . . . . . . . 326


12.4.1Sélection par un bloc location utilisant
une expression régulière . . . . . . . . . . . . . . . . . . . . . . . . . . 326
12.4.2Sélection par la directive try_files . . . . . . . . . . . . . . . . . . 327
12.4.3Sélection par la directive fastcgi_pass . . . . . . . . . . . . . . . 328
13. Répartition de charge avec un serveur Nginx . . . . . . . . . . . . . . . . . . 329
13.1 Le bloc upstream. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 329
13.2 Utilisation d'une grappe de serveurs . . . . . . . . . . . . . . . . . . . . . 331

Chapitre 8
Messagerie
1. Les MTA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 333
1.1 Le protocole SMTP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 333
1.2 Présentation de Sendmail. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 335
1.3 Présentation d'Exim . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 335
1.4 Présentation de Postfix. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 335
2. Le serveur SMTP Postfix . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 336
2.1 Configuration de Postfix . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 336
2.1.1 Gestion des identités . . . . . . . . . . . . . . . . . . . . . . . . . . . . 336
2.1.2 Gestion des alias . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 336
2.1.3 La commande postfix . . . . . . . . . . . . . . . . . . . . . . . . . . . . 337
2.1.4 Les fichiers de configuration . . . . . . . . . . . . . . . . . . . . . . 338
2.1.5 Vérification de la configuration active . . . . . . . . . . . . . . 339
2.2 Gestion de domaines virtuels. . . . . . . . . . . . . . . . . . . . . . . . . . . 339
2.2.1 Définition des domaines virtuels. . . . . . . . . . . . . . . . . . . 339
2.2.2 Gestion des identités pour les domaines virtuels . . . . . . 340
2.3 Gestion de quotas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 341
3. Remise locale des messages . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 341
3.1 La commande mail . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 342
3.1.1 Envoi de courrier avec la commande mail. . . . . . . . . . . . 342
3.1.2 Lecture de courrier avec la commande mail . . . . . . . . . . 343
Table des matières 15

3.2 Formats mbox et maildir . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 344


3.2.1 Le format mbox . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 344
3.2.2 Le format maildir . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 345
3.2.3 Utilisation du format maildir par Postfix . . . . . . . . . . . . 345
3.3 procmail. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 346
3.3.1 Demander à Postfix d'utiliser procmail . . . . . . . . . . . . . . 346
3.3.2 Configurer procmail . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 346
3.4 Alternatives à la messagerie . . . . . . . . . . . . . . . . . . . . . . . . . . . . 347
3.4.1 write et wall . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 347
3.4.2 issue et issue.net . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 348
3.4.3 motd . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 348
4. Remise distante des messages . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 349
4.1 Fonctionnement conjoint de MTA, de MDA et de MUA . . . . 349
4.1.1 Le protocole POP3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 349
4.1.2 Le protocole IMAP4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 349
4.2 Serveurs Courier-IMAP et Courier-POP . . . . . . . . . . . . . . . . . . 350
4.2.1 Format de messages pour les services courrier . . . . . . . . 350
4.2.2 Configuration des services . . . . . . . . . . . . . . . . . . . . . . . . 350
4.2.3 Validation de l'authentification. . . . . . . . . . . . . . . . . . . . 351
4.3 Serveur Dovecot . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 351
4.3.1 Configuration de Dovecot . . . . . . . . . . . . . . . . . . . . . . . . 352
4.3.2 Visualisation de la configuration. . . . . . . . . . . . . . . . . . . 352

Chapitre 9
Protection des réseaux
1. Routage et filtrage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 355
1.1 Configuration d'un serveur Linux en tant que routeur . . . . . . 355
1.1.1 Activation du routage sur un serveur Linux . . . . . . . . . . 355
1.1.2 Consultation de la table de routage. . . . . . . . . . . . . . . . . 356
1.1.3 Gestion des routes statiques . . . . . . . . . . . . . . . . . . . . . . 357
16 LINUX
Administration système et exploitation des services réseau

1.2 iptables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 358


1.2.1 Les tables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 359
1.2.2 Les chaînes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 359
1.2.3 Les actions. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 360
1.2.4 Le traitement des règles . . . . . . . . . . . . . . . . . . . . . . . . . . 360
2. Administration d'un pare-feu avec les iptables. . . . . . . . . . . . . . . . . 362
2.1 Politiques. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 362
2.1.1 Principe des politiques de pare-feu . . . . . . . . . . . . . . . . . 362
2.1.2 Configuration d'une politique de base . . . . . . . . . . . . . . 363
2.2 Filtrage de paquets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 363
2.2.1 Politique et règles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 363
2.2.2 Création de règles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 363
2.2.3 Gestion des règles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 364
2.2.4 Gestion des flux retour. . . . . . . . . . . . . . . . . . . . . . . . . . . 366
2.3 Gestion du NAT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 367
2.3.1 Rappel sur le principe du NAT . . . . . . . . . . . . . . . . . . . . 367
2.3.2 Diagnostic de la configuration NAT d'un routeur . . . . . 368
2.3.3 Connexion d'un réseau privé à un réseau public . . . . . . 368
2.4 Scripts de configuration des règles de filtrage. . . . . . . . . . . . . . 369
2.4.1 Red Hat et les iptables . . . . . . . . . . . . . . . . . . . . . . . . . . . 369
2.4.2 Création de services personnalisés de pare-feu
avec les iptables. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 369
3. Détection des intrusions et des vulnérabilités . . . . . . . . . . . . . . . . . 371
3.1 Les systèmes IDS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 371
3.1.1 Les limitations des pare-feu . . . . . . . . . . . . . . . . . . . . . . . 371
3.1.2 Techniques d'analyse . . . . . . . . . . . . . . . . . . . . . . . . . . . . 372
3.1.3 Sources d'information . . . . . . . . . . . . . . . . . . . . . . . . . . . 372
3.2 Snort . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 373
3.2.1 Les composants. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 373
3.2.2 Gestion des sources d'information . . . . . . . . . . . . . . . . . 373
3.2.3 Gestion des alertes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 374
Table des matières 17

3.3 OpenVAS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 374


3.3.1 Le serveur OpenVAS . . . . . . . . . . . . . . . . . . . . . . . . . . . . 375
3.3.2 Les clients OpenVAS . . . . . . . . . . . . . . . . . . . . . . . . . . . . 375
3.3.3 Récupération des vulnérabilités. . . . . . . . . . . . . . . . . . . . 375

Chapitre 10
Sécurisation du trafic
1. OpenSSH. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 377
1.1 Utilisations de OpenSSH . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 377
1.2 Gestion des authentifications . . . . . . . . . . . . . . . . . . . . . . . . . . 378
1.2.1 Authentification par mot de passe . . . . . . . . . . . . . . . . . 378
1.2.2 Authentification par clés . . . . . . . . . . . . . . . . . . . . . . . . . 379
1.2.3 L'agent SSH . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 381
1.3 Confidentialité des communications . . . . . . . . . . . . . . . . . . . . 382
1.3.1 Session interactive avec SSH . . . . . . . . . . . . . . . . . . . . . . 382
1.3.2 Copie de fichiers avec SSH. . . . . . . . . . . . . . . . . . . . . . . . 383
1.3.3 Utilisation d'applications dans des tunnels SSH . . . . . . 384
1.3.4 Renvoi de sessions X11 via SSH . . . . . . . . . . . . . . . . . . . 385
2. OpenVPN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 385
2.1 Les modes de fonctionnement OpenVPN. . . . . . . . . . . . . . . . . 385
2.1.1 Authentification . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 386
2.1.2 Confidentialité . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 386
2.1.3 Fonctionnement réseau . . . . . . . . . . . . . . . . . . . . . . . . . . 386
2.2 Création d'un tunnel point-à-point. . . . . . . . . . . . . . . . . . . . . . 387
2.2.1 Gestion de l'authentification . . . . . . . . . . . . . . . . . . . . . . 387
2.2.2 Fichiers de configuration . . . . . . . . . . . . . . . . . . . . . . . . . 387
2.2.3 Mise en œuvre du tunnel VPN . . . . . . . . . . . . . . . . . . . . 389
18 LINUX
Administration système et exploitation des services réseau

Chapitre 11
Compilation des applications et du noyau Linux
1. Compilation des applications . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 391
1.1 Généralités . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 391
1.1.1 Principe de la compilation . . . . . . . . . . . . . . . . . . . . . . . . 391
1.1.2 Quand faut-il compiler ? . . . . . . . . . . . . . . . . . . . . . . . . . 392
1.1.3 Rappels sur les utilitaires de décompression. . . . . . . . . . 392
1.2 Procédure de compilation GNU. . . . . . . . . . . . . . . . . . . . . . . . . 393
1.2.1 Récupération des sources . . . . . . . . . . . . . . . . . . . . . . . . . 393
1.2.2 Configuration de la compilation . . . . . . . . . . . . . . . . . . . 393
1.2.3 Personnalisation des programmes compilés . . . . . . . . . . 395
1.2.4 Compilation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 396
1.2.5 Les cibles de la commande make . . . . . . . . . . . . . . . . . . . 397
1.2.6 Installation des binaires . . . . . . . . . . . . . . . . . . . . . . . . . . 397
1.2.7 Nettoyage des sources . . . . . . . . . . . . . . . . . . . . . . . . . . . 397
1.2.8 Désinstallation d'un programme . . . . . . . . . . . . . . . . . . . 398
1.3 Environnement des applications . . . . . . . . . . . . . . . . . . . . . . . . 398
1.3.1 Les bibliothèques . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 398
1.3.2 Visualisation des appels système. . . . . . . . . . . . . . . . . . . 401
2. Compilation du noyau . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 402
2.1 Les composants du noyau . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 402
2.1.1 Le cœur de noyau . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 402
2.1.2 Les modules. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 402
2.1.3 Autour du noyau . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 405
2.1.4 Gestion des versions du noyau . . . . . . . . . . . . . . . . . . . . 406
2.2 Procédure de compilation et d'exploitation . . . . . . . . . . . . . . . 407
2.2.1 Récupération des sources . . . . . . . . . . . . . . . . . . . . . . . . . 407
2.2.2 Génération du fichier de réponse. . . . . . . . . . . . . . . . . . . 407
2.2.3 Compilation du noyau et des modules . . . . . . . . . . . . . . 410
2.2.4 Installation des modules . . . . . . . . . . . . . . . . . . . . . . . . . 411
2.2.5 Installation du noyau . . . . . . . . . . . . . . . . . . . . . . . . . . . . 411
2.2.6 Création du ramdisk des modules . . . . . . . . . . . . . . . . . . 412
2.2.7 Configuration du gestionnaire de démarrage . . . . . . . . . 413
Table des matières 19

3. Patch du noyau . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 413


3.1 Ajout de patchs. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 413
3.2 Retrait de patchs. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 415

Chapitre 12
Gestion et planification des ressources
1. Gestion des ressources . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 417
1.1 Types de ressources . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 417
1.2 Sources d’information sur les ressources. . . . . . . . . . . . . . . . . . 418
1.2.1 Les pseudo-systèmes de fichiers procfs et sysfs . . . . . . . 418
1.2.2 Les journaux du système . . . . . . . . . . . . . . . . . . . . . . . . . 424
1.2.3 Les commandes de suivi instantané . . . . . . . . . . . . . . . . 425
1.3 Surveillance et suivi des ressources processeur . . . . . . . . . . . . . 427
1.3.1 Informations sur les ressources processeur . . . . . . . . . . . 427
1.3.2 Utilisation des ressources processeur . . . . . . . . . . . . . . . 430
1.3.3 Diagnostiquer une surutilisation du processeur . . . . . . . 440
1.4 Surveillance et suivi de la mémoire vive . . . . . . . . . . . . . . . . . . 442
1.4.1 Informations sur la mémoire . . . . . . . . . . . . . . . . . . . . . . 443
1.4.2 Utilisation de la mémoire. . . . . . . . . . . . . . . . . . . . . . . . . 444
1.4.3 Diagnostiquer une surconsommation de la mémoire . . 449
1.5 Surveillance et suivi des ressources disques . . . . . . . . . . . . . . . 450
1.5.1 Informations sur les ressources disques . . . . . . . . . . . . . 450
1.5.2 Utilisation des ressources disques . . . . . . . . . . . . . . . . . . 462
1.6 Surveillance et suivi des ressources réseau . . . . . . . . . . . . . . . . 468
1.6.1 Informations sur les ressources réseau . . . . . . . . . . . . . . 469
1.6.2 Suivi et diagnostic des ressources réseau. . . . . . . . . . . . . 471
2. Gestion prévisionnelle des ressources . . . . . . . . . . . . . . . . . . . . . . . . 475
2.1 Le paquetage sysstat. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 475
2.1.1 La collecte d’informations avec sysstat. . . . . . . . . . . . . . 475
2.1.2 La commande sar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 476
20 LINUX
Administration système et exploitation des services réseau

2.2 Le démon collectd . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 478


2.2.1 Installation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 479
2.2.2 Configuration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 480
2.2.3 Exploitation des données de collectd . . . . . . . . . . . . . . . 483
2.3 Les solutions de supervision. . . . . . . . . . . . . . . . . . . . . . . . . . . . 485
355

Chapitre 9
Protection des réseaux

1. Routage et filtrage
Protection des rés eaux

1.1 Configuration d'un serveur Linux en tant que routeur

La fonction de routage est intégrée nativement dans le noyau Linux. Il n'y a


donc pas de questions à se poser, toute machine Linux est un routeur en puis-
sance. En revanche, cette fonction n'est pas active par défaut au démarrage. Il
faut donc la configurer avant toute opération de routage.

1.1.1 Activation du routage sur un serveur Linux


Nous savons que tout système Linux présente un filesystem virtuel /proc qui
permet d'observer en direct un certain nombre de comportements et para-
mètres. L'activation du routage se fait en modifiant le contenu du fichier /proc/
sys/net/ipv4/ip_forward. Ce fichier contient un seul caractère, par défaut 0
pour indiquer que le routage est inactif.
Modification du fichier ip_forward pour activer le routage
echo 1 > /proc/sys/net/ipv4/ip_forward

Une fois cette manipulation effectuée, la machine Linux est prête à router les
paquets se présentant sur ses interfaces. Ce paramètre est volatile et sera per-
du dès la machine éteinte.
356 LINUX
Administration système et exploitation des services réseau

Toutefois, on peut évidemment annuler le routage en effectuant l'opération


inverse.
Modification du fichier ip_forward pour désactiver le routage
echo 0 > /proc/sys/net/ipv4/ip_forward

Autre possibilité, la commande sysctl qui permet de modifier dynamiquement


des paramètres fonctionnels du noyau. sysctl permet de modifier directement
tous les fichiers se trouvant sous l'arborescence /proc/sys.
Activation du routage avec sysctl
sysctl net.ipv4.ip_forward=1

Ces commandes sont effectives toute la durée de la session et doivent être


retapées après chaque redémarrage. On peut bien entendu les placer dans un
script de service appelé au démarrage, ou modifier le fichier /etc/sysctl.conf.
Activation permanente du routage dans le fichier /etc/sysctl.conf
net.ipv4.ip_forward = 1

1.1.2 Consultation de la table de routage


À ce stade, le routeur Linux est parfaitement capable de router les paquets.
Toutefois, il ne pourra le faire que vers des réseaux connus, c'est-à-dire réfé-
rencés dans sa table de routage.
La table de routage est maintenue en mémoire mais elle peut être consultée
par quelques commandes.
Affichage de la table de routage par la commande route
route -n

Le paramètre -n est facultatif, mais il fait gagner beaucoup de temps à l'affi-


chage car il dispense la commande de tenter de résoudre les adresses renvoyées

© Editions ENI - All rights reserved


en noms. Or, si l'adresse en question n'est pas renseignée dans une zone DNS
inverse, cette requête se fait pour rien et il faut attendre plusieurs secondes
pour que l'affichage arrive.
Affichage de la table de routage par la commande netstat
netstat -nr
Protection des réseaux 357
Chapitre 9

Où l'option -r demande à la commande d'afficher la table de routage et -n de


ne pas faire de résolution de noms. La commande netstat a de nombreux
usages, mais elle est souvent utilisée dans ce simple cadre de consultation de
la table de routage.
Exemple d'affichages de table de routage
L'affichage de la table de routage est souvent le seul moyen simple de
consulter la valeur de la passerelle par défaut.
beta:~# route -n
Table de routage IP du noyau
Destination Passerelle Genmask Indic Metric Ref Use Iface
192.168.1.0 0.0.0.0 255.255.255.0 U 0 0 0 eth1
192.168.0.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
0.0.0.0 192.168.0.1 0.0.0.0 UG 0 0 0 eth0

1.1.3 Gestion des routes statiques


Les seules entrées présentes automatiquement dans la table de routage sont
les réseaux auxquels le routeur est directement connecté, ainsi que la passe-
relle par défaut. Le routeur peut donc exploiter ces entrées de la table de rou-
tage sans autre configuration. Si le routeur doit router des paquets vers
d'autres réseaux, il faudra ajouter manuellement les routes dans la table de
routage.
Ajout de route statique dans la table de routage
route add -net réseau_cible netmask masque gw routeur

Ajout de route statique : options et paramètres


-net La route ajoutée est celle d'un réseau (la cible pourrait être un
hôte seul même si cette configuration est moins fréquente).
réseau_cible L'adresse du réseau que la nouvelle route permet d'atteindre.
masque Le masque de sous-réseaux associé à la nouvelle route.
gw routeur Indique le routeur à emprunter pour atteindre le réseau cible.

Ajout de passerelle par défaut


route add default gw routeur

route add -net 0.0.0.0 gw routeur


358 LINUX
Administration système et exploitation des services réseau

Dans la deuxième syntaxe, 0.0.0.0 représente la route par défaut. Cette repré-
sentation de la route par défaut est universelle et applicable sur la quasi-tota-
lité des systèmes exploitant une table de routage IP.
Bien entendu, il est possible de supprimer les routes statiques qui ne sont plus
nécessaires ou enregistrées par erreur.
Suppression de route statique de la table de routage
route del -net réseau_cible netmask masque
Exemple d'ajout de route
beta:~# route -n
Table de routage IP du noyau
Destination Passerelle Genmask Indic Metric Ref Use Iface
192.168.1.0 0.0.0.0 255.255.255.0 U 0 0 0 eth1
192.168.0.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
0.0.0.0 192.168.0.1 0.0.0.0 UG 0 0 0 eth0
beta:~# route add -net 10.0.0.0 netmask 255.0.0.0 gw 192.168.1.99
beta:~# route -n
Table de routage IP du noyau
Destination Passerelle Genmask Indic Metric Ref Use Iface
192.168.1.0 0.0.0.0 255.255.255.0 U 0 0 0 eth1
192.168.0.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
10.0.0.0 192.168.1.99 255.0.0.0 UG 0 0 0 eth1
0.0.0.0 192.168.0.1 0.0.0.0 UG 0 0 0 eth0

Exemple de suppression de route


beta:~# route del -net 10.0.0.0 netmask 255.0.0.0
beta:~# route -n
Table de routage IP du noyau
Destination Passerelle Genmask Indic Metric Ref Use Iface
192.168.1.0 0.0.0.0 255.255.255.0 U 0 0 0 eth1
192.168.0.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
0.0.0.0 192.168.0.1 0.0.0.0 UG 0 0 0 eth0
beta:~#

© Editions ENI - All rights reserved


1.2 iptables

Les iptables sont utilisées pour gérer le filtrage de paquets IP au sein d'un
système Linux. Elles exploitent une commande unique : iptables, et se confi-
gurent par l'application successive de règles de gestion de paquets. Les iptables
peuvent filtrer le trafic en transit dans un routeur Linux, mais aussi le trafic
entrant et sortant de tout serveur ou poste de travail à une seule interface.
Protection des réseaux 359
Chapitre 9

Si les iptables constituent un outil très puissant de gestion du trafic, la médaille


a son revers et leur configuration est tout sauf intuitive. Avec une approche
structurée, on peut toutefois assez rapidement appréhender leur fonctionne-
ment. Les paragraphes ci-après exposent les concepts fondamentaux des
iptables, afin de les utiliser plus tard dans des configurations de pare-feu.

1.2.1 Les tables


Les iptables s'appuient sur des tables associées à un mode fonctionnel. Selon
le type de règle que l'on souhaite ajouter au fonctionnement des iptables, on
précisera la table associée. Les tables principales utilisées sont filter pour le
filtrage de paquets et nat pour la translation d'adresses entre un réseau privé
et un réseau public.
La table filter est la table par défaut. Aussi, quand on établit une règle iptables
dans un but de filtrer les paquets est-elle sous-entendue et donc non précisée.
La table nat sert à la translation d'adresses et doit être systématiquement
précisée quand elle est invoquée.

1.2.2 Les chaînes


Une chaîne iptables représente un type de trafic du point de vue de sa circula-
tion dans une machine. Les chaînes permettent de préciser si une règle doit
s'appliquer à du trafic qui entre dans une machine, qui en sort ou qui la
traverse.
La chaîne INPUT désigne le trafic entrant, la chaîne OUTPUT désigne le tra-
fic sortant, et la chaîne FORWARD désigne le trafic qui traverse la machine,
entrant par une interface et sortant par une autre. Attention, même si un
paquet qui traverse le routeur est d'un point de vue physique respectivement
entrant, traversant et sortant, iptables le considérera comme traversant seule-
ment (chaîne FORWARD). Les chaînes INPUT et OUTPUT sont réservées au
trafic à destination ou en provenance explicite de l'hôte soumis aux règles.
Une autre chaîne appelée POSTROUTING et utilisée dans la configuration
du NAT a pour objet d'appliqu r un traitement à un paquet après une opéra-
tion de routage.
Les chaînes sont toujours indiquées en majuscules dans une syntaxe iptables.
360 LINUX
Administration système et exploitation des services réseau

1.2.3 Les actions


Quand une règle est satisfaite, une action est engendrée par le système sur le
paquet testé. Les principales actions sont ACCEPT qui laisse passer le paquet
et DROP, qui le détruit.
Dans une syntaxe iptables, l'action (target dans le manuel en ligne) est an-
noncée par le paramètre -j.
Les actions sont toujours indiquées en majuscules dans une syntaxe iptables.

1.2.4 Le traitement des règles

© Editions ENI - All rights reserved


Les règles sont appliquées une par une à tout paquet filtré. Si une règle est
satisfaite, une action est engagée sur le paquet et le traitement s'arrête. Si une
règle n'est pas satisfaite, la règle suivante est testée. Dans le cas où aucune des
règles n'est satisfaite, le paquet subit un traitement par défaut paramétré dans
une règle spécifique appelée politique (policy).
Il est possible d'afficher les règles appliquées dans l'ordre pour chacune des
chaînes.

Vous aimerez peut-être aussi