You are on page 1of 175

Cursus Linux PS2

Essentiel
Essentiel
Laboratoire des Technologies Linux,
SUPINFO
Rvision date du 12-12-2007
Copyright 2006 SUPINFO
All rights reserved.
Table des matires
1. Mettre en place un serveur HTTP avec Apache ............................................................................................................ 1
1.1. Rappel sur le protocole HTTP ........................................................................................................................ 1
1.2. Compilation et installation ............................................................................................................................ 2
1.3. Configuration (le fichier httpd.conf) ................................................................................................................ 3
1.3.1. Environnement du serveur .................................................................................................................. 3
1.3.2. Les directives d'environnement serveur ................................................................................................. 4
1.3.3. Gestion des connexions ...................................................................................................................... 5
1.3.4. Informations personnelles ................................................................................................................... 6
1.3.5. Emplacement des documents par dfaut (rpertoires et fichiers) ................................................................. 6
1.3.6. Les droits sur le systme de fichiers ...................................................................................................... 7
1.3.7. Gestion des modules .......................................................................................................................... 9
1.3.8. Mapper les URL avec le systme de fichiers .........................................................................................10
1.3.9. Les pages d'erreurs personnalises ......................................................................................................12
1.4. Dmarrage, arrt du serveur .........................................................................................................................13
1.4.1. apachectl ........................................................................................................................................13
1.4.2. Les fichiers de logs ..........................................................................................................................14
1.5. Configuration avance .................................................................................................................................15
1.5.1. Authentification, autorisations et contrle d'accs ..................................................................................15
1.5.2. Utilisation de SSL/TLS .....................................................................................................................17
1.5.3. Les htes virtuels .............................................................................................................................21
1.5.4. Les fichiers .htaccess ........................................................................................................................24
1.5.5. Gestion d'espaces Web personnels ......................................................................................................26
2. Chiffrement et scurit avec OpenSSL ......................................................................................................................28
2.1. Introduction ..............................................................................................................................................28
2.2. SSLv3 ......................................................................................................................................................28
2.3. Mthodes utilises ......................................................................................................................................29
2.3.1. Chiffrement symtrique ....................................................................................................................29
2.3.2. Cryptographie par cls publiques ........................................................................................................29
2.3.3. Certificats x509 et x509v3 .................................................................................................................30
2.4. OpenSSL ..................................................................................................................................................32
2.4.1. Prsentation ....................................................................................................................................32
2.4.2. Utilisation basique ...........................................................................................................................32
3. Administration distance avec SSH .........................................................................................................................35
3.1. Introduction ..............................................................................................................................................35
3.1.1. Mcanismes ....................................................................................................................................35
3.1.2. Les outils de la suite OpenSSH ...........................................................................................................38
3.2. Le client SSH ............................................................................................................................................38
3.2.1. Configuration du client SSH ..............................................................................................................38
3.2.2. Utilisation du client ..........................................................................................................................39
3.3. Cration de cls .........................................................................................................................................40
3.3.1. Gnration de cls RSA ....................................................................................................................40
3.3.2. Gnration de cls DSA ....................................................................................................................41
3.4. Le serveur SSH ..........................................................................................................................................41
3.5. Administration du serveur SSH .....................................................................................................................41
3.6. Copie scurise (scp) ..................................................................................................................................42
3.7. Authentification par cl publique ...................................................................................................................43
3.8. X-Forwarding ............................................................................................................................................44
3.8.1. Dport d'une application graphique .....................................................................................................45
3.8.2. Dport d'une session graphique complte .............................................................................................45
3.8.3. Scurit .........................................................................................................................................46
3.9. TCP-Forwarding (Tunneling) .......................................................................................................................46
3.10. Sftp: Secure FTP ......................................................................................................................................47
4. Le serveur X ........................................................................................................................................................48
4.1. Introduction ..............................................................................................................................................48
4.1.1. L'architecture de X-window et ses limites .............................................................................................48
4.1.2. Le projet XFree86 ............................................................................................................................49
4.1.3. Le projet Xorg .................................................................................................................................49
4.2. Configuration ............................................................................................................................................49
4.2.1. Gnration d'un fichier de configuration ...............................................................................................49
4.2.2. Edition du fichier de configuration ......................................................................................................49
4.3. Lancement du serveur X ..............................................................................................................................53
4.4. X-Distant ..................................................................................................................................................53
4.4.1. X-Distant en local ............................................................................................................................54
4.4.2. Configuration d'XFree86 et X.org .......................................................................................................54
4.4.3. Afficher des applications distance .....................................................................................................55
4.4.4. Afficher un environnement complet ....................................................................................................56
4.5. Utilitaire Mandriva .....................................................................................................................................56
4.5.1. DrakxConf .....................................................................................................................................56
4.5.2. Configuration du bureau KDE ............................................................................................................57
4.5.3. Configuration du bureau Gnome .........................................................................................................57
5. Le noyau .............................................................................................................................................................58
5.1. Qu'est ce qu'un noyau ? ...............................................................................................................................58
5.2. Compilation et installation du noyau ..............................................................................................................59
5.2.1. Pourquoi recompiler son noyau ? ........................................................................................................59
5.2.2. Les modules du noyau ......................................................................................................................60
5.2.3. Avant de commencer... .....................................................................................................................60
5.2.4. Compilation du noyau .......................................................................................................................62
5.2.5. Configuration ..................................................................................................................................63
5.2.6. Compilation ....................................................................................................................................65
5.3. Installation du noyau ...................................................................................................................................66
5.3.1. Installation du noyau ........................................................................................................................66
5.3.2. Configuration du bootloader ..............................................................................................................67
5.4. Gestion des modules ...................................................................................................................................69
6. Mettre en place un serveur FTP avec ProFTPd ...........................................................................................................71
6.1. Introduction ..............................................................................................................................................71
6.2. Rappels sur le protocole FTP ........................................................................................................................71
6.3. FTP et la scurit .......................................................................................................................................72
6.4. Introduction aux utilisateurs virtuels ..............................................................................................................72
6.5. Installation de ProFTPd ...............................................................................................................................72
6.5.1. Installation partir des sources ...........................................................................................................73
6.5.2. Options du script ./configure .......................................................................................................73
6.6. Lancement du serveur Proftpd ......................................................................................................................74
6.6.1. La configuration de Proftpd ...............................................................................................................74
6.6.2. Exemple de fichier de configuration ....................................................................................................75
6.6.3. La ligne de Commande .....................................................................................................................76
6.7. Gestion des Utilisateurs Virtuels ...................................................................................................................76
6.7.1. La commande ftpasswd .....................................................................................................................77
6.7.2. Les options de la commande ftpasswd ..................................................................................................78
6.7.3. Ajouter/Modifier un utilisateur Virtuel .................................................................................................79
6.7.4. Changer le mot de passe d'un utilisateur virtuel ......................................................................................79
6.7.5. Supprimer un utilisateur Virtuel ..........................................................................................................79
6.8. Administration du serveur ............................................................................................................................80
6.8.1. Lister les utilisateurs connects au serveur ............................................................................................80
6.8.2. Les fichiers de logs ..........................................................................................................................80
6.9. Utilisation de SSL/TLS ...............................................................................................................................80
6.9.1. Les Directives de Bases ....................................................................................................................80
6.9.2. Exemple de Configuration .................................................................................................................81
6.10. Conclusion ..............................................................................................................................................82
7. Network File System (NFS) ....................................................................................................................................83
7.1. Prsentation du NFS/RPC ............................................................................................................................83
Cursus Linux PS2
7.1.1. Le protocole NFS ............................................................................................................................83
7.1.2. RPC ..............................................................................................................................................83
7.2. Installation d'un client/serveur NFS ...............................................................................................................84
7.2.1. La partie Noyau ...............................................................................................................................84
7.2.2. La partie logicielle ...........................................................................................................................85
7.3. Configuration du serveur .............................................................................................................................85
7.3.1. Modes synchrone et asynchrone .........................................................................................................86
7.3.2. Gestion des UID/GID .......................................................................................................................86
7.3.3. Options de configuration de NFS ........................................................................................................88
7.4. Administration/Maintenance d'un serveur NFS ................................................................................................89
7.4.1. Les diffrents daemons .....................................................................................................................89
7.4.2. Lancement et arrt du serveur NFS ......................................................................................................89
7.4.3. Commandes d'administration et de maintenance ....................................................................................90
7.5. Utilisation du client NFS .............................................................................................................................92
7.5.1. Montage dun rpertoire distant ..........................................................................................................92
7.5.2. Montage dun rpertoire au dmarrage du systme .................................................................................93
7.6. Conclusion ................................................................................................................................................93
8. Gestion du RAID ..................................................................................................................................................94
8.1. Les priphriques loop ................................................................................................................................94
8.1.1. Introduction aux priphriques loop ....................................................................................................94
8.1.2. Manipulation des priphriques loop ...................................................................................................94
8.1.3. Cration d'un fichier loop ..................................................................................................................95
8.1.4. Associer le fichier une entre dans /dev .............................................................................................95
8.2. Introduction au RAID .................................................................................................................................96
8.3. Le RAID matriel .......................................................................................................................................97
8.4. Mise en place du RAID logiciel ....................................................................................................................97
8.4.1. Prparation du noyau ........................................................................................................................97
8.4.2. Installation de mdadm .......................................................................................................................98
8.4.3. Prparation des disques .....................................................................................................................98
8.4.4. Nommage des priphriques RAID .....................................................................................................99
8.5. Utilisation et configuration du RAID logiciel ...................................................................................................99
8.5.1. Mise en place d'un RAID 1 ................................................................................................................99
8.5.2. Mise en place d'un RAID 5 .............................................................................................................. 100
8.5.3. Mise en place d'un RAID 0+1 .......................................................................................................... 101
8.5.4. Le fichier /etc/mdadm.conf .............................................................................................................. 102
8.6. Maintenance et surveillance ....................................................................................................................... 102
8.6.1. Ajout et retrait d'un priphrique chaud ........................................................................................... 102
8.6.2. Surveiller ses priphriques Raid ...................................................................................................... 103
8.7. L'utilitaire DiskDrake ............................................................................................................................... 105
9. Introduction aux bases de donnes ......................................................................................................................... 106
9.1. Prsentation ............................................................................................................................................ 106
9.2. Rles et fonctions dun SGBD .................................................................................................................... 106
9.3. Le SQL .................................................................................................................................................. 107
9.4. Les Bases de donnes Fichiers .................................................................................................................... 108
9.5. Les SGBD .............................................................................................................................................. 108
9.6. Tableau Comparatif .................................................................................................................................. 108
9.7. Conclusion .............................................................................................................................................. 109
10. Mettre en place un gestionnaire de base de donnes avec MySQL .............................................................................. 110
10.1. Introduction ........................................................................................................................................... 110
10.1.1. Histoire ...................................................................................................................................... 110
10.1.2. Prsentation ................................................................................................................................ 111
10.2. Installation ............................................................................................................................................ 112
10.2.1. Installation par les binaires ............................................................................................................. 112
10.2.2. Lancement du serveur ................................................................................................................... 113
10.3. Configuration ........................................................................................................................................ 113
10.3.1. Configuration du Serveur ............................................................................................................... 113
10.3.2. Configuration des clients ............................................................................................................... 115
10.3.3. Fichier de configuration my.cnf .................................................................................................... 116
Cursus Linux PS2
10.4. Utilisation ............................................................................................................................................. 116
10.4.1. Mise Jour des Privilges .............................................................................................................. 116
10.4.2. Cration d'une base de donnes ....................................................................................................... 117
10.4.3. Suppression d'une base de donnes .................................................................................................. 118
10.4.4. Cration/suppression d'une table ..................................................................................................... 118
10.5. Rplication ............................................................................................................................................ 119
10.5.1. Mise en place d'une rplication sur un server MySQL 5.0 .................................................................... 119
10.6. Outils ................................................................................................................................................... 121
10.7. Ressources ............................................................................................................................................ 122
10.8. Conclusion ............................................................................................................................................ 122
11. Mise en place des services DHCP et DNS .............................................................................................................. 123
11.1. Introduction, bases DNS/DHCP ................................................................................................................ 123
11.1.1. Introduction, bases DNS/DHCP ...................................................................................................... 123
11.2. Mise en place d'un serveur DHCP .............................................................................................................. 123
11.2.1. Installation .................................................................................................................................. 123
11.2.2. Configuration .............................................................................................................................. 124
11.2.3. relay .......................................................................................................................................... 128
11.2.4. Lancement et tests ........................................................................................................................ 131
11.3. Mise en place d'un serveur DNS ................................................................................................................ 133
11.3.1. Rappel sur la notion de DNS .......................................................................................................... 133
11.3.2. Notion de nom de domaine pleinement qualifi .................................................................................. 134
11.3.3. Installation de BIND ..................................................................................................................... 135
11.3.4. Bind DLZ ................................................................................................................................... 153
12. Partage de fichiers avec SAMBA ...................................................................................................................... 156
12.1. Prsentation ........................................................................................................................................... 156
12.2. Pr requis .............................................................................................................................................. 156
12.3. Samba .................................................................................................................................................. 157
12.3.1. Historique ................................................................................................................................... 157
12.3.2. Daemons .................................................................................................................................... 157
12.3.3. Nouveauts ................................................................................................................................. 157
12.4. Le protocole SMB .................................................................................................................................. 158
12.4.1. Le format SMB ............................................................................................................................ 158
12.5. Le protocole NetBIOS ............................................................................................................................. 160
12.5.1. Fonctionnement de NetBIOS .......................................................................................................... 160
12.6. Utilisation du client ................................................................................................................................. 162
12.7. smbmount ............................................................................................................................................. 162
12.8. nmblookup ............................................................................................................................................ 163
12.9. findsmb ................................................................................................................................................ 163
12.10. Smb4k ................................................................................................................................................ 163
12.11. Configuration du serveur ........................................................................................................................ 163
12.12. Prsentation des diffrentes sections ......................................................................................................... 163
12.12.1. Section global ............................................................................................................................ 163
12.12.2. Section homes ........................................................................................................................... 165
12.12.3. Section printers et print$ .............................................................................................................. 165
12.12.4. Section netlogon ......................................................................................................................... 166
12.12.5. Sections de partages .................................................................................................................... 166
12.13. Validit du fichier smb.conf .................................................................................................................... 167
12.14. Gestion des utilisateurs .......................................................................................................................... 167
12.15. SWAT ................................................................................................................................................ 167
12.15.1. Installation ................................................................................................................................ 167
12.15.2. Utilisation ................................................................................................................................. 168
12.16. Utilisation de Samba en Contrleur de domaine .......................................................................................... 168
12.17. Cration des rpertoires sur le serveur samba .............................................................................................. 169
12.18. Modification dans smb.conf .................................................................................................................... 169
12.19. Ajouter des comptes pour les ordinateurs ................................................................................................... 169
Cursus Linux PS2
Chapitre 1. Mettre en place un serveur
HTTP avec Apache
Table des matires
1.1. Rappel sur le protocole HTTP ............................................................................................ 1
1.2. Compilation et installation ................................................................................................ 2
1.3. Configuration (le fichier httpd.conf) .................................................................................... 3
1.3.1. Environnement du serveur ...................................................................................... 3
1.3.2. Les directives d'environnement serveur ..................................................................... 4
1.3.3. Gestion des connexions .......................................................................................... 5
1.3.4. Informations personnelles ....................................................................................... 6
1.3.5. Emplacement des documents par dfaut (rpertoires et fichiers) ..................................... 6
1.3.6. Les droits sur le systme de fichiers .......................................................................... 7
1.3.7. Gestion des modules .............................................................................................. 9
1.3.8. Mapper les URL avec le systme de fichiers .............................................................10
1.3.9. Les pages d'erreurs personnalises ..........................................................................12
1.4. Dmarrage, arrt du serveur .............................................................................................13
1.4.1. apachectl ............................................................................................................13
1.4.2. Les fichiers de logs ..............................................................................................14
1.5. Configuration avance .....................................................................................................15
1.5.1. Authentification, autorisations et contrle d'accs ......................................................15
1.5.2. Utilisation de SSL/TLS .........................................................................................17
1.5.3. Les htes virtuels .................................................................................................21
1.5.4. Les fichiers .htaccess ............................................................................................24
1.5.5. Gestion d'espaces Web personnels ..........................................................................26
1.1. Rappel sur le protocole HTTP
L'HyperText Transport Protocol (HTTP) est un protocole permettant la transmission de donnes - quelqu'elles
soient - travers un systme d'information multi-utilisateurs. On accde ces ressources par le biais
d'identifants uniques appels Uniform Ressources Locator (URL) qui permettent de spcifier la localisation pr-
cise de la ressource recherche. Ces URLs sont construites suivant cette mthode :
[transport]://[machine]/[chemin vers la ressource], o [transport] est le protocole utiliser pour contacter le ser-
veur dont l'adresse est [machine] et pour trouver la ressource situe l : [chemin vers la ressource].
Exemple 1.1. Exemple d'URL
Voici un example d'URL : http://www.labo-linux.org/cours/module-2
L'utilisation principale du protocole HTTP est la mise disposition de documents (via HTTP GET) et l'envoi de
formulaires (via HTTP POST). Mais ce protocole est trs riche et a t conu pour effectuer toute sorte
d'change de donnes : en plus des requtes GET et POST que vous connaissez probablement, il existe aussi,
entre autres, les requtes PUT et DELETE. La pleine utilisation du protocole HTTP commence prendre son
envol avec les web services de type REST (Representational State Transfert).
Ce protocole fonctionne selon le modle client - serveur :
1
Figure 1.2. Illustration
Un serveur Web attent les requtes des clients et renvoie les ressources demandes. Nous allons voir
l'installation et la configuration d'un serveur Web qui va renvoyer des documents par le biais du protocole
HTTP.
1.2. Compilation et installation
Apache est disponible sur le site de l'Apache Software Foundation : http://httpd.apache.org. Dans le cadre de ce
cours, la version 2.0 sera utilise.
Les sources du serveur Apache sont disponibles l'adresse suivante : http://httpd.apache.org/download.cgi
Aprs dcompression de l'archive, il suffit de configurer et de compiler :
Tableau 1.1. Options de compilation d'Apache
Option Valeur par dfaut Description
--prefix=<rpertoire> /usr/local/apache2 Rpertoire d'installation
-
-sysconf-
dir=<rpertoire>
$PREFIX/etc Rpertoire des fichiers de configu-
ration
--bindir=<rpertoire> $PREFIX/bin Emplacement des binaires utilisa-
teurs
--sbindir=<rpertoire> $PREFIX/sbin Emplacement des binaires systme
--enable-ssl Active le support pour SSL
--with-ssl=<rpertoire> Chemin vers les sources
d'OpenSSL
--enable-vhost-alias Active le module pour les htes
virtuels
--enable-auth-digest Active l'authentification en mode
digest
--enable-suexec Active le suEXEC wrapper
--enable-so Active le support pour les modules
DSO
Mettre en place un serveur HTTP avec Apache 2
Exemple 1.2. Exemple
[root@linux ~]# tar zxvf httpd-2.2.4.tar.gz
[root@linux ~]# cd httpd-2.2.4/
[root@linux httpd-2.2.4]# ./configure \
> --prefix=/usr/apache2 \
> --sysconfdir=/etc/apache2 \
> --bindir=/usr/bin \
> --sbindir=/usr/sbin \
> --enable-ssl \
> --with-ssl=/chemin/vers/OpenSSL \
> --enable-vhost-alias \
> --enable-auth-digest \
> --enable-suexec \
> --enable-so
[ ... ]
[root@linux httpd-2.2.4]# make && make install
[ ... ]
1.3. Configuration (le fichier httpd.conf)
Apache utilise un fichier de configuration principal appel httpd.conf. Par dfaut, il est situ dans /
etc/apache/conf et contient tous les paramtres ncessaires au bon fonctionnement de ce programme.
Note
Ce fichier peut aussi tre divis en plusieurs fichiers afin de regrouper les directives de mme type
dans des fichiers spars.
Ce fichier est divis en deux grandes parties :
La partie contrlant l'environnement du serveur
La configuration du serveur, comprenant les ressources que le serveur va renvoyer aux clients
1.3.1. Environnement du serveur
Cette partie comprend toutes les directives permettant de modifier les paramtres du serveur. Cela permet de
modifier, par exemple, le nombre maximum de clients que le serveur va pouvoir servir simultanment, ou alors
le rpertoire de base pour le serveur.
Tout d'abord, il faut rgler le mode de fonctionnement du serveur, l'aide de la directive ServerType, qui
prend un argument parmi ceux ci :
inetd : ce paramtre n'est support que sur les plateformes Unix/Linux et permet de grer les demandes de
connexions par le daemon. Pour cela il faut que le daemon inetd soit correctement configur et soit en fonc-
tionnement
Mettre en place un serveur HTTP avec Apache 3
standalone : le serveur gre directement les connexions que les clients tablissent
Viennent ensuite des directives permettant de modifier l'environnement du serveur, puis la manire dont Apache
traite les connexions et enfin comment limiter les adresses sur lesquelles le serveur coute.
1.3.2. Les directives d'environnement serveur
Tableau 1.2. Les directives d'environnement serveur
Directive Argument Description
ServerRoot Un rpertoire Rpertoire de base du serveur.
C'est--dire l o est install le ser-
veur ($PREFIX)
LockFile Un fichier Ce fichier doit tre sur un disque
local obligatoirement. Vous ne de-
vez changer cette directive que si
le ServerRoot est mont tra-
vers le rseau
PidFile Un fichier Le fichier contenant le PID
d'Apache
ScoreBoardFile Un fichier Fichier utilis pour stocker des in-
formations internes du processus
d'Apache. Ce n'est pas requis par
toutes les architectures, et ce fi-
chier ne doit pas tre partag par
plusieurs instances diffrentes
d'Apache
User Un nom d'utilisateur Apache utilisera cet utilisateur lors
de son fonctionnement, une fois
qu'il aura effectu toutes les opra-
tions o il doit tre root
Group Un groupe Apache utilisera ce groupe lors de
son fonctionnement, une fois qu'il
aura effectu toutes les oprations
o il doit tre root
Les deux dernires directives sont trs importantes en termes de scurit, cela permet de ne pas excuter le ser-
vice en tant qu'utilisateur root et donc de pouvoir dfinir des droits restreints pour le compte utilis.
Exemple 1.3. Exemple
ServerRoot /usr/apache2
LockFile /etc/apache2/apache.lock
PidFile /var/run/apache.pid
ScoreBoardFile /etc/apache2/apache.score
User www
Group www
Mettre en place un serveur HTTP avec Apache 4
1.3.3. Gestion des connexions
Tableau 1.3. Directives de gestion des connexions
Directive Argument Description
Timeout Un temps en secondes Dure de timeout
KeepAlive on ou off Accepter plus d'une requte par
connexion.
MaxKeepAliveRequests Un nombre positif ou nul Le nombre maximum de requtes
par connexion (0 pour illimit).
KeepAliveTimeout Un temps en secondes Le nombre de secondes attendre
pour la requte suivante du mme
client sur la mme connexion.
MinSpareServers MaxSpareSer-
vers
Un entier, par dfaut 5 et 10 Spcifie les limites pour le nombre
de processus serveurs faire tour-
ner. Ces valeurs peuvent tre d-
passes pour faire face la charge
et les valeurs par dfaut sont cor-
rectes pour la majorit des sites.
StartServers Un entier, par dfaut 5 Le nombre de processus serveurs
dmarrer initialement.
MaxClients Un entier Le nombre maximum de clients
qui pourront se connecter en mme
temps. Si ce nombre est atteint, les
clients suivants seront bloqus.
MaxRequestsPerChild Un nombre ou 0 pour illimit Le nombre maximum de requtes
servis par un processus avant qu'il
ne meure. Cela est fait pour les pla-
teformes (Solaris par exemple) sur
lesquelles Apache ou ses librairies
ont des fuites de ressources.
Exemple 1.4. Exemple
Timeout 10
KeepAlive on
MaxKeepAliveRequests 10
KeepAliveTimeout 5
MinSpareServers 5
MaxSpareServers 10
StartServers 7
MaxClients 140
MaxRequestsPerChild 10000
Afin de limiter les adresses IP et/ou ports sur lesquels Apache va couter pour attendre des requtes, c'est la di-
rective Listen qui est utilise. Elle est obligatoire et peut prendre comme arguments une adresse IP et/ou un
port. Si l'on ne spcifie qu'une adresse IP, alors le serveur coutera sur le port 80 de cette adresse, et si l'on ne
spcifie qu'un port, alors le serveur coutera les demandes sur ce port, mais pour toutes les interfaces du sys-
tme. Il est possible de spcifier plusieurs fois cette directive afin qu'Apache coute sur plusieurs interfaces et/
ou ports.
Mettre en place un serveur HTTP avec Apache 5
Exemple 1.5. Exemple
# Apache coute sur le port 80 pour toutes les interfaces
# et sur le port 8080 pour l'adresse IP 192.168.1.1
Listen 80
Listen 192.168.1.1:8080
1.3.4. Informations personnelles
Les directives qui permettent de changer les informations personnelles qu'Apache va renvoyer chaque de-
mande, comme par exemple l'adresse de l'administrateur du serveur contacter pour tous renseignements :
ServerAdmin : sert prciser l'adresse de l'administrateur du serveur. Cette adresse apparat sur quelques
pages gnres par le serveur, telles que les messages d'erreurs
ServerName : si vous ne voulez pas que les utilisateurs voient le vritable nom d'hte de la machine, vous
pouvez spcifier ici le nom utiliser la place.
Exemple 1.6. Exemple
# L'adresse de l'administrateur du serveur est webmaster@labo-linux.org
ServerAdmin webmaster@labo-linux.org
# Les clients voient comme nom : www.labo-linux.org plutt
# que www-server qui est le nom d'hte du serveur
ServerName www.labo-linux.org
1.3.5. Emplacement des documents par dfaut (rpertoires
et fichiers)
Lorsque Apache reoit une requte, il doit savoir dans quel dossier il doit rechercher la ressource par dfaut
renvoyer au client, mais il doit aussi connatre les diffrents noms de fichier que peut avoir cette ressource. Pour
cela, les directives suivantes sont utilises :
DocumentRoot : spcifie le rpertoire dans lequel Apache va rechercher la ressource par dfaut si la demande
ne correspond aucune directive telle que Alias, permettant de changer l'emplacement. Ce rpertoire doit tre
spcifi sans "/" final.
DirectoryIndex : spcifie la liste de tous les fichiers rechercher dans le rpertoire courant lorsqu'aucune res-
source prcise n'est demande. Il faut inscrire les entres multiples en les sparant par des espaces.
Exemple 1.7. Exemple
Mettre en place un serveur HTTP avec Apache 6
# La base de nos fichiers sera : /srv/www
DocumentRoot /srv/www
# On veut chercher les fichiers s'appelant index.html,
# index.shtml, index.php, index.php3 et labo-linux.html
# comme tant des ressources par dfaut pour les rpertoires
DirectoryIndex index.html index.shtml index.php index.php3 labo-linux.html
La section suivante permet de spcifier des droits sur les diffrents rpertoires utiliss.
1.3.6. Les droits sur le systme de fichiers
Une fois l'environnement du serveur configur, il est ncessaire de limiter les accs au systme de fichiers en
dfinissant des permissions sur celui-ci. Il ne faut pas oublier que le systme de fichiers est toujours le dernier
lment octroyer ou refuser l'accs aux donnes en fonction de l'utilisateur qui veut y accder. Il ne faut donc
pas oublier de bien laisser l'utilisateur excutant le serveur Apache le droit de lire les donnes qu'il doit distri-
buer, sinon elles ne s'afficheront jamais, mme avec tous les droits dans le fichier de configuration d'Apache.
Les droits sur les rpertoires se grent avec des blocs Directory qui permettent de spcifier des directives de
configuration par rpertoire. Les rpertoires ne possdant pas de droits dfinis explicitement avec cette directive
hriteront des droits du rpertoire parent. Un bon point pour la scurit est donc de commencer par mettre des
droits trs restrictifs (aucun droit) sur la racine du systme de fichier, puis de dfinir des droits particuliers pour
chaque rpertoire que l'on veut rendre accessible nos visiteurs.
Un bloc Directory se construit de la manire suivante :
<Directory /chemin/vers/le/rpertoire>
[ Directives de configuration ]
</Directory>
[/chemin/vers/le/rpertoire] correspond au chemin absolu vers le rpertoire dont on veut dfinir les droits. On
peut aussi utiliser des expressions rgulires la place d'un chemin absolu. Il faut dans ce cas faire prcder le
chemin contenant l'expression rgulire par un "~ ", ou bien vous pouvez utiliser le bloc DirectoryMatch
la place de Directory ~. Voici maintenant les diffrentes directives qui sont disponibles pour la configura-
tion de nos rpertoires :
La premire directive est Options, qui permet de spcifier ce que l'on peut faire sur ce rpertoire. Elle peut
prendre un argument ou une combinaison d'arguments, tout en sachant qu'un argument prcd d'un caractre "-
" le dsactive et d'un "+" l'active. Pour combiner des arguments, il faut les sparer par des espaces. Voici les dif-
frents arguments disponibles :
Tableau 1.4. Arguments de la directive Option
Argument Description
Indexes Permet aux clients d'afficher un listing du rpertoire,
donc de voir le contenu du rpertoire.
Includes Permet d'inclure des fichiers ct serveur. Ceci est
utilisable grce au module mod_include.
IncludesNOEXEC Cette directive est semblable la prcdente, mais on
ne peut pas excuter de scripts grce celle-ci.
FollowSymlinks Permet de suivre les liens symboliques dans le rper-
toire courant. Attention, cela ne change pas le chemin
Mettre en place un serveur HTTP avec Apache 7
Argument Description
utilis pour les droits dfinis dans des blocs Direc-
tory.
ExecCGI Permet d'excuter les scripts CGI (Common Gateway
Interface) dans ce rpertoire. Ces scripts peuvent tre
crits et excuts dans n'importe quel langage, pourvu
qu'Apache sache comment les excuter. Par exemple
pour utiliser des scripts crits en Perl, il vous faudra
charger le module mod_perl.
MultiViews Permet la ngociation de contenu grce au module
mod_negociation.
All Permet d'activer toutes ces options sauf Multi-
Views qui doit tre prcis explicitement
None Inverse de l'argument All, c'est dire que l'on enlve
toutes les options sur ce dossier
Il faut ensuite dfinir qui aura accs ce rpertoire. Cela se configure l'aide de deux directives qui permettent
soit d'autoriser Allow, soit de refuser Deny.
Une dernire directive permet de spcifier dans quel ordre seront utilises ces directives : Order. La directive
Order accepte en argument soit allow,deny, soit deny,allow. Le premier argument permet d'excuter
tout d'abord les directives allow et ensuite les directives deny, et l'autre argument permet d'valuer les direc-
tives dans l'ordre inverse.
Les autorisations d'accs sont dfinies grce aux directives Allow et Deny suivies du mot cl from suivi d'un
argument ou d'une combinaison des arguments suivants :
un nom DNS : tel que labo-linux.org, permet de limiter l'accs aux clients appartenant au domaine spcifi
ainsi qu' ses sous domaines. Pour cela Apache effectuera deux recherches DNS, une premire pour vrifier
que l'adresse IP du client fait partie du domaine, puis une seconde afin de vrifier que le nom de domaine pos-
sde bien l'adresse IP du client.
une adresse IP : permet de n'autoriser que l'adresse IP spcifie.
une partie d'adresse IP : tel que 172.16, qui permet de limiter l'accs pour toutes les adresses IP commenant
par 172.16.
une adresse IP et un masque de sous rseau : tel que le prcdent mais autorise plus de souplesse dans la dfi-
nition. Le masque de sous rseau peut tre spcifi sous la forme de 4 chiffres entre 0 et 255 ou bien sous
forme dcimale.
all ou none : permet de limiter l'accs pour tout le monde ou personne.
On peut de la mme manire dfinir des droits sur les fichiers l'aide du bloc Files prenant en argument le
nom du fichier, ou bien une expression rgulire l'aide de la directive Files ~ ou bien du bloc Files-
Match. On ne peut spcifier que des Allow ou Deny pour les fichiers.
Exemple 1.8. Exemple
# Rien n'est autoris la racine
<Directory />
Options None
Order deny,allow
Deny from All
Mettre en place un serveur HTTP avec Apache 8
</Directory>
# Quelques options sont acceptes pour le rpertoire de base
# Pas d'excution des scripts CGI
# Accs pour le sous rseau 172.16.0.0 avec le masque 255.255.0.0
# Les trois notations sont quivalentes
<Directory /srv/www>
Options +Indexes -ExecCGI
Order allow,deny
Allow from 172.16 172.16.0.0/255.255.0.0 172.16.0.0/16
Deny from All
</Directory>
# Dfinition de rpertoires avec une expression rgulire
# Tous les rpertoires de /srv/www/ contenant
# une suite d'au moins 3 chiffres.
# Autorise l'accs pour tous les htes des domaines "labo-linux.org"
# et "labo-mandriva.org"
<Directory ~ "^/srv/www/.*/[0-9]{3,}">
Options -Indexes
Order allow,deny
Allow from labo-linux.org labo-mandriva.org
</Directory>
# Personne ne peut accder aux fichiers commenant par ".ht"
<FilesMatch "^\.ht">
Order deny,allow
Deny from all
</FilesMatch>
1.3.7. Gestion des modules
Apache est construit selon une approche modulaire, c'est--dire que le coeur de l'application ne contient que les
fonctionnalits basiques du programme, et que des fonctionnalits peuvent tre ajoutes par le biais de modules
que l'on charge son dmarrage.
Il est possible de compiler certains modules dans le coeur du programme lors de l'installation de celui ci, mais
aussi d'en compiler tout moment afin de rajouter des fonctionnalits au serveur : par exemple le support pour
les scripts PHP.
Le choix des modules utiliser se fait dans le fichier de configuration principal. Deux directives sont dispo-
nibles pour grer les modules :
LoadModule : qui permet de charger un module au dmarrage
<IfModule>: permet d'activer certaines parties du fichier de configuration si un module est prsent
La syntaxe est la suivante :
LoadModule <module_identifier> <filename>
<module_identifier>: est le nom de l'identifiant du module dans le fichier. Plus particulirement, c'est la va-
riable de type module dans le fichier source. Cet identifiant est fourni dans la documentation du module.
Mettre en place un serveur HTTP avec Apache 9
<filename>: est le chemin complet vers le fichier objet du module. Soit c'est un chemin absolu, soit un che-
min relatif au "ServerRoot".
<IfModule [ ! ] module_identifier>
[ directives de configuration ]
</IfModule>
Cette directive permet de charger des directives de configuration spcifiques suivant qu'un module est charg ou
non. Le point d'exclamation "!" indique qu'il faut utiliser ces directives si le module spcifi n'est pas charg.
Exemple 1.9. Exemple
# On veut charger le module status_module qui est dans le fichier
# /usr/lib/apache2/modules/mod_status.so
# charger un bloc "<Directory>" spcifique lorsque l'on utilise ce module
# et ne pas charger un autre bloc de configuration lorsque
# l'on utilise ce module.
ServerRoot /usr/apache2
LoadModule status_module /usr/apache2/modules/mod_status.so
# On aurait aussi pu crire :
LoadModule status_module modules/mod_status.so
<IfModule status_module>
<Directory /var/www/status>
[ directives de configuration ]
</Directory>
</IfModule>
<IfModule ! status_module>
[ autres directives de configuration ]
</IfModule>
1.3.8. Mapper les URL avec le systme de fichiers
Nous avons vu que lorsque qu'un client demande une URL telle que "http://monsite/un_rpertoire", cela le redi-
rige dans le rpertoire dfini par la directive DocumentRoot, et que si ce rpertoire n'existait pas, cela conduit
l'affichage d'une page d'erreur pour le client.
Il est galement possible de lier une URL un rpertoire hors du DocumentRoot par dfaut, mais aussi de
personnaliser les messages d'erreurs renvoys. Pour effectuer ces tches, le mod_alias.c est utilis, il faut
donc l'activer grce la ligne suivante dans le fichier de configuration :
LoadModule alias_module modules/mod_alias.so
Pour mapper une URL avec un rpertoire spcifique, hors du DocumentRoot, il faut utiliser la directive
Alias :
Alias /nom /un/repertoire
Mettre en place un serveur HTTP avec Apache 10
Cette commande mappe toutes les demandes faites sur l'URL "http://server/nom" vers le rpertoire /
un/repertoire.
Exemple 1.10. Exemple
Si un client demandait http://server/nom/test.html, alors il lui serait renvoy le fichier /un/repertoire/test.html. Il
ne faut pas oublier de mettre les bonnes permissions sur ce rpertoire l'aide de la directive "<Directory>". At-
tention aussi la manire dont vous crivez cette directive, car si vous utilisez cela :
Alias /nom/ /un/repertoire
la redirection ne fonctionnerait pas.
Attention
Attention au "/" la fin du nom de l'alias. Dans ce cas, les demandes vers
"http://server/nom/foo.html" seront bien rediriges, mais les demandes vers "http://server/nom" ne
seront pas rediriges.
Il existe aussi la directive ScriptAlias qui fonctionne comme la directive Alias, mais elle marque le r-
pertoire de destination comme contenant des scripts cgi-bin (Common Gateway Interface) qui seront excuts.
Par exemple, si le rpertoire /var/www/cgi-bin contient des scripts cgi-bin que l'on veut excuter lorsque
le client demande les pages contenues dans "http://server/binaire" :
ScriptAlias /binaire /var/www/cgi-bin
Il est galement possible de rediriger le client vers une ressource situe un autre emplacement avec un mes-
sage de statut HTTP.
Pour cela il existe la directive Redirect qui prend trois arguments : une option indiquant la raison de la redi-
rection, puis l'emplacement de la ressource qui change et enfin le nouvel emplacement de la ressource. La raison
de la redirection est optionnelle et si elle n'est pas spcifie, alors le serveur renverra une erreur 302, indiquant
que la ressource a temporairement chang d'emplacement. Les autres diffrentes raisons sont :
permanent : renvoie un statut 301 indiquant que la ressource a change d'emplacement de manire perma-
nente.
temp : renvoie un statut 302 indiquant que la ressource a change temporairement d'emplacement. C'est le sta-
tut par dfaut.
seeother : renvoie un statut 303 indiquant que la ressource a t remplace.
gone : renvoie un statut 410 indiquant que la ressource a change d'emplacement de faon permanente. Quand
on utilise ce statut, on n'est pas oblig de spcifier un nouvel emplacement pour la ressource.
Il existe un alias pour cette directive utiliser pour le statut "permanent" : RedirectPermanent. Cette di-
rective ne prend que deux arguments : l'ancien emplacement de la ressource, puis le nouvel emplacement de la
ressource.
Mettre en place un serveur HTTP avec Apache 11
Exemple 1.11. Exemple
# On veut rediriger toutes les demandes de ressources
# de <adresse du serveur>/mail vers http://mail.labo-linux.org
# en indiquant que la ressource a chang d'emplacement
# de manire permanente.
Redirect permanent /mail http://mail.labo-linux.org
# Ou ceci, les deux directives sont exactement
# quivalentes :
RedirectPermanent /mail http://mail.labo-linux.org
# On veut indiquer que la ressource <adresse du serveur>/documents
# n'existe plus cet emplacement.
Redirect gone /documents
# On a remplac la page <adresse du serveur>/articles par
# http://www.labo-linux.org/newarticles
# mais cette page n'est pas exactement la mme que l'ancienne.
Redirect seeother /articles http://www.labo-linux.org/newarticles
1.3.9. Les pages d'erreurs personnalises
Dans le cas d'une erreur ou d'un problme, Apache peut tre configur pour effectuer quatre actions diffrentes :
afficher le message d'erreur par dfaut
afficher un message personnalis
rediriger vers un document local pour traiter l'erreur
rediriger vers une URL externe (un autre site web par exemple)
Pour cela on va utiliser la directive ErrorDocument, qui prend deux arguments : le numro de l'erreur pour
laquelle on va changer le message d'erreur, puis le document utiliser pour cette erreur.
ErrorDocument <numro d'erreur> <document>
L'argument document peut prendre plusieurs valeurs, suivant l'action que l'on souhaite effectuer :
le mot cl "default" : Apache affichera alors le message d'erreur par dfaut
un message commenant par une double quote : Apache affichera le message depuis la double quote ouvrante
jusqu' la fin de la ligne
un chemin sur le systme de fichiers local : cela permet d'afficher nos pages d'erreurs personnalises
une URL entire : vers laquelle le client sera redirig lorsque l'erreur se produira
Mettre en place un serveur HTTP avec Apache 12
Exemple 1.12. Exemple
# On veut rediriger toutes les erreurs 404 (document non trouv)
# vers la page http://www.labo-linux.org
ErrorDocument 404 http://www.labo-linux.org
# On veut afficher le message "Notre serveur a rencontr une erreur"
# pour toutes les erreurs 500 (erreur interne au serveur)
ErrorDocument 500 "Notre serveur a rencontr une erreur"
# On veut afficher la page "/var/www/error/404.html"
# pour toutes les erreurs 404 mais on veut afficher
# le message d'erreur par dfaut pour le rpertoire
# /var/www/htdocs.
ErrorDocument 404 /var/www/error/404.html
<Directory /var/www/htdocs>
ErrorDocument 404 default
[ autres directives de configuration ]
</Directory>
1.4. Dmarrage, arrt du serveur
1.4.1. apachectl
apachectl est un script permettant de contrler le daemon Apache partir de la ligne de commande. Ce script
peut tre utilis suivant deux modes :
il peut tre utilis comme un front end httpd (le binaire du serveur) en prenant les mmes options que le
programme httpd.
comme un script d'initialisation qui prend un argument tel que start ou stop.
Tableau 1.5. Arguments de apachectl
Directive Description
start Lancement du serveur, les fichiers de configuration
sont tests avant le lancement
startssl Lancement du serveur avec SSL activ
stop Arrt propre du serveur
restart Arrte et relance le serveur, s'il n'est pas en fonction-
nement, alors il est lanc. Les fichiers de configura-
tion sont tests avant le lancement
configtest Teste les fichiers de configuration pour des erreurs de
typographie ou de syntaxe
fullstatus Affiche l'tat complet du serveur. Cela ncessite que
le mod_status soit activ et qu'un navigateur texte
de type lynx soit install.
status Affiche l'tat du serveur. C'est la mme chose que
Mettre en place un serveur HTTP avec Apache 13
Directive Description
l'option prcdente, sauf que la liste des requtes en
cours n'est pas affiche
graceful Relance le serveur ou le lance s'il n'tait pas en fonc-
tionnement. Cela est diffrent de restart car les re-
qutes en cours ne sont pas annules, mais le pro-
blme est que cela laisse les anciens fichiers de logs
ouverts, tant que les requtes ne sont pas finies
Exemple 1.13. Exemple
Test de la configuration :
[root@linux ~]# apachectl configtest
On veut lancer le serveur web :
[root@linux ~]# apachectl start
1.4.2. Les fichiers de logs
Apache dispose de plusieurs fichiers de logs permettant de surveiller son bon fonctionnement, ainsi que les re-
qutes qu'il a reues pendant qu'il fonctionnait.
Pour configurer la faon dont Apache gre les logs, nous disposons des directives suivantes :
AccessLog chemin/vers/un/fichier | syslog[:facility] : indique le fichier contenant toutes les requtes reues
des clients. Soit on indique un chemin vers un fichier, s'il n'est pas absolu, alors il sera relatif au Server-
Root ou alors on peut utiliser syslog en prcisant une facility (par dfaut c'est local7). Une dernire op-
tion est d'utiliser un excutable en commenant le chemin par un pipe "|".
ErrorLog chemin/vers/un/fichier | syslog[:facility] : indique le fichier qui contiendra toutes les erreurs
qu'aurait rencontres Apache lors des requtes qu'il a traits.
LogLevel : permet d'indiquer quels sont les messages crire dans le fichier de log. Si l'on spcifie un niveau,
tous les messages des niveaux prcdents seront aussi inclus. Voici les diffrents niveaux disponibles en ordre
dcroissant d'importance :
Tableau 1.6. Les diffrents niveaux d'erreurs
Niveau Description Exemple
emerg Urgences : le systme n'est pas uti-
lisable
"Child cannot open lock file. Exi-
ting"
alert Actions qui doivent tre prises im-
mdiatement
"getpwuid: couldn't determine user
name from uid"
crit Conditions critiques "socket: Failed to get a socket, exi-
ting child"
error Conditions d'erreurs "Premature end of scripts headers"
warn Messages d'avertissement "child process did not exit, sending
another SIGHUP"
notice Messages normaux, mais avec une "httpd : caught SIGBUS, attemp-
Mettre en place un serveur HTTP avec Apache 14
Niveau Description Exemple
certaine importance ting to dump core in ..."
info Messages d'information "Server seems busy, (you may
need to increase StartServers, or
Min/MaxSpareServers)..."
debug Messages de debug "Opening config file ..."
Exemple 1.14. Exemple
# on va logger toutes les requtes faites au serveur
# dans le fichier logs/access_log
AccessLog logs/access_log
# On veut avoir tous les messages d'erreur
# qui seront cris dans le fichier logs/error_log
LogLevel emerg
ErrorLog logs/error_log
1.5. Configuration avance
Nous allons voir comment effectuer des configurations qui dpassent le simple partage de ressources dans des
rpertoires choisis. Nous allons voir par exemple comment scuriser les changes entre le client et le serveur, ou
bien comment configurer le serveur afin d'avoir un rpertoire pour chaque utilisateur accessible par adresse
"http://server/~luser".
1.5.1. Authentification, autorisations et contrle d'accs
L'authentification permet de demander aux utilisateurs un nom d'utilisateur ainsi qu'un mot de passe avant qu'ils
ne puissent accder une ressource. Pour cela, on dispose des directives suivantes :
AuthType : permet de spcifier le type d'autorisation utiliser : soit basic soit digest. Il est conseill
d'utiliser le mode basic, car le mode digest n'est pas implment sur tous les navigateurs.
AuthName : permet de dfinir le realm utiliser pour l'authentification. Ce realm est tout simplement une
chane de caractres. C'est utile pour indiquer au client quel nom d'utilisateur et mot de passe il doit utiliser.
AuthUserFile : spcifie le fichier contenant les noms d'utilisateurs et leurs mots de passe respectifs. Nous ver-
rons plus tard comment crer ces fichiers.
AuthGroupFile : permet de spcifier le nom du fichier contenant les groupes auxquels appartiennent les utili-
sateurs.
Require : permet de spcifier les utilisateurs ou les groupes tant autoriss se connecter cette ressource.
Pour spcifier un ou plusieurs groupes, on utilise la directive :
Require group nom_du_groupe1 [ ... nom_du_groupeN ]
, et pour spcifier des utilisateurs, on utilise cela
Mettre en place un serveur HTTP avec Apache 15
Require user user1 [ ... userN ]
, ou bien
Require valid-user
afin de spcifier tous les utilisateurs prsents dans le fichier de mots de passe
Satisfy : n'est utile que lorsque plusieurs directives d'authentification sont spcifies, telles que par adresse et
par mot de passe. Cette directive peut prendre en argument soit All qui indique que le client doit satisfaire
tous les tests pour se voir accorder l'accs (c'est le dfaut), ou bien Any indiquant que le client ne doit satis-
faire que l'une des mthodes d'authentification pour avoir l'accs.
Pour crer le fichier de mots de passe, la commande htpasswd est utilise :
htpasswd [ -c ] /chemin/vers/le/fichier utilisateur
Le drapeau -c permet de crer un fichier vide puis d'y crire. Il faut utiliser ce drapeau lors de la cration du
fichier, ou bien lorsque l'on veut dtruire les anciens utilisateurs et recommencer avec des nouveaux.
/chemin/vers/le/fichier : permet de spcifier le chemin vers le fichier de mots de passe que l'on
veut modifier
utilisateur : spcifie le nom de l'utilisateur pour lequel il faut modifier le mot de passe
Les fichiers de groupe sont de simples fichiers textes avec la syntaxe suivante :
# Contenu d'un fichier de groupe `labo-linux':
user root
Ici nous avons dfini un groupe s'appelant [labo-linux] et possdant les membres suivants : [user] et [root].
Exemple 1.15. Exemple
# Une authentification basique
# Seul l'utilisateur user1 est autoris
# se connecter la ressource
# Les utilisateurs devront s'authentifier pour
# accder aux "fichiers secrets".
AuthType basic
AuthName "Authentification pour les fichiers secrets"
AuthUserFile /etc/apache2/passwd/secret_file.passwd
Require user user1
# Si on voulait que tous les utilisateurs prsents dans le fichier
# de mots de passe puissent se connecter, on aurait utilis
Require valid-user
# Une authentification digest
# Tous les utilisateurs du groupe "labo-linux" pourront se connecter
Mettre en place un serveur HTTP avec Apache 16
AuthType digest
AuthName "Authentification pour les fichiers secrets"
AuthUserFile /etc/apache2/passwd/secret_file.passwd
AuthGroupFile /etc/apache2/passwd/secret_file.group
Require group labo-linux
On cre les utilisateurs root et user pour le fichier /etc/apache2/passwd/secret_file.passwd.
[root@linux ~]# htpasswd -c /etc/apache2/passwd/secret_file.passwd user
[root@linux ~]# htpasswd /etc/apache2/passwd/secret_file.passwd root
1.5.2. Utilisation de SSL/TLS
Apache peut tre utilis pour servir des ressources de manire scurise. Ceci est trs utile par exemple pour les
sites de vente en ligne au moment du paiement. Cette fonctionnalit est ralise par le biais du mod_ssl.
Note
Le but de cette partie n'est pas d'expliquer comment crer des certificats et/ou des cls utiliser
avec SSL, cette partie tant explique dans le chapitre sur OpenSSL.
1.5.2.1. Directives de bases
Voici les directives indispensables permettant de configurer Apache pour utiliser le SSL. Tout d'abord, le port
utilis par dfaut pour le HTTPS (HTTP Scuris) est le port 443, et est donc spcifier dans la directive Lis-
ten.
Tableau 1.7. Directives de configuration d'OpenSSL
Directive Argument Description
SSLEngine on ou off (dfaut) Permet de spcifier si le protocole
SSL doit tre utilis pour un hte
Virtuel ou le serveur principal.
SSLCertificateFile chemin vers un fichier de certificat Indique le chemin vers le fichier
contenant le certificat encod du
serveur, et optionnellement les cls
pour ce certificat.
SSLCertificateKeyFile chemin vers un fichier de cl Permet de spcifier le chemin vers
les cls prives pour le serveur.
Vous pouvez spcifier cette direc-
tive plusieurs fois pour utiliser plu-
sieurs cls (par exemple une cl
RSA et une cl DSA). Si vos cls
sont protges par des pass-
phrases, alors elles vous seront
demandes chaque dmarrage du
serveur.
Mettre en place un serveur HTTP avec Apache 17
Directive Argument Description
SSLPassPhraseDialog builtin (dfaut) ou
exec:/chemin/vers/un/executable
Permet de spcifier comment
Apache va demander les pass-
phrases pour les cls au dmar-
rage. Builtin : elles seront de-
mandes sur l'entre standard de la
machine
exec:/chemin/vers/un/fi
chier : Apache interrogera un
excutable pour obtenir les pass-
phrases. Il passera en arguments
le nom du serveur et l'algorithme
pour la cl et la passphrase doit
tre renvoye sur la sortie standard.
SSLRequireSSL aucun Permet de refuser l'accs une res-
source si la connexion n'est pas
crypte. Permet de poser un garde
fou contre les erreurs de configura-
tion
SSLSessionCache none, dbm:/chemin/vers/un/fichier
ou
shm:/chemin/vers/un/fichier[:taille
]
Permet de spcifier la mthode du
cache pour les sessions SSL. Si
vous utilisez none, cela ne pose
pas de problme mais le cache per-
met d'amliorer la vitesse des
connexions de type keep-alive.
dbm utilise un fichier de hachage
DBM sur le serveur et il en rsulte
une augmentation des Input / Out-
put. L'utilisation de DBM est
conseille. shm utilise quant elle,
une table en RAM et est beaucoup
plus performante, mais n'est dispo-
nible que sur certaines plateformes.
SSLSessionCacheTimeout un temps en secondes Combien de temps doit durer le
cache SSL pour les sessions des
clients.
Exemple 1.16. Exemple
# On configure le serveur pour accepter les connexions SSL sur le port 443.
# Le certificat du serveur se trouve dans le fichier /etc/apache2/ssl/labo-linux.crt.
# La cl prive du serveur se trouve dans le fichier /etc/apache2/ssl/labo-linux.key.
# La passphrase de la cl sera demande chaque dmarrage du serveur.
# Le fichier stockant les sessions sera /adresses/apache2/ssl/session.cache
# Le timeout pour les sessions ssl sera de 300 secondes soit 5 minutes.
<IfModule mod_ssl.c>
Listen 443
SSLEngine on
SSLCertificateFile /etc/apache2/ssl/labo-linux.crt
SSLCertificateKeyFile /etc/apache2/ssl/labo-linux.key
SSLPassPhraseDialog builtin
SSLSessionCache dbm:/etc/apache2/ssl/session.cache
SSLSessionCacheTimeout 300
</IfModule>
Mettre en place un serveur HTTP avec Apache 18
1.5.2.2. Directives avances
Nous allons voir ici les directives permettant de modifier le comportement interne du moteur SSL. Voici donc
ces diffrentes directives :
SSLMutex : permet de modifier le comportement du blocage, pour permettre d'effectuer simultanment plu-
sieurs oprations, sans qu'elles ne se chevauchent : c'est le mutex (Mutual Exclusion, ou exclusion mutuelle).
Cette directive accepte plusieurs arguments, qui ne sont disponibles que si la plateforme les supporte (par
exemple sur les environnements Win32 vous devez utiliser un smaphore), ainsi que l'APR (Apache Portable
Runtime librairies) :
none | no : n'utilise pas de mutex, il peut en rsulter un cache SSL incohrent. Utilisez-le votre propre
risque, mais il est conseill d'utiliser un vritable mutex (Mutual Exception) la place. C'est la valeur par
dfaut.
posixsem : un smaphore Posix lgant.
sysvsem : utilise un smaphore SystemV qui peut amener des fuites de ressources si le processus `crashe'
avant d'avoir retir le smaphore.
sem : indique Apache d'utiliser la meilleure implmentation des smaphores disponible.
pthread : utilise des threads Posix.
fcntl:/chemin/vers/un/fichier : c'est une mthode permettant de spcifier un fichier qui servira de `lock'. Ce
fichier doit tre obligatoirement sur un systme de fichiers local, et le numro de processus (PID) d'Apache
sera ajout au nom de ce fichier.
flock:/chemin/vers/un/fichier : mthode similaire la prcdente, mais celle ci utilise la fonction `flock',
tandis que la directive prcdente utilise la fonction `fcntl'.
file:/chemin/vers/un/fichier : indique Apache d'utiliser la meilleure implmentation entre les deux direc-
tives prcdentes.
default | yes : indique Apache de choisir la meilleure implmentation possible pour le Mutex.
SSLOptions : permet de modifier des options du `moteur' SSL lors de son fonctionnement. Cette directive
peut tre utilise par rpertoire et les options se combinent si vous prcdez les arguments d'un signe "+"
(rajouter l'option) ou "-" (enlever l'option). Voici donc les arguments disponibles :
StdEnvVars : le moteur SSL gnrera les variables d'environnement, au prix d'une utilisation CPU plus in-
tense. Il est recommand de n'utiliser cette option que pour les scripts CGI et autres qui en ont vraiment be-
soin.
CompatEnvVars : des variables d'environnement supplmentaires sont cres pour une meilleure compati-
bilit avec les autres solutions SSL pour Apache.
ExportCertData : permet de crer les variables supplmentaires suivantes : SSL_SERVER_CERT,
SSL_CLIENT_CERT et SSL_CLIENT_CERT_CHAINn (avec n=0,1,2,...) qui vont contenir les certificats
du client et du serveur.
FakeBasicAuth : permet de faire une authentification basique en rcuprant le Distinguished Name
du certificat client et on l'applique une authentification basique d'Apache. Tous les utilisateurs devant tre
identifis par cette mthode doivent possder le mot de passe encod en DES ("xxj31ZMTZzkVA") ou
bien en MD5 ("$1$OXLyS...$Owx8s2/m9/gfkcRVXzgoE/") suivant votre systme.
StrictRequire : si plusieurs schmas d'authentification sont utiliss, alors grce cette directive, le
mod_ssl aura la dernire position, c'est donc lui qui dterminera si l'accs est accord ou non.
Mettre en place un serveur HTTP avec Apache 19
OptRenegotiate : permet d'optimiser les rengociations de connexions SSL lorsque la configuration est sp-
cifie par rpertoire. Cette directive permet de sauter des tapes de l'authentification qui ont dj t rali-
ses auparavant.
La gestion des certificats clients se fait par le biais des directives suivantes :
SSLCACertificateFile : indique le chemin vers un fichier contenant un ou plusieurs certificats clients. Cette
directive est utilise pour identifier les clients par rapport leurs certificats.
SSLCACertificatePath : indique le chemin vers un rpertoire contenant les certificats clients dans des fichiers
qui sont encods en PEM. Les fichiers doivent tre accds par un nom contenant leur hash. Pour ce faire, un
Makefile founit avec le mod_ssl vous permet de faire cela simplement.
La directive SSLRandomSeed permet de spcifier les sources d'entropie, ou plus simplement d'alatoire utilis
par le serveur en mode SSL. Cette option n'est disponible que pour la configuration globale d'Apache. Cette di-
rective accepte deux arguments : le contexte puis la source d'entropie. Le contexte peut tre :
startup : source d'entropie utiliser au dmarrage
connect : source utiliser chaque connexion.
Les sources peuvent tre :
builtin : permet d'utiliser le gnrateur d'entropie interne Apache qui est toujours disponible et qui
consomme le moins de temps processeur. Son seul dfaut est de ne pas fournir une entropie trs forte.
file:/chemin/vers/la/source [ bytes ] : permet de spcifier un fichier spcial qui sera la source de l'entropie, tel
que /dev/random. Si l'option bytes est spcifie, alors l'entropie ne sera que les premiers bytes du fi-
chier, sinon tout le fichier forme l'entropie. Attention au fichier et au nombre de bytes que vous spcifiez car
sur certaines plateformes lorsque la source est vide, l'appel ne se finit que lorsque la source a retrouv suffi-
samment d'entropie.
exec:/chemin/vers/un/excutable [ bytes ] : permet d'utiliser un programme pour gnrer de l'entropie. Ce pro-
gramme doit renvoyer sur la sortie standard l'entropie qu'il a gnr. Il est conseill de n'utiliser cela qu'au d-
marrage du serveur, car cela ralentit considrablement les performances du serveur. L'option bytes fonc-
tionne comme pour la directive prcdente.
egd:/chemin/vers/le/socket/egd : permet d'utiliser le programme EGD (Entropy Gathering Daemon). Cela
n'est disponible que pour les plateformes Unix et il ne faut l'utiliser que si aucune autre source d'entropie
n'existe.
Exemple 1.17. Exemple
# On veut qu'Apache utilise la meilleure implmentation
# possible pour le Mutex
SSLMutex default
# On veut avoir les variables d'environnement gnres
# pour toutes les pages en SSL et on veut que mod_ssl
# dfinisse si l'autorisation est accorde ou non.
SSLOptions +StdEnvVars +StrictRequire
Mettre en place un serveur HTTP avec Apache 20
# Les certificats clients sont stocks dans le fichier
# /adresses/apache2/ssl/clients.crt
SSLCACertFile /adresses/apache2/ssl/clients.crt
# On va dfinir plusieurs sources d'entropie :
SSLRandomSeed startup builtin
SSLRandomSeed startup file:/dev/random
SSLRandomSeed startup file:/dev/urandom 2048
SSLRandomSeed startup exec:/usr/local/bin/randomize 32
SSLRandomSeed connect builtin
SSLRandomSeed connect file:/dev/random
SSLRandomSeed connect file:/dev/urandom 2048
1.5.3. Les htes virtuels
L'utilisation des htes virtuels avec Apache permet d'hberger plusieurs sites web sur la mme machine
(hbergement mutualis par exemple). Cela permet d'afficher diffrents sites en fonction de l'URL demande.
Pour ce faire, Apache peut utiliser deux techniques diffrentes :
En fonction de l'IP demande
En fonction du nom DNS demand
1.5.3.1. Htes virtuels par IP
Il est ncessaire au pralable de vrifier que le serveur coute bien sur les diffrentes IP qui vont tre utilises.
L'exemple sera ralis avec le serveur suivant :
Figure 1.17. Illustration
Pour cela, nous allons commencer par voir le bloc VirtualHost, qui permet de dfinir un hte virtuel. Vous
pouvez spcifier des noms DNS la place des adresses IP des sites, il faut juste que ces noms se rsolvent au
dmarrage d'Apache et lors des demandes. Voici les directives que nous utiliserons pour notre exemple :
<VirtualHost 192.168.1.1>
ServerName www.labo-linux.org
ServerAdmin webmaster@labo-linux.org
DocumentRoot /srv/www/labo-linux
ErrorLog /srv/www/labo-linux/logs/error_log
TransferLog /srv/www/labo-linux/logs/access_log
</VirtualHost>
Mettre en place un serveur HTTP avec Apache 21
<VirtualHost 172.16.0.1>
ServerName www.labo-mandriva.com
ServerAdmin webmaster@labo-mandriva.com
DocumentRoot /srv/www/labo-mandriva
ErrorLog /srv/www/labo-mandriva/logs/error_log
TransferLog /srv/www/labo-mandriva/logs/access_log
</VirtualHost>
Le bloc VirtualHost est donc ainsi structur :
<VirtualHost [ IP ]>
[ paramtres personnalis pour l'hte ]
</VirtualHost>
Il est ncessaire de remplacer [ IP ] par l'adresse IP, ou le nom DNS de cet hte. Dans l'exemple, il aurait t
possible de remplacer les adresses IP par les noms DNS en supposant que notre DNS soit bien configur.
Les principales options disponibles pour les paramtres sont :
Tableau 1.8. Options de configuration de Virtual Host
Option Argument Description
ServerAdmin une adresse e-mail l'adresse e-mail de l'administrateur
de cet hte virtuel.
DocumentRoot un rpertoire le chemin de base pour cet hte,
toutes les demandes auront ce r-
pertoire comme rpertoire de base.
ServerName un nom le nom personnalis du serveur.
ErrorLog un fichier le fichier d'erreur personnalis du
serveur.
TransferLog un fichier toutes les requtes pour cet hte se-
ront loggues dans ce fichier.
Il est possible d'utiliser les autres directives de configuration d'Apache dans cette section, l'exception de celles
qui contrlent les processus et quelques autres. Vous ne pouvez pas limiter le nombre de processus crer pour
un seul hte virtuel par exemple.
1.5.3.2. Les htes virtuels par nom
Cette section permet d'hberger plusieurs sites diffrents, mais en ne possdant qu'une seule adresse IP. Pour ef-
fectuer cela, Apache attend du client qu'il lui envoie le nom d'hte dans les en-ttes HTTP. Il faut noter que
l'envoi du nom d'hte dans les en-ttes HTTP n'est requis que dans la version 1.1 du protocole HTTP, mais que
tous les navigateurs Web modernes l'implmentent en tant qu'extension du protocole HTTP 1.0. Il faut aussi
prciser que cette technique ne fonctionne pas avec des serveurs scuriss par SSL d la nature de ce proto-
cole.
On peut reprendre l'exemple prcdent, mais en supposant que notre serveur n'ai plus qu'une seule adresse IP
pour les deux sites Web : 172.16.0.1, ce qui nous donne cette configuration :
Figure 1.20. Illustration
Mettre en place un serveur HTTP avec Apache 22
Pour cette section, il faut obligatoirement un serveur DNS correctement configur, sinon les requtes
n'arriveront jamais sur le serveur en question.
Exemple 1.18. Exemple
NameVirtualHost *:80
<VirtualHost *:80>
ServerName www.labo-linux.org
ServerAlias labo-linux.org *.labo-linux.org
DocumentRoot /srv/www/labo-linux/
</VirtualHost>
<VirtualHost *:80>
ServerName www.labo-mandriva.com
DocumentRoot /srv/www/labo-mandriva/
</VirtualHost>
Tableau 1.9. Options de configuration de la directive Virtual Host
Option Argument Description
NameVirtualHost adresse IP[:port] Spcifie sur quelle adresse IP
Apache doit servir les htes vir-
tuels (le numro de port est option-
nel).
ServerAlias nom_d'hte0 [ ... Nom_d'hteN ] Un ou plusieurs alias pour cet hte
virtuel.
Dans cette configuration, l'important est de bien spcifier la mme adresse IP en argument NameVirtualHost,
ainsi que pour les adresses IP des htes virtuels (NameVirtualHost IP et <VirtualHost IP> doivent tre iden-
tiques).
Dans l'exemple, le site du labo-linux sera accessible par les noms DNS suivants : www.labo-linux.org, labo-li-
nux.org, tout sous-domaine de labo-linux.org, tandis que le site du labo-mandriva ne sera accessible que par le
nom DNS : exact www.labo-mandriva.com, tous les autres noms ne seront pas servis par Apache.
1.5.3.3. Htes virtuels par dfaut
Dans le cas de plusieurs htes virtuels, il est possible d'en dfinir un qui sera celui par dfaut, lorsque les utilisa-
Mettre en place un serveur HTTP avec Apache 23
teurs demandent un site qui n'est pas dfini. Pour cela, la syntaxe suivante pour la dfinition de votre hte virtuel
est disponible :
<VirtualHost _default_>
Le remplacement de l'adresse IP du site par un _default_ permet d'effectuer cela. Dans l'exemple, le site du
labo-linux s'affiche par dfaut, lorsque les utilisateurs demandent un nom DNS qui n'est pas dfini pour le site
du labo-mandriva :
NameVirtualHost *:80
<VirtualHost _default_:80>
ServerName www.labo-linux.org
DocumentRoot /srv/www/labo-linux/
</VirtualHost>
<VirtualHost *:80>
ServerName www.labo-mandriva.org
ServerAlias labo-mandriva.org *.labo-mandriva.org
DocumentRoot /srv/www/labo-mandriva/
</VirtualHost>
Important
Une fois qu'un hte virtuel est dfini, les blocs <DocumentRoot>, <Location>, etc. se trouvant
l'extrieur des blocs <VirtualHost> ne sont plus pris en compte.
1.5.4. Les fichiers .htaccess
Ces fichiers permettent de spcifier une configuration d'Apache spcifique pour chaque rpertoire. Ces fichiers
permettent de raliser la mme configuration que celle d'un bloc <Directory > dans le fichier de configura-
tion principal. Ces fichiers seront appels ".htaccess" par souci de simplicit.
1.5.4.1. Pourquoi, comment les utiliser et pourquoi ne pas les utiliser
Ces fichiers sont utiliser si l'on veut laisser l'utilisateur la possibilit de modifier partiellement la configura-
tion pour leurs rpertoires personnels. Un fichier ".htaccess" compris dans un rpertoire modifiera la confi-
guration pour tous les sous rpertoires qu'il contient.
Ces fichiers ne doivent pas tre utiliss lorsque l'on a accs au fichier de configuration principal. En effet, toutes
les directives contenues dans ces fichiers peuvent tre incluses au fichier de configuration principal dans des
blocs "<Directory >". Il faut aussi prendre en compte la surcharge que cela inclut pour le serveur lorsque l'on ac-
tive cette option.
En effet, pour toutes les demandes effectues le serveur devra regarder dans tous les rpertoires parents pour sa-
voir s'il n'y a pas un fichier ".htaccess" inclure.
Exemple 1.19. Exemple
Si un client demande le fichier contenu l'emplacement : /var/www/users/foo/bar.html, alors le ser-
veur devra chercher les fichiers suivants : /.htaccess, /var/.htaccess, /var/www/.htaccess, /
var/www/users/.htaccess et enfin /var/www/users/foo/.htaccess. Pour une simple requte,
Mettre en place un serveur HTTP avec Apache 24
cela ajoute cinq accs au disque dur pour chercher ces fichiers.
Attention
Ces fichiers permettent aux utilisateurs de modifier des directives de configuration et donc
conduisent une configuration qui n'est plus matrise par l'administrateur. Il faut donc bien dfi-
nir quelles sont les ressources modifiables par les utilisateurs pour viter que des problmes de s-
curit apparaissent.
Ces fichiers peuvent galement tre utiliss pour l'authentification.
1.5.4.2. Configuration d'Apache pour les .htaccess
Pour utiliser les fichiers ".htaccess", une seule directive de configuration est ncessaire :
AccessFileName <nom>
Ici est dfinit le nom donn aux fichiers ".htaccess". Le serveur recherchera ces fichiers dans tous les rper-
toires dfinis par les blocs <Directory> et qui contiennent une directive AllowOverride diffrente de none.
La directive AllowOverride permet de spcifier les directives que peuvent grer les utilisateurs dans les fi-
chiers ".htaccess", et est dfinie ainsi :
AllowOverride option1 ... optionN
Tableau 1.10. Options de la directive AllowOverride
Option Description
All les utilisateurs peuvent modifier toutes les directives
accessibles dans les fichiers ".htaccess"
None les utilisateurs ne peuvent modifier aucune directive
des fichiers ".htaccess" et le serveur ne prendra
pas la peine de chercher ces fichiers
Authconfig permet d'utiliser les directives d'authentification
Fileinfo permet d'utiliser les directives qui modifient les types
de documents (DefaultType par exemple, et les
directives dfinies par le mod_mime)
Indexes permet de modifier la configuration pour l'affichage
des rpertoires (AddDescription et AddIcon
par exemple)
Limit permet d'utiliser les directives de contrle d'accs
(Allow, Deny et Order)
Options permet d'utiliser les directives Options et Xbi-
tHack
Exemple 1.20. Exemple
Mettre en place un serveur HTTP avec Apache 25
# les fichiers .htaccess auront le nom : .config
# Les utilisateurs auront le droit de changer les
# types de documents dans leurs rpertoires personnels.
AccessFileName .config
<Directory /home/*/public_html>
AllowOverride FileInfo
[ Autres directives de configuration ]
</Directory>
# Possibilit de mettre dans le fichier /home/luser/public_html/.config
# pour afficher des documents textes par dfaut au lieu de fichiers html
DefaultType text/plain
1.5.5. Gestion d'espaces Web personnels
Traditionnellement sur les systmes Unix, les utilisateurs peuvent accder leur rpertoire personnel l'aide de
l'URL http://server/~login_de_l'utilisateur/. Cela est fait grce au module mod_userdir.c.
La directive qui permet de spcifier les rpertoires dans lesquels Apache doit chercher pour trouver les rper-
toires personnels des utilisateurs possde la syntaxe suivante :
UserDir <un rpertoire/une option/une URL>
Les deux options que l'on peut utiliser sont enabled et disabled. Utilises sans arguments, ces options ac-
tivent ou dsactivent, respectivement, les rpertoires personnels pour tous les utilisateurs.
Il est possible de passer en argument les noms des utilisateurs pour lesquels activer ou dsactiver les rpertoires
personnels. Si aucune option n'est spcifie, alors ce sera le rpertoire dans lequel on peut trouver les espaces
web personnels
Astuce
Si vous spcifiez plusieurs rpertoires la suite, alors le serveur cherchera le fichier dans chacun
de ces rpertoires. N'oubliez pas de bien crer un bloc <Directory> dfinissant les permissions sur
les rpertoires des utilisateurs, sinon ils ne pourront pas y accder aux documents s'y trouvant.
Exemple 1.21. Exemple 1
# On active les rpertoires utilisateur et on demande
# les chercher dans le rpertoire : /srv/www/users
# Par exemple, si on demande l'URL
# http://server/~foo/bar.html, alors le serveur
# renverra le fichier /srv/www/users/foo/bar.html
UserDir /srv/www/users/
Mettre en place un serveur HTTP avec Apache 26
Exemple 1.22. Exemple 2
# On active les rpertoires utilisateur pour
# tout le monde sauf pour les utilisateurs
# root, bin et user.
# On demande chercher les fichiers dans le rpertoire :
# /srv/www/users/<nom de l'utilisateur>/public_html
# Par exemple, si on demande l'URL http://server/~foo/bar.html
# alors le serveur renverra le fichier /srv/www/users/foo/bar.html
UserDir disabled root bin user
UserDir /srv/www/users/*/public_html/
Exemple 1.23. Exemple 3
# On active les rpertoires utilisateur
# uniquement pour les utilisateurs foo, user et root
# On demande chercher les fichiers dans
# le rpertoire : <rpertoireutilisateur>/www
# Par exemple, si on demande l'URL
# http://server/~foo/bar.html alors le serveur
# renverra le fichier ~foo/www/bar.html,
# o ~foo est le rpertoire utilisateur de
# l'utilisateur foo.
UserDir disabled
UserDir enabled foo user root
UserDir www/
Exemple 1.24. Exemple 4
# On active les rpertoires utilisateur
# On cherche les rpertoires utilisateur
# ces diffrents emplacements, successivement :
# /srv/www/users/, <rpertoire utilisateur>/www, /usr/*/public_html
# et enfin si on ne trouve pas la ressource demande
# alors on redirige le client vers http://server2/<demande>
# Une demande l'URL http://server/~foo/bar.html
# effectuera donc ces diffrentes recherches :
# /srv/www/users/foo/bar.html, ~foo/www/bar.html, /usr/foo/public_html
# et enfin redirection vers http://server2/~foo/bar.html
UserDir enabled
UserDir /srv/www/users www/ /usr/*/public_html http://server2/~*/
Mettre en place un serveur HTTP avec Apache 27
Chapitre 2. Chiffrement et scurit avec
OpenSSL
Table des matires
2.1. Introduction ..................................................................................................................28
2.2. SSLv3 ..........................................................................................................................28
2.3. Mthodes utilises ..........................................................................................................29
2.3.1. Chiffrement symtrique ........................................................................................29
2.3.2. Cryptographie par cls publiques ............................................................................29
2.3.3. Certificats x509 et x509v3 .....................................................................................30
2.4. OpenSSL ......................................................................................................................32
2.4.1. Prsentation ........................................................................................................32
2.4.2. Utilisation basique ...............................................................................................32
2.1. Introduction
OpenSSL est une librairie mettant disposition des programmeurs, des fonctions cryptographiques.
Note
Un socket (en programmation) sert transfrer des donnes entre deux programmes via un rseau
(LAN ou WAN). Pour pouvoir transfrer des donnes d'un client vers un serveur, il est ncessaire
d'avoir deux sockets : un sur le client et un sur le serveur.
Les donnes qui transitent entre deux sockets ne bnficient d'aucun chiffrement, ce qui est problmatique.
Quelqu'un pourrait intercepter les donnes et les lire sans aucune difficult.
Le protocole SSL a t invent par Netscape dans le but de scuriser les changes entre un serveur http et un
client Netscape Communicator. A partir de ce projet fut cr OpenSSL, une implmentation du protocole SSL
permettant de mettre en place des mcanismes pour scuriser des changes rseau : Secure Socket Layer.
Il existe de nombreuses mthodes pour scuriser ces changes : le chiffrement par cls symtriques et asym-
triques (utilis par OpenSSH), le chiffrement par certificats, pour scuriser un serveur web Apache par exemple.
2.2. SSLv3
Le principe de chiffrement SSLv3 est le suivant :
Un serveur envoie un certificat et une cl publique au client qui vrifie l'intgrit et l'identit du serveur au-
prs d'une autorit de confiance.
Une fois cette transaction effectue, le client utilise la cl publique qu'il a reue avec le certificat pour chiffrer
une cl symtrique qui servira l'change des donnes avec le serveur.
28
Le chiffrement asymtrique prend trop de ressources pour tre utilis lors de la totalit de l'change, c'est pour-
quoi il n'est utilis que pendant la phase de vrification de l'identit du serveur puis pour transfrer une cl sy-
mtrique.
2.3. Mthodes utilises
Les mthodes de chiffrement varient selon les besoins : certains algorithmes sont lourds et prennent beaucoup
de ressources systme, d'autre moins.
Les chiffrements lourds sont utiliss pour des changes critiques, du point de vue de la scurit, tels que
l'authentification puisque si celle-ci est compromise, tout le reste de l'change est compromis.
2.3.1. Chiffrement symtrique
Il en existe plusieurs implmentations telles que Blowfish ou 3DES. Ce chiffrement n'utilise qu'une seule et
unique cl qui permet le chiffrement et le dchiffrement de donnes.
Avantage : Peu de ressources utilises
Inconvnient : Si la cl est intercepte par une personne mal intentionne, toutes les donnes peuvent tre d-
chiffres et donc compromises.
2.3.1.1. Blowfish
Blowfish est une mthode de chiffrement symtrique cr en 1993 par Bruce Schneier. Il est rapide et sous li-
cence libre pour tous les usages.
2.3.1.2. DES / 3-DES
L'algorithme de chiffrement DES rpond aux critres suivants:
Haut niveau de scurit li une cl symtrique
Simple comprendre
Ne dpend pas de la confidentialit de l'algorithme
Adaptable et conomique
Efficace et exportable
A la fin de 1974, IBM propose Lucifer, qui est modifi par la NSA (National Security Agency) en 1976 pour
donner le DES (Data Encryption Standard).
Le DES ft normalis par l'ANSI (American National Standard Institute) sous le nom de ANSI X3.92, plus
connu sous la dnomination DEA (Data Encryption Algorithm).
C'est un systme de chiffrement dont la cl possde un mcanisme permettant de vrifier son intgrit.
2.3.2. Cryptographie par cls publiques
Cette mthode ncessite une paire de cls par machine :
Une cl prive qui permet uniquement le dchiffrement des donnes.
Chiffrement et scurit avec OpenSSL 29
Une cl publique qui permet uniquement le chiffrement des donnes.
Ceci signifie que vous disposez d'une cl publique, disponible pour tout un chacun et une cl prive que vous
conservez prcieusement. Une cl est une suite de nombres gnrs par un algorithme mathmatique (DSA ou
RSA). La taille (en bits) de cette suite peut varier selon la puissance de chiffrement que vous dsirez. Plus la
taille de la cl est grosse, plus il sera difficile et long de dcrypter une communication qui utilise cette dernire,
mais plus le temps ncessaire au chiffrement et au dchiffrement des donnes est long.
Avantage : Mme si la cl publique est intercepte lors de l'change, la scurit des donnes n'est pas compro-
mise pour autant puisque cette cl ne permet pas de dchiffrer quoi que ce soit.
Inconvnient : Beaucoup de ressources sont ncessaires ce type de chiffrement.
2.3.2.1. DSA
Le Digital Signature Algorithm a t cr pour signer (des donnes). Ce n'est pas un algorithme de chiffrement
bien qu'il dcrive des mcanismes de chiffrement comme ElGamel et RSA qui se basent sur DSA.
Des donnes cryptes avec DSA sont plus difficiles dcrypter que RSA.
2.3.2.2. RSA
Le premier algorithme de chiffrement cl publique a t dvelopp par R.Merckle et M.Hellman en 1977. Il
fut vite rendu obsolte grce aux travaux de Shamir, Zippel et Herlestman, de clbres cryptanalystes.
En 1978, l'algorithme cl publique de Rivest, Shamir, et Adelman (d'o son nom RSA) apparat. Cet algo-
rithme sert encore en 2005 protger les codes nuclaires des armes amricaine et russe.
2.3.3. Certificats x509 et x509v3
Les certificats ajoutent une scurit supplmentaire concernant les cls publiques. En effet, les certificats per-
mettent de vrifier qu'une cl publique appartient bel et bien la personne ou l'organisme qui le prtend en utili-
sant un tiers de confiance. Ce tiers de confiance, nomm Autorit de Certification (CA pour Certification Autho-
rity), confirme via un certificat qu'une cl publique appartient une personne.
2.3.3.1. Certificats X509
Tableau 2.1. Champs d'un certificat X509
Champ Commentaire
Certificate format version Ce champ donne la version du certificat : 1, 2 ou 3
Certificate serial number Numro de srie unique pour l'autorit de confiance
qui a tabli le certificat et qui l'identifie de faon
unique
Issuer X.500 name Nom de l'metteur du certificat
Validity period Priode de validit du certificat. Donne les dates de
dbut et de fin de validit
Subject X.500 name Nom de propritaire du certificat (celui qui possde la
clef prive correspondant la clef publique contenue
dans le certificat)
CA signature Signature de l'autorit de certification
Chiffrement et scurit avec OpenSSL 30
2.3.3.2. Les extensions X.509v3
Cette version contient des extensions qui augmentent la flexibilit des certificats. Il est ainsi possible d'adapter
les certificats des besoins prcis.
Il existe 4 types d'extensions :
Tableau 2.2. Les diffrents types d'extension
Champ Commentaire
Authority Key Identifier Ce champ identifie de faon unique la paire de cl uti-
lise par le CA pour signer le certificat
Subject Key Identifier Ce champ identifie de faon unique la paire de cl
dont la cl publique est contenue dans le certificat
Key usage Ce champ renseigne sur l'utilisation qui doit tre faite
de la cl et peut prendre les valeurs suivantes : non-
rpudiation, certificate signing, CRL signing, digital
signature, data signature, symetric key encryption for
key transfer, Diffie-Hellman key agreement
Private Key Usage Period Ce champ donne la date d'expiration de la cl prive
associe la cl publique contenue dans le certificat
Tableau 2.3. Informations sur l'utilisation du certificat
Champ Commentaire
Certificate Policies Ce champ peut donner la politique de certification qui
a prsid l'mission du certificat et/ou les utilisa-
tions qui doivent tre faites du certificat
Policy Mappings Ce champ ne concerne que les certificats croiss (le
certificat mis par un CA pour certifier la cl publique
(le certificat) d'un autre CA). Il permet d'associer la
politique de certification du CA qui met le certificat
la politique de certification indique dans le certifi-
cat crois
Tableau 2.4. Attributs des utilisateurs et des CA
Champ Commentaire
Subject Alternative Name Ce champ permet de spcifier des informations sur le
propritaire du certificat
Issuer Alternative Name Ce champ permet de donner un nom spcifique une
CA
Tableau 2.5. Contraintes sur la certification croise
Champ Commentaire
Basic Constraints Ce champ indique si l'utilisateur est un utilisateur fi-
nal ou s'il peut tre une CA.
Chiffrement et scurit avec OpenSSL 31
Champ Commentaire
Name Constraints Ce champ nest utilis qu'avec les certifications croi-
ses, et permet aux administrateurs de restreindre les
domaines de confiance dans un domaine de certifica-
tion croise.
Policy Constraints Ce champ s'applique aux certificats croiss, et permet
de spcifier les politiques de certifications acceptables
pour les certificats dpendants du co-certificat
2.4. OpenSSL
2.4.1. Prsentation
OpenSSL est une suite d'outils lis aux technologies SSL (Secure Socket Layer) v2/v3 et TLS (Transport Layer
Security) v1. OpenSSL permet les fonctions cryptographiques suivantes :
La cration de paramtres RSA, Diffie-Helman et DSA
La cration de certificats X.509
La cration de demandes de signature de certificat (CSR : Certificate Signing Request)
La cration de listes de rvoquation de certificats (CRL : Certificate Revocation List)
Le calcul de sommes de contrle
Le chiffrement et le dchiffrement de messages ou de fichiers
La capacit d'OpenSSL pouvoir mettre et signer des certificats permet de crer sa propre autorit de certifica-
tion.
2.4.2. Utilisation basique
L'outil principal de la suite OpenSSL est la commande openssl. Cette seule commande peut raliser toutes les
fonctions mentionnes ci-dessus. Elle possde donc beaucoup d'arguments.
[root@linux ~]# openssl help
openssl:Error: 'help' is an invalid command.
Standard commands
asn1parse ca ciphers crl crl2pkcs7
dgst dh dhparam dsa dsaparam
ec ecparam enc engine errstr
gendh gendsa genrsa nseq ocsp
passwd pkcs12 pkcs7 pkcs8 prime
rand req rsa rsautl s_client
s_server s_time sess_id smime speed
spkac verify version x509
Message Digest commands (see the `dgst' command for more details)
md2 md4 md5 rmd160 sha
sha1
Cipher commands (see the `enc' command for more details)
aes-128-cbc aes-128-ecb aes-192-cbc aes-192-ecb aes-256-cbc
aes-256-ecb base64 bf bf-cbc bf-cfb
Chiffrement et scurit avec OpenSSL 32
bf-ecb bf-ofb cast cast-cbc cast5-cbc
cast5-cfb cast5-ecb cast5-ofb des des-cbc
des-cfb des-ecb des-ede des-ede-cbc des-ede-cfb
des-ede-ofb des-ede3 des-ede3-cbc des-ede3-cfb des-ede3-ofb
des-ofb des3 desx rc2 rc2-40-cbc
rc2-64-cbc rc2-cbc rc2-cfb rc2-ecb rc2-ofb
rc4 rc4-40
2.4.2.1. Cration d'un certificat auto-sign
Un certificat auto-sign (self-signed certificate) est idal pour une configuration de test. En environnement de
production, un certificat doit tre sign directement par une autorit de certification reconnue comme Verisign,
Thawte, etc. afin de pouvoir tre valid par n'importe quel client.
Nous allons ici gnrer un certificat qui pourra tre utilis directement par un serveur Web afin de proposer de
l'HTTPS.
La commande suivante va crer un certificat de type x509 valide pendant 365 jours partir de sa date de cra-
tion. L'algorithme de chiffrement sera le RSA. Pour des raisons pratiques, la cl publique et la cl prive seront
stockes dans le mme fichier certificat.pem .
[root@linux ~]# openssl req -x509 -nodes \
-days 365 -newkey rsa:1024 -keyout certificat.pem \
-out certificat.pem
Generating a 1024 bit RSA private key
................++++++++++++
........................................................++++++++
writing new private key to 'certificat.pem'
-----
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a
DN.
There are quite a few fields but you can leabe some blank
For some fields there will be a default vale,
If you enter ';', the field will be left blank.
-----
Country Name (2 letter code) [GB]:FR
State or Province Name (full name) [Berkshire]:Paris
Locality Name (eg, city) [Newbury]:Paris
Organization Name (eg, company) [My company Ltd]:SUPINFO
Organizational Unit Name (eg, section) []:labo-linux
Common Name (eg, your name or server's hostname) []:www.labo-linux.org
Email Address []:labo-linux@supinfo.com
Important
Parmi les informations rentrer, la seule vraiment importante est Common Name qui doit
avoir pour valeur le nom exact du serveur pour qui le certificat est destin.
Une fois le certificat gnr, il est conseill de tester son bon fonctionnement.
2.4.2.2. Tester un certificat
Chiffrement et scurit avec OpenSSL 33
OpenSSL permet de tester trs facilement un certificat en crant un mini-serveur web acceptant les connexions
en HTTPS et utilisant le certificat prcis pour scuriser la communication.
[root@linux ~]# openssl s_server -cert certificat.pem -www
Using default temp DH parameters
Using default temp ECDH parameters
ACCEPT
Il ne reste plus ensuite qu' se connecter en local sur le port 4433 avec un navigateur web.
[root@linux ~]# firefox https://localhost:4433
Note
Si le certificat est auto-sign, le navigateur affichera un message d'avertissement expliquant qu'il
ne peut pas vrifier la signature du certificat.
Une fois le certificat vrifi, il ne reste plus qu' configurer le service souhait (Web, Mail, LDAP, etc.) pour
utiliser ce certificat.
Chiffrement et scurit avec OpenSSL 34
Chapitre 3. Administration distance
avec SSH
Table des matires
3.1. Introduction ..................................................................................................................35
3.1.1. Mcanismes ........................................................................................................35
3.1.2. Les outils de la suite OpenSSH ...............................................................................38
3.2. Le client SSH ................................................................................................................38
3.2.1. Configuration du client SSH ..................................................................................38
3.2.2. Utilisation du client ..............................................................................................39
3.3. Cration de cls .............................................................................................................40
3.3.1. Gnration de cls RSA ........................................................................................40
3.3.2. Gnration de cls DSA ........................................................................................41
3.4. Le serveur SSH ..............................................................................................................41
3.5. Administration du serveur SSH .........................................................................................41
3.6. Copie scurise (scp) ......................................................................................................42
3.7. Authentification par cl publique .......................................................................................43
3.8. X-Forwarding ................................................................................................................44
3.8.1. Dport d'une application graphique .........................................................................45
3.8.2. Dport d'une session graphique complte .................................................................45
3.8.3. Scurit .............................................................................................................46
3.9. TCP-Forwarding (Tunneling) ...........................................................................................46
3.10. Sftp: Secure FTP ..........................................................................................................47
3.1. Introduction
Les rseaux actuels utilisent majoritairement des protocoles non scuriss tel que pop, imap, ftp, qui font transi-
ter les donnes non chiffres sur le rseau, ne garantissant donc aucune confidentialit des changes. C'est pour
rpondre ce besoin que SSH a t cr. Le terme SSH (Secure SHell) dsigne un protocole et un ensemble de
programmes qui permettent de se connecter sur une machine distante de manire scurise.
Note
Nous ne traiterons ici que de la mthode utilise par le protocole SSHv2. Le protocole SSHv1
tant devenu obsolte, nous n'en tudierons pas le fonctionnement.
3.1.1. Mcanismes
3.1.1.1. Chiffrement asymtrique (Authentification)
Cette mthode ncessite une paire de cls par machine :
Une cl prive qui permet uniquement le dchiffrement des donnes
35
Une cl publique qui permet uniquement le chiffrement des donnes
Ceci signifie que vous disposez d'une cl publique, disponible pour tout un chacun et une cl prive confiden-
tielle stocke dans un endroit sr.
Note
Une cl est une suite de nombres gnrs par un algorithme mathmatique (DSA ou RSA). La
taille (en bits) de cette suite peut varier selon la puissance de chiffrement dsire. Plus la taille de
la cl est importante, plus il sera difficile et long de dcrypter une communication qui utilise cette
dernire.
Les cls publiques sont changes lors de la connexion, elles sont mises en cache par le client dans le fichier
~/.ssh/known_hosts.
L'utilisation de ces cls se droule comme suit :
La machine A se connecte la machine B. Un change de cls publiques permet de garantir la confidentialit de
la phase de login :
Figure 3.3. tapes de l'authentification SSH - 1
Une fois que la connexion TCP/IP est tablie, la machine A envoi sa cl publique la machine B :
Figure 3.4. tapes de l'authentification SSH - 2
Administration distance avec SSH 36
La machine B envoie prsent sa cl publique la machine A.
Figure 3.5. tapes de l'authentification SSH - 3
A ce stade de la communication, la machine A peut chiffrer les donnes destines la machine B avec la cl pu-
blique B. La machine B peut dchiffer ces donnes puisqu'elle possde la cl prive B. De la mme manire, la
machine B peut chiffrer les donnes destines la machine A. L'authentification, c'est dire l'envoi du couple
login/mot de passe peut prsent se faire de manire confidentielle.
Figure 3.6. Reprsentation du tunnel SSH
Administration distance avec SSH 37
Cependant, le chiffrement asymtrique prend trop de ressources pour tre utilis lors des communications, c'est
donc un chiffrement symtrique qui est utilis une fois la phase d'authentification accomplie.
3.1.1.2. Chiffrement symtrique (Communication)
Le chiffrement symtrique est beaucoup moins gourmand en ressources. Il en existe plusieurs implmentations
telles que Blowfish ou 3DES. Cette mthode n'utilise qu'une cl unique qui permet le chiffrement et le dchif-
frement. Une fois l'change de cls asymtriques termin, la machine A gnre une cl (symtrique) et la trans-
met la machine B. Cette transaction est scurise par le chiffrement asymtrique dans le but de protger la cl
qui va permettre les changes entre les deux machines sans consommer trop de ressources systmes (CPU, m-
moire, ...).
Note
Attention : La cl prive ne doit en aucun cas tre divulgue
3.1.2. Les outils de la suite OpenSSH
Applications Utilisations
ssh Client SSH
ssh-keygen Gnrateur de cl
sshd Le serveur SSH
scp Copie de fichiers securise
ssh-agent Agent d'authentification
ssh-add Ajoute les identits DSA ou RSA l'agent
d'authentification
sftp Transfert de fichiers securis
ssh-copy-id Copie une cl publique dans le fichier
~/.ssh/authorized_keys d'un hte distant.
3.2. Le client SSH
Le client ssh permet d'obtenir un interprteur de commandes sur une machine distante de manire transparente
et scurise.
3.2.1. Configuration du client SSH
Administration distance avec SSH 38
Le fichier de configuration commun tous les utilisateurs de la machine est situ dans /
etc/ssh/ssh_config. Les utilisateurs peuvent aussi spcifier des paramtres spcifiques dans le fichier
~/.ssh/config. Chaque section de ce fichier de configuration est commence par la ligne "Host
ip_ou_nom_d'hte".
Directive Commentaire
Host * Indique que la configuration qui va suivre concerne un
hte prcis, ou un ensemble d'autre
ForwardX11 no Autorise ou non la directive du serveur graphique X
PasswordAuthentication yes Demande de mot de passe utilisateur pour ouvrir une
session (aprs change de cl)
Port 22 Numro du port sur lequel le client va se connecter (22
par dfaut)
Protocol 2,1 Version du protocole utiliser (dans l'ordre de prf-
rence)
IdentityFile ~/.ssh/id_rsa Cl prive du client au format RSA
IdentityFile ~/.ssh/id_dsa Cl prive du client au format DSA
Note
Les cls publiques se nomment comme les cls prives avec l'extension ".pub", par exemple :
~/.ssh/id_dsa.pub
Exemple 3.1. Exemple
Host ssh.labo-linux.org
PasswordAuthentication no
Port 8022
Protocol 2
IdentityFile ~/.ssh/labo-linux.key
Host 192.168.0.1
PasswordAuthentication yes
Port 22
Protocol 1
Dans ce fichier, nous avons dfini les proprits pour deux htes diffrents : ssh.labo-linux.org et 192.168.0.1
3.2.2. Utilisation du client
Les options disponibles pour le client SSH :
Directive Commentaire
-l login Identifiant de l'utilisateur (il est possible d'utiliser la
syntaxe user@host)
-v -vv -vvv Mode verbeux, permet d'obtenir les messages de dbo-
gage plus ou moins complets (plus il y a de v, plus vous
Administration distance avec SSH 39
Directive Commentaire
obtenez d'informations, le nombre maximum est 3)
-1 ou -2 Version de ssh employe. Il est dconseill d'employer
la version 1 du protocole. Bien qu'aucun exploit public
ne circule, les faiblesses cryptographiques du protocole
ont t prouves. De plus, la version 2 est reconnue par
l'IETF
-p port Numro du port distant
Exemple 3.2. Utilisation du client
[mandriva@linux ~]$ ssh 172.16.0.1 -l john -v
Equivaut :
[mandriva@linux ~]$ ssh john@172.16.0.1 -v
3.3. Cration de cls
Les cls de la partie cliente se situent dans ~/.ssh/. Il est galement possible de crer des cls pour le ser-
veur.
Avertissement
Ne spcifiez pas de mot de passe au niveau de la paire de cls utiliser du ct du serveur. Dans le
cas contraire, votre serveur refusera de dmarrer.
Directive Description
-t type Type de cl (RSA ou DSA)
-f fichier Chemin vers le fichier qui contiendra la cl
-b taille Taille de la cl
Les cls serveur se situent par dfaut dans /etc/ssh/ssh_host_rsa_key pour le RSA et /
etc/ssh/ssh_host_dsa_key pour le DSA
Note
Les cls publiques associes se nomment ssh_host_rsa_key.pub et
ssh_host_dsa_key.pub RSA et DSA correspondent deux algorithmes diffrents. On peut
utiliser l'un ou l'autre.
3.3.1. Gnration de cls RSA
Administration distance avec SSH 40
[mandriva@linux ~]$ ssh-keygen -b 1024 -t rsa -f /etc/ssh/ssh_host_rsa_key
Note
Lors d'une cration de cl, seul le chemin de la cl prive doit tre spcifi, la cl publique asso-
cie sera cre automatiquement en ajoutant l'extension .pub.
Lors de la saisie de cette commande, une passphrase est demande. Cette passphrase est un mot de passe qui
protgera la cl lors de l'utilisation de l'authentification par cl publique dont le fonctionnement sera dtaill
dans la partie 6. Dans le cas de ce type d'authentification, la passphrase doit tre vide si vous ne voulez pas ren-
trer de mot de passe.
3.3.2. Gnration de cls DSA
[mandriva@linux ~]$ ssh-keygen -b 1024 -t dsa -f /etc/ssh/ssh_host_dsa_key
Le principe est identique que pour la gnration de cl RSA. Seul le type de cl crer change.
3.4. Le serveur SSH
Le serveur SSH rpond aux requtes des clients ssh (sftp, scp, ssh, ...). Il se configure dans le fichier /
etc/ssh/sshd_config.
Directive Commentaire
Port 22 Port d'coute du serveur
Protocol 2,1 Protocoles utiliser
ListenAddress IP Restriction d'coute certains rseaux
HostKey /etc/ssh/ssh_host_rsa_key Cl serveur RSA
HostKey /etc/ssh/ssh_host_dsa_key Cl serveur DSA
ServerKeyBits 1024 Taille des cls
LoginGraceTime 600 Temps en secondes pour entrer son identifiant et mot de
passe
PermitRootLogin no Interdit l'utilisateur root de se connecter via ssh
DenyUsers toto user* Intredit les utilisateurs toto et ceux dont le nom
d'utilisateur commence par user se connecter.
PubKeyAuthentication yes Active ou non l'authentification par cl publique
PasswordAuthentication yes Active ou non l'authentification par mot de passe
X11Forwarding yes Active ou non la redirection d'applications graphiques
3.5. Administration du serveur SSH
Il est possible de lancer le serveur SSH grce la commande sshd ou bien en utilisant le script de dmarrage :
Administration distance avec SSH 41
[root@linux ~]# /etc/init.d/sshd argument
Argument Commentaire
stop Arrt du serveur
restart Redmarrage du serveur
status Affiche le statut (dmarr ou non)
reload Relecture de la configuration par le serveur (sans
l'arrter)
3.6. Copie scurise (scp)
OpenSSH fournit un outil de copie scurise en standard sous le nom de scp pour Secure CoPy. Il remplace son
anctre rcp. Son usage est trs simple :
[mandriva@linux ~]$ scp source destination
Exemple 3.3. client vers serveur
Pour transfrer le fichier test1.txt situ dans le rpertoire courant vers le rpertoire personnel du compte
user de la machine distante ordi1.exemple.org sur laquelle un serveur SSH est lanc :
[mandriva@linux ~]$ scp test.txt user@ordi2.exemple.org:~/test.txt
Exemple 3.4. serveur vers client
Pour rcuprer le fichier test2.txt situ le home de l'utilisateur user de la machine distante or-
di2.exemple.org et le sauver dans le rpertoire courant :
[mandriva@linux ~]$ scp user@ordi2.exemple.org:~/test2.txt .
Exemple 3.5. globbing ct serveur
Pour rcuprer tous les fichiers ayant l'extension .txt situs dans le rpertoire /usr/local de la machine or-
di2.exemple.org et l'crire dans le sous rpertoire test-scp du rpertoire courant :
Administration distance avec SSH 42
[mandriva@linux ~]$ scp user@ordi2.exemple.org:/usr/local/*.txt test-scp
Exemple 3.6. globbing ct client
Pour transfrer l'intgralit du sous rpertoire test-scp du rpertoire courant vers le sous rpertoire inco-
ming du home de l'utilisateur user de la machine ordi1.exemple.org :
[mandriva@linux ~]$ scp -r ~/test-scp user@ordi1.exemple.org:~/incoming
3.7. Authentification par cl publique
Cette mthode permet une connexion scurise avec un serveur distant sans demande de mot de passe, il devient
ainsi possible d'crire des scripts (ou des programmes) profitant de cela pour se connecter automatiquement un
serveur afin d'effectuer diverses oprations. Le principe est trs simple : il suffit de copier la cl publique du
client dans un fichier spcial sur le serveur. Ainsi, le serveur se servira de cette cl pour authentifier le client
sans mot de passe.
Note
Si une passphrase a t entre lors de la gnration de la cl, elle sera demande lors de
l'authentification.
La directive PubKeyAuthentication du fichier de configuration du serveur doit tre positionne yes
PubkeyAuthentication yes
Il faut maintenant envoyer notre cl publique depuis le client sur le serveur dans le rpertoire ~/.ssh :
[mandriva@linux ~]$ scp ~/.ssh/id_rsa.pub user@server:~/.ssh
[mandriva@linux ~]$ ssh user@server
[mandriva@linux ~]$ cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys
[mandriva@linux ~]$ rm ~/.ssh/id_dsa.pub
Sur le serveur, il faut maintenant copier le contenu du fichier que nous avons envoy dans le fichier
~/.ssh/authorized_keys :
[mandriva@linux ~]$ chmod 400 ~/.ssh/authorized_keys
Administration distance avec SSH 43
Note
Le rpertoire personnel sur le serveur doit au plus avoir comme permission 755, sinon
l'authentification par cl publique ne fonctionnera pas. Quel est alors l'intrt d'avoir une pass-
phrase alors que nous utilisons l'authentification par cl pour viter d'entrer un mot de passe ? Tout
simplement pour ajouter une scurit supplmentaire.
Il existe cependant un utilitaire capable de sauvegarder la passphrase pour une session : ssh-agent
ssh-agent permet de sauvegarder une passphrase pour un processus donn. Si ce processus est bash, alors toute
la session bash profitera donc de cette sauvegarde, si ce processus est X, alors toute la session graphique en pro-
fitera. Tout d'abord, lancer ssh-agent avec comme argument le processus en question :
[mandriva@linux ~]$ ssh-agent /bin/bash
Il suffit alors de prciser la cl ssh-agent via la commande ssh-add qui demandera d'entrer le passphrase une
seule fois :
[mandriva@linux ~]$ ssh-add
Une fois cette opration effectue, la passphrase n'est plus demande
3.8. X-Forwarding
Les applications tierces telles que VNC ou RDesktop ne sont pas ncessaires pour prendre en main des applica-
tions graphiques distance entre deux systmes Linux. En effet, l'affichage graphique se fait par dfaut via un
processus client/serveur de manire transparente y compris en local. Pour rendre cela possible, il est tout d'abord
ncessaire d'diter le fichier de configuration du serveur /etc/ssh/sshd_config :
X11Forwarding yes
De mme, sur le client, le fichier de configuration /etc/ssh/ssh_config doit autoriser le transfert du pro-
tocole X11 :
ForwardX11 yes
Configuration d'XFree/Xorg
Note
Il est suppos que XFree/Xorg soit dj oprationnel sur le client et le serveur.
Administration distance avec SSH 44
Si vous souhaitez lancer un environnement complet, il vous faudra lancer un X sur votre machine. Si vous sou-
haitez avoir votre affichage local habituel avec en plus un dport d'environnement complet (gnome, kde, flux-
box, wmaker, ...), vous pouvez lancer X sur une console diffrente. Par dfaut, lorsque vous faites startx, X est
lanc sur le DISPLAY :0. Il est possible d'en spcifier un autre pour pouvoir utiliser plusieurs X simultanment
(:0 = alt+F7, :1 = alt+F8) : Attention, ce nouveau X ne devrait pas lancer votre gestionnaire de fentre local
mais uniquement un terminal qui nous permettra de lancer les applications distantes: Pour cela, nous ditons le
fichier ~/.xinitrc :
exec xterm
Lancez maintenant le X local :
[mandriva@linux ~]$ startx -- :1
Si vous souhaitez simplement lancer des applications et non un environnement complet, lancez simplement
votre gestionnaire habituel et lancez une console.
3.8.1. Dport d'une application graphique
Il ne nous reste prsent plus qu' lancer une application. Pour cela la commande ssh est utiliser de la manire
suivante
[mandriva@linux ~]$ ssh -X -f username@server commande
L'option -X permet de spcifier l'utilisation de forward de X.
L'option -f permet de lancer une commande en arrire plan et de rendre la main ensuite.
Exemple 3.7. Excution de xclock sur l'ip 172.16.34.1 depuis le serveur 172.16.34.2 avec
le compte supinfo :
[mandriva@linux ~]$ ssh -X -f supinfo@172.16.34.2 /usr/X11R6/bin/xclock
3.8.2. Dport d'une session graphique complte
Le principe est exactement le mme :
Exemple 3.8. Gnome
Administration distance avec SSH 45
[mandriva@linux ~]$ ssh -X -f supinfo@172.16.34.2 /usr/bin/gnome-session
Exemple 3.9. KDE
[mandriva@linux ~]$ ssh -X -f supinfo@172.16.34.2 /usr/bin/startkde
Exemple 3.10. Fluxbox
[mandriva@linux ~]$ ssh -X -f supinfo@172.16.34.2 /usr/bin/fluxbox
3.8.3. Scurit
L'utilisation de l'option -X est a utilis avec prcaution. Un utilisateur pourrait prendre le contrle du DISPLAY
local travers la connection SSH, c'est donc pourquoi certaines scurits ont t mises en place afin d'viter ce-
la. Les rcentes versions de SSH distinguent deux types de clients : les clients srs (trusted) ou les clients non-
srs (untrusted). Pour pouvoir se connecter en tant que client sr et ne pas faire l'objet de contrle de scurit, il
faut utiliser l'option -Y
ssh -Y -f username@server commande
Pour pouvoir utiliser ce type de connexion, il faut modifier le fichier de configuration du serveur SSH et ajouter
la directive suivante :
ForwardX11Trusted yes
Cette directive est active par dfaut sur certaines distributions et est manipuler avec prcautions car les clients
srs pourront avoir un libre accs au DISPLAY local travers la connexion ssh.
3.9. TCP-Forwarding (Tunneling)
Le client ssh est capable de forwarder des ports TCP ce qui peut tre trs pratique dans certains cas : Imaginons
que nous sommes dans le cas d'une entreprise qui possde un rseau LAN connect Internet via un pare-feu.
Un serveur de fichiers FTP (Ports 20 et 21 en mode passif) existe au sein de ce LAN. Le firewall bloque tout le
trafic venant d'Internet sauf ssh (port 22) puisque celui-ci est scuris. Un employ ne peut donc pas utiliser le
service FTP s'il est l'extrieur du rseau LAN. Il est alors envisageable de crer un VPN mais cette solution
reste assez coteuse si les employs ont trs peu besoin du FTP l'extrieur. SSH peut alors offrir une solution
Administration distance avec SSH 46
pour accder au service.
Pour se connecter au serveur FTP, le client indiquera son client FTP que le serveur est son propre ordinateur
(localhost, 127.0.0.1) et qu'il coute sur le port qu'il a choisi.
[mandriva@linux ~]$ ssh -f -L port_local:host:hostport user@server
port_local : Le port qui sera redirig depuis la machine de l'employ vers le serveur FTP (via le pare-feu).
host : Le nom ou l'IP du serveur FTP.
host_port : Le port sur le serveur FTP.
user : Un nom d'utilisateur valide sur le pare-feu.
server : Le nom ou l'IP du pare-feu.
3.10. Sftp: Secure FTP
OpenSSH intgre un serveur ftp via ssh qui ne requere aucune configuration particulire. Le client sftp permet
de se connecter en ftp un serveur ssh :
[mandriva@linux ~]$ sftp john@serveur
Administration distance avec SSH 47
Chapitre 4. Le serveur X
Table des matires
4.1. Introduction ..................................................................................................................48
4.1.1. L'architecture de X-window et ses limites .................................................................48
4.1.2. Le projet XFree86 ................................................................................................49
4.1.3. Le projet Xorg .....................................................................................................49
4.2. Configuration ................................................................................................................49
4.2.1. Gnration d'un fichier de configuration ...................................................................49
4.2.2. Edition du fichier de configuration ..........................................................................49
4.3. Lancement du serveur X ..................................................................................................53
4.4. X-Distant ......................................................................................................................53
4.4.1. X-Distant en local ................................................................................................54
4.4.2. Configuration d'XFree86 et X.org ...........................................................................54
4.4.3. Afficher des applications distance .........................................................................55
4.4.4. Afficher un environnement complet ........................................................................56
4.5. Utilitaire Mandriva .........................................................................................................56
4.5.1. DrakxConf .........................................................................................................56
4.5.2. Configuration du bureau KDE ................................................................................57
4.5.3. Configuration du bureau Gnome .............................................................................57
4.1. Introduction
Les interfaces graphiques sous GNU/Linux reposent en grande partie sur le standard X-Window. Ce standard est
n dans les laboratoires du MIT (Massachusetts Institute of Technology) dans les annes 1984 pour fournir un
environnement graphique adaptable aux nombreuses et diverses plate-formes de l'universit.
A l'poque, un seul serveur puissant servait d'unit de calcul pour tous les postes utilisateurs qui n'taient que
des terminaux (cran, clavier, souris). Ce systme graphique tait donc capable de lancer des applications gra-
phiques clientes sur un serveur distant. X-Window est bel et bien compos d'une partie serveur et d'une partie
cliente. C'est partir de ce projet que sont ns les serveurs graphiques que nous utilisons aujourd'hui tel que
XFree86 et Xorg.
En 1988, le X Consortium est cr au MIT qui deviendra en 1999 X.org, une association but non lucratif qui
se charge de superviser les dveloppements futurs d'X-Window. La liste des membres de cette association est
compose des plus grands constructeurs : HP, Sun Microsystems, SGI, IBM.
4.1.1. L'architecture de X-window et ses limites
Ce projet repose sur le principe d'une application rseau client/serveur. Le serveur gre l'accs aux priphriques
tels que la carte graphique, l'cran, le clavier... Les applications graphiques (navigateur, client de messagerie,
diteur de texte, ...) sont des clients du serveur X. Ces clients font des requtes au serveur X et reoivent les r-
ponses via la Xlib, la librairie principale d'X qui permet d'interprter des requtes "simples" de clients pour les
transformer en instructions "complexes" conformes au standard X-Window et interprtables par le serveur X.
Le concept X-Window est assez ancien et ne rpond plus forcment aux exigences des utilisateurs d'aujourd'hui.
Par exemple, l'volution remarquable des cartes graphiques a ncessit de gros changements dans l'architecture
d'XFree. La configuration de celui-ci semble assez laborieuse au premier abord pour cette raison.
Un autre problme vient du fait que la Xlib seule ne permet de dessiner que quelques formes primitives, et donc
ncessairement des surcouches (toolkits comme Qt ou GTK) ont d tre dveloppes pour que les program-
48
meurs puissent crer des widgets (fentre, boutons, bote texte, ...) aisment.
4.1.2. Le projet XFree86
Thomas Roell, tudiant Allemand, commence en 1990 port X-Window en version X11R4 pour PC. Son pro-
jet qui se nomme alors X386, attire l'attention du X Consortium, et devient la rfrence pour PC. Le projet est fi-
nalement abandonn par Roell en 1990 moins d'un an aprs sa cration. Le projet est repris en 1991 par quatre
dveloppeurs : David Wexelblat, Glenn Lai, David Dawes et Jim Tsillas qui rebaptisent le projet XFree86. Ce
noyau de dveloppeurs nomm core-team dcide des volutions du projet et accepte ou non les contributions ex-
trieures.
4.1.3. Le projet Xorg
La core-team est considre comme un frein par certains dveloppeurs comme Keith Packard qui dcide alors
de forker le projet, c'est dire de commencer un nouveau projet en partant de l'ancien, avec une nouvelle quipe
de dveloppement et cr une structure pour son projet : X.org foundation. Rappelons que Keith Packard a d-
velopp RandR et Xft2 qui ont permis X d'afficher des polices anti-aliases pour la premire fois.
La core-team du projet Xfree a finalement vot son autodissolution le 30 dcembre 2003, estimant qu'elle ne re-
prsentait plus suffisamment la communaut de dveloppement. La version 4.4 du projet est sortie le 29 fvrier
2004 avec une nouvelle licence en version 1.1 qui a t l'objet de nombreuses controverses du fait de sa non
compatibilit avec la licence GPL.
X.org est maintenant un projet part entire qui volue trs rapidement par rapport XFree. Il a t intgr par
dfaut la place d'XFree dans la majorit des distributions actuelles.
4.2. Configuration
4.2.1. Gnration d'un fichier de configuration
Les outils de gnration de fichier de configuration posent des questions pour paramtrer votre serveur gra-
phique. Le fichier ainsi gnr possde les options les plus courantes que nous allons dtailler par la suite.
Tableau 4.1. Outils pour gnrer un fichier de configuration
XFree86 Xorg
xf86config xorgconfig
xf86cfg xorgcfg
XF86Setup
4.2.2. Edition du fichier de configuration
Le fichier se nomme /etc/X11/XF86Config-4 pour XFree et /etc/X11/xorg.conf pour X.org.
Ce fichier contient diffrentes sections qui vont renseigner le serveur X sur les diffrents matriels et fichiers
qui devront tre utiliss. Chaque priphrique est dfini dans une section, chaque section est dclare avec le
mot cl "Section" suivit du nom de la section entre guillemets. Par exemple, la section qui dfinit la souris ou le
clavier sera Section "InputDevice" car ce sont des priphriques d'entre (souris, clavier...).
Il est possible d'avoir plusieurs sections du mme type, par exemple si vous avez un portable et que vous voulez
utiliser votre souris USB et votre touchpad, il vous faudra dclarer les deux souris. XFree ou X.org s'occupera
de charger toutes les souris disponibles. La directive "Identifier" suivie d'un nom que vous choisirez permettra
Le serveur X 49
de diffrencier les matriels de deux sections dclarant le mme matriel.
Une autre section "ServerLayout" rassemble ensuite les diffrents "Identifier" utiliser. Il est donc possible de
dclarer des sections que nous n'utiliserons pas, par exemple vous dclarez deux crans mais vous n'en utilisez
qu'un seul. Cependant il est ncessaire de dclarer au moins une section de chaque type.
Les diffrents types de sections sont dcrits ci-dessous.
Tableau 4.2. Les sections des fichiers XF86Config-4 et xorg.conf
Nom Description
Files Chemin vers les fichiers
ServerFlags Options supplmentaires pour le serveur X
Module Chargement dynamique de modules
InputDevice Priphriques d'entre
Device Cartes graphiques
Monitor Moniteurs
Modes Modes vidos
Screen Configuration des crans
ServerLayout Rassemble les diffrents Identifier utiliser
DRI Configuration du DRI (Direct Rendering Infrastruc-
ture)
La section module permet de charger dans le serveur X diffrents modules qui fournissent des options suppl-
mentaires, comme par exemple le support d'OpenGL.
Section "Module"
Load "GLcore" # Extension OpenGL
Load "dbe" # Extension Double buffer
Load "extmod" # Contient de nombreuses extensions utiles
Load "dri" # Extension DRI (Direct Rendering Infrastructure)
# qui permet l'acclration matrielle de
# l'interface graphique
Load "glx" # Extension supplmentaire pour OpenGL
# qui va de paire avec le DRI
# Ceci permet de charger les modules
# pour les polices Type1 et FreeType
Load "type1"
Load "freetype"
EndSection
La section Files indique XFree les diffrents fichiers qui vont tre utiliss tel que les polices et le chemin vers
les fichiers modules que nous chargeons dans la section Module.
Section "Files"
# Chemin vers la base de donnes RGB
# (plus valide et commenter sous Xorg 7 modulaire).
RgbPath "/usr/X11R6/lib/X11/rgb"
# Chemins vers les polices
Le serveur X 50
1
ttp://www.XFree.org/current/XF86Config.5.html#sect4
FontPath "/usr/X11R6/lib/X11/fonts/local/"
FontPath "/usr/X11R6/lib/X11/fonts/misc/"
FontPath "/usr/X11R6/lib/X11/fonts/75dpi/:unscaled"
FontPath "/usr/X11R6/lib/X11/fonts/100dpi/:unscaled"
FontPath "/usr/X11R6/lib/X11/fonts/Type1/"
FontPath "/usr/X11R6/lib/X11/fonts/75dpi/"
FontPath "/usr/X11R6/lib/X11/fonts/100dpi/"
FontPath "/usr/X11R6/lib/X11/fonts/truetype"
# Chemin vers les diffrents modules
# (ceux de la Section Module, plus valide et commenter sous Xorg 7 modulaire)
ModulePath "/usr/X11R6/lib/modules"
EndSection
La section ServerFlags contient les options globales du serveur X, les options sont trs nombreuses et varies se-
lon l'utilisation que vous souhaitez en faire. Nous vous invitons regarder les diffrentes options disponibles sur
le site d'XFree
1
.
Voici une section qui dclare un clavier avec 102 touches :
Section "InputDevice"
Identifier "Clavier1"
Driver "Keyboard"
Option "AutoRepeat" "500 30"
Option "XkbRules" "XFree86"
Option "XkbModel" "pc102"
Option "XkbLayout" "fr"
EndSection
Voici deux dclarations de souris. La premire reprsente une souris connecte au port PS/2 ou mme un touch-
pad puisque la majorit d'entre eux sont reconnus comme connects au port PS/2 :
Section "InputDevice"
Identifier "InternalMouse"
Driver "mouse"
Option "Protocol" "PS/2"
Option "Device" "/dev/psaux"
EndSection
Section "InputDevice"
Identifier "UsbMouse"
Driver "mouse"
Option "Protocol" "IMPS/2"
Option "Device" "/dev/usbmouse"
EndSection
Le serveur X 51
Voici un exemple de dclaration de moniteur. La plupart des options utilises sont fournies dans la documenta-
tion constructeur de votre cran.
Section "Monitor"
Identifier "Monitor0"
# HorizSync is in kHz unless units are specified
HorizSync 31.5 - 57.0
# VertRefresh is in Hz unless units are specified
VertRefresh 50-100
EndSection
La section mode dtermine les options des diffrents modes vido, ces options sont fournies dans la documenta-
tion constructeur de votre cran.
Section "Modes"
Identifier "Modes1"
Modeline "1024x768" 64.11 1024 1064 1248 1360 768 783 790 829
Modeline "1024x768" 74.79 1024 1040 1208 1360 768 783 791 829
EndSection
La section Device permet de configurer la carte graphique. L'exemple qui suit permet de configurer une carte
ATI Radeon :
Section "Device"
Identifier "ATI Radeon 0"
Driver "radeon"
Option "AGPMode" "4"
BusID "PCI:1:0:0"
EndSection
Pour utiliser un des autres pilotes, le principe est identique, veuillez consulter la documentation :
http://www.XFree.org/current/manindex4.html
La section Screen dfini l'cran virtuel en rassemblant une carte graphique, un moniteur et une dclaration de
modes vido utiliser :
Section "Screen"
Identifier "Screen1"
Device "ATI Radeon 0"
Monitor "Monitor0"
DefaultDepth 16
Subsection "Display"
Le serveur X 52
Depth 16
Modes "1024x768" "800x600" "640x480"
EndSubsection
EndSection
La dernire section ServerLayout permet de rassembler un ou plusieurs crans virtuels avec des souris et cla-
viers :
Section "ServerLayout"
Identifier "MonLayout"
Screen 0 "Screen 0" 0 0
# Screen 1 "Screen 1" RightOf "Screen 0"
InputDevice "Keyboard1" "CoreKeyboard"
InputDevice "InternalMouse" "CorePointer"
InputDevice "UsbMouse" "SendCoreEvents"
#Cette option permet d'activer le DualScreen
# Option "Xinerama" "on"
EndSection
4.3. Lancement du serveur X
Il existe diffrentes faons de lancer X :
directement via la commande startx
en lanant un gestionnaire de connexion graphique tel que XDM, GDM ou KDM.
XDM, GDM ou KDM permettent de changer votre gestionnaire de fentre. Par exemple vous pouvez passer de
Gnome KDE sans avoir a diter un quelconque fichier.
Pour dfinir un gestionnaire qui se lancera, aprs le lancement du serveur X, via la commande startx, il suffit de
renseigner le fichier ~/.xinitrc dont voici un exemple (Les commentaires sont prcds du caractre #):
exec gnome-session #lance gnome
#exec startkde #lance kde
Si startx ne trouve pas ce fichier dans votre rpertoire personnel (home), il le lira dans /
etc/X11/xinit/xinitrc. Chaque ligne de ces fichiers contient une commande excuter, ainsi si vous
voulez lancer plusieurs programmes, vous devez finir les premires lignes par un "&" pour la lancer en arrire
plan.
4.4. X-Distant
Le serveur X 53
4.4.1. X-Distant en local
Pour commencer nous allons tester le lancement de X sur un deuxime display de notre machine (Ctrl+Alt+F9).
Lorsque vous lancez startx, votre window manager se lance par dfaut sur le display 0:0 soit (Ctrl+Alt+F7 )
Pour lancer X sur le display 2, excutez dans un terminal la ligne suivante
[mandriva@linux ~]$ X :2
Cette commande lancera X sur l'affichage F9
Cette fois nous allons lancer X et un terminal Pour lancer un terminal en mme temps que X il sufit de modifier
le lancement de startx Il nous faut modifier ~/.xinitrc et d'y placer exec xterm
[mandriva@linux ~]$ cd
[mandriva@linux ~]$ vi .xinitrc
Si vous avez d'autre lignes n'oubliez pas de les commenter.
[mandriva@linux ~]$ startx :2
Grce au terminal lanc en mme temps que X vous pouvez dsormais excuter des applications sur ce display.
Vous remarquerez galement l'absence de bordures et l'impossibilit de dplacer, de fermer les fentres.
4.4.2. Configuration d'XFree86 et X.org
Nous partirons du principe que votre affichage graphique est configur et fonctionnel sur votre serveur et sur
votre client. Sur certaines distributions, l'coute du serveur graphique via TCP est dsactiv lors de l'appel du
script startx. Il va falloir l'diter pour l'activer. L'option -nolisten tcp est enlever. Comment retrouver
votre fichier startx ?
[root@linux ~]# which startx
/usr/X11R6/bin/startx
Editons ce script :
userclientrc=$HOME/.xinitrc
userserverrc=$HOME/.xserverrc
sysclientrc=/etc/X11/xinit/xinitrc
sysserverrc=/etc/X11/xinit/xserverrc
defaultclientargs=""
defaultserverargs="-nolisten tcp -br"
clientargs=""
serverargs=""
Il doit maintenant ressembler cela :
userclientrc=$HOME/.xinitrc
userserverrc=$HOME/.xserverrc
Le serveur X 54
sysclientrc=/etc/X11/xinit/xinitrc
sysserverrc=/etc/X11/xinit/xserverrc
defaultclientargs=""
defaultserverargs=""
clientargs=""
serverargs=""
Nous allons maintenant lancer un affichage graphique qui acceptera les requtes TCP/IP. Mais tout d'abord,
nous allons diter notre fichier ~/.xinitrc pour qu'il contienne une ligne qui permettra de lancer un terminal
:
exec xterm
Il nous suffit maintenant de lancer startx sur un autre DISPLAY. Lorsqu'on lance startx sans arguments, le
DISPLAY localhost:0 est utilis. Nous allons utiliser le DISPLAY :1 pour pouvoir utiliser notre affichage gra-
phique local en plus de l'affichage distant.
[mandriva@linux ~]$ startx :1 + <IP>
Exemple (A taper dans notre terminal graphique xterm): La machine 172.16.34.1 peut maintenant nous joindre !
[root@linux ~]# xhost + 172.16.34.1
172.16.34.1 being added to access control list
xhost : permet de restreindre l'accs notre machine
xhost + : permet d'autoriser tout le monde peu recommande
xhost - : permet d'interdire l'accs au IP non autorises
xhost {+/-} {ip} : permet d'autoriser ou de restreindre l'accs une machine
4.4.3. Afficher des applications distance
Il ne nous reste plus qu' lancer une application. Pour cela nous allons utiliser la commande suivante :
[mandriva@linux ~]$ DISPLAY=mon_ip:1 commande
DISPLAY=mon_ip:1: Nous indiquons notre machine et notre DISPLAY avant notre commande. Mon ip est
172.16.34.1. Je souhaite lancer l'utilitaire xclock
[mandriva@linux ~]$ DISPLAY=172.16.34.1:1 \
/usr/X11R6/bin/xclock
Le serveur X 55
4.4.4. Afficher un environnement complet
Le principe est exactement le mme :
Gnome
Remplacez le chemin vers votre binaire gnome-session (which gnome-session)
DISPLAY=172.16.34.1:1 /usr/bin/gnome-session
KDE
DISPLAY=172.16.34.1:1 /usr/bin/startkde
4.5. Utilitaire Mandriva
Mandriva propose une configuration du serveur X en mode graphique, via un wizard ou un panneau de contrle.
4.5.1. DrakxConf
Ds l'installation, vous pouvez configurer votre serveur X. Voici les diffrentes tapes suivre :
Premirement, choisissez le serveur X que vous voulez installer. Par dfaut prenez X.org.
En suite, indiquez la mmoire de votre carte graphique. La meilleure valeur est slectionne automatiquement.
Parcourez la liste des moniteurs afin de trouver votre modle. Si il n'est pas list, choisissez la catgorie "Gene-
ric".
Puis configurez votre moniteur : rsolution et niveau de couleur.
Figure 4.14. Rsum
Le serveur X 56
Une fois fini, un rsum s'affiche et vous permet de revenir sur la configuration de votre matriel si vous avez
fait une erreur.
Si vous rpondez "oui", le serveur X se lancera automatiquement et lancera KDM ou GDM.
Une fois termin, un rsum s'affiche, rpondez "oui" pour continuer l'installation.
Tous ces lments de configuration peuvent tre modifi une fois le systme install.
4.5.2. Configuration du bureau KDE
La configuration de l'environnement KDE se fait partir de l'application kcontrol. Grce cet cran vous pou-
vez configurer les icones, les thmes, l'cran de veille, le son, l'ouverture de session, le comportement de fe-
ntre, la souris, ...
4.5.3. Configuration du bureau Gnome
La configuration de l'environnement Gnome se fait depuis le Gnome control Center . Grce cet cran vous
pouvez configurer les icnes, les thmes, l'cran de veille, le son, l'ouverture de session, le comportement de fe-
ntre, la souris, ...
Vous pouvez galement retrouver ce panneau dans le menu Systme > Prfrences de Gnome.
Le serveur X 57
Chapitre 5. Le noyau
Table des matires
5.1. Qu'est ce qu'un noyau ? ...................................................................................................58
5.2. Compilation et installation du noyau ..................................................................................59
5.2.1. Pourquoi recompiler son noyau ? ............................................................................59
5.2.2. Les modules du noyau ..........................................................................................60
5.2.3. Avant de commencer... .........................................................................................60
5.2.4. Compilation du noyau ...........................................................................................62
5.2.5. Configuration ......................................................................................................63
5.2.6. Compilation ........................................................................................................65
5.3. Installation du noyau .......................................................................................................66
5.3.1. Installation du noyau ............................................................................................66
5.3.2. Configuration du bootloader ..................................................................................67
5.4. Gestion des modules .......................................................................................................69
5.1. Qu'est ce qu'un noyau ?
Le noyau est le coeur mme du systme. Il se charge de la communication avec la partie matrielle. Les proces-
sus des utilisateurs utilisent une interface d'appels systmes afin de communiquer avec le noyau et ainsi
d'utiliser les ressources matrielles de votre ordinateur (disque dur, carte graphique, etc ...).
Figure 5.3. Rle du noyau
58
Le noyau Linux est monolithique et modulaire. Un noyau monolithique est caractris par le fait que tout le
code des diffrents pilotes est compil puis li en une seule image finale destine tre charge en mmoire.
Afin d'offrir d'avantage de souplesse, le noyau Linux intgre depuis sa version 2.0 la possibilit d'utiliser des
modules dont le code objet compil n'est pas directement insr dans l'image du noyau. Il est alors possible de
charger et de dcharger des modules chaud afin d'utiliser ponctuellement certains matriels ou fonctionnalits
proposes par le dit module, ceci peut rduire considrablement la taille du noyau en mmoire
5.2. Compilation et installation du noyau
5.2.1. Pourquoi recompiler son noyau ?
Afin de simplifier la mise en place des systmes GNU/Linux, de nombreuses distributions comme Mandriva
proposent un noyau dit gnrique.Il s'agit tout simplement d'un noyau intgrant un maximum de fonctionnalits
et de pilotes de priphriques, l'avantage tant la rduction des incompatibilits matrielles et donc de simplifier
la prise en main du systme.
La contrepartie tant la taille importante du noyau qui comprend des pilotes inutiles au systme. Il est alors pra-
tique de pouvoir reconfigurer son noyau afin de supprimer le superflu, de le rendre plus rapide et plus stable.
L'intrt de la recompilation de son noyau ne s'arrte pas l, il est galement possible de recompiler le noyau
Le noyau 59
afin de combler des failles de scurits ou d'intgrer des nouvelles fonctionnalits.
5.2.2. Les modules du noyau
Les modules sont des fonctionnalits du noyau compiles de manire pouvoir tre charges ultrieurement de
manire dynamique. Ceux-ci sont en thorie spcifiques une versionde noyau,il est toutefois possible que cer-
tains modules s'adaptent plusieurs versionsde noyaux, comme cest par exemple le cas des drivers NVIDIA ou
ATI.
Aprs la compilation, les modules sont copis dans le rpertoire /lib/modules/VERSION-DU-NOYAU/.
Il nexiste pas de rgle absolue quant au choix des drivers slectionner en tant que modules ou intgrer direc-
tement dans le noyau. Gnralement, il est conseill dinsrer dans le noyau toutes les fonctionnalits utilises
en permanence, comme par exemple le pilote du systme de fichiers, de la carte mre, du contrleur de disques
ou encore de la carte rseau.
5.2.3. Avant de commencer...
5.2.3.1. Connatre la version du noyau actuel
Figure 5.5. La commande uname -r
La commande uname permet dafficher des informations concernant la machine et le noyau. Ainsi pour afficher
la version de notre noyau on tapera :
[root@linux ~]# uname -r
2.6.12-12mdksmp
Le noyau 60
Les numros de version utilisent la convention suivante :
<majeur>.<mineur>.<rvision>
O <majeur> est le numro majeur de version qui n'volue, que lors de changement trs important et majeur du
noyau, donc trs rarement; <mineur> est le numro mineur,qui indique la srie en cours,et <rvision> le nombre
de corrections effectues.Par convention,un numro mineur pair (2.4, 2.6) dnote une version "stable", les ven-
tuelles rvisions ne contenant alors que les corrections de bugs mais jamais de nouveauts. Les numros mi-
neurs impair (2.3, 2.5) sont les versions de "dveloppement", dont les rvisions peuvent contenir tout le code
que les dveloppeurs dsirent ajouter. Lorsqu'une version de dveloppement atteint un niveau de stabilit et de
performances tel qu'elle peut tre mis a disposition de tous, elle est renomme:le numro mineur de version
(numro pair) est incrment et le cycle dedveloppement recommence.
Un nouveau cycle de dveloppement est apparu au sein de la branche 2.6 ( partir du noyau 2.6.8) : la branche
instable 2.7 n'est pour le moment pas utilise et le dveloppement se fait au sein mme de la branche stable 2.6.
Ceci permet l'apparition et l'intgration de nouvelles fonctionnalits plus rapidement dans le processus de dve-
loppement du noyau.
5.2.3.2. Rcuprer les informations sur son matriel
Il est important de connatre les spcifications matriels afin de compiler le noyau qu'avec les pilotes nces-
saires. Pour cela, deux commandes sont notre disposition.
5.2.3.2.1. La commande lspci
Figure 5.6. La commande lspci
La commande lspci affiche des informations sur tous les bus PCI de la machine et sur les priphriques bran-
chs dessus. Grce cette commande, nous pouvons connatre le modle ou le type de puces (chipset) de nos
Le noyau 61
1
http://www.kernel.org
priphriques. En effet, diffrents constructeurs utilisent parfois la mme puce, c'est pour cela qu'il existe par-
fois un mme pilote pour plusieurs marque de priphriques.
5.2.3.2.2. La commande lsmod
Figure 5.7. La commande lsmod
La commande lsmod affiche tous les modules chargs dans le noyau.
5.2.3.3. Environnement de dveloppement
Linstallation des outils de dveloppement est ncessaire avant de passer la compilation du noyau. Ces outils
incluent :
Le compilateur C gcc
Les outils make
La librairie libncurses (ncessaire pour pouvoir configurer le noyau en mode pseudo-graphique)
5.2.4. Compilation du noyau
5.2.4.1. Rcupration des sources du noyau
Les sources du noyau sont disponibles librement et gratuitement sur Internet. On peut les tlcharger depuis le
site officiel
1
.
Le noyau 62
Une fois l'archive rcupre, il faut la dcompresser. Par convention, on dcompresse l'archive dans le rpertoire
/usr/src. Toujours par convention, on cre un lien /usr/src/linux pointant vers le rpertoire contenant
les sources du noyau que l'on veut utiliser. Lors d'une compilation ultrieure de modules, ce lien permet de d-
terminer le noyau pour lequel on va compiler.
Exemple 5.1. Exemple de dcompression de noyau
[root@linux ~]# cd /usr/src
[root@linux ~]# wget http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.22.1.tar.bz2
[root@linux ~]# tar -xjvf linux-2.6.22.1.tar.bz2
[root@linux ~]# ln -s linux-2.6.22.1 linux
5.2.5. Configuration
Voici ltape la plus importante : la configuration du noyau. Cest maintenant que nous allons slectionner les
pilotes et les fonctionnalits que nous voulons.
Il existe deux faons de configurer son noyau. La premire consiste configurer le noyau depuis le dbut, la se-
conde est de rcuprer une ancienne configuration et de la mettre jour.
5.2.5.1. Configuration complte
Pour configurer le noyau, il faut se placer dans le dossier o se trouvent les sources et invoquer un utilitaire qui
va nous permettre de naviguer travers tous les menus. Il existe trois utilitaires intgrs, en mode console pseu-
do-graphique (make menuconfig), en mode graphique (make xconfig), en mode texte pur (make config).
[root@linux ~]# cd /usr/src/linux
[root@linux ~]# make menuconfig
Figure 5.8. Menu de configuration du noyau Linux
Le noyau 63
Il suffit ensuite de naviguer dans les menus et activer les options souhaites.
Exemple 5.2. Activation du support bluetooth
Il faut donc se dplacer dans la section adquate et cocher la ligne voulue :
Figure 5.9. Section concernant les pilotes de priphriques
Puis dans le menu Networking support :
Figure 5.10. Section concernant les pilotes de priphriques rseau
Enfin le support Bluetooth :
Figure 5.11. Le support du bluetooth est dsactiv
Le noyau 64
Activer le support du bluetooth en dur dans le noyau (touche y) :
Figure 5.12. Le support bluetooth est activ en dur
Note
Nous aurions tout aussi bien pu slectionner loption en tant que module du noyau (touche m) :
Une fois cela effectu, il ne reste plus qu sortir du menu de configuration en slectionnant plusieurs fois Exit
grce la touche TAB et Entre pour confirmer. La configuration du noyau sera alors sauvegarde dans le fi-
chier .config.
5.2.5.2. Rcupration de configuration
Si vous aviez dj configur une fois votre noyau et que vous souhaitez le mettre jour, il est possible de rcu-
prer lancienne configuration. Ainsi, vous n'aurez pas tout reconfigurer. La marche suivre est trs simple, il
suffit :
1. De copier le fichier .config depuis le rpertoire contenant les sources de votre ancien noyau vers celui
contenant le nouveau
2. D'excuter la commande make oldconfig
Exemple 5.3. Rcupration dune configuration prcdente se trouvant dans
/usr/src/linux-old :
[root@linux ~]# cd /usr/src/linux
[root@linux ~]# cp /usr/src/linux-old/.config .
[root@linux ~]# make oldconfig
Grce cette commande, le nouveau noyau se configurera comme le prcdent. En plus, cette commande vous
demandera si vous voulez activer ou non les nouvelles options apparues entre les deux versions du noyau, s'il y
en a.
5.2.6. Compilation
Le processus de compilation d'un noyau est trs simple, il suffit de saisir :
[root@linux ~]# make all
Le noyau 65
La commande make all permet de crer l'image du noyau ainsi que de compiler tous les modules additionnels.
la fin de cette tape, une image du nouveau noyau est disponible dans le rpertoire arch/<architecture
du processeur>/boot/sous le nom bzImage.
Note
Si le noyau a t compil sur une architecture de type PPC, le noyau se trouve directement dans le
rpertoire courant sous le nom de vmlinux.
[root@linux ~]# make modules_install
Peu importe larchitecture utilise, les modules sont copis dans :
/lib/modules/<version-du-noyau>.
Note
Il peut arriver qu'on ne veuille recompiler que les modules et pas l'image du noyau, par exemple si
l'on a juste ajout un module supplmentaire. Dans ce cas, au lieu de relancer le processus entier
de compilation, on peut demander ne compiler puis installer que les modules :
make modules && modules_install
Il ne reste plus qu faire en sorte que notre nouveau noyau soit charg au dmarrage la place de lancien. Ceci
est le rle dun programme appel bootloader (chargeur de dmarrage).
5.3. Installation du noyau
Pour finaliser linstallation de notre nouveau noyau, il faut copier l'image du noyau dans le rpertoire /boot et
puis configurer le bootloader pour prendre en compte le noyau nouvellement install.
5.3.1. Installation du noyau
Pour copier l'image du noyau, il y a deux options :
Soit copier manuellement l'image du noyau dans /boot.
[...]# cp arch/i386/boot/bzImage /boot/vmlinuz-<version-du-noyau>
Note
Comme vous pouvez le constater, il s'agit ici d'un noyau compil pour processeur de type x86
Le noyau 66
(Pentium 1-4/M, Athlon, etc.).
Soit lancer l'installation automatique (dconseill si vous avez une distribution exotique).
[root@linux ~]# make install
Cette commande copie l'image du noyau dans /boot et cre un lien /boot/vmlinuz pointant sur le noyau
et un deuxime lien,/boot/vmlinuz-old, qui pointe vers votre ancien noyau. Ainsi, au niveau de la
configuration du bootloader, vous pourrez indiquer les liens - qui ne changeront pas la prochaine version du
noyau - au lieu de la relle image du noyau.
5.3.2. Configuration du bootloader
5.3.2.1. Quest ce quun bootloarder ?
Le chargeur de dmarrage (ou BootLoader) est un programme lanc avant nimporte quel systme
dexploitation par le BIOS. Son rle est de charger le noyau du systme souhait. Il peut galement permettre
une slection interactive. Il en existe un certain nombre parmi lesquels on citera Grub et Lilo pour les architec-
tures x86 ou encore Silo pour SPARC ou yaboot pour PPC.
Note
Que se passe-t-il entre le moment o l'on allume sa machine jusqu'au moment o l'on entre son lo-
gin et mot de passe :
le BIOS effectue une srie de tests sur le matriel (RAM, dtection des disques, ...) nomm
POST : Power On Self Test. C'est pendant cette tape que l'utilisateur peut appuyer sur une
touche pour entrer dans le BIOS.
le bootloader est charg en mmoire, l'utilisateur peut alors choisir le systme dmarrer
le noyau linux est charg en mmoire par le bootloader, il s'initialise, dtecte les priphriques,
...
le noyau passe alors la main au programme sysvinit, souvent dnomm init, pre de tous les pro-
cessus. En effet c'est ce programme ayant comme PID 1, qui va lancer tous les services au d-
marrage.
init lance en dernier un terminal virtuel qui demande un login/password pour ouvrir un shell.
Nous nous intresserons ici Lilo et Grub.
5.3.2.1.1. Le chargeur Lilo
Le programme Lilo (LInux LOader) est spar en deux parties nommes stages :
Le noyau 67
le stage_1 est un petit programme (<= 512octets) pouvant tre plac dans le MBR (Master Boot Record) ou
une disquette. Ce stage fait appel au second qui ncessite plus d'espace mmoire.
le stage_2, appel chargeur d'amorage, est gnralement plac sur le disque dur.Il offre un menu permettant
la slection des systmes d'exploitations et de charger le noyau en RAM.
Le fichier de configuration lilo.conf se trouve dans /etc.
Exemple 5.4. Exemple de fichier de configuration de Lilo
#Emplacement du secteur de boot
boot = /dev/hda
#Temps dattente avant de dmarrer sur limage par dfaut
delay = 10
image = /boot/vmlinuz-2.6.8 # Emplacement de limage du noyau
# sur le disque.
label = Ancien noyau # Nom qui sera affich lors de la slection
# interactive au dmarrage
root = /dev/hda1 # Partition utiliser pour dmarrer
read-only
# La mme configuration mais pour un autre noyau
image = /boot/bzImage-2.6.10
label = Nouveau noyau
root = /dev/hda1
read-only
# Une entre pour un systme de type Windows
other = /dev/hda3
label = Windows
table = /dev/hda
Important
Une fois ce fichier modifi, il est impratif de relancer la commande Lilo pour que les change-
ments prennent effet.
5.3.2.1.2. Le chargeur Grub
Grub (GRand Unified Bootloader) est un bootloader bien plus rcent et bien plus performant. Son utilisation est
aussi plus simple, puisquune fois install il ne ncessite pas dtre rinstall dans le MBR chaque modifica-
tion de son fichier de configuration. Grub se configure gnralement dans le fichier /boot/grub/menu.lst
Note
Sous certaines distributions, le fichier de configuration de Grub peut tre /
boot/grub/grub.conf.
Le noyau 68
Exemple 5.5. Exemple de fichier de configuration de Grub
# Valeurs par dfaut
timeout 10 # Dmarre le noyau par dfaut au bout de 10secondes
default 0 # Noyau par dfaut
# section 0
title GNU/Linux # Titre
root (hd0,1) # Partition/dev/hda2 comme racine
kernel/boot/vmlinuz root=/dev/hda2 ro # noyau et paramtres
initrd/boot/initrd
boot
# Section 1
title Windows
root (hd0,2) # /dev/hda3
boot
Note
La syntaxe de Grub au niveau du nommage des disques et partitions diffre de celle utilise habi-
tuellement sous Linux. En effet, (hd0,0) correspond /dev/hda1, c'est dire la premire
partition du premier disque dur.
5.4. Gestion des modules
Les modules sont des fragments de code compils que l'on peut charger la vole dans le noyau. Les modules
sont chargs dans le noyau au dmarrage du systme par le programme hotplug. Les modules sont ensuite char-
gs selon les besoins, par exemple lorsqu'un nouveau priphrique est branch. Diffrentes commandes sont
connatre pour pouvoir grer les modules du noyau :
Tableau 5.1. Les commandes de gestion des modules
Commande Description
lsmod Permet de lister les modules actuellement chargs
dans le noyau. Cette commande permet galement de
distinguer les modules rellement en cours
d'utilisation
modprobe nom_du_module Permet de charger un module et ses ventuelles d-
pendances. Cette commande va directement chercher
les modules dans /lib/modules/<version du
noyau>/
insmod /chemin/vers/fichier.ko Charge le module pass en paramtre, sans grer les
dpendances.
rmmod nom_du_module Dcharge le module charg pass en paramtre.
Le noyau 69
Exemple 5.6. Chargement du module radeon
[root@linux ~]# modprobe radeon
ou bien
[...]# insmod /lib/modules/2.6.22-1-386/kernel/drivers/video/ati/radeon.ko
Exemple 5.7. Dchargement du module radeon
[root@linux ~]# rmmod radeon
Le noyau 70
Chapitre 6. Mettre en place un serveur
FTP avec ProFTPd
Table des matires
6.1. Introduction ..................................................................................................................71
6.2. Rappels sur le protocole FTP ............................................................................................71
6.3. FTP et la scurit ...........................................................................................................72
6.4. Introduction aux utilisateurs virtuels ..................................................................................72
6.5. Installation de ProFTPd ...................................................................................................72
6.5.1. Installation partir des sources ...............................................................................73
6.5.2. Options du script ./configure ...........................................................................73
6.6. Lancement du serveur Proftpd ..........................................................................................74
6.6.1. La configuration de Proftpd ...................................................................................74
6.6.2. Exemple de fichier de configuration ........................................................................75
6.6.3. La ligne de Commande .........................................................................................76
6.7. Gestion des Utilisateurs Virtuels .......................................................................................76
6.7.1. La commande ftpasswd .........................................................................................77
6.7.2. Les options de la commande ftpasswd ......................................................................78
6.7.3. Ajouter/Modifier un utilisateur Virtuel .....................................................................79
6.7.4. Changer le mot de passe d'un utilisateur virtuel ..........................................................79
6.7.5. Supprimer un utilisateur Virtuel ..............................................................................79
6.8. Administration du serveur ................................................................................................80
6.8.1. Lister les utilisateurs connects au serveur ................................................................80
6.8.2. Les fichiers de logs ..............................................................................................80
6.9. Utilisation de SSL/TLS ...................................................................................................80
6.9.1. Les Directives de Bases ........................................................................................80
6.9.2. Exemple de Configuration .....................................................................................81
6.10. Conclusion ..................................................................................................................82
6.1. Introduction
Proftpd, fait partie de la longue liste des nombreuses implmentations du protocole FTP qui existent sous Linux
comme: pure-ftpd, vsftpd, wu-ftpd, gl-ftpd et bien d'autres. On pourrait se demander pourquoi choisir Proftpd au
dtriment d'un autre ? Surtout que d'une faon gnrale les serveurs ftp actuels, possdent des fonctionnalits si-
milaires: Support d'utilisateurs et de groupes virtuels, gestion de la bande passante, chiffrement SSL/TLS, etc...
La particularit de Proftpd, qui se trouve tre un norme avantage, est qu'il s'inspire tant dans sa configuration
(fichier de configuration) que dans sa constitution (modularit, serveurs virtuels) du trs connu Serveur Web
Apache. L'utilisation de ce serveur tant un tel point rpandu, quelle facilite l'intgration de proftpd en entre-
prise. Intgration se faisant sans grand besoin d'adaptation.
L'un des autres avantages de proftpd est que l'accent a t mis, dans sa conception, sur la scurit, qui est actuel-
lement la procupation premire des entreprises.
6.2. Rappels sur le protocole FTP
71
Le protocole FTP (File Transfer Protocol) est un protocole de transfert de fichiers cr en 1971. A cette poque,
les questions relatives la scurit des donnes ntaient pas encore une proccupation majeure. De nos jours,
alors que lutilisation du protocole FTP est devenue trs rpandue, il prsente toujours de grosses lacunes de s-
curit car par dfaut, toutes les donnes passent en clair sur le rseau (login/mot de passe et donnes).
Le protocole FTP agit au niveau de la couche 7 du modle OSI, il est bas sur un modle client/serveur avec au-
thentification via login/mot de passe et coute par dfaut sur les ports 20 (donnes) et 21 (commandes).
6.3. FTP et la scurit
Dans la mesure o le protocole FTP fait transiter les donnes en clair sur le rseau, nimporte qui est en mesure
dintercepter un couple login/mot de passe. Voici donc quelques prcautions prendre lors de la mise en place
dun serveur FTP
Ne pas implmenter un serveur FTP dans un rseau non commut (un rseau contenant des Hubs).
Ne pas implmenter un serveur FTP sur un serveur comportant des services critiques (DNS, Mail...).
Ne pas implmenter un serveur FTP sur un serveur comportant des donnes critiques/confidentielles.
Bloquer le compte root afin qu'il ne puisse pas se connecter au serveur FTP.
Il existe galement des solutions utilisables pour renforcer la scurit :
L'utilisation d'utilisateurs virtuels (Voir ci-dessous).
Combiner le FTP avec le systme de cryptage SSL/TLS (Voir le cours sur l'authentification)
6.4. Introduction aux utilisateurs virtuels
Dans le cas o une personne mal intentionne parvient insrer le login/mot de passe d'un utilisateur (ceci est
dsastreux dans le cas du compte root), celui-ci aura accs non seulement au serveur FTP mais galement la
totalit du systme, via SSH ou tout autre moyen d'authentification distance.
Afin dviter cela, il est possible dutiliser des comptes d'utilisateur distincts des utilisateurs conventionnels,
pouvant se connecter uniquement via FTP. Toutes connexions locales, SSH... lui seront refuses. Cependant les
utilisateurs doivent possder un UID/GID pour que le systme puisse savoir si celui-ci a le droit de lire/crire tel
fichier/rpertoire.
Deux mthodes sont possibles :
On utilise pour le service FTP un compte systme (ftpuser par exemple) qui ne dispose ni de shell ni de mot
de passe. Tous les fichiers crs par le systme auront comme propritaire ce compte.
On utilise les utilisateurs virtuels : ainsi, on disposera dune base de comptes indpendante o les UID/GID
de cette base seront utiliss lors de la cration des fichiers
6.5. Installation de ProFTPd
Proftpd est prsent sur un ensemble de systmes Linux (Debian, Suse, Mandriva) et Unix (FreeBSD, OpenBSD,
Mettre en place un serveur FTP avec ProFTPd 72
1
ftp://ftp.proftpd.org/distrib/source
Solaris, AIX,..). L'installation, selon les plateformes peut avoir deux formes possibles, l'une (la plus connue) est
la compilation partir des sources, l'autre, offre la possibilit d'utilisation d'un systme de package.
Dans notre cas nous avons la possibilit d'utiliser notre programme de gestion de package, urpmi.
Afin d'avoir plus de renseignements concernant urpmi nouse vous invitons consulter le cours Installation de
Programmes.
6.5.1. Installation partir des sources
Nous allons prsent nous intresser l'installation via les sources.
La premire tape consiste rcuprer les sources sur le site officiel : ftp://ftp.proftpd.org/distrib/source
1
A l'heure o est crit ce document, les dernires versions du serveur proftpd sont la version stable 1.2.10 et la
version candidate 1.3.0.rc3.
Une fois tlcharg, la procdure d'installation est la suivante :
[root@linux ~]# tar xjvf proftpd-x.x.xxx.tar.bz2
[root@linux ~]# cd proftpd-x.x.xxx
[root@linux ~]# ./configure --option1 --option2 ...
[root@linux ~]# make
[root@linux ~]# make install
Par dfaut l'installation se fera dans le rpertoire /usr/local/.
Note
L'installation via l'utilitaire de package urpmi, mettra l'ensemble des fichiers dans /usr et les fi-
chiers de configuration dans /etc.
6.5.2. Options du script ./configure
Voici une partie des options acceptes par le script configure :
Tableau 6.1. Options du script ./configure de proftpd
Options Valeur par dfaut Description
--prefix=<rpertoire> /usr/local/proftpd Rpertoire dinstallation
-
-sysconf-
dir=<rpertoire>
$PREFIX/etc Rpertoire des fichiers de configu-
ration
--bindir=<rpertoire> $PREFIX/bin Emplacement des binaires utilisa-
teurs
--sbindir=<rpertoire> $PREFIX/sbin Emplacement des binaires sys-
Mettre en place un serveur FTP avec ProFTPd 73
Options Valeur par dfaut Description
tmes
--enable-autoshadow Active l'auto dtection des pass-
words shadows
--enable-auth-pam Active l'authentification PAM
--enable-timeout-login Active la limitation de temps im-
pose l'utilisateur pour enter son
login avant la fermeture de la
connection par le serveur.
Nous avons vu que la particularit de proftpd est qu'il est totalement modulaire. Ces modules sont gnralement
crs et inclus lors de la compilation via les directives --with-modules
Voici notamment l'ensemble des modules susceptibles de nous intresser:
Les modules sont spars par des ":"
Tableau 6.2. Modules pouvant tre compils dans proftpd
Options Effet
mod_auth Active l'utilisation des commandes d'authentification
FTP (Par dfaut)
mod_core Active l'utilisation des commandes FTP de configura-
tion (Par dfaut)
mod_log Active les fichiers de logs avancs (Par dfaut)
mod_authfile Active l'authentification par fichier (AuthUserFile,
AuthGroupfile (Par dfaut)
mod_auth_unix Active la liaison avec les Systme de mot de passe
d'Unix
mod_auth_pam Activation du module d'authentification PAM
(Automatiquement gr si support par le systme)
mod_tls Active le support du protocole SSL/TLS
6.6. Lancement du serveur Proftpd
Aprs l'installation du serveur proftpd, par exemple dans le cas d'une installation par l'utilitaire de packages urp-
mi.Il arrive que le serveur soit lanc de faon automatique. Le serveur, pour cela, possde une configuration par
dfaut. Dans le cas d'une installation par les sources, cette configuration devra tre ralise par vos soins.
6.6.1. La configuration de Proftpd
Le serveur Proftpd peut comme la plupart des services sous linux, se lancer de deux faons diffrentes, soit en
mode standalone, soit en mode xinetd. Par dfaut, il est configur pour tre lanc en mode Standalone. Ce, via la
directive ServerType de son fichier de configuration proftpd.conf.
ServerType Standalone
Mettre en place un serveur FTP avec ProFTPd 74
Il est rappeler que ce fichier de configuration s'inspire du fichier de configuration d'Apache et possde comme
lui des paramtres globaux "Base Settings" et des paramtres pour le serveur Parent "Base Server".
Comment le lancement se passe-t-il ?
Nous avons vu que proftpd, s'inspire dans la majorit de ses fonctionnalits du serveur Apache. En effet Apache,
est configur pour lancer, et ce, qu'il soit en mode Standalone ou xinetd, un serveur dit "Pre" qui son tour lan-
cera au fur et mesure des connexions clientes : des "Enfants"
Le nombre d'enfants pouvant tre crs par le serveur parent est contrl par la directive MaxInstances
Pour des raisons de scurit apparentes et afin d'empcher toutes attaques de type DoS (Denial of Services), les
serveurs pre et enfants ne doivent jamais tre lancs sous le compte root.
Ainsi sont dclares dans le fichier de configuration de ce dernier, deux directives User et Group qui dfini-
ront l'utilisateur et son groupe associ (ne possdant aucun droit sur la machine) utiliss pour lancer les serveur
la fois Pre et Enfants. D'une manire gnrale on utilise l'utilisateur www-data et son groupe associ.
User www-data
Group www-data
Le mme principe s'applique Proftpd, sauf que ces directives ne s'appliqueront ici qu'au serveur Pre et non
aux Enfants. Nous verrons comment pallier ce problme lorsque nous parlerons des utilisateurs virtuels. Pour
corriger la premire faille de scurit, il devient important de crer le couple utilisateur/groupe que le systme
doit utiliser pour lancer le serveur Pre. Ce couple tant nobody/nogroup.
Ces derniers existent normalement sur le systme, s'ils n'y sont pas, crez-les de cette faon :
[root@linux ~]# groupadd -g 65534 nogroup
[root@linux ~]# useradd -g nogroup -u 65534 -d /dev/null -s /bin/false nobody
6.6.2. Exemple de fichier de configuration
Voici un exemple du fichier de configuration du serveur proftpd :
Exemple 6.1. Fichier de configuration du serveur proftpd
#Nom du serveur
ServerName "Mandriva Proftpd Server"
#Mode de lancement
ServerType Standalone
#Spcifie le serveur de base
DefaultServer On
#Spcifie le nombre de serveurs enfants pouvant tre lancs de manire
#concurrente par le serveur pre.
MaxInstances 30
#Spcifie le mask par dfaut utilis par tout client se connectant
Umask 022
Mettre en place un serveur FTP avec ProFTPd 75
#Spcifie le couple utilisateur/groupe devant tre utilis pour le
#lancement du serveur principal
User nobody
Group nogroup
#Port
Port 21
#Permet de chrooter l'ensemble des clients dans leurs rpertoires
#personnels
#Elle est commente par dfaut
#DefaultRoot ~
6.6.3. La ligne de Commande
Proftpd se lance de cette manire :
[root@linux ~]# /usr/local/sbin/proftpd -option1 arg1 -option2 arg2....
Des options peuvent lui tre passes en ligne de commande. En voici un bref rsum.
Tableau 6.3. Options de dmarrage de proftpd
Options Effet
-n ou --nodaemon Dsactive le mode dmon du serveur
-d [level] Prcise le niveau (0 - 9) du mode de dbuggage
-t ou --configtest Teste la syntaxe du fichier de configuration
-l ou --list Liste l'ensemble des modules compils par dfaut
dans proftpd
-D [definition] ou --define Prcise une dfinition IfDefine arbitraire
6.7. Gestion des Utilisateurs Virtuels
Le dmon proftpd, ofre une API complte des possibilits d'authentification gnralement invisibles
l'utilisateur. Ces possibilits sont l'authentification PAM, LDAP, SQL, UserPassword, Password Files. Par d-
faut la solution utilise est celle avec PAM. Comme nous l'avons vu, cette solution modulaire est active par d-
faut, si le systme o est install proftpd utilise PAM.
Cependant, elle comporte quelques dfauts. En effet, nous avons vu dans l'introduction aux utilisateurs vituels,
que le fait qu'un serveur donne un accs ftp l'ensemble des utilisateurs authentifis du systme distant (ce que
fait proftpd) est un grave problme, encore plus dans le cas du compte root.
Cependant ce n'est pas tout, car proftpd, lors de toute connexion d'un client authentifi au serveur, cre un en-
fant qui possdera les droits de l'utilisateur authentifi. Ce problme est d'autant plus important dans le cas
d'attaques DoS, si c'est encore root qui se connecte.
Il est noter que le compte root n'est pas autoris par dfaut se connecter au serveur. L'accs lui sera permis
Mettre en place un serveur FTP avec ProFTPd 76
si la directive RootLogin est place "on" dans le fichier de configuration.
Toujours est-t-il que l'accs doit tre limit des utilisateurs non authentifis.
Exemple 6.2. Connexion de lutilisateur mandriva sur le serveur ftp linux2
[mandriva@linux ~]$ ftp linux2
gFTP 2.0.18, Copyright (C) 1998-2003 Brian Masney &lt;masneyb@gftp.org&gt;.
If you have any questions, comments, or suggestions about this program,
please feel free to email them to me.
You can always find out the latest newsabout gFTP from my website at
http://www.gftp.org/
gFTP comes with ABSOLUTELY NO WARRANTY; for details, see the COPYING file. This
is free software, and you are welcome to redistribute it under certain
conditions; for details, see the COPYING file
Username [anonymous]: mandriva
Password: xxxxxxxx
Looking up linux2
Trying linux2:21
Connected to linux 2:21
220 ProFTPD 1.2.10 Server (ProFTPD Default Installation) [192.168.0.5]
USER supinfo
331 Password required for mandriva.
PASS xxxx
230 User mandriva logged in.
SYST
215 UNIX Type: L8
TYPE I
200 Type set to I
PWD
257 "/home/mandriva" is current directory.
ftp>
Affichage sur le serveur linux2:
[root@linux2 ~]# ps aux | grep proftpd
nobody 2629 0.0 1.2 5580 2440 ? Ss 06:37 0:00 proftpd:
(accepting connections)
mandriva 3106 14.3 1.5 5888 2956 ? S 7:37 0.00 proftpd:
supinfo - 192.168.0.2: IDLE
Afin d'arranger tout cela, proftpd gre la cration dutilisateurs virtuels et ce, de diffrentes manires. Soit par
SQL, LDAP, PostrgreSQL, ServerRadius, soit les AuthUserFiles. Nous dcrirons dans ce qui suit la mthode la
plus utilise qui est celle des AuthUserFiles.
6.7.1. La commande ftpasswd
Les AuthUserFiles sont en fait une manire dporte d'identifier des utilisateurs virtuels, ne faisant pas partie de
la base des comptes systme /etc/passwd , mais ayant comme IDs, des IDs d'utilisateurs authentifis
n'ayant pas de droits rels sur la machine distante.
Ces utilisateurs sont crs grce au script perl ftpasswd qu'il est possible de rcuprer sur le site :
http://www.cataglia.org/proftpd
Mettre en place un serveur FTP avec ProFTPd 77
Cette commande permet la cration des fichiers ftpd.passwd et ftpd.goup qui auront les mmes rles et
la mme constitution que les fichiers /etc/passwd et /etc/group mais ici, appliqus aux utilisateurs
virtuels.
La cration des fichiers Auth via la commande ftpasswd est faite dans le rpertoire courant.
ll sera important d'ailleurs de renseigner le fichier /etc/proftpd.conf quant leur existence. Ce, via les
directives AuthUserFile et AuthGroupFile.
Exemple 6.3. Exemple d'utilisation des directives AuthUserFile et AuthGroupFile
AuthUserFile /etc/ftpd.passwd
AuthGroupFile /etc/ftpd.group
Format de ftpd.passwd
nom de l'utilisateur:mot de passe:uid:gid:commentaire:rpertoire personnel:shell
Format de ftpd.group
nom du groupe:mot de passe du group:gid:membre1,membre2,...membreN
Il sera notamment possible de crer/effacer/modifier un utilisateur manuellement dans les fichiers AuthUserFile.
Cependant, il est prfrable d'utiliser la commande ftpasswd.
6.7.2. Les options de la commande ftpasswd
Ces options sont passes via la ligne de commande :
[root@linux ~]# ftpasswd [options]
Voici les options les plus couramment utilises, lors de l'utilisation de la commande ftpasswd
Tableau 6.4. Options de la commande ftpasswd
Options Effet
--passwd Permet de crer le fichier ftpd.passwd
--group Permet de crer le fichier ftpd.group
--uid Permet de spcifier l'uid utiliser
--gid Permet de spcifier le gid utiliser
--file Permet de prciser une alternative aux fichiers
ftpd.passwd ou ftpd.group
--home Permet de spcifier le rpertoire home de l'utilisateur
Mettre en place un serveur FTP avec ProFTPd 78
Options Effet
--shell Permet de spcifier le shell de l'utilisateur
--name Permet de spcifier le nom de l'utilisateur virtuel
--m A utiliser conjointement avec --group afin
d'ajouter un utilisateur un group
6.7.3. Ajouter/Modifier un utilisateur Virtuel
Nous allons voir en dtails un certain nombre de commandes ncessaires l'administration de nos utilisateurs
virtuels.
La commande qui permet de crer un utilisateur virtuel s'appelant jean, ayant pour shell bash, pour rpertoire
home /home/jean et ayant l'uid de nobody est de la forme :
[root@linux ~]# ftpasswd --passwd --uid 65534 --gid 5534--home /home/jean \
--shell /bin/bash --name jean
Un mot de passe sera demand au prompt et sera encod au format md5 par dfaut
Une fois l'utilisateur cr, il faudra crer notamment et ce avec les bons droits, son rpertoire personnel.
L'opration n'tant pas ralise par dfaut.
[root@linux ~]# mkdir /home/tata
[root@linux ~]# chown -R 65534:65534 /home/tata
Pour modifier une information particulire d'un utilisateur virtuel, il faudra rutiliser la mme commande avec la
modification. L aussi, le mot de passe sera redemand.
Pensez utiliser l'option --file qui servira identifier le fichier o la modification doit tre effectue
Une fois que vous avez cr vos utilisateurs virtuels, n'oubliez pas que ces derniers ont la possibilit de remonter
dans l'arborescence. Afin de les chrooter dans leur rpertoire personnel, dcommentez la directive Documen-
tRoot ~ .
6.7.4. Changer le mot de passe d'un utilisateur virtuel
Afin de changer le mot de passe de l'utilisateur, il n'est pas ncessaire d'entrer nouveau la commande com-
plte. Seules quelques options seront utiliser :
[root@linux ~]# ftpasswd --passwd --file /etc/ftpd.passwd --name jean \
--change-password
6.7.5. Supprimer un utilisateur Virtuel
Afin de supprimer un utilisateur virtuel, utilisez une commande de la forme suivante :
[root@linux ~]# ftpasswd --passwd --name jean --delete-user
Mettre en place un serveur FTP avec ProFTPd 79
6.8. Administration du serveur
Le serveur proftpd est fourni avec un ensemble de commandes, ftpwho, ftpdctl, ftptop, ftpcount, permettant de
le configurer et avoir un ensemble d'informations sur les clients connects ce dernier.
6.8.1. Lister les utilisateurs connects au serveur
Les commandes permettant de lister l'ensemble des clients connects au serveur sont ftpwho et ftpcount. La
premire tant bien plus exhaustive que la seconde.
[root@linux ~]# ftpwho
standalone FTP daemon [2629], up for 36 min
3491 jean [0m23s] 0m20s idle
3493 tata [0m6s] 0m3s idle
[root@linux ~]# ftpcount
Master proftpd process 3484
0 users
6.8.2. Les fichiers de logs
L'ensemble des informations de connexion, d'upload, de download, de dbugages sont journalises. Proftpd
tant li par dfaut au dmon syslogd. Toutes les informations se rapportant tant aux serveurs de base qu'aux
serveurs enfants sont rpertories dans le fichier /var/log/syslogd. Cependant il est possible de spcifier
un autre fichier par les directives SystemLog et SyslogLevel.
Exemple 6.4. Exemple de directives de Logs
SystemLog debug
SyslogLevel /var/log/proftpd/proftpd.log
6.9. Utilisation de SSL/TLS
Lun des avantages de proftpd et de nombreux serveurs actuellement, est le support du protocole SSL/TLS, ga-
rantissant lchange des messages dans un tunnel scuris.
Ce support nest possible que si dune part le module mod_tls a t ajout en tant que module supplmentaire
lors de la compilation du serveur proftpd et dautre part si nous avons en notre possession un certificat auto-si-
gn avec sa clef prive.
Afin davoir de plus amples dtails concernant la cration de certificat auto-sign nous nous rfrerons le cours
openssl, librairie de cryptographie.
6.9.1. Les Directives de Bases
Mettre en place un serveur FTP avec ProFTPd 80
Voici les directives indispensables permettant de configurer proftpd en mode SSL/TLS.
Tableau 6.5. Directives de configuration du Support SSL/TLS
Directive Argument Description
Ifmodule on ou off (dfaut) Permet de vrifier si un module est
bien charg
TLSRSACertificateFile chemin vers un fichier de certificat Indique le chemin vers le fichier
contenant le certificat encod du
serveur, et optionnellement les cls
pour ce certificat
TLSRSACertificateKeyFile chemin vers un fichier de cl Permet de spcifier le chemin vers
les cls prives pour le serveur (cl
RSA ou DSA). Si vos cls sont
protges par des passphrases,
alors elles vous seront demandes
chaque dmarrage du serveur
TLSEngine on ou off (defaut) Permet de spcifier si le protocole
SSL doit tre utilis pour un hte
virtuel ou le serveur principal
TLSLog chemin vers le fichier de log Indique le chemin du fichier de
jounalisation des vnements lis
au support SSL/TLS
TLSProtocol Version du Protocol SSL/TLS Indique quelle version du protocole
SSL/TLS est utilise. Gnrale-
ment ce sont les versions: SSLv3 et
TLSv1
TLSRequired on ou off ( Par dfaut) ou ctrl ou
data
Indique si on active le support
SSL/TLS sur le port de donnes
(20) ou le port de contrle (21) ou
les deux ou pas du tout. Le choix
dpend du client utilis
TLSVerifyClient on ou off (Par dfaut) Tente dauthentifier le client pr-
sentant un certificat
6.9.2. Exemple de Configuration
Voici un extrait du fichier de configuration /etc/proftpd.confg avec le Support de SSL/TLS.
Exemple 6.5. Fichier de configuration du serveur proftpd
<IfModule mod_tls.c>
TLSEngine on
TLSLog /var/log/proftpd/proftpd_tls.log
TLSProtocol TLSV3
#Applique le tunnel ssl/tls sur le port 21
TLSRequired ctrl
#Certificat du serveur
TLSRSACertificateFile /etc/proftpd_server.cert.pem
TLSRSACertificateKeyFile /etc/proftpd_server.key.pem
Mettre en place un serveur FTP avec ProFTPd 81
#Ne pas vrifier les clients voulant s'authentifier avec
#le protocole SSL/TLS
TLSVerifyClient off
</IfModule>
6.10. Conclusion
Proftpd est un serveur complet possdant de nombreuses autres fonctionnalits : Virtual hosting, quota, gestion
de bande passante, qui sont plus utiles les unes que les autres. Il laisse une grande libert de configuration
l'administrateur, cette configuration se faisant sans trop de difficults. Il a assurment sa place dans le monde
dans l'entreprise.
Mettre en place un serveur FTP avec ProFTPd 82
Chapitre 7. Network File System (NFS)
Table des matires
7.1. Prsentation du NFS/RPC ................................................................................................83
7.1.1. Le protocole NFS ................................................................................................83
7.1.2. RPC ..................................................................................................................83
7.2. Installation d'un client/serveur NFS ...................................................................................84
7.2.1. La partie Noyau ...................................................................................................84
7.2.2. La partie logicielle ...............................................................................................85
7.3. Configuration du serveur .................................................................................................85
7.3.1. Modes synchrone et asynchrone .............................................................................86
7.3.2. Gestion des UID/GID ...........................................................................................86
7.3.3. Options de configuration de NFS ............................................................................88
7.4. Administration/Maintenance d'un serveur NFS ....................................................................89
7.4.1. Les diffrents daemons .........................................................................................89
7.4.2. Lancement et arrt du serveur NFS ..........................................................................89
7.4.3. Commandes d'administration et de maintenance ........................................................90
7.5. Utilisation du client NFS .................................................................................................92
7.5.1. Montage dun rpertoire distant ..............................................................................92
7.5.2. Montage dun rpertoire au dmarrage du systme .....................................................93
7.6. Conclusion ....................................................................................................................93
7.1. Prsentation du NFS/RPC
7.1.1. Le protocole NFS
Le protocole NFS (Network file system) a t mis en place par Sun Microsystems en 1984 dans le but de per-
mettre l'accs des ressources situes sur des htes distants. Le systme NFS permet de monter des volumes r-
seau dans larborescence du systme afin de permettre lutilisateur d'y accder de manire transparente.
7.1.2. RPC
NFS utilise la mthode de connexion RPC (Remote Procedure Call) galement invente par Sun Microsystems.
RPC dcrit une mthode de type client/serveur utilisant le format XDR (eXternal Data Representation) o
chaque service est reprsent par un numro indiqu dans le fichier /etc/rpc.
Figure 7.5. Extrait du fichier /etc/rpc
portmapper 100000 portmap sunrpc rpcbind
rstatd 100001 rstat rup perfmeter rstat_svc
rusersd 100002 rusers
nfs 100003 nfsprog
83
Le protocole RPC est bas TCP/IP, un serveur RPC va donc faire la correspondance entre le numro de service
RPC et le port TCP/UDP utiliser.
Lorsqu'un client se connecte au serveur RPC celui-ci lui envoie le numro de service auquel il veut accder et le
serveur lui renvoie le port associ.
Le client n'a donc pas besoin de connatre les dtails rseaux. Les serveurs RPC disponibles se nomment rpcbind
et portmap, ceux-ci coutent sur le port 111 TCP/UDP par dfaut. RPC se situe au niveau de la couche 5
(session) du modle OSI.
Figure 7.6. Les diffrentes tapes dune connexion en utilisant RPC
La commande rpcinfo permet de dialoguer avec un serveur RPC (visualisation des tables...).
[root@linux ~]# rpcinfo -p nom_dhte
7.2. Installation d'un client/serveur NFS
L'installation du client se droule de manire similaire celle du serveur. On peut distinguer deux parties :
La partie noyau (kernel land) : permet au noyau de prendre en charge le protocole NFS.
La partie logicielle (user land) : prend en charge la partie applicative.
7.2.1. La partie Noyau
Afin que le noyau puisse prendre en charge NFS, il est ncessaire dactiver le support du systme de fichiers
NFS dans le noyau. La partie concerne se trouve dans le menu de configuration du noyau :
File systems -> Network File Systems -> NFS file system support
Figure 7.8. Activation de NFS dans le noyau
Network File System (NFS) 84
Dans le cas d'un serveur NFS, il est galement ncessaire dactiver le support du serveur NFS dans le noyau. La
partie concerne se trouve dans le menu:
File systems -> Network File Systems -> NFS server support -> Provide NFSv3 server support
Figure 7.9. Activation support du serveur NFS dans le noyau
7.2.2. La partie logicielle
L'installation logicielle (NFS utils) permet d'obtenir les commandes clientes tudies plus loin ainsi que le dae-
mon NFS comprenant les scripts de dmarrage associs.
Il faut pour cela tlcharger l'archive sur le site http://nfs.sourceforge.net, la procdure d'installation est la mme
que pour les autres logiciels.
[mandriva@linux ~]$ ./configure && make
[root@linux ~]# make install
7.3. Configuration du serveur
Le fichier de configuration du serveur est : /etc/exports. Ce fichier contient tous les rpertoires partags lors du
dmarrage du service ainsi que les options qui leurs sont associes.
le format est le suivant:
rpertoire host1(options1,option2,...optionN)
host2(option1,option2,...optionN)
....
hostn(option1,option2,...optionN)
"rpertoire" correspond au rpertoire partag
Network File System (NFS) 85
"host1(options)...." correspond aux machines qui ont le droit d'accder ce rpertoire. Les options indiquent
de quelles manires les htes vont se connecter (Voir plus loin dans ce chapitre).
Comme vous pouvez le remarquer NFS se base UNIQUEMENT sur le nom de machine (ou l'adresse IP), cela
est prendre en compte lors de l'tablissement des politiques de scurit.
Astuce
Il est possible dutiliser l'oprateur '*' afin de spcifier que tout le monde a le droit de se connecter
au rpertoire *(options)
7.3.1. Modes synchrone et asynchrone
Ces deux modes dfinissent la manire de communiquer entre le client et le serveur.
7.3.1.1. Le Mode Synchrone
C'est la valeur par dfaut, lorsquun utilisateur effectue une opration (copie, modification, cration...), celle-ci
est traite directement par le serveur.
Avantage : Scurit
Inconvnient : Lenteur
7.3.1.2. Le Mode Asynchrone
Lorsqu'un utilisateur effectue une opration (copie, modification, cration...), celle-ci est mise en "tampon", c'est
dire que le serveur rend la main avant d'avoir effectu l'opration (avant mme d'avoir crit le fichier ou autre
sur le disque).
Avantage : rapidit pour l'utilisateur
Inconvnient : dangereux, en cas de problme, lutilisateur na aucune certitude que les changements ont bien
t pris en compte.
7.3.2. Gestion des UID/GID
Network File System (NFS) 86
Note
L'UID (User Identifier) : numro unique sur le systme reprsentant un utilisateur unique (un utili-
sateur possde un seul UID et un UID correspond un seul utilisateur). Le GID (Group Identifier)
: identique l'UID sauf qu'il s'applique pour les groupes. L'UID du super utilisateur 'root' est gal
0. Le GID du groupe 'root' est gal 0
Comme nous l'avons vu prcdemment, NFS se base sur le nom des machines, il faut donc trouver un moyen de
grer les permissions ainsi que l'appartenance des ressources. Pour cela NFS se base sur l'UID/GID du client.
Pour cela, le serveur NFS prend en compte lUID de lutilisateur connect sur le client.
Exemple 7.1. Prise en compte de L'UID
Si le client fait des manipulations sur le serveur NFS avec le compte user1 (il s'agit du compte avec lequel la
personne s'est connecte sur son poste de travail) qui a comme UID 1001, le serveur NFS le considrera comme
utilisateur 1001 local (cela peut pointer sur un autre utilisateur).
Note
Bien que cela puisse apparatre simplet, il faut garder lesprit que NFS a t cr pour des r-
seaux de type serveurs/terminaux o les UID taient partout les mmes.
Pour pallier ce problme , NFS propose la possibilit d'imposer un UID/GID tous les utilisateurs qui se
connectent un rpertoire (partage), on appelle cela un UID/GID anonyme (par dfaut cest la valeur -2 qui est
utilise, soit 65534).
Cela signifie que si l'UID et le GID anonyme du partage X sont configurs pour tre 4242/2121, tous les fichiers
crs par les utilisateurs se connectant sur ce partage recevront l'UID/GID propritaire 4242/2121. Cette direc-
tive s'applique tous les utilisateurs sauf root, pour celui-ci une directive spciale permet d'indiquer que les uti-
lisateurs se connectant avec un UID gal 0 reoivent l'UID anonyme.
Figure 7.14. Gestion des UID/GID avec NFS
Network File System (NFS) 87
7.3.3. Options de configuration de NFS
Tableau 7.1. Les options de configuration du serveur NFS
Option Description
rw Le client a les droits dcriture
ro Le client a seulement les droits de lecture
async Active le mode asynchrone
sync Active le mode synchrone (dfaut)
anonuid Spcifie lUID des utilisateurs anonymes
anongid Spcifie le GID des utilisateurs anonymes
all_squash Tous les utilisateurs (sauf root) rcuprent l'UID ano-
nyme
no_all_squash Les utilisateurs gardent leur UID (dfaut)
root_squash Lutilisateur root rcupre lUID anonyme (dfaut)
no_root_squash Lutilisateur root garde son UID (dangereux)
Network File System (NFS) 88
Note
Il existe de nombreuses autres options de configuration. Pour en obtenir la liste complte, regardez
le manuel d'exports : man exports
Exemple 7.2. Fichier /etc/exportfs
/ftp/datas client1(rw,anonuid=1004,anongid=1006) client2(ro,async)
/cours *(ro)
L'arborescence /ftp/datas est accessible par les clients client1 (lecture/criture, UID anonyme=1004 et GID
anonyme=1006) et client2 (lecture seule).
L'arborescence /cours est accessible par tout le monde en lecture seule.
Astuce
Il est possible de spcifier une adresse IP la place du nom de machine.
7.4. Administration/Maintenance d'un serveur NFS
7.4.1. Les diffrents daemons
Voici les diffrents daemons ncessaires au bon fonctionnement du serveur NFS :
Tableau 7.2. Les daemons du serveur NFS
daemon Description
portmap Le daemon portmap permet de faire la correspon-
dance numro RPC/Port (voir partie 2)
rpc.mountd Le daemon rpc.mountd ralise le montage demand
par un client
rpc.nfsd Le daemon nfsd excute les requtes NFS
rpc.statd Ce daemon rcupre des statistiques (Voir plus loin
dans le cours)
7.4.2. Lancement et arrt du serveur NFS
Network File System (NFS) 89
Les diffrents daemons cits prcdemment doivent tous tres dmarrs. Pour cela, un script est copi dans /
etc/init.d lors de linstallation des nfs-utils. Ce script se nomme nfs.
La syntaxe utiliser est la suivante :
[root@linux ~]# /etc/init.d/nfs opration
Voici les diffrentes oprations supportes par le script :
Tableau 7.3. Les diffrentes oprations supportes par le script /etc/init.d/nfs
Opration Effet
start Dmarrage des daemons
stop Arrt des serveurs
restart Redmarrage et arrt des serveurs
status Affiche ltat des daemons
Note
Selon la distribution utilise d'autres options peuvent tre disponibles
Exemple 7.3. Lancement du serveur NFS
Lancement du serveur NFS :
[root@linux ~]# /etc/init.d/nfs start
7.4.3. Commandes d'administration et de maintenance
7.4.3.1. La commande exportfs :
La commande exportfs permet de manipuler les partages chaud (lorsque que le serveur NFS est lanc).
Cette commande permet de dsactiver, activer (on parle aussi d'exportation), modifier et ajouter des partages.
Voici une liste des options les plus couramment utilises :
Tableau 7.4. Options de la commande exportfs
Option Effet
-a Exporte tous les partages contenus dans /
etc/exports
Network File System (NFS) 90
Option Effet
-u Dsactive un partage
-ua Dsactive tous les partages contenus dans /
etc/exports
-o Permet de spcifier des options
Exemple 7.4. Ajout dun nouveau partage sans redmarrage du service-in de
redmarrer le service NFS
[root@linux ~]# exportfs -o option1,option2 host:/repertoire
Les options sont les mmes que celles du fichier /etc/exports.
Exemple 7.5. Utilisation de la commande exportfs
Cette commande ajoute le rpertoire /data pour la machine host1 avec comme
options rw et async.
[root@linux ~]# exportfs -o rw,async host1:/data
7.4.3.2. La commande showmount
La commande showmount permet d'afficher les rpertoires partags d'un serveur NFS ainsi que les machines
ayant le droit d'y accder.
Syntaxe :
[mandriva@linux ~]$ showmount -e hostname
Exemple 7.6. Utilisation de la commande showmount
[mandriva@linux ~]$ showmount -e localhost
Export list for localhost:
/data STS.esi-supinfo.com,localhost
7.4.3.3. La commande nfsstat
La commande nfsstat est utilise pour afficher des statistiques NFS et RPC rcupres par le daemon rpc.statd :
Network File System (NFS) 91
Tableau 7.5. Options de la commande nfsstat
Option Effet
-s Affiche uniquement les statistiques du serveur
-c Affiche uniquement les statistiques du client
-n Affiche uniquement les statistiques NFS
-r Affiche uniquement les statistiques RPC
Note
D'autres options sont disponibles et consultables dans la page de manuel de ces commandes : man
<commande>
7.5. Utilisation du client NFS
La partie client de NFS est en charge du montage/dmontage des partages depuis un serveur NFS distant.
7.5.1. Montage dun rpertoire distant
Pour cela, la commande utiliser est mount. Il faut au pralable connatre l'IP ou le nom du serveur ainsi que le
rpertoire monter (cf. commande showmount).
Syntaxe :
[root@linux ~]# mount -t nfs -o options serveur:/partage /point_de_montage
Tableau 7.6. Options de la commande mount dans le cas dun montage NFS
Option Effet
fg Si le montage choue les tentatives suivantes se feront
en avant-plan (dfaut)
bg Si le montage choue les tentatives suivantes se feront
en arrire-plan
rw Monte le partage en read/write (lecture criture)
(dfaut)
ro Monte le partage en read only (lecture seule)
suid Autorise lutilisation de programmes suid (dfaut)
nosuid Interdit lutilisation de programmes suid (dfaut)
hard En cas dchec, recommence lopration jusqu sa
russite (dfaut)
soft Abandonne lopration en cas dchec
Network File System (NFS) 92
Les options du serveur sont prioritaires face celles du client : si le serveur permet client1 de monter /data
en Read Only (lecture seule) et que le client monte en Read/Write (lecture/criture), alors le partage sera mont
en Read Only.
Exemple 7.7. Montage NFS manuel
Le rpertoire /data de la machine 'server' sera mont dans /mnt/nfs en
readonly/nosuid.only/nosuid.
[root@linux ~]# mount -t nfs -o ro,nosuid server:/data /mnt/nfs/
7.5.2. Montage dun rpertoire au dmarrage du systme
Pour monter un rpertoire au dmarrage du systme, il est ncessaire dajouter une entre dans le fichier /
etc/fstab (comme pour les priphriques locaux).
Syntaxe :
serveur:/partage /point_de_montage nfs options 0 0
'options' correspond aux options cites ci-dessus, il est important de laisser le dump/pass 0 (ne pas vrifier
l'intgrit du rpertoire NFS chaque dmarrage).
Exemple 7.8. Montage NFS automatique
server:/data /mnt/nfs nfs ro,nosuid 0 0
7.6. Conclusion
NFS est un systme de partage robuste et qui a t longtemps prouv. Son implmentation souffre, malgr
toutes ces annes, d'un systme d'authentification. Cependant il reste toujours flexible et s'apprte particulire-
ment aux environnements htrognes.
Network File System (NFS) 93
Chapitre 8. Gestion du RAID
Table des matires
8.1. Les priphriques loop ....................................................................................................94
8.1.1. Introduction aux priphriques loop ........................................................................94
8.1.2. Manipulation des priphriques loop .......................................................................94
8.1.3. Cration d'un fichier loop ......................................................................................95
8.1.4. Associer le fichier une entre dans /dev .................................................................95
8.2. Introduction au RAID .....................................................................................................96
8.3. Le RAID matriel ...........................................................................................................97
8.4. Mise en place du RAID logiciel ........................................................................................97
8.4.1. Prparation du noyau ............................................................................................97
8.4.2. Installation de mdadm ...........................................................................................98
8.4.3. Prparation des disques .........................................................................................98
8.4.4. Nommage des priphriques RAID .........................................................................99
8.5. Utilisation et configuration du RAID logiciel .......................................................................99
8.5.1. Mise en place d'un RAID 1 ....................................................................................99
8.5.2. Mise en place d'un RAID 5 .................................................................................. 100
8.5.3. Mise en place d'un RAID 0+1 .............................................................................. 101
8.5.4. Le fichier /etc/mdadm.conf .................................................................................. 102
8.6. Maintenance et surveillance ........................................................................................... 102
8.6.1. Ajout et retrait d'un priphrique chaud ............................................................... 102
8.6.2. Surveiller ses priphriques Raid .......................................................................... 103
8.7. L'utilitaire DiskDrake ................................................................................................... 105
8.1. Les priphriques loop
8.1.1. Introduction aux priphriques loop
Les priphriques loop permettent d'associer un fichier un priphrique, pour pouvoir par la suite traiter son
contenu comme s'il s'agissait d'un disque dur et ainsi disposer de tous les utilitaires y ayant trait (cration de sys-
tme de fichier, mise en place du RAID logiciel, etc.). Ils sont accessibles par le biais du systme de fichier vir-
tuel mont dans /dev, sous les noms de /dev/loop[0-7].
8.1.2. Manipulation des priphriques loop
Maintenant que nous avons appris ce qu'tait un priphrique loop, nous allons nous pencher sur leur manipula-
tion. Nous allons apprendre utiliser l'utilitaire losetup. Ce dernier va nous permettre de :
mettre en place
obtenir des informations
supprimer
trouver le prochain priphrique loop libre
Cet utilitaire s'utilise de la manire suivante :
94
pour obtenir l'aide intgre :
[root@linux ~]# losetup --help
pour mettre en place /dev/loop0 avec le fichier fichier.loop (pralablement cr - voir au paragraphe
suivant) :
[root@linux ~]# losetup /dev/loop0 fichier.loop
pour obtenir les informations relatives au priphrique /dev/loop0 :
[root@linux ~]# losetup /dev/loop0
/dev/loop0: [0305]:426407 (fichier.loop)
supprimer l'association cre plus haut :
[root@linux ~]# losetup -d /dev/loop0
8.1.3. Cration d'un fichier loop
Maintenant que nous avons vu les manipulations de base sur les priphriques loop, nous allons nous intresser
la cration du fichier qui va en ralit contenir les informations du "disque virtuel". Nous allons pour cela utili-
ser la commande dd, qui permet de crer un nouveau fichier avec un paramtrage fin partir de n'importe quel
priphrique ou fichier.
Nous spcifierons comme source (if - input file) /dev/zero, un priphrique qui renvoi toujours des octets
vides.
Nous spcifierons comme sortie (of - output file) notre fameux fichier loop, que nous appellerons fi-
chier.loop.
Nous spcifierons comme taille de block (bs) 1024, ce qui correspond 1ko.
Enfin nous spcifierons le nombre de block copier : ici environ 10Mo, soit 10000.
Pour cela il faut taper la commande suivante :
[mandriva@linux ~]$ dd if=/dev/zero of=fichier.loop bs=1024 count=10000
Nous disposons maintenant d'un fichier d'une dizaine de megaoctets pour travailler.
8.1.4. Associer le fichier une entre dans /dev
Maintenant que nous avons cr un fichier loop, nous allons l'associer une entre dans /dev.
Pour cela nous devons utiliser la commande losetup, vu au paragraphe 2.
On commence par rcuprer le premier priphrique loop libre.
Gestion du RAID 95
[root@linux ~]# losetup -f
/dev/loop0
Il suffit ensuite d'associer le fichier au priphrique comme au paragraphe 2 :
[root@linux ~]# losetup /dev/loop0 fichier.loop
On peut maintenant tester :
[root@linux ~]# losetup /dev/loop0
/dev/loop0: [0305]:426407 (fichier.loop)
8.2. Introduction au RAID
En 1987, les chercheurs de l'universit de Berkeley ont proposs cinq niveaux de RAID (les niveaux 1, 2, 3, 4 et
5). Depuis d'autres niveaux ont t implments comme le RAID 6 et le RAID 7. Les niveaux JBOD et 0 sont
aussi considrs comme des modes de RAID bien qu'ils n'implmentent pas de redondance des donnes (le 'R'
de RAID signifie Redundant c'est dire redondance). Le RAID 0 et le JBOD sont d'ailleurs prsents en stan-
dard sur toutes les cartes RAID du march. Ces modes (niveaux) de RAID sont considrs comme des modes
simples.
Il est galement possible de crer des niveaux de RAID combins. Le but de cette technologie est de remplacer
les coteux disques de 6.5 pouces et de 9.5 pouces (ces disques sont aussi appels disques grands systmes )
qui quipent les gros serveurs (comme les serveurs de fichiers) par des ensembles forms de disques de 3.5
pouces plus rpandus et beaucoup moins chers. Cela explique pourquoi l'acronyme RAID signifie aussi Redun-
dant Array of Inexpensive Disks.
Cette technologie est principalement utilise dans le domaine de l'entreprise pour scuriser ou bien pour aug-
menter les performances des serveurs. Elle est parfois mise en place avec d'autres technologies telles que le clus-
tering afin d'obtenir des performances encore plus grande ou bien d'avoir une scurit maximale. Cependant, le
RAID se popularise rapidement par le biais des cartes d'extension (par exemple les cartes au format PCI 32 bits)
et des chipsets intgrs au sein des cartes mres grand public (ex. : le chipset sud Intel ICH5R). Gnralement
les contrleurs RAID que l'on trouve sur le march du matriel grand public sont trs limits par rapport aux
contrleurs RAID haut de gamme (niveaux RAID supports rduit au RAID 0 et 1, pas de mmoire cache int-
gre au contrleur). Le but du RAID est de rassembler plusieurs disques durs physiques en une seule unit lo-
gique. C'est dire que pour plusieurs disques utilisant la technologie RAID, le systme d'exploitation ne verra
qu'un seul disque que l'on pourra qualifier de disque virtuel . Le RAID fonctionne donc grce un ensemble
(ou agrgat) de disques.
Il existe plusieurs niveaux (ou configuration) de RAID qui rassemblent diffremment les donnes sur l'ensemble
des disques. En fonction du niveau de RAID slectionn on peut :
additionner la capacit des disques durs pour former un disque virtuel plus grand.
obtenir un disque virtuel plus performant.
mettre en place la tolrance de panne (c'est dire scuriser les donnes, mais ne remplace pas la sauvegarde).
augmenter la capacit, les performances et la scurit.
La technologie RAID peut tre mise en place au niveau matriel ou niveau logiciel. Elle fonctionne avec des
disques durs utilisant l'interface PATA (Parallel Advanced Technology Attachment), SATA (Serial Advanced
Gestion du RAID 96
Technology Attachment) ou bien SCSI (Small Computer System Interface).
8.3. Le RAID matriel
Le RAID matriel fonctionne indpendamment du systme : Un composant matriel (gnralement une carte
d'extension PCI) appeler "contrleur RAID" va s'occuper de grer les disques de la grappe grce son propre
processeur et de la mmoire integre, ainsi qu'une batterie de secours.
Dans le cas d'un RAID matriel, il suffit donc de brancher les diffrents disques sur le contrleur, ce qui va si-
muler au niveau du SE un seul grand volume, qu'il vous faudra formatter.
Avantages du RAID matriel :
Simple mettre en place.
Certains constructeurs fournissent le support.
Dtection des dfauts de disque.
Remplacement chaud (hotswapping).
Charge systme allg, les tests de cohsion sont effectus sans utiliser de ressources systmes.
Transparent pour le systme.
Dsavantages du RAID matriel :
Chaque marque de contrleur possde au niveau du firmware son propre systme de gestion du RAID qui se-
ra pas compatible avec celui du concurrent.
Le matriel des contrleurs peuvent tre moins puissant que celui du systme, le RAID logiciel sera donc pr-
frable dans ce cas (par exemple, lors de la mise en place d'un RAID 0).
Coteux mettre en place
Interface du BIOS du contrleur pas trs "user-friendly" par rapport une GUI.
8.4. Mise en place du RAID logiciel
8.4.1. Prparation du noyau
L'implmentation du RAID sous Linux ncessite une prise en charge du noyau. Il est ncessaire de cocher le
support du RAID dans le noyau. Pour cela il faut se rendre dans le menu Device Drivers => Multi-Device sup-
port, cocher le support du RAID ainsi que les niveaux de RAID souhaits. Puis recompiler le noyau (ou les mo-
dules si le support du RAID a t coch en module).
Figure 8.7. Configuration du noyau pour le RAID
Gestion du RAID 97
8.4.2. Installation de mdadm
Vous devez galement installer mdadm (partie userland (qui ne dpend pas du noyau) du RAID) qui est dispo-
nible l'adresse suivante : http://cgi.cse.unsw.edu.au/~neilb/mdadm.
Ou alors par le centre de contrle Mandriva.
Le RAID l'aide de mdadm ne se configure pas dans un fichier, mais l'aide de la commande qui vous permet-
tra de crer vos disques logiques et de les administrer.
Avertissement
un fichier est quand mme utilis mais est cr aussi grce la commande mdadm.
Nous allons voir comment crer des partitions RAID de niveau 0, 1 et 5.
8.4.3. Prparation des disques
Pour mettre en place du RAID logiciel, nous devons tout d'abord crer des partitions sur nos disques qui vont
servir stocker les donnes de nos partitions RAID. Pour cela nous utiliserons fdisk comme pour crer des par-
titions sur les disques, mais au lieu de choisir le type 83 (Linux), nous devons choisir le type FD qui reprsente
des partitions Linux RAID Autodetect .
Important
Attention, il ne faut crer qu'une seule partition par disque, nous risquerions sinon de perdre tout
l'intrt du RAID savoir la tolrance de panne et/ou la performance.
Gestion du RAID 98
8.4.4. Nommage des priphriques RAID
Les partitions de RAID sont dsignes par les fichiers spciaux :
/dev/mdX
O X est un numro reprsentant la partition de RAID voulue. Ce numro est compris entre 0 et 15 inclus. Nous
pouvons donc avoir 16 partitions de RAID logiciels au maximum.
Avertissement
il n'y a pas besoin de partitionner son disque en RAID logiciel. Ils doivent tre utiliss directement
comme des partitions.
8.5. Utilisation et configuration du RAID logiciel
8.5.1. Mise en place d'un RAID 1
Un systme RAID 1 duplique les donnes sur tous les disques. Tout comme le RAID 0, le RAID 1 ncessite un
minimum de deux disques durs pour fonctionner. Les disques ont un contenu identique ce qui implique une
perte d'espace proportionnelle au nombre de disques rajouts. En effet, si on met 3 disques de 40 Go en RAID 1,
alors les 40 Go cris sur le disque 1 seront copis sur les deux autres disques. On perdra donc 2 * 40 = 80 Go
d'espace disque sur la capacit totale des 3 disques (120 Go). En cas de dysfonctionnement de l'un des disques
durs (cela arrive frquemment sur des serveurs recevant beaucoup de requtes par secondes), le contrleur
RAID utilisera alors uniquement les disques en tat de marche.
Le RAID 1 apporte donc la tolrance de pannes. L'utilisation du RAID 1 est particulirement recommande sur
des serveurs stockant des donnes sensibles qui doivent rester fonctionnels 24 heures sur 24.
Lorsque l'on met en place un RAID 1 avec des disques durs de capacits diffrentes, alors la capacit de sto-
ckage de l'ensemble en RAID 1 sera celle du disque de plus faible capacit. Lorsqu'un accs en lecture est rali-
s sur un ensemble de disques en mode RAID 1, alors tous les disques lisent chacun une partie de la donne ce
qui amliore grandement les performances en lecture. En revanche lors de l'criture sur un ensemble de disques
RAID 1, les performances ne sont pas amliores. En effet, les disques vont crire les donnes de faon syn-
chronise et ce au fur et mesure que les donnes vont arriver au contrleur. Le travail lors d'un accs en cri-
ture n'est donc pas divis entre les disques mais est commun tous les disques.
Le dbit en criture d'un ensemble RAID 1 est donc le mme que celui d'un disque seul. C'est pourquoi dans un
ensemble RAID 1, contenant 5 disques les accs en lecture seront grandement amliors alors que les accs en
criture stagneront. Le but du RAID 1 est d'offrir une scurit maximale aux donnes stockes sur une machine.
C'est pourquoi certaines cartes RAID incluent plusieurs contrleurs RAID (un par disque) afin qu'en dpit de la
perte d'un contrleur les donnes soient toujours accessibles. Dans ce cas on parle de duplexing . Il existe
donc bien deux types de RAID 1 diffrents. Le duplexing tant mconnu et trs peu utilis, une certaine
confusion s'est cre propos du RAID 1. En effet, mirroring n'est pas synonyme de RAID 1.
Nous allons maintenant mettre en place un RAID 1 (mirroring) sur les partitions /dev/sdb1 et /dev/sdc1
et utiliser la partition /dev/sdd1 en disque de spare. La commande pour crer notre RAID est donc la sui-
vante :
[root@linux ~]# mdadm --create /dev/md0 --level=1 --raid-devices=2 \
/dev/sdb1 /dev/sdc1 --spare-devices=1 /dev/sdd1
Gestion du RAID 99
Les nouvelles options sont donc :
--spare-devices=X : prcise le nombre de disques de spare
/dev/sdd1 : tel que prcdemment pour l'option --raid-devices, cela reprsente la partition utiliser
pour le disque de spare. Il en faut autant que prcis dans l'option --spare-devices
Note
Les disques de spare sont utiliss en complment du RAID. On les appelle galement disque de
rechange : Ils ne sont pas utiliss au quotidien et prennent immdiatement le relais lorsqu'un
disque de la grappe tombe en panne ; il est alors compltement reconstruit partir des donnes
prsentes sur les autres disques, jusqu' qu'il soit compltement fonctionnel. Il suffit alors de
remplacer le disque dfectueux qui deviendra alors, disque de spare son tour.
Les diffrentes options utilisables pour --level sont :
1
raid1
mirror
8.5.2. Mise en place d'un RAID 5
Ce mode utilise au moins trois disques durs, il procure une augmentation des performances et gre la perte d'un
disque dur. Par rapport au RAID 4, la configuration RAID 5 rpartie la parit sur l'ensemble des disques ce qui
limine le goulot d'tranglement qu'est le disque de parit en RAID 3 et en RAID 4. Un autre avantage de rpar-
tir la parit sur chacun des disques est que les disques travaillent tous autant. Cela empche l'usure prmature
de l'un des disques (comme c'est le cas avec le disque de parit en RAID 3 et surtout en RAID 4). Le RAID 5
crit donc simultanment les donnes sur plusieurs disques ce qui amliore les performances en lecture et en
criture. Ainsi par rapport un disque seul, les performances d'une grappe RAID 5 utilisant n disques seront
(n-1) fois plus leves (en effet, l'un des disques doit crire la parit, la donne crite est donc rpartie sur les n-
1 disques restants). Tout comme pour le mode RAID 0, on doit slectionner une taille de segment adapte
lorsque l'on met en place un niveau RAID 5. De par ses nombreux avantages le RAID 5 est trs populaire dans
le monde professionnel car il apporte la tolrance de panne tout en conservant d'excellentes performances en
lecture et en criture. De plus si on utilise une interface qui supporte le branchement chaud ou "hot plug"
(SCSI ou Sata), il n'est mme plus ncessaire d'teindre le serveur. Bien entendu la mise en place d'un ensemble
RAID 5 fait perdre de l'espace disque (en fait l'espace rserv la parit qui reprsente la taille d'un disque). De
plus la rpartition de la parit sur l'ensemble des disques entrane une remise en ordre un peu lente lorsqu'un
disque dur est chang suite une panne.
Nous allons mettre en place un RAID 5. Pour cela il nous faut au minimum 3 disques, nous utiliserons sdb1,
sdc1 et sdd1 en tant que disques de RAID et sde1 en tant que disque de spare. Nous allons donc utiliser la
commande suivante pour crer notre disque de raid :
[root@linux ~]# mdadm --create /dev/md0 --level=raid5 --raid-devices=3 \
/dev/sdb1 /dev/sdc1 /dev/sdd1 --spare-devices=1 /dev/sde1
Gestion du RAID 100
Nous pouvons alors formater notre disque de RAID :
[root@linux ~]# mke2fs -j /dev/md0
Il est possible d'accder au disque en tapant :
[root@linux ~]# mount /dev/md0 /mnt/temp
8.5.3. Mise en place d'un RAID 0+1
Les niveaux de RAID offrent un large choix d'alternatives qui permettent de choisir un rapport performance/scuri-
t diffrent. Il est aussi possible de combiner deux niveaux de RAID entre eux. On parle alors de niveaux com-
bins. Certaines cartes permettent de combiner diffrents modes (ou niveaux) RAID en hardware mais elles sont
chres mis part les cartes RAID IDE d'entres de gamme qui grent toutes le RAID 01 ou 10 selon les cas. Ce-
pendant ces dernires ne sont pas intressantes pour raliser des combinaisons tant donn que ces cartes bas
de gamme n'intgrent qu'un seul contrleur (donc pas de tolrance de panne pour le contrleur) et que le
nombre de disques utilisables est souvent limit quatre. Gnralement la manire la moins onreuse pour rali-
ser une combinaison entre deux modes RAID est :
1. d'utiliser plusieurs contrleurs au niveau matriel pour mettre en place plusieurs ensembles en mode RAID
X.
2. de crer un RAID Y au niveau logiciel partir de tous les ensembles RAID X.
L'ensemble obtenu sera un ensemble fonctionnant en un mode RAID nomm XY. Cela signifie que l'on met
d'abord en place plusieurs RAID X, puis qu'on les rassemble avec un mode RAID Y. Un RAID XY est donc dif-
frent d'un RAID YX. Voici un exemple : Admettons que l'on dispose de 9 disques durs de 20 Go chacun, de
trois cartes RAID grant le RAID 0 et le RAID 1 ainsi que d'un 7me disque dur (branch sur le contrleur int-
gr la carte mre). On peut raliser deux combinaisons intressantes :
un RAID 01
un RAID 10
On divise les disques en trois groupes de trois. On met trois disques sur chacune des cartes RAID et on cre trois
ensembles RAID 0. Chaque ensemble RAID 0 comporte 3 disques de 20 Go chacun, ce qui donne une capacit
de 60Go par ensemble. Ensuite, on cre un ensemble RAID 1 de manire logicielle avec les trois ensembles ma-
triel en RAID 0. On obtient donc aprs formatage, un seul disque d'une capacit de 60Go. Chaque ensemble
matriel en RAID 0 a des performances en lecture/criture trois fois plus leves environ qu'un disque seul.
L'ensemble logiciel en RAID 1 propose donc des performances triples celles d'un disque seul. Si l'un des six
disques vient tomber en panne alors, toutes les donnes stockes sur l'ensemble matriel RAID 0 auquel il ap-
partient sont perdues. On se retrouve avec seulement deux ensembles matriels en RAID 0 et donc 6 disques uti-
liss. Si on perd ensuite un second disque il ne reste plus qu'un ensemble RAID 0. Enfin si un dernier disque
tombe en panne alors, l'ensemble subsistant et donc toutes les donnes seront perdus. Dans notre exemple, grce
au RAID 01, on obtient des performances triples par rapport un disque seul et le systme supporte la perte de
deux disques durs.
Nous allons mettre en place un RAID 10 (striping + mirroring), donc mettre en place un RAID 0 sur des disques
en RAID 1. Il nous faut au moins 4 partitions disponibles pour effectuer cela. Commenons par crer nos deux
disques en RAID 1 :
Gestion du RAID 101
[root@linux ~]# mdadm --create /dev/md0 --level=1 --raid-devices=2 \
/dev/sdb1 /dev/sdc1
[root@linux ~]# mdadm --create /dev/md1 --level=mirror --raid-devices=2 \
/dev/sdd1 /dev/sde1
Crons ensuite le disque de RAID 0 en utilisant nos deux priphriques en RAID 1 :
[root@linux ~]# mdadm --create /dev/md2 --level=raid0 --raid-devices=2 \
/dev/md0 /dev/md1
On peut alors formater notre disque de RAID final :
[root@linux ~]# mke2fs -j /dev/md2
Pour accder au RAID il nous faudra taper :
[root@linux ~]# mount /dev/md0 /mnt/temp
8.5.4. Le fichier /etc/mdadm.conf
Une fois que nous avons cr nos disques de RAID, il nous faut les sauver dans le fichier de configuration afin
den sauver lexistence. Pour cela nous allons utiliser la commande suivante :
[root@linux ~]# mdadm --detail --scan >> /etc/mdadm.conf
8.6. Maintenance et surveillance
8.6.1. Ajout et retrait d'un priphrique chaud
Lors du crash d'un disque, le systme remplace le disque en panne par le disque de spare. Cependant, plus aucun
disque de spare n'est disponible en cas de panne d'un autre disque. Le retrait de disque chaud va nous per-
mettre de retirer le disque dfectueux et l'ajout chaud va nous permettre de rajouter un disque de spare au
RAID. Pour cet exemple, nous utiliserons le mme disque de RAID que dans la partie prcdente : RAID 1 avec
deux disques de RAID et un disque de spare. Simulons prsent la panne du disque /dev/sdc1 :
[root@linux ~]# mdadm /dev/md0 -f /dev/sdc1
mdadm: set /dev/sdc1 faulty in /dev/md0
Nous pouvons maintenant voir le changement dans l'tat de notre disque de RAID. Attention, nous avons coup
la sortie de la commande pour faciliter la lecture des informations modifies
[root@linux ~]# mdadm --detail /dev/md0
[ ? ] Number Major Minor RaidDevice State
0 8 17 0 active sync /dev/sdb1
1 8 49 1 active sync /dev/sdd1
Gestion du RAID 102
2 8 33 - faulty /dev/sdc1
Nous voyons donc que le priphrique /dev/sdc1 est marqu comme faulty, c'est dire dfaillant, et que
notre disque de spare sdd1 est alors pass en mode actif, il a bien remplac le disque dfaillant. Nous pouvons
alors le supprimer du disque de RAID et rajouter le disque sde1 comme disque de spare pour cet agrgat:
[root@linux ~]# mdadm /dev/md0 -r /dev/sdc1
mdadm: hot removed /dev/sdc1
[root@linux ~]# mdadm /dev/md0 -a /dev/sde1
mdadm: hot added /dev/sde1
Nous aurions aussi pu compresser ces deux commandes en une seule :
[root@linux ~]# mdadm /dev/md0 -r /dev/sdc1 -a /dev/sde1
Avertissement
Ce regroupement ne fonctionne que pour des commandes sur le mme disque de RAID.
8.6.2. Surveiller ses priphriques Raid
8.6.2.1. Afficher les informations d'un disque Raid
Pour afficher ltat dun disque RAID actif, nous devons utiliser directement la commande mdadm sans options
:
[root@linux ~]# mdadm /dev/md0
/dev/md0: 1023.88MiB raid1 2 devices, 1 spare. Use mdadm --detail for
more detail.
/dev/md0: device 0 in 2 device undetected raid0 md2. Use mdadm --examine
for more detail.
Nous pouvons aussi utiliser loption --detail pour avoir un listing dtaill de ltat de notre RAID :
[root@linux ~]# mdadm --detail /dev/md0
/dev/md0:
Version : 00.90.01
Creation Time : Mon Oct 3 17:04:43 2005
Raid Level : raid1
Array Size : 1048448 (1023.88 MiB 1073.61 MB)
Device Size : 1048448 (1023.88 MiB 1073.61 MB)
Raid Devices : 2
Total Devices : 3
Preferred Minor : 0
Persistence : Superblock is persistent
Update Time : Mon Oct 3 17:05:11 2005
Gestion du RAID 103
State : clean
Active Devices : 2
Working Devices : 3
Failed Devices : 0
Spare Devices : 1
UUID : 255a67d6:845546d7:91258d6a:41088f14
Events : 0.2
Number Major Minor RaidDevice State
0 8 17 0 active sync /dev/sdb1
1 8 33 1 active sync /dev/sdc1
2 8 49 - spare /dev/sdd1
8.6.2.2. Monitoring
mdadm dispose dun mode lui permettant de surveiller les priphriques de RAID crs et denvoyer des alertes
lorsquun vnement se produit. Il peut aussi excuter un programme chaque alerte.
Pour cela, il faut lancer mdadm avec loption -F ou --monitor pour lui dire dutiliser ce mode et loption -
-scan pour quil cherche tous les priphriques de RAID actifs. Les autres options utiles disponibles sont :
Tableau 8.1. Les options de mdadm pour le monitoring
Option longue Option courte Description
--pid-file fichier.pid -i fichier.pid Fichier contenant le PID du dae-
mon
--mail mail@domain.fr -m mail@domain.fr Adresse mail qui envoyer les
alertes.
--program binaire OU -
-alert binaire
-p binaire Programme lancer lorsquil y a
des alertes
--daemonize -f Passer en mode daemon
--delay 30 -d 30 Temps entre deux vrifications (en
secondes)
Exemple 8.1. Exemple
Nous voulons vrifier ltat de nos disques de RAID toutes les 30 secondes et si un vnement survient, il faut
envoyer les alertes ladresse mail : <labo-linux@supinfo.com>.
Le fichier qui contiendra le PID du daemon sera : /var/run/mdadm.pid
[root@linux ~]# mdadm -F --scan -f --delay 30 \
--pid-file /var/run/mdadm.pid -m labo-linux@supinfo.com
Nous aurions pu faire la mme chose, mais juste pour le priphrique /dev/md0 avec la commande suivante :
[root@linux ~]# mdadm -F -f --delay 30 --pid-file /var/run/mdadm.pid \
-m labo-linux@supinfo.com /dev/md0
Gestion du RAID 104
8.7. L'utilitaire DiskDrake
L'utilitaire DiskDrake offre une alternative aux commandes utilises habituellement pour grer des priph-
riques RAID. Cet utilitaire nous permettra par exemple, de crer rapidement des partitions RAID. Pour lancer
cet utilitaire, il suffit d'utiliser la commande suivante :
[mandriva@linux ~]$ diskdrake
Gestion du RAID 105
Chapitre 9. Introduction aux bases de
donnes
Table des matires
9.1. Prsentation ................................................................................................................ 106
9.2. Rles et fonctions dun SGBD ........................................................................................ 106
9.3. Le SQL ...................................................................................................................... 107
9.4. Les Bases de donnes Fichiers ........................................................................................ 108
9.5. Les SGBD .................................................................................................................. 108
9.6. Tableau Comparatif ...................................................................................................... 108
9.7. Conclusion .................................................................................................................. 109
9.1. Prsentation
Base de donnes: Une Base de donnes est un ensemble structur de donnes accessibles par l'ordinateur pour
satisfaire simultanment plusieurs utilisateurs en un temps opportun.
Systme de Gestion de Bases de Donnes (SGBD): est le logiciel qui permet d'interagir avec une base de don-
nes. Il permet un utilisateur de dfinir des donnes, de consulter la base ou de la mettre jour.
Initialement (1960) les bases de donnes ont t destines des applications de gestion, aujourd'hui les bases de
donnes sont omniprsentes dans nos vies gnrant un march de l'information norme. Sur Linux de nom-
breuses solutions sont votre disposition pour organiser des donnes et les partager. Ce cours vous prsentera
les systmes de gestions de bases de donnes les plus courants de manire comparative afin que vous puissiez
choisir le bon SGBD en fonction de vos besoins.
Mais tout dabord voyons ce quil faut attendre dun SGBD afin de dfinir les critres de comparaison.
9.2. Rles et fonctions dun SGBD
Organisation Externe
Gestion des Vues
Environnement de programmation (intgration avec un langage de programmation)
Interfaces conviviales et Langages de 4e Gnration (L4G)
Outils daides (conception de schmas)
Outils de saisie, dimpression dtats
Dbogueurs
Passerelles (rseaux, autres SGBD etc.)
Organisation logique
106
Dfinition de la structure de donnes : Langage de Description de Donnes (LDD)
Consultation et Mise Jour des donnes : Langages de Requtes (LR) et Langage de Manipulation de Don-
nes (LMD)
Organisation interne
On y dfinit les index et tous les lments informatiques susceptibles d'optimiser les ressources et les accs
aux donnes. Ce niveau concerne l'administrateur.
Organisation Physique
Accs aux donnes, gestion sur mmoire secondaire (fichiers) des donnes, des index
Partage de donnes et gestion de la concurrence daccs
Reprise sur pannes (fiabilit)
Distribution des donnes et interoprabilit (accs aux rseaux)
9.3. Le SQL
Le SQL (Structured Query Language ou en franais langage structur de requtes) est un langage normalis
pour interagir avec les bases de donnes. Il assure la fois les fonctions de langage de DDL (Data definition
language) pour modifier la structure de la base, DML (Data manipulation language) pour la consultation et la
modification du contenu de la base et DCL (Data control language) pour grer les droits des utilisateurs.
Cest en 1970 quEdgar Codd crit un article pour la revue Communications of the ACM (Association for Com-
puting Machinery) et tablit les bases de la communication entre un utilisateur et une base de donnes. IBM va
travailler appliquer la thorie en crant le SEQUEL (Structured English Query Language) mais cest Oracle en
1979 qui proposera la premire implmentation commerciale du SQL.
Voici lvolution de la norme SQL rgie par lISO :
Tableau 9.1. Voici lvolution de la norme SQL rgie par lISO
Anne Norme Changement
1986 SQL-86 ou SQL-87 Mise en place de norme
1989 SQL-89 ou SQL-1
1992 SQL-92 ou SQL2 Rvision majeure
1999 SQL-99 ou SQL3 Regex, triggers, requtes rcur-
sives, les types non scalaires, les
fonctions objets.
2003 SQL:2003 Fonction XML
Mais en plus des ordres DDL, DML et DCL, le SQL rend possible les ordres TCL (Transaction Control Lan-
guage) qui permettent de rendre atomique divers ordres enchans en squence : trs important pour laccs
concurrentiel, les ordres PSM (Persistent Store Module) qui correspond au stockage de procdures ainsi que les
CLI (Call Level Interface) qui permet de faire interface avec dautres langages comme le C, C++, Java
Introduction aux bases de donnes 107
9.4. Les Bases de donnes Fichiers
Les bases de donnes fichiers sillustrent par le fait de ne pas reposer sur le traditionnel modle client/serveur.
En effet, ces bases de donnes sont utilisables directement par un langage de programmation comme le C, C++,
Java. Ce type de base de donnes est utilis dans un milieu contraignant : vous ne pouvez disposer dun SGBD,
vous travaillez sur un systme embarqu, vous disposez de peu de place et vous voulez stock des donnes
structures Sous linux de nombreuses solutions existent nanmoins deux candidats sortent leur pingle du jeu
: SQLite popularis par PHP depuis sa version 5 et BerkleyDB.
SQLite est une bibliothque C faisant office de moteur de base de donnes SQL. Elle gre trs mal laccs
concurrentiel ainsi il est conseill de lutiliser dans un environnement mono utilisateur et mono application. SQ-
Lite fut popularis par lextension PECL PHP4 puis par son intgration facile PHP5. SQLite implmente en
grande partie la norme SQL92 et stocke un seul fichier pouvant aller jusqu 2 terabytes. Cette bibliothque est
disponible pour lAda, le C, le C++, le Delphi, le Java, le .NET Framework, le Perl, le PHP, le Python, le Ruby,
Le Tcl/Tk et bien dautres langages. Vous aurez donc compris quil est aussi multi plateformes.
BerkeleyDB est dit par la socit Sleepycat et propose les mmes avantages et inconvnients que SQLite mais
dispose de plusieurs versions : Berkeley DB XML (base de donnes XML native), Berkeley DB JE (une impl-
mentation 100% Java de Data Store) et Berkeley DB High Availability (haute disponibilit).
9.5. Les SGBD
Il existe une multitude de SGBD sous GNU/Linux. En voici la description de quelques uns.
MySQL Ce SGBD open source est sans quivoque le plus populaire du monde. Cr et maintenu par la so-
cit MySQL AB. Il est libre dutilisation pour les applications but non commerciales. Nanmoins on lui re-
proche limpossibilit dexcuter des sous slections ou SELECT imbriqus et le codage des caractres
que sur un octet.
Ingres/Postgres/PostgreSQL Ingres est issu des recherches du professeur Michael Stonebraker luniversit de
Californie Berkeley. Puis reprit le code depuis zro en 1985 et renomma son projet Postgres (post-Ingres).
Lors de l'ajout des fonctionnalits SQL en 1995, Postgres fut renomm Postgres95. Ce nom fut chang la fin
de 1996 en PostgreSQL. Depuis 1996, le dveloppement est men par le PostgreSQL Developpement Group fi-
nanc par Redhat, Futjitsu... PostgreSQL est disponible sous licence BSD ce qui lui confre vu son niveau de
qualit le concurrent libre le plus srieux Oracle. En effet, le logiciel peut tre modifi, distribu, vendu par
nimporte qui la seule condition de prciser le nom des dtenteurs du code originel.
FirebirdSQL est dvelopp sous licence Interbase Publique Licence. Il est issu dune version dInterbase 6, de
Borland passe en Open Source jusqu la version 6.5 qui est redevenue commerciale. FirebirdSQL est dvelop-
p par la FirebirdSQL Foundation et lIBPhoenix. Firebird est multi plateforme et supporte le SQL92 et le
SQL99. La version 1.5 voit le passage du code source du C au C++ et la version 2.0 est en dveloppement. NB :
Le navigateur web Firefox qui sappelait avant Firebird doit son nouveau nom une discorde avec la Firebird-
SQL Foundation en 2003.
9.6. Tableau Comparatif
Tableau 9.2. Tableau Comparatif
SGBD Licence Norme SQL Fonctionnalits
Berkeley DB sleepycat ACID
SQLite SQL92 ACID
MySQL GPL-2
Postgres BSD SQL89, SQL 92, SQL 99 Triggers, vues, Proc-
dures stockes, Requtes
Introduction aux bases de donnes 108
SGBD Licence Norme SQL Fonctionnalits
imbriques, foreign keys,
Sauvegardes chaud, PL/
PGSQL, ACID, Identifi-
cation Kerberos native,
Rgles
FirebirdSQL Interbase Publique Li-
cence
SQL92, SQL99
9.7. Conclusion
Dans ce cours introductif aux bases de donnes, vous avez appris ce quest une base de donnes, un SGBD et le
vocabulaire associ. De plus vous connaissez maintenant un certain nombre de solution dimplmentation sous
linux (fichier ou client/server).
Maintenant, il reste dcouvrir les bases de donnes objets qui sont la dernire volution en la matire mais,
lintrt reste restreint puisque ce modle est trs peu utilis au profit des bases de donnes relationnelles clas-
siques.
Introduction aux bases de donnes 109
Chapitre 10. Mettre en place un
gestionnaire de base de donnes avec
MySQL
Table des matires
10.1. Introduction ............................................................................................................... 110
10.1.1. Histoire .......................................................................................................... 110
10.1.2. Prsentation .................................................................................................... 111
10.2. Installation ................................................................................................................ 112
10.2.1. Installation par les binaires ................................................................................. 112
10.2.2. Lancement du serveur ....................................................................................... 113
10.3. Configuration ............................................................................................................ 113
10.3.1. Configuration du Serveur ................................................................................... 113
10.3.2. Configuration des clients ................................................................................... 115
10.3.3. Fichier de configuration my.cnf ........................................................................ 116
10.4. Utilisation ................................................................................................................. 116
10.4.1. Mise Jour des Privilges .................................................................................. 116
10.4.2. Cration d'une base de donnes ........................................................................... 117
10.4.3. Suppression d'une base de donnes ...................................................................... 118
10.4.4. Cration/suppression d'une table ......................................................................... 118
10.5. Rplication ................................................................................................................ 119
10.5.1. Mise en place d'une rplication sur un server MySQL 5.0 ........................................ 119
10.6. Outils ....................................................................................................................... 121
10.7. Ressources ................................................................................................................ 122
10.8. Conclusion ................................................................................................................ 122
10.1. Introduction
MySQL est le serveur et le gestionnaire de base de donnes le plus utilis dans le monde actuellement. Trs sou-
vent associ PHP et Apache, dans le cadre de solutions de dveloppement d'applications web. Il est le premier
choix des petites et moyennes entreprises qui apprcient en plus de ses nombreuses fonctionnalits sans cesse
grandissantes et performantes, son caractre gratuit ou plutt Libre. Beaucoup, n'hsitent d'ailleurs pas le com-
parer aux grosses pointures telles qu'Oracle, SAP ou Informix. Cependant, son domaine d'application reste
quand mme les petits ou moyens projets, les grosses entreprises n'arrivant toujours pas faire confiance ce
serveur d'entre de gamme dans des projets de grands envergures, l o le terme donnes stratgiques a une
importance plus que capitale.
10.1.1. Histoire
MySQL est n en 1994, dans la socit TcX DataKonsultAB une firme de consultants en Sude. En effet, Mi-
chael Widenius co-fondateur de TcX, surnomm Monty adapta mSQL (ou MiniSQL), dans le but d'accder
leurs propres fichiers de donnes utilisant leur propre librairie ISAM (Indexed Sequential Access Method). Les
rsultats, aprs une srie de tests et d'adaptations, ne furent pas concluants, car mSQL ne semblait pas tre assez
rapide. De ce fait, il cra une nouvelle interface SQL, intgrant compltement la librairie ISAM, et s'inspirant
notamment des fonctionnalits de l'API mSQL et qu'il appela MySQL .
110
1
http://dev.mysql.com/doc/refman/5.0/fr/mysql-indexes.html
Note
MiniSQL tait un logiciel de base de donnes lger,dvelopp par David Huges qui permettait
d'accder, via le langage SQL, rapidement des donnes ne ncessitant pas beaucoup de mmoire.
10.1.2. Prsentation
MySQL est une application client-serveur, o le client interroge, grce au langage SQL, des tables contenues
dans une base de donnes afin d'y retirer des informations.
10.1.2.1. Structure
Une base de donnes du point de vue de MySQL, est un rpertoire de l'arborescence du systme o se trouve
une combinaison de fichiers, de donnes appels databases ou catalogues et d'indexes associs.
Les databases dans MySQL reprsentent ce que les tables sont dans le langage Relationnel, c'est dire un en-
semble de champs de type diffrents. C'est dans ces champs, que les donnes appeles records ou enregistre-
ments sont stockes. Ces dernires sont totalement gres par la librairie MyISAM (My Indexed Sequential
Access Method) amlioration de la librairie ISAM, permettant de les organiser mais aussi de les extraire, le tout
trs rapidement.
En effet, comme nous l'avons vu, la rapidit de MySQL est sa raison d'exister. L'lment permettant une telle ra-
pidit est l'index. Ce dernier, reprsente l'ensemble des cls associes chacun des records d'une table. Une cl
tant, la combinaison des donnes extraites d'un ou de plusieurs champs d'un record.
L o l'indexation est importante, c'est qu'elle permet de trouver ainsi des donnes spcifiques trs rapidement.
En effet il sera plus intressant de comparer quelques lignes prcises, identifies par des donnes indexes, cor-
respondant un critre de recherche particulier que de parser et comparer l'ensemble des lignes d'une table. De
part cette structure, l'identification physique d'une table MySQL se fait par la cration de trois fichiers distincts :
nom_table.MYD : Fichier des donnes d'une table
nom_table.MYI : Fichier d'indexes
nom_table.frm : Fichier contenant la structure de la table
Note
Pour plus d'informations concernant les indexes, voir ce document
1
.
10.1.2.2. Fonctionnalits
MySQL possde un ensemble de fonctionnalits, dont voici les principales :
Tableau 10.1. Fonctionnalits de MySQL
Mettre en place un gestionnaire de base de donnes avec
MySQL
111
2
http://dev.mysql.com/downloads/mysql/5.0.html
3
http://easyurpmi.zarb.org
Fonctionnalits Etat d'Implmentation
Conformit ANSI SQL Ne suit pas tous les standards ANSI SQL (les alias
des colonnes et des tables ont t rajouts avec la ver-
sion 5)
Performance Trs rapide
Sous requtes Gr
Transactions Gr avec la Version 5
Rplication Gr
Support des cls trangres Gr uniquement dans la version 3.2 avec InnoDB
(licence commerciale), intgration prochaine dans la
version 5.2
Vues Gr avec la Version 5
Stockage des procdures Gr avec la Version 5
Triggers Gr avec la Version 5
Full joins Gr
Contraintes Gr
Windows support Gr
ODBC Gr
JDBC Gr
Note
Pour plus de renseignements concernant les diverses fonctionnalits, veuillez consulter le site web
de MySQL.
10.2. Installation
l'criture de ce cours, nous sommes la version 5.0 de MySQL.
10.2.1. Installation par les binaires
Concernant l'installation du logiciel MySQL, l'quipe MySQL recommande de prfrer l'installation de binaires
celle par les sources. Pour cela, ils mettent disposition des liens
2
.
Il est possible de tlcharger la suite MySQL via l'utilitaire de packages urpmi. Avant tout, il faut bien sassurer
que votre fichier /etc/urpmi/urpmi.cfg contient bien lentre contrib .
Si vous ne savez pas comment faire, rendez-vous sur le site EasyUrpmi
3
.
Mettre en place un gestionnaire de base de donnes avec
MySQL
112
Note
Pour tous renseignements concernant urpmi veuillez voir le cours sur l'installation de programmes.
Pour installer MySQL dans sa version 5.0 il vous faudra taper :
[root@linux ~]# urpmi MySQL50
Pour satisfaire les dpendances, les 5 paquetages suivants vont tre installs (40 Mo):
MySQL50-5.0.4-0.beta.1mdk.i586
MySQL50-client-5.0.4-0.beta.1mdk.i586
MySQL50-common-5.0.4-0.beta.1mdk.i586
libmysql15-5.0.4-0.beta.1mdk.586
perl-DBI-1.48-1mdk.i586
Est-ce correct ? (O/n)
10.2.2. Lancement du serveur
Le lancement du serveur se fait via l'utilisation du script mysqld prsent dans le rpertoire /etc/init.d/. Il
vous sera possible notamment, de le lancer dynamiquement en lui associant une entre dans l'un des rpertoires
rcx.d. Cependant, si vous voulez contrler le lancement de votre serveur, il suffira de taper chaque fois que
vous le voulez la commande :
[root@linux ~]# /etc/init.d/mysqld start
On pourra se demander : pourquoi cette mthode de lancement ? Au lieu d'utiliser directement la commande /
usr/sbin/mysld avec des options en paramtres.
Elle est recommande, car permet de lancer, l'important daemon mysqld_safe. Ce daemon apporte de nom-
breuses fonctionnalits comme le redmarrage automatique de la base MySQL si une erreur survient ou encore
la journalisation des vnements dans un fichier de log, gnralement : /var/log/mysqld.log. Il a pour
autre particularit de lire les options (attribues par l'administrateur) du daemon /usr/sbin/mysqld et de
les lui passer en paramtres. Nous verrons plus tard au niveau de la configuration du serveur, que l'ensemble de
ces paramtres pourra tre dfini dans un fichier de configuration.
10.3. Configuration
MySQL est une suite logicielle, offrant un serveur de base de donnes, un certain nombre de clients et est conu
pour offrir un systme de gestion pour tous ses services.
L'ensemble de la configuration peut-tre modifi via des options. Options qui seront spcifies directement en
ligne de commande ou alors par l'intermdiaire du fichier de configuration : my.cnf.
10.3.1. Configuration du Serveur
La configuration d'un serveur sous linux se fait gnralement par les options qui lui sont passes sur la ligne de
commande. Le serveur mysqld n'chappe pas la rgle. Cependant par rapport ce que nous avons vu plus haut
concernant le serveur mysqld_safe, sa configuration d'une faon gnrale se fera aussi l'aide du fichier de
configuration my.cnf.
Mettre en place un gestionnaire de base de donnes avec
MySQL
113
Comment est form ce fichier ?
Il offre une configuration l'ensemble des services de MySQL allant du serveur aux diffrents clients.
Exemple 10.1. Format d'une entre dans le fichier my.cnf
[ services mysql ]
option = valeur
option2 = valeur2
Dans le cas de notre serveur, il faudra dfinir l'ensemble des options dans la section [mysqld]. Elles seront bien
sr lues par le serveur mysqld_safe, ce dernier se chargeant du lancement de notre serveur.
Exemple 10.2. Exemple d'entres des serveurs mysqld_safe et mysqld
[safe_mysqld]
socket = /var/run/mysqld/mysqld.sock
err-log = /var/log/mysql/mysql.err
[mysqld]
user = mysql
pid-file = /var/run/mysqld/mysqld.pid
socket = /var/run/mysqld/mysqld.sock
port = 3306
Note
Si vous voulez utiliser une option propre mysqld_safe vous devez la spcifier dans le fichier
d'options dans la section lui correspondant.
Ce fichier peut se trouver deux endroits, l'emplacement de ce dernier influenant grandement l'effet des op-
tions y tant places.
/etc/my.cnf : emplacement dfinissant des options globales utilises par tous les services
/var/lib/mysql/my.cnf : emplacement dfinissant des options appliques aux serveurs uniquement
Voici une liste non exhaustive des diffrentes options utilises par le serveur mysqld :
Tableau 10.2. Options du serveur mysqld
Options Rles
user Utilisateur avec lequel il faut lancer le serveur. Par
Mettre en place un gestionnaire de base de donnes avec
MySQL
114
Options Rles
dfaut : mysql.
pid-file Le chemin du fichier contenant le pid du serveur
socket Le chemin du fichier contenant le socket utiliser
pour les connexions locales. Par dfaut /
tmp/mysql.sock.
port le port utilis pour les connexions TCP/IP
log Le chemin du fichier de log
basedir Le chemin du rpertoire d'installation
langage Le langage renvoy aux clients
query_cache_size La mmoire alloue pour stocker les rsultats des an-
ciennes requtes. Si query_cache_size vaut 0, le
cache de requte est dsactiv (par dfaut)
query_cache_limit Dfinie une limite la mmoire alloue aux rsultats
des anciennes requtes (taille par dfaut : 1 Mo).
protocol_version La version du protocole
skip-networking N'autorise pas les connexions externes
Bien sr, les dveloppeurs de MySQL offrent la possibilit de voir les diffrentes options systmes ayant t af-
fectes au serveur. La commande SQL utilise cet effet est :
[mandriva@linux ~]$ mysql -u root
mysql> show variables;
Il existe, des options qui peuvent tre modifies durant le fonctionnement du serveur celles-ci ont pour nom,
Variables systmes Dynamiques .
10.3.2. Configuration des clients
Il est possible dans MySQL de configurer l'ensemble des clients existants dans l'architecture MySQL et ce par
l'intermdiaire du fichier de configuration my.cnf.
Deux choix s'offrent nous. Soit crer une entre globale, appele [ client ], touchant tous les clients soit une
entre spcifique chaque client, ce qui permettra d'ajouter en plus des options globales dfinies dans la section
[ client ], des options beaucoup plus cibles.
Bien sr la liste des options change en fonction des clients, mais on peut quand mme citer les suivantes :
Tableau 10.3. Options communes tous les services
Options Rles
user Utilisateur avec lequel il faut lancer le serveur. Par
dfaut : mysql
socket Le chemin du fichier contenant le socket utiliser
pour les connexions locales. Par dfaut /
tmp/mysql.sock
port Le port du serveur utilis pour les connexions TCP/IP
password Le mot de passe utiliser par dfaut pour une
Mettre en place un gestionnaire de base de donnes avec
MySQL
115
Options Rles
connexion au serveur
10.3.3. Fichier de configuration my.cnf
Voici un extrait d'un fichier de configuration my.cnf :
Exemple 10.3. Exemple d'un fichier de configuration my.cnf
[client]
port = 3306
socket = /var/run/mysqld/mysqld.sock
[mysqld_safe]
err-log = /var/log/mysql/mysql.err
socket = /var/run/mysqld/mysqld.sock
[mysqld]
user = mysql
pid-file = /var/run/mysqld/mysqld.pid
socket = /var/run/mysqld/mysqld.sock
port = 3306
log = /var/log/mysql/mysql.log
basedir = /usr
datadir = /var/lib/mysql
tmpdir = /tmp
language = /usr/share/mysql/english
skip-networking
ley_buffer = 16M
maw_allowed_packet = 1M
thread_stack = 128K
query_cache_limit = 1048576
query_cache_size = 26214400
query_cache_type = 1
10.4. Utilisation
Le but principal de MySQL, est de permettre toute personne dsireuse de conserver des informations, de le
faire et ce, de faon structure dans le but de les rutiliser. Cependant, avant toute utilisation d'un serveur fra-
chement install, certaines tches administratives sont raliser.
10.4.1. Mise Jour des Privilges
Lors d'une installation de MySQL, le serveur donne tous les droits au root et tous les utilisateurs de la machine
o tourne le serveur. partir du moment o l'on souhaite autoriser les connexions distantes sur notre serveur, il
est conseill de renforcer la configuration par dfaut.
Pour cette raison, tout administrateur soucieux de la scurit doit, avant de mettre en fonction son serveur, red-
finir les droits d'accs ce dernier en modifiant les donnes de la table user de la base de donne systme mysql.
[mandriva@linux ~]$ mysql -u root
mysql> use mysql;
Mettre en place un gestionnaire de base de donnes avec
MySQL
116
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A
Database changed
mysql> DELETE FROM user WHERE password="";
mysql> flush privileges;
La dernire instruction a pour but de recharger les tables de privilges.
Une fois cela effectu, il nous faudra modifier le mot de passe root, qui est ce moment le seul DBA (DataBase
Administrator) connu du serveur. Cette modification, peut tre ralise de deux faons diffrentes :
Soit via la ligne de commande avec mysqladmin
Soit via des requtes SQL
Note
la commande mysqladmin ne sert pas qu' a, elle possde beaucoup d'autres possibilits.
1. Via la commande mysqladmin :
On va spcifier la commande mysqladmin que l'on va changer le mot de passe root.
[root@linux ~ ]# mysqladmin -u root password mot_de_passe
2. Via une requte SQL :
La requte SQL, ici fera appel la table systme user, contenue dans la base de donnes systme mysql.
[mandriva@linux ~]$ mysql -u root -p
Enter password:
mysql> use mysql;
mysql> UPDATE mysql.user SET Password = PASSWORD('nouveau_password') WHERE User = 'root';
mysql> flush privileges;
Important
Pour modifier un mot de passe via une requte SQL, il faut pouvoir se connecter la base et
donc avoir une entre pour root dans la table users. Pour l'utiliser correctement dans notre cas, il
aurait fallu ne pas se dconnecter aprs l'instruction flush privileges.
10.4.2. Cration d'une base de donnes
Mettre en place un gestionnaire de base de donnes avec
MySQL
117
Pour la cration d'une base de donnes on peut s'y prendre de deux faons :
Soit par la commande mysqladmin
[root@linux ~ ]# mysqladmin -p create Mandriva
Soit par une requte SQL
[mandriva@linux ~]$ mysql -u root -p
Enter password:
mysql> create database Mandriva;
10.4.3. Suppression d'une base de donnes
Pour la suppression d'une base de donnes on peut galement s'y prendre de deux faons :
Soit par la commande mysqladmin
[root@linux ~ ]# mysqladmin -p drop Mandriva
Soit par une requte SQL
[mandriva@linux ~]$ mysql -u root -p
Enter password:
mysql> drop database Mandriva;
10.4.4. Cration/suppression d'une table
Pour crer une table :
[mandriva@linux ~]$ mysql -u root -p
Enter password:
mysql> use Mandriva
mysql> create table mandriva (id integer(12) NOT NULL AUTO_INCREMENT PRIMARY KEY, user char(7));
Query OK, 0 rows affected (0.01 sec)
mysql>
Pour supprimer une table :
[mandriva@linux ~]$ mysql -u root -p
mysql> drop table mandriva;
Mettre en place un gestionnaire de base de donnes avec
MySQL
118
4
http://dev.mysql.com/doc/refman/5.0/en/index.html
Note
Pour toutes les autres commandes SQL d'extraction et d'insertion de donnes, vous pouvez consul-
ter le manuel de rfrence
4
de MySQL.
10.5. Rplication
La rplication unidirectionnelle, est une puissante solution de tolrance de pannes, permettant aux donnes d'un
serveur dit matre d'tre recopi l'identique sur un ou plusieurs autre serveurs appels esclaves . Cette
notion a t introduite depuis MySQL 3.23.15. Elle est base sur le fait que le serveur va gard la trace de toutes
les transactions de vos bases (cration, modification, suppression, mises jour,...) dans un fichier de log et les
esclaves vont lire les requtes du matre dans ce fichier de log, pour pouvoir excuter les mmes requtes sur
leurs copies.
Note
Il est noter que la rplication bidirectionnelle existe galement, mais nest pas trs utilise et sur-
tout namliore pas les performances.
10.5.1. Mise en place d'une rplication sur un server MySQL
5.0
La force de la rplication MySQL est qu'elle est simple configurer et ne demande pas de connaissance pousse
quant sa mise en place. Elle se ralise en 4 tapes.
La mise en place prsente ici ne s'appliquera qu' un client et un serveur esclave. Cependant, elle pourrait aussi
se raliser avec plusieurs esclaves.
10.5.1.1. Cration de l'utilisateur de rplication
Il nous faudra crer sur le serveur matre, un utilisateur particulier par exemple, mandriva, qui se chargera
d'effectuer la rplication du serveur matre l'esclave. Ce dernier devra possder un seul droit particulier :
replication slave : droit permettant la rplication
Cependant afin d'avoir plus de souplesse on pourra activer trois autres permissions :
super : Permet de tuer des processus dmarrs par d'autres utilisateurs
reload: Permet de recharger le deamon mysql
select : Permet de slectionner des enregistrements sur toute la base
Mettre en place un gestionnaire de base de donnes avec
MySQL
119
Bien sr, cet utilisateur devra avoir le droit de se connecter distance sur le serveur.
[mandriva@linux ~]$ mysql -u root
mysql> grant replication slave on *.* TO mandriva@'%' IDENTIFIED BY '<password>';
Note
L'lment permettant de dfinir si le serveur accepte des connexions distantes, en provenance de
n'importe qu'elle machine, d'un utilisateur prcis est le signe % . Il est rattach la colonne
host de la table user de la base de donnes systme mysql.
Avertissement
Si vous utilisez des tables MyISAM, dchargez toutes les tables et blocs en utilisant la commande
FLUSH TABLES WITH READ LOCK.
[mandriva@linux ~]$ mysql -u root
mysql> FLUSH TABLES WITH READ LOCK;
Une fois toutes ces actions termines, vous pouvez vous dconnecter du serveur.
10.5.1.2. Configuration du serveur matre et archivage des bases de don-
nes
Elle consiste en la modification de notre fichier de configuration et de l'entre [ mysqld ]. Pour indiquer que le
serveur sera le serveur de rplication matre , il faut ajouter les deux variables suivantes:
log-bin : Permettant de dfinir qu'il faudra crer le fichier de log, ce dernier ayant pour nom mysql-
bin.xxxxx et se situant dans le rpertoire de log.
server-id : Permettant d'identifier le serveur matre par un numro compris entre 1 et 2^32 -1
Aprs la mise jour de votre fichier de configuration, archivez les bases de donnes rpliquer, via la com-
mande tar , par exemple la base test.
[mandriva@linux ~]$ cd /var/lib/mysql
[mandriva@linux ~]$ tar -cjvf mysql-databases.tar.bz2 test
10.5.1.3. Configuration de l'esclave et dsarchivage des bases de don-
nes
Mettre en place un gestionnaire de base de donnes avec
MySQL
120
5
http://dev.mysql.com/doc/refman/5.0/fr/replication-upgrade.html
Avant toute configuration du serveur esclave, il faut le couper. Puis dans son fichier de configuration, il faut
ajouter les variables suivantes dans l'entre [ mysqld ]
master-host : Dfinit le nom d'hte du serveur
master-user : Dfinit le nom d'utilisateur de rplication donc dans notre cas mandriva
master-password : Dfinit le mot de passe de l'utilisateur
master-port : Dfinit le port d'coute du serveur matre ( 3306 par dfaut)
server-id : Dfinit un identifiant unique pour le serveur esclave. Attention cet identifiant doit tre diff-
rent de celui du serveur matre.
Une fois le fichier my.cnf mis jour, on peut dsarchiver dans le rpertoire des donnes du serveur esclave la
base test du serveur matre.
[mandriva@linux ~]$ cd /var/lib/mysql
[mandriva@linux ~]$ tar -xjvf mysql-databases.tar.bz2
10.5.1.4. Lancement des serveurs et diagnostiques
Les configurations tant maintenant effectues la fois sur le matre que sur l'esclave, on pourra les lancer et ob-
server comment la rplication s'opre, lorsque l'on modifie,cre ou supprime des donnes sur le serveur Matre.
L'esclave utilise ces deux fichiers pour savoir o il en est des logs du matre. Une fois qu'un esclave a activ la
rplication, il va crer deux fichiers dans son dossier de donnes : master.info et relay-log.info.
tout moment vous pouvez vous tenir inform de l'tat du matre ou du serveur esclave en utilisant les com-
mandes :
[mandriva@linux ~]$ mysql -u root
mysql> show [master ou slave] status;
Notamment, il vous est possible d'afficher la liste des processus en cours sur chacun des serveurs en lanant la
commande :
[mandriva@linux ~]$ mysql -u root
mysql> show processlist;
Pour plus de renseignements concernant la rplication, consultez la documentation officielle
5
.
10.6. Outils
La suite MySQL, possde une panoplie d'outils permettant de grer la fois clients et serveurs, mys-
Mettre en place un gestionnaire de base de donnes avec
MySQL
121
6
http://www.mysqltools.com/products.htm
7
http://www.mysql.com
ql_install_db, mysql_find_rows, mysql_table_info, mysql_manager, etc..
Il en existe d'autres beaucoup plus cibls que l'quipe Mysql AB a dvelopp comme MySQL Explorer, MySQL
Tracer, etc... qui sont des outils payants. Vous en trouverez d'autres sur le site des mysqltools
6
.
Sinon en terme de contribution libre, il existe notamment la trs connue interface d'administration PHPMyAd-
min utilise dans le cadre de dveloppements Web, facilitant l'utilisation et l'administration de vos bases de don-
nes.
10.7. Ressources
Une quantit trs importante de ressources pourra tre consulte le site officiel de MySQL
7
.
10.8. Conclusion
MySQL est un gestionnaire base de donns complte satisfaisant un bon nombre de critres recherchs par les
nombreux utilisateurs. Il est trs simple d'administration et de configuration et offre des fonctionnalits faciles
d'implmentation, qui bien souvent reprsentent un casse tte dans d'autres gestionnaire de base de donnes.
Sa force rside, dans ce caractre hybride, qui affiche d'une part une image totalement libre, par le caractre
open source de son code qui bnficie sans cesse d'un apport intellectuel intense allant de l'utilisateur lambda au
plus passionn. Et d'autre part par son image trs professionnelle (diversits des plateformes supportes, cursus
de certifications, produits additionels, offres de support, etc..) que recherchent les entreprises.
Mettre en place un gestionnaire de base de donnes avec
MySQL
122
Chapitre 11. Mise en place des services
DHCP et DNS
Table des matires
11.1. Introduction, bases DNS/DHCP .................................................................................... 123
11.1.1. Introduction, bases DNS/DHCP .......................................................................... 123
11.2. Mise en place d'un serveur DHCP .................................................................................. 123
11.2.1. Installation ...................................................................................................... 123
11.2.2. Configuration .................................................................................................. 124
11.2.3. relay .............................................................................................................. 128
11.2.4. Lancement et tests ............................................................................................ 131
11.3. Mise en place d'un serveur DNS .................................................................................... 133
11.3.1. Rappel sur la notion de DNS .............................................................................. 133
11.3.2. Notion de nom de domaine pleinement qualifi ...................................................... 134
11.3.3. Installation de BIND ......................................................................................... 135
11.3.4. Bind DLZ ....................................................................................................... 153
11.1. Introduction, bases DNS/DHCP
11.1.1. Introduction, bases DNS/DHCP
Le DHCP (Dynamic Host Configuration Protocol) est un acronyme anglais dsignant un protocole rseau dont
le rle est d'assurer la configuration automatique des paramtres TCP/IP d'un client.
Dans le cas du protocole IP, il existe 2 mthodes pour configurer les paramtres IP sur un hte :
l'adressage statique : chaque hte est manuellement configur
l'adressage dynamique : Les paramtres sont fournis par un serveur DHCP
Le protocole DHCP apporte donc ces avantages par rapport l'adressage statique :
Toute modification des paramtres est rpercute sur les clients lors de leur prochain dmarrage
Une maintenance facilite car il suffit de modifier les paramtres sur les serveurs DHCP afin de mettre tout le
parc de machines jour
Seuls les ordinateurs en service utilisent une adresse de l'espace d'adressage
11.2. Mise en place d'un serveur DHCP
11.2.1. Installation
Nous allons utiliser le programme DHCP de l'ISC qui contient : un serveur DHCP, un relay DHCP ainsi qu'un
client DHCP.
123
1
http://isc.org
2
ftp://ftp.isc.org/isc/dhcp/dhcp-3.0.1.tar.gz
Les sources de ce programme sont disponibles sur le site de l'ISC
1
. A la date de rdaction de ce cours, la der-
nire version disponible est la 3.0.5, et vous pouvez la tlcharger directement ici
:ftp://ftp.isc.org/isc/dhcp/dhcp-3.0.5.tar.gz
2
.
Une fois les sources rcupres, il faut les dcompresser :
[mandriva@linux ~]$ tar xzf dhcp-3.0.5.tar.gz
Ensuite il faut configurer les sources en fonction de l'hte type :
[mandriva@linux ~]$ ./configure
[ ... ]
Il ne reste qu' compiler le programme, et l'installer :
[mandriva@linux ~]$ make
[ ... ]
[mandriva@linux ~]$ sudo make install
Password:
[ ... ]
11.2.2. Configuration
11.2.2.1. Configuration standard
Le serveur DHCP utilise un fichier de configuration qui est /etc/dhcpd.conf, mais suivant la distribution
utilise, il peut aussi se trouver dans/etc/dhcpd/dhcpd.conf.
Ce fichier est compos d'une partie principale contenant les directives communes, puis de diffrentes parties d-
finissant les sous rseaux sur lesquels le serveur DHCP doit distribuer les adresses IP. Ces directives peuvent
tre spcifique pour chaque sous rseau et craser les directives dfinies dans la partie principale du fichier.
Ces directives sont divises en deux ensembles :
les directives principales ncessaires au bon fonctionnement du serveur DHCP
les directives secondaires ou options du protocole DHCP
Les proprits principales pour le serveur DHCP sont dfinies suivant le format qui suit :
<nom de l'option> <argument de l'option>;
Tandis que les directives secondaires sont dfinies ainsi :
option <nom de l'option> <argument de l'option>;
Mise en place des services DHCP et DNS 124
Toutes les lignes contenant une option de configuration doivent obligatoirement se terminer par un point-vir-
gule.
Voici donc un tableau vous prsentant les directives principales :
Tableau 11.1. Directives principales du serveur dhcp
Option Valeur Description
default-lease-time un temps (sec) Spcifie le temps par dfaut pour
les bauds DHCP
max-lease-time un temps (sec) Spcifie le temps maximum que
peut demander un client DHCP
server-name nom (guillemets) Nom fournit au client pour savoir
depuis quel serveur il obtient son
adresse
always-broadcast 'on' ou 'off' Rpondre en broadcast aux de-
mandes de baux DHCP et BOOTP.
Il est conseill de ne mettre cette
option que pour certains sous r-
seaux
lease-file-name Fichier / chemin Indique le chemin vers un fichier
qui va contenir les informations sur
les bauds dlivrs. Par dfaut /
var/
lib/dhcp/dhcpd.leases
local-port numro de port Indique sur quel port le serveur
DHCP doit couter pour les de-
mandes, par dfaut c'est le port 67
Voici un exemple de dbut de fichier de configuration :
default-lease-time 86400; # bail par dfaut : 24H
max-lease-time 604800; # dure maximale du bail (ici une semaine)
server-name "DHCP Labo-linux"; # Nom du serveur
lease-file-name "/var/db/dhcp/dhcpd.leases"; # Fichier de bauds
always-broadcast off ;# Pas de rponses en broadcast pour les requtes DHCP
Note
Nous allons construire ce fichier de configuration tout au long de l'essentiel, et nous en prsente-
rons une version complte la fin du document.
Se trouvent ensuite les directives permettant de limiter le fonctionnement du serveur DHCP. Ces directives
s'crivent sous la forme :
allow | deny | ignore <option>;
Mise en place des services DHCP et DNS 125
allow indique d'autoriser cette option,deny le refuse explicitement (il renvoie une rponse au client), et ignore ne
rpond pas aux requtes.
Tableau 11.2. Directives de contrle du serveur dhcp
Option Dfaut Description
unknown-clients allow autoriser ou non le serveur distri-
buer des IP aux clients inconnus.
Un client inconnu est un client qui
ne possde pas de dclaration
"host" (vu ci-aprs)
bootp allow autoriser les requtes BOOTP
booting allow ce mot cl n'est valide que dans
une dclaration host. Si on
n'autorise pas cette directive, alors
le client ne pourra pas avoir d'IP du
serveur
Voici la suite du fichier de configuration, o l'on interdit le protocole BOOTP et o on laisse les options par d-
faut pour les autres directives.
deny bootp;
allow booting; # valeur par dfaut
allow unknown-clients; # valeur par dfaut
Le tableau suivant rcapitule les diffrentes options disponibles pour le protocole DHCP.
Avertissement
N'oubliez pas de rajouter la directive option devant chaque ligne
Tableau 11.3. Autres options du serveur DHCP
Directive Valeur Description
subnet-mask un masque de sous rseau spcifie le masque de sous rseau
que doit utiliser le client
broadcast-address une IP spcifie l'adresse de broadcast
routers une IP Spcifie l'adresse de la passerelle
par dfaut
domain-name-servers une liste d'adresse IP spares par
des virgules
Spcifie la ou les adresses des ser-
veurs DNS utiliser
netbios-name-servers une liste d'adresse IP spares par
des virgules
Spcifie la ou les adresses des ser-
veurs WINS utiliser
domain-name un nom de domaine entre guille-
mets
spcifie le nom de domaine par d-
faut pour les recherches DNS
Mise en place des services DHCP et DNS 126
Voici un exemple d'utilisation de ces options permettant d'ajouter des options communes pour toutes les plages
d'adresses IP que l'on va distribuer.
option subnet-mask 255.255.255.0; # Masque de sous rseau
option domain-name-servers 192.168.0.1, 192.168.0.2; # Serveurs DNS
option netbios-name-servers 192.168.0.3; # Serveur de noms netbios
option domain-name "labo-linux.org"; # Les recherches se font
# dans le domaine labo-linux.org
Dans le cas d'une dclaration de sous rseaux, la dfinition se fait de la manire suivante :
subnet <subnet number> netmask <netmask> {
[ paramtres ] [ dclaration ]
}
La partie paramtres contient les paramtres personnaliss pour la plage d'adresse que l'on vient de dfinir
ainsi que les paramtres associs.
Cette section peut aussi contenir le mot cl authoritative qui permet de spcifier si ce serveur DHCP est matre
sur ce sous rseau. Le contraire de ce mot cl est not authoritative.
Il est possible de spcifier ce mot cl dans la partie globale du fichier de configuration, mais il est recommand
de le mettre dans chaque dclaration de sous rseau, afin de bien dfinir les serveurs matres et les serveurs se-
condaires.
Note
Si un client demande une adresse faisant partie d'un sous rseau non autoris, alors un serveur
matre renverra une rponse de type DHCPNAK au client, lui indiquant que cette adresse n'est pas
disponible, tandis qu'un serveur secondaire ne rpondra rien.
La section dclaration doit contenir une ou plusieurs directives range qui permettent de spcifier les plages
d'adresses IP qui vont tre distribues. La directive range est spcifie comme suit :
range <adresse IP de dpart> <adresse IP de fin>;
Afin de rserver des adresses IP faisant partie du milieu de la plage dfinie, il faut spcifier deux directives
range. Ainsi pour distribuer des adresses IP sur la plage 192.168.0.1 192.168.0.100, en rservant l'adresse
192.168.0.50, les directives range seront :
range 192.168.0.1 192.168.0.49;
range 192.168.0.51 192.168.0.100;
Nous allons donc rajouter la dclaration de plage d'IP pour notre rseau.
Maintenant, nous allons distribuer les IP de la plage 192.168.1.1 192.168.1.150 tout en rservant les adresses
192.168.1.33 et 192.168.1.54 pour deux htes spcifiques (nous rajouterons les directives pour faire cela dans la
Mise en place des services DHCP et DNS 127
partie suivante). Le routeur sera la machine avec l'adresse 192.168.1.254.
Nous allons galement dclarer une autre plage d'adresses IP pour le deuxime sous rseau. Nous distribuerons
la plage d'adresses de 192.168.2.50 192.168.2.250. L'adresse du routeur sera alors 192.168.2.1.
# premire plage
subnet 192.168.1.0 netmask 255.255.255.0 {
range 192.168.1.1 192.168.1.32;
range 192.168.1.33 192.168.1.53;
range 192.168.1.55 192.168.1.150;
option routers 192.168.1.254;
}
# seconde plage
subnet 192.168.2.0 netmask 255.255.255.0 {
range 192.168.2.50 192.168.2.250;
option routers 192.168.2.1;
}
Pour rserver une IP un hte particulier il faut utiliser la section host de la manire suivante :
host <un nom> {
hardware <type> <identifiant>;
fixed-address <une ou plusieurs adresses IP>;
}
<un nom>: reprsente le nom utilis pour dfinir cet hte.
<type>:doit tre le nom d'un type de matriel qui est support, c'est dire pour le moment "ethernet" ou bien
"token-ring".
<identifiant>: reprsente l'adresse MAC de l'hte, il s'agit d'une suite de chiffres hexadcimaux spars par
des deux points (":")
La directive fixed-address prend en argument une ou plusieurs adresses IP, spares par des virgules, suivant le
segment sur lequel est en train de booter le client. Par exemple, il est possible de spcifier trois adresses IP si le
client est susceptible de dmarrer sur trois segments rseaux diffrents.
Pour finir, il faut ajouter les directives servant rserver les adresses pour les deux htes spciaux.
# un enregistrement pour le directeur on lui donne un nom explicite pour se souvenir que cet enregistrement est pour le directeur
host directeur {
hardware ethernet 11:22:33:44:55:66; # adresse Mac de la carte
fixed-address 192.168.1.33; # adresse rseau du directeur
}
# un enregistrement pour la secrtaire
host secretaire {
hardware ethernet 01:D3:4T:7F:9G;
fixed-address 192.168.1.54;
}
11.2.3. relay
L'agent de relay DHCP, dhcrelay, permet de faire suivre les demandes DHCP et BOOTP provenant d'un sous r-
Mise en place des services DHCP et DNS 128
seau diffrent ne possdant pas de serveur DHCP, vers un ou plusieurs serveurs DHCP situs sur d'autres sous
rseaux.
Pour ce faire, le daemon coute les requtes et les rponses DHCP et BOOTP. Quand une requte arrive, il la
fait suivre aux diffrents serveurs spcifis. Et quand une rponse arrive, il la fait suivre sur le sous rseau d'o
provient la requte, en unicast ou en broadcast, suivant la requte du client.
Toute la configuration du relay DHCP se fait l'aide d'arguments passs en ligne de commande. La syntaxe de
base pour cette commande est :
dhcrelay [ -p <port> ] [ -d ] [ -q ] [ -i <if0> [ ... -i <ifN> ] ] \
[ -a ] [ -A <longueur> ] [ -D ] [ -m append | replace | forward | discard ]\
srv0 [ ... srvN ]
Tous les paramtres entre crochets sont optionnels. Voici les diffrentes options disponibles :
Tableau 11.4. Options de configuration de l'agent de relay
Options Description
-p <port> Sert spcifier le port UDP sur lequel l'agent de relay
DHCP doit couter et renvoyer les demandes. (67 par
dfaut).
-d Lance le service en tant que daemon. (Arrire plan)
-q Quiet Mode (Mode silencieux).
-i <if0> [ ... -i ifN ] Permet de spcifier les diffrentes interfaces sur les-
quelles doit couter l'agent de relay. (Toutes par d-
faut).
-A <longueur> permet de spcifier la taille maximum d'un paquet
DHCP (dfaut 576, max recommand 1400 octets
avec l'agent de relay de l'ISC).
srv0 [ ... srvN ] Option obligatoire qui permet de spcifier l'adresse IP
ou le nom du ou des serveurs DHCP disponibles.
Voici un exemple avec le rseau suivant :
Figure 11.3. Rseau avec agent de relay
Mise en place des services DHCP et DNS 129
Le serveur faisant relay DHCP est aussi un routeur reliant les deux sous rseaux diffrents. On supposera que
cette machine ne fait pas suivre les paquets DHCP entre les deux rseaux, le relay DHCP mis en place se char-
gera donc de cette tche.
Voici ce qu'il faut configurer : Le port standard tant utilis, l'option -p sera inutile. Afin d'viter le mode ver-
beux concernant les informations de dmarrage, on utilise l'option -q. L'option -d est activ afin de lancer
l'agent de relais en tant que daemon (tche de fond). Le relais devra couter sur ses deux interfaces (eth0 et
eth1), pour cela nous utiliserons : -i eth0 -i eth1. Pour viter de faire passer des rponses des requtes
n'ayant pas transites par le relais, il faut utiliser l'option -D. De plus, on peut utiliser l'option -m discard
pour refuser de relayer les demandes ayant dj traverses un autre relais DHCP. L'adresse du serveur DHCP est
172.16.0.2 et son nom DNS est "dhcp-srv".
prsent, il ne reste plus qu' dmarrer l'agent de relais comme suit :
[root@linux ~]# dhcrelay -q -d -i eth0 -i eth1 -D -m discard 172.16.0.2
Note
Il est galement possible de spcifier le serveur dhcp par son nom DNS :
Mise en place des services DHCP et DNS 130
[root@linux ~]# dhcrelay -q -d 1400 -i eth0 -i eth1 \
-D -m discard dhcp-serv
11.2.4. Lancement et tests
Avant de lancer le daemon DHCP, il est ncessaire de crer le fichier contenant les informations sur les baux
qu'il va attribuer. Ce fichier est cr grce la commande suivante :
[root@linux ~]# touch /var/lib/dhcp/dhcpd.leases
Note
Il faut utiliser le chemin et le nom du fichier spcifi dans la configuration du serveur DHCP. Par
dfaut, celui-ci se trouve dans /var/lib/dhcp/dhcpd.leases.
Le daemon dhcpd peut prsent tre dmarr. Celui-ci peut prendre plusieurs arguments, en voici les principaux
:
Tableau 11.5. Principaux arguments du daemon dhcpd
Options Description
-f Excute le daemon DHCP attach au shell courant
(avant plan).
-d Dans ce cas le daemon crit ses messages d'erreurs
sur le flux d'erreur standard.
-q Quiet Mode
-t Permet de tester le fichier de configuration.
-T Permet de tester le fichier contenant les informations
sur les bauds dj distribus
-cf Permet de spcifier un fichier de configuration autre
que /etc/dhcpd.conf.
une liste d'interfaces : if0 ... ifN Permet de spcifier sur quelles interfaces doit couter
le serveur.
Pour tester la validit de la configuration on utilise l'option -t:
[root@linux ~]# /usr/local/sbin/dhcpd -t
Mise en place des services DHCP et DNS 131
Utilise en majuscule, cette option permet de tester le fichier dhcpd.leases :
[root@linux ~]# /usr/local/sbin/dhcpd -T
La commande suivante vrifie le bon fonctionnement du serveur :
[root@linux ~]# /usr/local/sbin/dhcpd -f -d if0
Pour lancer le serveur DHCP en mode non verbeux on utilisera :
[root@linux ~]# /usr/local/sbin/dhcpd -q if0
11.2.4.1. Exemple de configuration
Voici un schma reprsentant la topologie du rseau dans lequel peut s'inscrire le serveur DHCP prcdemment
configur :
Figure 11.5. Topologie rseau avec un serveur DHCP
Mise en place des services DHCP et DNS 132
Pour clore ce chapitre, voici le fichier de configuration du serveur dans son intgralit :
default-lease-time 86400;
max-lease-time 604800;
server-name "DHCP Labo-linux";
lease-file-name /var/db/dhcp/dhcpd.leases;
always-broadcast off;
deny bootp;
allow booting;
allow unknown-clients;
subnet-mask 255.255.255.0;
option domain-name-servers 192.168.0.1, 192.168.0.2;
option netbios-name-servers 192.168.0.3;
option domain-name "labo-linux.org";
subnet 192.168.1.0 netmask 255.255.255.0 {
range 192.168.1.1 192.168.1.32;
range 192.168.1.34 192.168.1.53;
range 192.168.1.55 192.168.1.150;
option routers 192.168.1.254;
}
subnet 192.168.2.0 netmask 255.255.255.0 {
range 192.168.2.50 192.168.2.250;
option routers 192.168.2.1;
}
host directeur {
hardware ethernet 11:22:33:44:55:66;
fixed-address 192.168.1.33;
}
host secretaire {
hardware ethernet 01:D3:4T:7F:9G;
fixed-address 192.168.1.54;
}
Le serveur sera alors dmarr l'aide de la commande suivante :
[root@linux ~]# /usr/local/sbin/dhcpd -q eth0 eth2
Note
Remarquez que nous avons spcifi au serveur de ne pas couter sur l'interface eth1 qui est relie
au sous rseau des serveurs, machines possdant une IP fixe.
11.3. Mise en place d'un serveur DNS
11.3.1. Rappel sur la notion de DNS
Le systme de nom de domaine (DNS) est utilis pour faire correspondre des nom et des adresses IP afin de
pouvoir localiser des htes sur des rseaux distants par le biais de noms, plus facilement mmorisables qu'une
adresse IP.
Mise en place des services DHCP et DNS 133
11.3.2. Notion de nom de domaine pleinement qualifi
Le FQDN, ou Fully Qualified Domain Name, d'un hte est son nom d'hte accompagn du nom de son domaine
d'appartenance.
Exemple : www.labo-linux.com est le nom complet de l'hte www appartenant au domaine labo-linux.com.
Ce processus s'articule autour d'une relation client / serveur o le client effectue une requte auprs d'un serveur
de nom.
Lorsque l'utilisateur entre une adresse, http://www.labo-linux.com par exemple, le navigateur envoie une re-
qute au serveur de nom du fournisseur d'accs, qui essaie de dterminer l'adresse IP correspondante.
Si le fournisseur n'est pas l'autorit pour cette zone (pour ce domaine), il transmet la requte au domaine autori-
t, jusqu' ce qu'elle arrive au domaine indiqu.
Figure 11.7. Nom FQDN
Note
Est ici dsign par "resolver", le client mettant la requte DNS.
Chaque serveur de domaine dispose de toutes les informations relatives la zone qu'il contrle ainsi que des in-
formations de base sur les autres zones.
Quand une requte est envoye en dehors de la zone d'autorit, le serveur sait au minimum o chercher. Cela si-
gnifie que la requte peut avoir transiter par plusieurs serveurs de domaine avant d'atteindre la destination fi-
nale.
Mise en place des services DHCP et DNS 134
11.3.2.1. Les diffrents types de serveurs de noms
Lorsqu'un hte client demande des informations au serveur de noms, il se connecte gnralement sur le port 53.
Le serveur de noms tente alors de rsoudre le FQDN d'aprs les informations qu'il contient sur l'hte demand
ou des donnes mises en cache suite une requte antrieure.
Si le serveur de noms ne possde pas encore la rponse dans sa bibliothque de solutions, il se tourne vers
d'autres serveurs de noms, appels serveurs de noms root (ou serveurs de noms racines), afin de dterminer les
serveurs de noms faisant autorit pour le FQDN en question. Grce ces informations, il effectuera ensuite une
requte auprs des serveurs de noms faisant autorit pour dterminer l'adresse IP de l'hte en question.
l'exception du nom de domaine, chaque section s'appelle une zone et dfinit un espace de nom particulier. Un
FQDN doit contenir au moins un sous domaine mais peut en inclure beaucoup plus, selon l'organisation de
l'espace de nom choisi.
Les zones sont dfinies sur des serveurs de noms qui font autorit par l'intermdiaire de fichiers de zone qui sont
stocks sur des serveurs de noms primaires (aussi appels serveurs de noms matres).
Les serveurs de noms secondaires (ou serveurs de noms esclaves) quant eux, reoivent leurs fichiers de zone
des serveurs de noms primaires.
Tout serveur de noms peut tre simultanment matre ou esclave pour diffrentes zones et peut aussi tre consi-
dr comme faisant autorit pour de multiples zones. Tout cela dpend de la configuration du serveur de noms.
On distingue 4 types de serveur de noms :
Tableau 11.6. Diffrents type de serveurs de noms
Type Description
Master Conserve les enregistrements originaux et fait autorit
pour un espace de noms.
Slave Reoit ses informations des serveurs matres
Caching-only Ne fait pas autorit, ce type de serveur sert juste de
cache afin d'acclrer le temps de rponse.
Forwarding Fait suivre des requtes une liste spcifique de ser-
veurs de noms
11.3.3. Installation de BIND
BIND fournit un service de rsolution de nom grce au service /usr/sbin/named. Il utilise comme fichier de
configuration :
/etc/named.conf: le fichier de configuration du service named
/var/named/: le rpertoire de travail de named o sont stockes les fichiers de zone, de cache, etc.
11.3.3.1. Installation de Bind 9
11.3.3.1.1. Tlchargement
Mise en place des services DHCP et DNS 135
Note
Cette documentation a t ralise en utilisant BIND 9.2.0
Tout d'abord, il faut tlcharger les sources du programme. Celles-ci sont disponibles l'adresse suivante
:ftp://ftp.isc.org/isc/bind9/9.2.0/bind-9.2.0.tar.gz
L'installation de nouveaux programmes ne faisant pas partie des paquetages de base se fait habituellement dans
le rpertoire /usr/local. Les sources seront dcompresses dans /usr/local/src, les binaires utilisa-
teurs seront copis dans /usr/local/bin et les binaires systmes dans /usr/local/sbin. Les fichiers
de configuration quant eux seront situs dans le rpertoire /etc.
L'extraction de l'archive sera donc effectue dans /usr/local/src de la manire suivante :
[mandriva@linux ~]$ cd /usr/local/src
[mandriva@linux /usr/local/src]$ tar -xvzf bind-9.2.0.tar.gz
11.3.3.1.2. Compilation et installation
La compilation passe par trois tapes distinctes :
La configuration des paramtres de compilation
La compilation en elle-mme
L'installation des binaires, documentations et fichiers de configuration par dfaut
Pour la configuration des paramtres de compilation, il faut entrer dans le rpertoire racine des sources de BIND
(ici /usr/local/src/bind-9.2.0), et excuter la commande ./configure.
La commande ./configure accepte un ou plusieurs paramtres tels que :
--with-openssl: Pour le support du DNSSEC, qui est un canal OpenSSL (version 0.9.5a minimum) per-
mettant de faire transiter le trafic de rplication de zones entre serveur(s) DNS primaire(s) et secondaire(s).
--enable-threads: Ajoute le support pour le multithreading, pour pouvoir tirer partie des systmes mul-
ti-processeurs
--with-kame: Support de IPv6, s'il n'est pas pris en charge par dfaut par le systme install.
--prefix: prcise le rpertoire qui va servir de base l'installation. Ici il faut prciser /usr/local.
--sysconfdir: prcise le rpertoire qui va contenir les fichiers de configuration.
Il existe beaucoup d'autres paramtres, qui ne seront pas traits ici, mais dont on peut avoir la liste et la descrip-
tion l'aide de la commande ./configure --help.
La compilation en elle-mme s'effectue en utilisant la commande make.
Il ne reste plus qu' installer les binaires compils, ainsi que les documentations dans les rpertoires appropris
avec la commande make install.
Mise en place des services DHCP et DNS 136
Une fois ces tapes accomplies, Bind est prsent install et prt tre configur.
11.3.3.2. Configuration de Bind
Maintenant que Bind est install, nous allons maintenant voir les diffrentes tapes de configurations du service.
11.3.3.2.1. Le fichier /etc/named.conf
Ce fichier est compos d'une suite de dfinitions (ou statements) utilisant des options insres entre accolades
qui vont nous permettre de dfinir les caractristiques de notre serveur.
<dclaration> ["<dclaration-1-nom>"] [<dclaration-1-classe>] {
<option-1>;
...
<option-N>;
};
11.3.3.2.2. Les listes de contrle d'accs
Ce type de dclaration permet de dfinir des groupes d'htes. Le but est de dfinir ces groupes pour ensuite dans
d'autres dclarations pouvoir les dsigner par le biais du nom de la liste. La syntaxe est la suivante :
acl <nom_de_la_liste> {
<lment-correspondant>;
[<lment-correspondant>; ...]
};
Il est possible d'utiliser des mots cls tels que :
any : toutes les adresses IP
localhost : toutes les IP utilises par le serveur
localnets : tous les rseaux directement connects au serveur
none : aucune IP
Afin d'illustrer cela, voici un exemple o nous configurons 2 listes :
acl bad_network {
172.16.0.0/16;
192.168.0.0/24;
};
acl my_network {
192.168.1.0/24;
};
options {
blackhole { bad_network; };
allow-query { my_network; };
allow-recursion { my_network; };
}
Mise en place des services DHCP et DNS 137
11.3.3.2.3. Les inclusions
L'un des problmes de scurit du service named est que le fichier /etc/named.conf est accessible en lec-
ture par tous les utilisateurs.
Les inclusions sont utilises afin de pouvoir stocker des informations critiques dans des fichiers spars et
accs restreint puis de pouvoir les utiliser depuis named.conf. La syntaxe est la suivante :
include "<nom-fichier>";
Les options
Ce type de dclaration fournit les options gnrales de configuration du serveur et tablit les valeurs par dfaut
pour les autres dclarations.
options {
<option>;
[<option>; ...]
};
Tableau 11.7. Options gnrales de configuration du serveur DNS
Options Description
allow-query Dfinit les htes autoriss faire des requtes sur le
serveur
allow-recursion Dfinit les htes autoriss des faire des demandes
rcursives
blackhole Dfinit les htes qui ne sont pas autoriss
directory Dfinit le rpertoire de travail (/var/named par d-
faut)
forward Contrle le comportement de retransmission d'une di-
rective forwarders. Les options suivantes sont accep-
tes :
first: les serveurs de noms spcifis dans la direc-
tive forwarders sont interrogs avant que named ne
tente de rsoudre le nom lui-mme.
only: named ne doit pas tenter d'effectuer lui-mme
une rsolution dans le cas o des demandes vers les
serveurs spcifis dans la directive forwarders
choueraient.
forwarders Dfinit les adresses des serveurs o doivent tre for-
wardes les requtes
listen-on Spcifie l'interface rseau utiliser (toutes par dfaut)
notify Dfinit si le service envoie une notification aux ser-
veurs esclaves lors d'une mise jour :
yes: notification
Mise en place des services DHCP et DNS 138
Options Description
no: pas de notification
explicit: notification envers les serveurs esclaves
spcifis dans une liste also-notify l'intrieur
d'une dclaration de zone
pid-file Dfinit l'emplacement du fichier de PID cre par na-
med
statistics-file Dfinit l'emplacement du fichier de statistiques (par
dfaut /var/named/stats)
Voici un exemple d'option :
acl "labo-linux" { 127.0.0.1; 192.168.1.0/24; };
options {
directory "/etc/namedb";
forwarders {
193.252.19.3; # Les DNS de notre
193.252.19.4; # providers
};
allow-query {"labo-linux";};
listen-on { 192.168.1.1; };
pid-file "named.pid";
};
11.3.3.3. Les dclarations de zone
Ce type de dclaration permet de dfinir les caractristiques d'une zone :
L'emplacement de ses fichiers de configurations
Les options spcifiques la zone
La syntaxe utiliser est la suivante :
zone <zone-nom> <zone-classe> {
<zone-options>;
[<zone-options>; ...]
};
De nombreuses options peuvent tre spcifies pour ce type de dclaration :
Tableau 11.8. Directives de configuration de zones dans named.conf
Options Description
allow-query Quels client sont autoriss obtenir des informations
Mise en place des services DHCP et DNS 139
Options Description
pour cette zone
allow-transfer Quels serveurs esclaves sont autoriss demander un
transfert des informations de cette zone
allow-update Quels htes sont autoriss mettre jour dynamique-
ment les informations de cette zone
file Nom du fichier de configuration de la zone dans le r-
pertoire de travail
masters Liste des adresses des serveurs faisant autorit sur la
zone
notify Dfinit si le service envoie une notification aux ser-
veurs esclaves lors d'une mise jour :
yes: notification
no: pas de notification
explicit: notification envers les serveur esclaves
spcifis dans une liste also-notify l'intrieur
d'une dclaration de zone
type Dfinit le type de zone :
forward: retransmet toutes les requtes
d'informations propos de cette zone vers d'autres
serveurs de noms .
hint: un type spcial de zone utilis pour diriger des
transactions vers les serveurs de noms racines qui
rsolvent des requtes lorsqu'une zone n'est pas
connue autrement. Aucune configuration au-del
de la valeur par dfaut n'est ncessaire avec une
zone hint.
master: dsigne le serveur de noms faisant autorit
pour cette zone. Une zone devrait tre configure
comme de type master (matre) si les fichiers de
configuration de la zone se trouvent sur le systme.
slave: dsigne le serveur de noms comme serveur
esclave pour cette zone. Cette option spcifie ga-
lement l'adresse IP du serveur de noms matre pour
cette zone.
zone-statistics Configure named pour qu'il conserve des statistiques
concernant cette zone
Illustrons cela avec deux exemples, le premier dans le cas d'un serveur matre et le second pour un serveur es-
clave :
# Cas du serveur matre :
zone "." {
type hint;
file "named.root";
};
Mise en place des services DHCP et DNS 140
zone "labo-linux.com" IN{
type master;
file "labo-linux.com.zone";
allow-update { none; };
};
# Cas du serveur esclave :
zone "labo-linux.com" {
type slave;
file "labo-linux.com.zone";
masters { 192.168.0.1;
};
Nous avons ici dfini un serveur en tant que matre pour la zone labo-linux.com et avons indiqu named de
refuser la mise jour partir de n'importe quel hte. Il est galement indiqu que le fichier comportant le dtail
de la zone serait labo-linux.com dans /var/named.
La configuration du fichier /etc/named.conf est prsent termine. Il faut maintenant crer et dfinir les
fichiers de zone.
11.3.3.4. Les fichiers de zone
Un fichier de zone est un fichier contenant des informations sur une zone particulire. Il est stock dans le rper-
toire de travail de named.
11.3.3.4.1. Configuration d'un fichier de zone
Le nom du fichier doit correspondre au nom dfinit dans l'option file de la dclaration insre dans na-
med.conf.
Ce type de fichier peut contenir 2 types d'informations :
Des directives : Ce sont des instructions pour l'excution de certaines tches ou de paramtres spciaux.
Des enregistrements de ressources : dfinitions des paramtres de la zone et assignation des identits aux
htes.
Avertissement
Concernant la syntaxe, il est important que chaque information soit sur sa propre ligne. Les com-
mentaires doivent se situer en fin de ligne aprs les caractres ; .
11.3.3.4.2. Les directives de fichiers de zone
Pour insrer une directive, de prfrence au dbut du fichier, il convient d'utiliser le symbole $ suivi du nom
de la directive. Les directives les plus courantes sont :
Tableau 11.9. Directives de configuration des fichiers de zones
Directive Description
$INCLUDE Utilis pour inclure un autre fichier de zone
l'intrieur
$ORIGIN Attache le nom de domaine tout enregistrement non
Mise en place des services DHCP et DNS 141
Directive Description
qualifi (ne finissant pas par un . )
$TTL Dure en secondes pendant laquelle les enregistre-
ments seront valides
11.3.3.4.3. Les enregistrements de ressources d'un fichier de zone
De nombreux types d'enregistrements sont disponibles. Voici les plus courants :
Les enregistrements de type A
Cet enregistrement est utilis pour associer un nom une IP. Si l'hte n'est pas spcifi, l'adresse sera utilise
par dfaut pour le domaine.
Syntaxe : <hte> IN A <adresse IP>
Exemple 11.1. Enregistrement de type "A"
IN A 192.168.10.1
dc1 IN A 192.168.10.2
Les enregistrements de type CNAME
L'enregistrement CNAME est un alias redirigeant vers un autre nom d'hte.
Syntaxe : <alias> IN CNAME <nom>
Exemple 11.2. Les enregistrements de type CNAME
dc1 IN A 192.168.10.2
serveur IN CNAME dc1
Les enregistrements de type MX
Le but de ces enregistrements est de rediriger le courrier destination de ce domaine vers un ou plusieurs ser-
veurs de courriers par dfaut.
Note
Dans le cas de plusieurs serveurs de messagerie, le champ prfrence permet d'attribuer une
Mise en place des services DHCP et DNS 142
priorit.
Syntaxe : IN MX <prfrence> <nom-serveur>
Exemple 11.3. Les enregistrements de type MX
IN MX 10 mail.labo-linux.com.
IN MX 20 mail2.labo-linux.com.
Avertissement
Le "." la fin du nom est important car il indique que le nom spcifi est complet.
Les enregistrements de type NS
Cet enregistrement annonce les serveurs de noms faisant autorit pour une zone.
Syntaxe : IN NS Serveur
Exemple 11.4. Les enregistrements de type NS
IN NS main-dns.labo-linux.com.
IN NS backup-dns.labo-linux.com.
Les enregistrements de type SOA
Utilis pour indiquer les informations importantes au sujet de cet espace de nom, cet enregistrement est le
premier tre insr aprs les directives.
@ IN SOA <serveur-noms-primaire> <email> (
<numro-srie>
<temps-actualisation>
<temps-nouvel essai>
<temps-expiration>
<TTL-minimum>
)
Mise en place des services DHCP et DNS 143
Expliquons prsent les diffrents champs prsents ici :
Tableau 11.10. Les options de l'enregistrement SOA
Mot cl Description
Le symbole @ place la directive $ORIGIN (ou le nom de zone, si la
directive $ORIGIN n'est pas installe) en tant
qu'espace de nom dfini par le prsent enregistrement
de ressources SOA
<serveurs-noms-primaire> spcifie le serveur faisant autorit
<email> l'adresse de la personne contacter propos de cet es-
pace de noms
<numro-srie> incrment chaque changement du fichier de zone
afin que named sache qu'il doit recharger cette zone.
Ce numro est utilis par le serveur esclave pour d-
terminer s'il est en train d'utiliser des donnes de zone
primes. Si c'est le cas, il doit les rafrachir.
<temps-actualisation> indique tout serveur esclave combien de temps il
doit attendre avant de demander au serveur de noms
matre si des changements ont t effectus dans la
zone.
<temps-nouvel essai> prcise au serveur de noms esclave l'intervalle pen-
dant lequel il doit attendre avant d'mettre une autre
requte de rafrachissement, au cas o le serveur de
noms matre ne rpondrait pas.
<temps-expiration> temps maximum depuis une absence de rponse du
serveur matre avant que le serveur esclave ne cesse
de rpondre en tant qu'autorit pour les requtes au
sujet de cet espace de nom.
<TTL-minimum> demande que d'autres serveurs de noms placent en
cache les informations pour cette zone pendant au
moins cette dure (en secondes).
Toutes les dures sont exprimes en secondes, cependant les mots cls tels que M (min), H (hour), D(day) et
W(week) fonctionnent.
Voici prsent un exemple d'application :
Exemple 11.5. Fichier de zone
@ IN SOA dns.labo-linux.com. hostmaster.labo-linux.com. (
02050500 ; numro de srie
3H ; rafrachir aprs 3 heures
1800 ; retenter aprs 30 minutes
604800 ; expire aprs 1 semaine
3D ) ; TTL minimum de 3 jours
IN NS dns.labo-linux.com.
IN MX 10 mail.labo-linux.com.
dns IN A 192.168.1.
www IN CNAME dns.labo-linux.com.
ftp IN A 192.168.1.2
Mise en place des services DHCP et DNS 144
mail IN A 192.168.1.3
pop IN CNAME mail.labo-linux.com.
smtp IN CNAME mail.labo-linux.com.
imap IN CNAME mail.labo-linux.com.
imprimante IN A 192.168.1.4
tftp IN A 192.168.1.5
routeuradsl IN A 192.168.1.254
prsent que le fichier de zone est prt, il faut remplir le fichier de zone inverse.
11.3.3.5. Les fichiers de zone inverse
11.3.3.5.1. Principe de domaine invers
Le processus de rsolution inverse permet la recherche d'un nom partir d'une IP. Le domaine "in-addr.arpa" a
t cr pour cela.
On l'appelle domaine inverse et la rsolution des adresses IP en noms de domaine se nomme table inverse
(translation inverse).
Le nom de domaine inverse est cr en inversant les nombres de l'adresse IP, et ajoutant in-addr.arpa la fin.
Exemple : L'adresse IP de www.labo-linux.com est 212.180.91.66. Son nom de domaine invers est donc
66.91.128.212.in-addr.arpa.
Afin de comprendre le fonctionnement et la ncessit de ce nom invers, prenons un exemple concret :
Un serveur FTP accepte des requtes de divers clients. Cependant vous ne souhaitez accepter que des requtes
provenant de domaines bien spcifiques, par exemple labo-linux.com.
Lorsqu'un client se connecte, le serveur est capable de connatre l'adresse IP du client, puisque cette dernire se
trouve dans tous les paquets qui traversent le rseau.
L'adresse IP que le systme fournit au serveur FTP est 212.180.91.66. Pour retrouver le nom de cette machine, il
faut trouver 66.91.180.212.in-addr.arpa.
Le serveur de noms va donc d'abord trouver les serveurs puis les serveurs arpa., puis in-addr.arpa, et poursuivre
la recherche inverse par 212, puis 180 et finalement trouver le serveur pour la zone 91.128.212.in-addr.arpa la-
bo-linux.com
Figure 11.13. Rsolution inverse
Mise en place des services DHCP et DNS 145
C'est ce dernier qui lui dira que pour 66.91.180.212.in-addr.arpa, il existe un champ "PTR
www.labo-linux.com'', ce qui veut dire que le nom qui va avec 212.180.91.66 est www.labo-linux.com.
Le serveur n'acceptant que certains domaines dont labo-linux.com, la connexion sera donc autorise.
S'il n'existait pas de rsolution inverse de 212.180.91.66 au travers de la zone in-addr.arpa, le serveur aurait t
tout fait incapable de trouver le nom et donc de filtrer en fonction du nom de domaine.
De nombreux serveurs n'acceptent pas les connexions venant de machines dont ils ne peuvent retrouver le nom.
C'est pourquoi la rsolution de noms inverse pour les machines est obligatoire.
11.3.3.5.2. Configuration d'un fichier de rsolution de noms inverse
Le but de ce fichier va tre de fournir une rsolution inverse, donc un nom FQDN partir d'une adresse IP. Ce
fichier est similaire au fichier de noms prcdents si ce n'est que les enregistrements sont de types PTR :
Exemple :
$ORIGIN 1.168.192.in-addr.arpa
$TTL 86400 @ IN SOA dns.labo-linux.com. hostmaster.labo-linux.com. (
02050500 ; numro de srie
3H ; rafrachir aprs 3 heures
1800 ; retenter aprs 30 minutes
604800 ; expire aprs 1 semaine
3D ) ; TTL minimum de 3 jours
IN NS dns.labo-linux.com.
IN MX 10 mail.labo-linux.com.
20 IN PTR ws1.labo-linux.com.
21 IN PTR ws2.labo-linux.com.
22 IN PTR ws3.labo-linux.com.
23 IN PTR laptop1.labo-linux.com.
24 IN PTR database.labo-linux.com.
25 IN PTR gateway.labo-linux.com.
Mise en place des services DHCP et DNS 146
Ce fichier serait mis en service avec la dclaration suivante dans named.conf :
zone "1.0.10.in-addr.arpa" IN {
type master;
file "labo-linux.com.rr.zone";
allow-update { none; };
};
11.3.3.6. L'administration du dmon named
11.3.3.6.1. Dmarrage et arrt du service
Pour dmarrer le serveur DNS, il suffit d'utiliser la commande /usr/local/sbin/named. Les paramtres
disponibles sont :
-c {config_file}: Permet de spcifier le chemin du fichier de configuration principale.
-v: Affiche la version de BIND.
-u {user_name}: Force BIND dmarrer sous un compte particulier, car BIND dmarre par dfaut en
utilisant le compte root.
-t {directory}: Option utilise lorsque l'on dmarre BIND dans une SandBox (cf. chapitre correspon-
dant).
Il existe 2 utilitaires permettant de vrifier les fichiers de configuration de BIND :
named-checkconf: Vrifie le fichier de configuration principale et affiche les erreurs de syntaxe trouves.
named-checkzone: Idem mais pour les fichiers de zone.
11.3.3.6.2. Configuration de rndc
BIND contient un utilitaire appel rndc qui permet d'utiliser des lignes de commande pour administrer le dmon
named partir de l'hte local ou d'un hte distant.
Afin de prvenir les accs non autoriss au dmon, BIND utilise une mthode de cl secrte partage pour ac-
corder des privilges aux htes. Dans une telle situation, une cl identique doit tre prsente aussi bien dans /
etc/named.conf que dans le fichier de configuration de rndc, savoir /etc/rndc.conf.
11.3.3.6.3. Configuration de /etc/named.conf
Pour que rndc puisse se connecter un service named, une dclaration controls doit tre prsente dans le fichier
/etc/named.conf du serveur BIND.
La dclaration controls montre dans l'exemple qui suit, permet rndc de se connecter partir d'un hte local.
controls {
inet 127.0.0.1 allow { localhost; } keys { <nom-cl>; };
};
Cette dclaration indique named de se mettre l'coute du port TCP 953 par dfaut de l'adresse inverse et
Mise en place des services DHCP et DNS 147
d'autoriser les commandes rndc provenant de l'hte local si la cl adquate est prsente. Le <nom-cl> fait r-
frence la dclaration key, qui se trouve aussi dans le fichier /etc/named.conf. L'exemple suivant
illustre une dclaration key.
key "<nom-cl>" {
algorithm hmac-md5;
secret "<valeur-cl>";
};
Dans ce cas, la <valeur-cl> est une cl HMAC-MD5. Afin de crer des cls HMAC-MD5, utilisez la com-
mande suivante:
dnssec-keygen -a hmac-md5 -b <longueur-bits> -n HOST <nom-fichier-cl>
Une cl d'au moins 256 bits de long est un bon choix. La bonne cl qui doit tre place dans la zone
<valeur-cl> se trouve dans <nom-fichier-cl>.
Note
Pour des raisons de scurit, il est conseill de mettre la dclaration de cl dans un fichier spar
uniquement accessible par root et de l'appeler via un include : include "/etc/rndc.key";
11.3.3.6.4. Configuration de /etc/rndc.conf
La dclaration key reprsente la dclaration la plus importante contenue dans /etc/rndc.conf.
key "<nom-cl>" {
algorithm hmac-md5;
secret "<valeur-cl>";
};
Les lments <nom-cl> et <valeur-cl> doivent tre absolument identiques leurs paramtres contenus dans /
etc/named.conf.
options {
default-server localhost;
default-key "<nom-cl>";
};
11.3.3.6.5. La ligne de commande de rndc
Une commande rndc se prsente sous le format suivant:
rndc <options> <commande> <options-commande>
Mise en place des services DHCP et DNS 148
Lors de l'excution de rndc sur un hte local configur de manire approprie, les commandes suivantes sont
disponibles:
Tableau 11.11. Options de la commande rndc
Commande Effet
halt Arrt du service named
querylog Logging de toutes les requtes
refresh Rafrachissement de la base de donnes
reload recharge les fichiers de zone mais conserve toutes les
rponses prcdemment places en cache.
stats vacue les statistiques courantes de named vers le fi-
chier /var/named/named.stats
stop arrte le serveur de manire nette, en enregistrant au
pralable toutes mises jour dynamiques et donnes
Incremental Zone Transfers (IXFR).
-c <fichier-configuration> Permet de slectionner le fichier de configuration
utiliser
-p <numro-port> Permet de spcifier le numro de port utiliser
-s <serveur> Permet d'envoyer les instructions un serveur spci-
fique
-y <nom-cl> spcifie une cl autre que l'option default-key dans le
fichier /etc/rndc.conf.
Note
Si vos changements n'affectent qu'une zone particulire, rechargez seulement une zone en ajoutant
le nom de la zone aprs la commande reload.
11.3.3.7. Scurisation du serveur
11.3.3.7.1. Mise en place d'une sandbox
Le but de la SandBox, en cas d'attaque pirate, est de limiter l'accs seulement une infime partie du systme de
fichiers.
Pour cela, il faut dmarrer le daemon de BIND dans un environnement chroot. L'effet obtenu sera de faire
croire BIND que son rpertoire sera sa propre racine de systme de fichiers.
Afin de mettre en oeuvre cette SandBox, il va falloir procder quelques modifications :
Crer un utilisateur non privilgi pour faire fonctionner BIND.
Changer le propritaire des fichiers de BIND.
Crer un fichier PID dans notre environnement chroot.
Modifier le fichier de configuration principal.
Mise en place des services DHCP et DNS 149
Dmarrer BIND avec les bons paramtres.
Commenons la cration de l'utilisateur non privilgi. Dans cet exemple sera utilis le compte : dns (UID =
1005).
La commande touch named.pid permet de crer le fichier PID de BIND.
Le changement de propritaire des fichiers de BIND (prsents dans le rpertoire/etc/namedb) se fait grce
la commande chown dns * dans le rpertoire de base de BIND.
Les modifications qu'il faut apporter au fichier de configuration principal sont les suivantes :
directory "/";
pid-file "named.pid";
La dernire modification concerne les paramtres de dmarrage. Il suffit pour cela de mettre -u 1005 -t /
etc/namedb -c named.conf en tant que paramtre pour l'option named_flags du fichier /
etc/rc.conf, au lieu de -c /etc/namedb/named.conf.
Il ne reste plus qu' redmarrer le serveur afin que le service DNS soit entirement fonctionnel avec toutes les
dernires modifications.
11.3.3.8. Mise jour DNS via le serveur DHCP
Il est possible de configurer les serveurs DHCP et BIND de manire ce que lorsqu'une machine prend un bail
DHCP, celle-ci soit enregistre par le serveur DNS.
11.3.3.8.1. Configuration
Sans trop entrer dans les dtails, nous allons voir les diffrentes tapes de configuration. Dans cet exemple, les
deux services sont excuts sur la mme machine et utilisent donc la mme adresse : 127.0.0.1.
11.3.3.8.1.1. Modifications apporter a /etc/named.conf
zone "labo-linux.com" {
type master;
file "/var/named/labo-linux.zone";
allow-update {
127.0.0.1;
};
};
# La zone de recherche inverse
zone "10.168.192.in-addr.arpa" {
type master;
file "/var/named/reverse.rev";
allow-update {
127.0.0.1;
};
};
Ceci autorise les modifications en provenance de 127.0.0.1.
Mise en place des services DHCP et DNS 150
Avertissement
Il est important que les machines s'enregistrant sur le DNS n'aient pas dj une entre dans les fi-
chiers de zone.
11.3.3.8.1.2. Modifications apporter /etc/dhcpd.conf
ddns-update-style interim;# mthode de mise jour du DNS :
ddns-update on; # mise jour autorise
ignore client-updates; # mise jour par le serveur DHCP force
update-static-leases on; # la mise jour des IP fixes force
# on dfinit galement quel DNS doit tre mis jour pour ces zones :
zone labo-linux.com. {
primary 127.0.0.1;
}
zone 10.168.192.in-addr.arpa. {
primary 127.0.0.1;
}
11.3.3.8.1.3. Modifications pour les clients Linux
La ligne suivante doit tre ajoute dans /etc/dhclient.conf:
send host-name "lenomdelamachine" ;
En effet par dfaut, dhclient n'envoie pas le nom d'hte au serveur par dfaut.
11.3.3.8.1.4. Exemples de fichiers de configuration
Le but de ce chapitre est de proposer des exemples de configurations prt l'emploi :
11.3.3.8.2. Cas d'un serveur matre
11.3.3.8.2.1. /etc/named.conf
acl "labo-linux" { 127.0.0.1; 192.168.1.0/24; };
options {
directory "/etc/namedb";
forwarders {
193.252.19.3;
193.252.19.4;
};
allow-query {"labo-linux";};
};
zone "." {
type hint;
file "named.root";
};
zone "0.0.127.in-addr.arpa" {
type master;
file "localhost.rev";
};
zone "labo-linux.com" {
type master;
Mise en place des services DHCP et DNS 151
file "labo-linux.zone";
};
zone "1.168.192.in-addr.arpa" {
type master;
file "1.168.192.in-addr.arpa";
};
11.3.3.8.2.2. /var/named/labo-linux.zone
@ IN SOA dns.labo-linux.com. hostmaster.labo-linux.com. (
02050500
10800
1800
3600000
259200 )
IN NS dns.labo-linux.com.
IN MX 10 mail.labo-linux.com.
dns IN A 192.168.1.1
www IN CNAME dns.labo-linux.com.
ftp IN A 192.168.1.2
mail IN A 192.168.1.3
routeuradsl IN A 192.168.1.254
passerelle IN CNAME routeuradsl.labo-linux.com.
11.3.3.8.2.3. /var/named/localhost.rev
@ IN SOA dns.labo-linux.com. hostmaster.labo-linux.com. (
02042800
3600
900
3600000
3600 )
IN NS labo-linux.com.
1 IN PTR localhost.
11.3.3.8.3. Cas d'un serveur de cache
Pour ce type de serveur, un fichier /etc/named.conf suffit :
options {
directory "/var/named";
allow-query { 192.168.1.0/24; };
allow-transfer{ 192.168.1.0/24; };
allow-recursion{192.168.1.0/24; };
};
controls {
inet 127.0.0.1 allow { localhost; } keys { rndckey; };
};
zone "." IN {
type hint;
file "named.ca";
};
zone "localhost" IN {
type master;
file "localhost.zone";
allow-update { none; };
};
Mise en place des services DHCP et DNS 152
zone "0.0.127.in-addr.arpa" IN {
type master;
file "named.local";
allow-update { none; };
};
include "/etc/rndc.key"
11.3.4. Bind DLZ
11.3.4.1. Prsentation
DLZ (Dynamically Loadable Zones) est un patch sous licence de type BSD pour BIND qui permet de simplifier
l'administration de BIND et de consommer moins de mmoire en stockant les informations de zone dans une
base de donnes. Les changements sont ainsi immdiats et ne ncessitent pas de relancer BIND.
DLZ est disponible cette adresse :http://bind-dlz.sourceforge.net.
11.3.4.2. Prparation de la base de donnes
DLZ supporte beaucoup de sources de donnes diffrentes : PostgreSQL, MySQL, Berkeley DB, ODBC (donc
Firebird, DB2, Oracle, Sybase, SAPDB) et LDAP.
Voici une table type pouvant tre utilise par DLZ :
CREATE TABLE dns_records (
zone text not NULL,
host text,
ttl int(11) default NULL,
type varchar(10),
mx_priority varchar(5) default NULL,
data text,
resp_person text,
serial varchar(20) default NULL,
refresh varchar(11) default NULL,
retry varchar(11) default NULL,
expire varchar(11) default NULL,
minimum varchar(11) default NULL,
INDEX zone_host_index (zone(30), host(30)),
INDEX type_index (type(8))
) TYPE=MyISAM;
Les champs correspondent ici :
ttl Dure en secondes pendant laquelle les enregistre-
ments seront valides
type Type d'enregistrement (SOA, NS, A, MX...)
host Nom d'hte ou adresse IP
mx_prority Priorit du serveur de messagerie
data Adresse IP / Nom d'hte / Nom de domaine
primary_ns Serveur de noms primaire, pour l'enregistrement SOA
resp_person L'adresse email de la personne contacter, pour
l'enregistrement SOA
serial Numro de srie, pour l'enregistrement SOA
Mise en place des services DHCP et DNS 153
refresh Dlai d'actualisation, pour l'enregistrement SOA
retry Dlai avant un nouvel essai, pour l'enregistrement
SOA
expire Dlai d'expiration, pour l'enregistrement SOA
minimum TTL minimum, pour l'enregistrement SOA
11.3.4.3. Configuration de Bind
Il faut ajouter dans le fichier de configuration de BIND, named.conf, pour la table prcdente, les lignes sui-
vantes :
dlz "Mysql zone" {
database "mysql
{host=127.0.0.1 dbname=bind_data port=3306 user=bind pass=bind }
{select zone from dns_records where zone = '%zone%' limit 1}
{select ttl, type, mx_priority, case when lower(type)='txt' \
then concat('\"', data, '\"') when lower(type) = 'soa' then \
concat_ws(' ', data, resp_person, serial, refresh, retry, \
expire, minimum) else data end as mydata from dns_records \
where zone = '%zone%' and host = '%record%'}";
};
La premire ligne :dlz "Mysql zone" {
Cette ligne indique BIND que l'on souhaite utiliser DLZ, Mysql zone permet d'indiquer un nom cette
configuration.
La seconde ligne :database "mysql
Cette ligne prcise la base de donnes utilise. Le mot clef database est indispensable. Le premier argument
de la ligne de commande qui est pass DLZ doit tre le type de base de donnes utilis, ici MySQL. Cette
syntaxe doit imprativement tre respecte.
La troisime ligne :{host=127.0.0.1 dbname=bind_data port=3306 user=bind pass=bind}
Elle doit tre adapte suivant le serveur et la base Mysql utilise :
Enfin la premire requte permet de savoir si une zone est supporte par la base de donnes. La seconde re-
qute permet de dterminer les enregistrements d'une zone.
11.3.4.4. Ajout d'enregistrements
Pour ajouter un enregistrement de type SOA dans la base de donne MySQL utilis ici, il faut lancer cette re-
qute :
INSERT INTO dns_records (zone, host, ttl, type, mx_priority, data, \
resp_person, serial, refresh, retry, expire, minimum) \
VALUES ("supinfo.com","@","10","soa","","ns1.supinfo.com.",\
"admin.supinfo.com.","2","28000","2800","64800","10");
De mme, pour un enregistrement de type MX:
Mise en place des services DHCP et DNS 154
INSERT INTO dns_records (zone, host, ttl, type, mx_priority, data, \
resp_person, serial, refresh, retry, expire, minimum) VALUES \
("supinfo.com","@","10","mx","10","supinfo.com.","","","","","","");
Pour un enregistrement de type A:
INSERT INTO dns_records (zone, host, ttl, type, mx_priority, data, \
resp_person, serial, refresh, retry, expire, minimum) VALUES \
("supinfo.com","@","10","a","","127.0.0.1","","","","","","");
Pour un enregistrement de type NS:
INSERT INTO dns_records (zone, host, ttl, type, mx_priority, data, \
resp_person, serial, refresh, retry, expire, minimum) VALUES \
("supinfo.com","@","10","ns","","ns1.supinfo.com.","","","","","","");
Et ainsi de suite pour l'ensemble des enregistrements possibles.
11.3.4.4.1. Remarques importantes
Lors du dploiement de cette solution, il faut faire attention certains points :
Il faut viter d'utiliser le mme serveur de base de donnes pour le DNS primaire et secondaire, en effet dans
ce cas, en cas de problme avec le serveur, les deux DNS deviennent inutiles. Pour cela il faut rpliquer la
base de donnes en ayant une base indpendante pour chaque serveur DNS.
Normalement, sans DLZ, un serveur DNS est dfini en tant que serveur de noms matre et les autres en tant
que serveurs de noms esclaves. Cette pratique est viter avec DLZ, en effet le but de DLZ est que le serveur
DNS soit jour immdiatement, or avec le transfert de zone, le serveur matre et les esclaves peuvent tre
dsynchroniss pendant une priode assez longue ou ncessiter un transfert important de donnes.
Mise en place des services DHCP et DNS 155
Chapitre 12. Partage de fichiers avec
SAMBA
Table des matires
12.1. Prsentation ............................................................................................................... 156
12.2. Pr requis .................................................................................................................. 156
12.3. Samba ...................................................................................................................... 157
12.3.1. Historique ....................................................................................................... 157
12.3.2. Daemons ........................................................................................................ 157
12.3.3. Nouveauts ..................................................................................................... 157
12.4. Le protocole SMB ...................................................................................................... 158
12.4.1. Le format SMB ................................................................................................ 158
12.5. Le protocole NetBIOS ................................................................................................. 160
12.5.1. Fonctionnement de NetBIOS .............................................................................. 160
12.6. Utilisation du client ..................................................................................................... 162
12.7. smbmount ................................................................................................................. 162
12.8. nmblookup ................................................................................................................ 163
12.9. findsmb .................................................................................................................... 163
12.10. Smb4k .................................................................................................................... 163
12.11. Configuration du serveur ............................................................................................ 163
12.12. Prsentation des diffrentes sections ............................................................................. 163
12.12.1. Section global ................................................................................................ 163
12.12.2. Section homes ............................................................................................... 165
12.12.3. Section printers et print$ .................................................................................. 165
12.12.4. Section netlogon ............................................................................................. 166
12.12.5. Sections de partages ........................................................................................ 166
12.13. Validit du fichier smb.conf ........................................................................................ 167
12.14. Gestion des utilisateurs .............................................................................................. 167
12.15. SWAT .................................................................................................................... 167
12.15.1. Installation .................................................................................................... 167
12.15.2. Utilisation ..................................................................................................... 168
12.16. Utilisation de Samba en Contrleur de domaine .............................................................. 168
12.17. Cration des rpertoires sur le serveur samba .................................................................. 169
12.18. Modification dans smb.conf ........................................................................................ 169
12.19. Ajouter des comptes pour les ordinateurs ....................................................................... 169
12.1. Prsentation
12.2. Pr requis
Les connaissances ncessaires sont :
Connaissances de base en rseau (TCP/IP)
Connaissances de base en Linux et Windows
156
Les prrequis techniques sont :
au moins deux ordinateurs relis en rseau,
une distribution GNU/Linux oprationnelle,
les packages Samba, installs ou non.
12.3. Samba
12.3.1. Historique
Samba a t cr par Andrew Tridgell (actuellement chef de file de l'quipe de dveloppement du projet Samba)
en 1991. Il travaillait sur le dveloppement d'un programme de gestion de fichiers bas sur le protocole propri-
taire SMB (Server Message Block) implment par Microsoft et IBM. Le nom de Samba t trouv grce la
commande UNIX suivante:
[mandriva@linux ~]$ grep -i 's.*m.*b' /usr/dict/words
rsultat: salmonberry samba sawtimber scramble
En d'autres termes Samba est l'implmentation libre (sous licence GNU General Public License) du protocole de
communication SMB. Il permet de:
partager des systmes de fichiers,
jouer le rle de contrleur de domaine Windows 2000/NT
fournir un serveur WINS (Windows Internet Name Service)
Le protocole SMB tant propritaire, tout le travail a t fait par du reverse engineering, c'est dire en observant
le fonctionnement du protocole SMB entre des clients et serveur Microsoft Windows, et en analysant les bi-
naires Microsoft Windows.
12.3.2. Daemons
Samba est compos de deux daemons fournissant des services :
smbd est un daemon qui prend en charge le partage de fichiers, d'imprimante, et l'authentification des clients
SMB.
nmbd est un daemon qui supporte les services NetBIOS et WINS.
12.3.3. Nouveauts
PDC (Prilmary Domain Controler) pour clients de type Windows 2000/XP. Jusque l Samba pouvait servir de
Partage de fichiers avec SAMBA 157
PDC un ensemble de machines Windows 95/98/Me et NT. A partir de la 2.2, le serveur Samba peut gale-
ment agir comme PDC au sein dun rseau Windows 2000/XP.
Le support du Microsoft DFS permet de regrouper aux yeux des utilisateurs, un ensemble de ressources, si-
tues sur des serveurs diffrents, dans un mme rpertoire sur un serveur. Ceci simplifie beaucoup la vie des
utilisateurs. Ce protocole est support partir de Samba 2.2.
Support d'impression Windows NT/2000
Samba peut comprendre et donc traduire en consquence les ACL UNIX et Windows NT/2000/XP.
L'intgration de Winbind permet aux utilisateurs dont les logins sont stocks sur un serveur Windows de
s'authentifier sur un systme Unix. Ceci permet une uniformisation de l'environnement de logon qui est bien
plus facilement administrable que deux systmes que l'on doit synchroniser.
Les extensions CIFS d'UNIX permettent samba de supporter le systme d'attributs de fichiers Unix et ainsi
de servir de remplacement un serveur NFS. L'avantage tant que l'authentification se fait par utilisateur et
non pas par IP, ce qui garantit une meilleure scurit.
Authentification Kerberos v5 et LDAP. Ceci permet une intgration dans un rseau Active Directory.
Le support de l'Unicode permet de simplifier l'internationalisation des langues.
12.4. Le protocole SMB
Nous allons dans cette section dcrire plus en dtail le protocole SMB lui-mme. D'un point de vue haut niveau,
le protocole SMB est relativement simple. Il inclut un jeu de commandes ncessaire aux diverses oprations re-
latives aux fichiers et aux imprimantes partages.
On pourra par exemple :
Ouvrir et fermer des fichiers
Crer et supprimer des fichiers et des rpertoires
Lire et crire des fichiers
Chercher des fichiers
Grer les files d'impression
Chaque opration peut tre encode en un message SMB et transmise depuis et vers un serveur. Ces commandes
sont au format Server Message Blocks.
12.4.1. Le format SMB
Le protocole SMB est principalement un protocole de requte/rponse. En effet, dans la majeure partie du
temps, un client envoie une requte SMB au serveur et celui-ci renvoie une rponse SMB au client. Un message
SMB nest pas si complexe. Regardons sa structure interne d'un peu plus prs.
On peut la sparer en deux grandes parties :
Un en-tte de taille fixe et une chane de commande fixe de longueur trs variable en fonction du message.
Partage de fichiers avec SAMBA 158
Voici les diffrents champs d'un en-tte de message :
Champs Taille (octets) Description
0xFF 'SMB' 1 Identifiant du protocole
COM 1 Code commande, de 0x00 0xFF
RCLS 1 Classe d'erreur
REH 1 Rserv
ERR 2 Code d'erreur
REB 1 Rserv
RES 14 Rserv
TID 2 Identifiant unique pour une res-
source utilise par le client
PID 2 ID du processus appelant
UID 2 ID utilisateur
MID 2 Multiplex identifier; utilis pour
router les requtes dans un proces-
sus
Le champs COM identifie la commande excuter. Toutes les commandes ne remplissent pas tous les champs
chaque requte. Prenons par exemple la premire demande de connexion d'un client vers un serveur, le client ne
pourra fournir un identificateur d'arborescence (TID), la valeur de ce champs sera alors NULL. D'autres champs
peuvent tres gaux 0 lorsqu'ils ne sont pas utiliss. Juste aprs l'en-tte se trouve un nombre variable doctets
qui constitue une commande ou une rponse SMB.
Chaque commande comme Open File (COM=SMBopen) ou Get Print (COM=SMBsplretq) possde son propre
jeu de paramtres et de donnes. Comme pour l'en-tte tous les champs nont pas forcment tre remplis. De
par son volution le jeu de commandes SMB se trouve de plus en plus enrichi. Cependant il garde une compati-
bilit ascendante, ainsi des entits utilisant diffrentes versions du protocole pourront communiquer entre elles.
Voici titre indicatif l'ensemble des dialectes du protocole SMB :
Nom du protocole Identificateur Utilis par
Core PC NETWORK PROGRAM 1.0
Core Plus MICROSOFT NETWORKS 1.03
LAN Manager 1.0 LANMAN1.0
LAN Manager 2.0 LM1.2X002
Partage de fichiers avec SAMBA 159
LAN Manager 2.1 LANMAN2.1
NT LAN Manager 1.0 NT LM 0.12 Windows NT 4.0
Samba's NT LM 0.12 Samba Samba
Common Internet File System CIFS 1.0 Windows 2000/XP
Une connexion SMB simple: Le client et le serveur doivent accomplir trois tapes afin d'tablir une connexion
une ressource
Etablir une session NetBIOS. Le client envoie une requte douverture de session et le serveur lui rpond en
accordant une session, un canal de communication est alors ouvert.
Dterminer le dialecte du protocole employer. Le client envoie maintenant un message au serveur afin de
ngocier le dialecte du protocole SMB employer. La commande encapsule dans le message est SMBneg-
prot, le client envoie au serveur la liste des dialectes qu'il comprend et vice versa. Le serveur rpond en four-
nissant l'index de la valeur supporte (0xFF si aucun protocole n'est valide).
Dfinir les paramtres de session et tablir la connexion la ressource. Enfin pendant la dernire tape, les
paramtres de session et de connexion sont changs grce au message SMBSesssetupX.
Parmi les paramtres on trouve :
Le nom du compte et le mot de passe (quand il y en a un),
Le nom du groupe de travail (workgroup),
La taille maximum des donnes qui peuvent tre transfres,
Le nombre de requtes en attente dans la file.
12.5. Le protocole NetBIOS
La communication rseau via le protocole NetBIOS est assez diffrente d'une communication classique TCP/IP
utilise par des protocoles comme FTP ou Telnet. Nous allons commencer par voir les concepts de base du pro-
tocole NetBIOS, puis quelques implmentations que Microsoft en a fait, et enfin nous exposerons les situations
qui sont ou non propices l'utilisation dun serveur Samba.
12.5.1. Fonctionnement de NetBIOS
Note
Ces documents continuent aujourd'hui de rgir toutes les implmentations y compris celles de Mi-
crosoft ou mme Samba.
Partage de fichiers avec SAMBA 160
En 1984, IBM cra une simple API (Application Programming Interface) pour mettre en rseau ses ordinateurs :
Network Basic Input/Output System (NetBIOS).
L'API NetBIOS permet aux applications de se connecter et de partager des donnes entre elles de manire rudi-
mentaire. Considrez l'API NetBIOS comme une extension de l'API BIOS qui contient du code de bas niveau
permettant d'effectuer les oprations sur le systme de fichiers local. Au dbut NetBIOS a t mis en oeuvre sur
les rseaux de type TokenRing, puis sur des rseaux IPX de Novell.
Le protocole TCP utilise des nombres pour reprsenter les adresses des machines (192.168.0.2) tandis que Net-
BIOS nutilise que des noms. Certains problmes se sont poss lorsque l'on essaya de faire cohabiter les deux
protocoles, c'est cet effet que les RFC 1001 et 1002 (documents de standardisation) furent publis et dcrivent
comment NetBIOS doit fonctionner sur un rseau de type TCP/UDP. Ce protocole est communment appel
NBT (NB over TCP/IP).
12.5.1.1. Rcuprer un nom NetBIOS
Dans le monde de NetBIOS, lorsqu'un ordinateur se connecte, il effectue une requte d'enregistrement de son
nom NetBIOS. Cependant il est impossible que deux ordinateurs du mme groupe de travail aient le mme nom.
Deux approches permettent de s'assurer que ce cas ne se produise jamais :
Utiliser un NBNS (NetBIOS Name Server) pour garder une trace de toutes les machines qui ont enregistr un
nom NetBIOS sur le rseau.
Autoriser chaque ordinateur du rseau dfendre son enregistrement dans le cas ou un autre ordinateur essaye
d'enregistrer le mme.
Afin dutiliser NetBIOS dans un environnement TCP/IP,il doit y avoir un moyen de rsoudre un nom NetBIOS
partir d'une adresse IP.
Chaque ordinateur renvoie son IP lorsqu'il entend une requte de type broadcast de son nom NetBIOS.
Utiliser un NBNS pour rsoudre les noms NetBIOS vers des adresses IP.
La mise en place dun NBNS permet daccrotre grandement les performances du rseau en vitant une tempte
de broadcast inutile pour le simple enregistrement de nom. Pour savoir comment une machine Windows va r-
agir pour l'enregistrement et la rsolution de nom on pourra taper ipconfig /all dans un terminal MS-DOS et re-
chercher la ligne contenant Node-Type. Voici les valeurs que vous pourrez trouver :
Type de nud (machine) Description
b-node Utilise la mthode de broadcast pour lenregistrement
et la rsolution.
p-node Utilise la mthode d'enregistrement et de rsolution
en Point To Point (NBNS)
m-node (mixed) Utilise le broadcast pour la rsolution et
lenregistrement puis informe un serveur NBNS de
ses rsultats
h-node (hybrid) Utilise un NBNS sil existe, dans le cas contraire il ef-
fectue un broadcast.
Partage de fichiers avec SAMBA 161
12.6. Utilisation du client
La commande smbclient est la commande de base pour lutilisation cliente de samba (do son nom!!). Elle per-
met par exemple de rcuperer la liste des partages dun hote:
[mandriva@linux ~]$ smbclient -L host_distant -U login
Password: ( entrez votre mot de passe ici)
Cette commande est galement un ftp - like. Elle permet de se connecter au partage et dexcuter des com-
mandes dans lenvironnement du partage.
[mandriva@linux ~]$ smbclient //host_distant/partage -U login
Password:
une invite de commande de type samba apparat
smb: \>
Pour rcuprer toutes les commandes il suffit de taper: ?
smb: \> ?
? altname archive blocksize cancel
12.7. smbmount
Cette commande permet de monter les partages distants dans le systme de fichiers.
[mandriva@linux ~]$ smbmount //hostname/partage /mnt/mount_point \
-o username=login
Password:
Cette commande est quivalente :
[mandriva@linux ~]$ mount t smbfs //hostname/partage /mnt/mount_point \
-o username=login
Password:
Et pour dmonter:
[mandriva@linux ~]$ smbumount //mnt/mount_point
Partage de fichiers avec SAMBA 162
12.8. nmblookup
Cette commande permet de rcuprer ladresse IP dun hte partir de son nom NetBIOS :
[mandriva@linux~]$ nmblookup hostname
querying hostname on 10.1.19.255
10.1.16.86 hostname<00>n
12.9. findsmb
Cette commande est en fait un script perl bien sympathique, permettant de rcuprer une liste dordinateurs pro-
posant des services compatibles Samba.
Ce script nest pas disponible sur toutes les distributions il faut parfois aller le chercher sur le site de Samba.
12.10. Smb4k
Juste pour le citer, il sagit dun client graphique trs pratique et efficace qui permet de trouver tous les groupes
de travail, les ordinateurs proposant des partages et il permet dy accder en quelques clics.
12.11. Configuration du serveur
La configuration de Samba se fait essentiellement dans le fichier /etc/samba/smb.conf. Par dfaut Samba
vrifie son fichier de configuration toutes les 60 secondes. Sil trouve des changements ceux-ci sont immdiate-
ment appliqus. Si les modifications sont mineures cela ne posera pas de problme, mais en cas de modification
plus importante cela peut devenir problmatique :
Si durant la reconfiguration le fichier est erron, Samba risque de faire quelque chose d'imprvu lorsqu'il va
recharger sa configuration. Il est donc conseill de copier le fichier de configuration, le modifier, vrifier sa
syntaxe, puis le remettre en place.
Il est galement conseill de redmarrer le serveur, pour rinitialiser les connexions avec les clients, et donc
les privilges des utilisateurs.
Ce fichier tant lui-mme divis en diffrentes sections contenant chacune ses paramtres, que nous dtaillerons
ensuite.
[nom_de_section]
paramtre = valeur
paramtre2 = valeur2
12.12. Prsentation des diffrentes sections
12.12.1. Section global
Partage de fichiers avec SAMBA 163
La section global permet de configurer toutes les options concernant le serveur en lui-mme. Voici la plupart
des paramtres configurables :
[global]
#workgroup correspond au nom du groupe de travail SMB
workgroup = WORKGROUP
#Le nom NetBIOS du PC
netbios name = hostname
#Description du serveur
server string = Serveur de partage Samba
#Respect des droits rwx des fichiers
obey pam restrictions = yes
#Pour interdire la connexion de certains utilisateurs
invalid users = root
#Pour forcer lauthentification:
security = user
#Pour utiliser cups comme serveur dimpression:
printing = cups
printcap name = cups
#Autoriser uniquement certaines adresses IP
hosts deny = ALL
hosts allow = 192.168.0.1 127.0.0.1
#Pour ajouter le compte invit
guest account = nobody
#Pour faire de samba un server WINS
name resolve order = wins host lmhosts bcast
wins support = yes
Nous n'allons pas dtailler toutes les options car elles ont des noms assez explicites. Cependant nous allons ap-
porter une prcision propos de la scurit et du mode d'authentification.
La scurit et l'authentification des utilisateurs va dpendre de l'option security. Cette option peut prendre
plusieurs valeurs telles que user, share, server ou domain. D'autres options telles que guest ok vont
aussi jouer sur le type de connexion. Voici les diffrentes configurations avec leur fonctionnement.
12.12.1.1. Authentification de type : user
La valeur user est celle par dfaut depuis Samba 3. L'identifiant de connexion Windows et le mot de passe se-
ront automatiquement utiliss pour tenter une authentification sur le serveur Samba. Si l'authentification choue,
un nouveau couple identifiant mot de passe sera demand. L'utilisateur sera connect tous les partages du
serveur avec le mme couple d'identifiants. Si le client n'arrive pas s'authentifier, il n'aura accs aucun par-
tage, mme ceux ayant l'option guest ok. On peut changer ce refus d'accs grce l'option map to
guest. Par dfaut cette dernire est dsactive (Never). On peut faire en sorte que toutes connexions
choues se transforment en connexions guest (Bad User).
Exemple 12.1. Exemple de configuration
security = user
Partage de fichiers avec SAMBA 164
guest account = nobody
map to guest = Bad User
12.12.1.2. Authentification de type : share
La valeur share fonctionne l'inverse de la valeur user. Cette fois-ci le client ne s'authentifie plus sur le ser-
veur mais sur chaque partage. Il est donc possible de lister les partages disponibles sans s'authentifier.
12.12.1.3. Authentification de type : server ou domain
Ce mode de fonction ragit comme le mode share. Cependant les comptes utilisateurs seront stocks sur un autre
serveur Samba ou sur un domaine Windows.
12.12.2. Section homes
Cette section permet de configurer comment seront partags les dossiers personnels des utilisateurs. Les para-
mtres disponibles:
[homes]
comment = Home Directories
#Dfinir les utilisateurs accdant aux partages
#(%S = lutilisateur connect)
valid users = %S
#Permettre la modification des fichiers
read only = No
#Empcher de parcourir les sous dossiers
browseable = No
12.12.3. Section printers et print$
Ces deux sections permettent de grer le partage dimprimantes, la premire configure le spooler dimpression :
[printers]
comment = All Printers
printable = yes
#Chemin du spooler dimpression
path = /var/spool/samba
create mode = 0700
#Accessible de lextrieur
guest ok = Yes
#Laisser le client utiliser son propre driver
use client driver = Yes
Partage de fichiers avec SAMBA 165
La deuxime elle, cre le partage que les clients Windows cherchent pour rcuprer les drivers de limprimante.
[print$]
comment = Printer Drivers
#Chemin vers les drivers des imprimantes
path = /var/lib/samba/printers
browseable = yes
read only = yes
guest ok = no
12.12.4. Section netlogon
Partage contenant les scripts net logon, utile seulement si vous utilisez ce service.
[netlogon]
comment = Network Logon Service
path = /var/lib/samba/netlogon/scripts
admin users = ed, john, sam
guest ok = No
browseable = N
writable = No
12.12.5. Sections de partages
Pour crer un nouveau partage, il suffit en fait de rajouter une section du nom du partage que vous voulez crer,
cette section na quun seul paramtre obligatoire : "path".
Exemple de cration de partage avec accs anonyme :
[tmp]
comment = Temporary file space
path = /tmp
read only = yes
#Nimporte qui peut y accder
public = yes
Exemple de partage accessible au groupe dutilisateurs en lecture et au groupe rseau en criture :
[user_share]
path = /var/user_share
comment = Patarge des utilisateurs
#Rendre le partage accessible uniquement ces 2 groupes
public = no
valid users = @users, @reseau
#activer lcriture pour le groupe reseau
#et la lecture pour le groupe users
write list = @reseau
read list = @users
Partage de fichiers avec SAMBA 166
12.13. Validit du fichier smb.conf
Pour tester la validit des configurations de Samba il suffit de lancer la commande testparm.
[mandriva@linux ~]$ testparm
Load smb config files from /etc/samba/smb.conf
Processing section "[homes]"
Processing section "[printers]"
Processing section "[print$]"
Processing section "[Partage]"
Loaded services file OK.
Server role: ROLE_STANDALONE
Press enter to see a dump of your service definitions
En pressant la touche "entrer" vous pourrez voir tous les paramtres entrs dans votre fichier de configuration.
12.14. Gestion des utilisateurs
Samba gre sa propre liste dutilisateurs, pour ajouter un utilisateur samba, il faut crer un utilisateur systme
puis utiliser la commande smbpasswd -a.
[mandriva@linux ~]$ smbpasswd -a toto
New SMB password:
Retype new SMB password:
Added user toto.
12.15. SWAT
SWAT (Samba Web Administration Tool) est un outil permettant de configurer Samba grce une interface
web.
12.15.1. Installation
SWAT dmarre grce inetd ou xinetd.
Dans le cas o inetd est utilis, le fichier /etc/inetd.conf doit contenir la ligne :
swat stream tcp nowait.400 root /usr/sbin/swat swat
Dans le cas o xinetd est utilis il faut crer le fichier /etc/xinetd.d/swat dont le contenu est :
service swat
{
port = 901
socket_type = stream
wait = no
only_from = 127.0.0.1
user = root
Partage de fichiers avec SAMBA 167
server = /usr/sbin/swat
log_on_failure += USERID
} swat
Et /etc/services doit contenir :
swat 901/tcp # samba web configuration tool
Il suffit ensuite de redmarrer inetd grce :
killall -HUP inetd
12.15.2. Utilisation
Rendez vous l'adresse http://127.0.0.1:901 l'aide d'un navigateur. SWAT tant trs facile d'utilisation, son
fonctionnement ne sera pas dtaill.
12.16. Utilisation de Samba en Contrleur de do-
maine
[global]
#Le nom du serveur
NetBIOS name = toltec
#Le nom du groupe de travail
workgroup = METRAN
encrypt passwords = yes
#Faire en sorte que le serveur soit le matre du domaine
domain master = yes
local master = yes
preferred master = yes
os level = 65
security = user
domain logons = yes
#Dit Samba o il doit placer les profils itinrants de
#Windows NT/2000/XP
logon path = \\%L\profiles\%u\%m
logon script = logon.bat
logon drive = H:
#Permet de spcifier la location des profils itinrants de
#Windows 95/98/Me
logon home = \\%L\%u\.win_profile\%m
time server = yes
Partage de fichiers avec SAMBA 168
domain admin group = root jay
Voici les nouveaux partages placer aprs la section [global] :
[netlogon]
path = /usr/local/samba/lib/netlogon
writable = no
browsable = no
[profiles]
path = /home/samba-ntprof
browsable = no
writable = yes
create mask = 0600
directory mask = 0700
[homes]
read only = no
browsable = no
guest ok = no
map archive = yes
Le partage "[profiles]" est ncessaire l'utilisation de profils itinrants de Windows NT/2000/XP.
Le chemin pointe sur un rpertoire du serveur Samba o seront stocks les profils, le client doit donc tre ca-
pable de lire et dcrire des donnes. Les directives create mask et directory mask permettent de s'assurer
que seuls les utilisateurs autoriss puissent lire et crire dans ce rpertoire et personne d'autre. Le partage
"[homes]" lui est ncessaire nos dfinitions de logon drive et logon home.
Vous pouvez ds prsent lancer testparm pour vrifier l'exactitude de la syntaxe de votre fichier smb.conf.
12.17. Cration des rpertoires sur le serveur sam-
ba
Les partages [netlogon] et [profiles] dfinis dans notre smb.conf rfrencent des rpertoires sur le serveur
Samba, il est donc ncessaire de crer ces derniers avec les bonnes permissions bien sr !
[mandriva@linux ~]$ mkdir /usr/local/samba/lib/netlogon
[mandriva@linux ~]$ chmod 775 /usr/local/samba/lib/netlogon
[mandriva@linux ~]$ mkdir /home/samba-ntprof
[mandriva@linux ~]$ chmod 777 /home/samba-ntprof
Les noms des rpertoires sont totalement arbitraires et choisis titre d'exemple.
12.18. Modification dans smb.conf
12.19. Ajouter des comptes pour les ordinateurs
Partage de fichiers avec SAMBA 169
Afin d'interagir dans un domaine donn, un systme Windows NT/2000/XP doit tre membre de ce domaine.
L'appartenance d'une machine un domaine s'implmente en utilisant des comptes machines. Ceux-ci sont
comme nous le verrons, assez semblables des comptes utilisateurs et permettent au contrleur de domaine de
reconnatre les machines pouvant s'authentifier sur le domaine. Si le PDC est un Windows2000/Xp, ces comptes
machine sont stocks dans la base de donne SAM.
Partage de fichiers avec SAMBA 170

You might also like