Vous êtes sur la page 1sur 178

Province de Hainaut

HEPCUT ISIPH
Catgorie Technique

Administration et
scurit des rseaux.
Jean-Franois Challe.

Boulevard Solvay, 31 6000 CHARLEROI

HEPCUT - ISIPH

I. Gestion des comptes utilisateurs. _________________________________________________ 1


1. Introduction. _______________________________________________________________ 1
2. Les attributs dun fichier. ____________________________________________________ 1
3. Cration de comptes utilisateurs.______________________________________________
3.1. Principe de base. _________________________________________________________
3.2. Script de cration des comptes. _____________________________________________
3.3. Options de la commande adduser. ___________________________________________
3.3.1. Les commentaires. ____________________________________________________
3.3.2. Le rpertoire de base.__________________________________________________
3.3.3. Le shell utilis. _______________________________________________________
3.3.4. Les groupes. _________________________________________________________
3.3.5. Spcification de lUID. ________________________________________________
3.3.6. Date dexpiration. ____________________________________________________

2
2
2
3
3
5
5
5
6
6

4. Modification dun compte utilisateur. __________________________________________


4.1. La commande usermod. ___________________________________________________
4.2. La commande chage. _____________________________________________________
4.3. La commande passwd. ____________________________________________________

6
6
7
8

5. Suppression dun compte utilisateur. __________________________________________ 8


6. La gestion des groupes. ______________________________________________________
6.1. Cration dun groupe. _____________________________________________________
6.2. Modification dun groupe. _________________________________________________
6.3. Suppressions dun groupe. _________________________________________________

8
8
9
9

7. Arrt momentan des connexions. _____________________________________________ 9


8. Message du jour. ___________________________________________________________ 9
9. Gestion des quotas. ________________________________________________________
9.1. Introduction. ___________________________________________________________
9.2. Processus de mise en place des quotas. ______________________________________
9.3. Attribution des quotas. ___________________________________________________
9.3.1. Quotas dun utilisateur. _______________________________________________
9.3.2. Quotas dun groupe.__________________________________________________
9.3.3. Priode de grce. ____________________________________________________
9.3.4. Attribution des quotas plusieurs utilisateurs. _____________________________
9.4. Consultation des quotas. __________________________________________________

10
10
10
11
11
12
12
12
13

II. La squence de dmarrage du systme. __________________________________________ 15


1. Principe de la squence de dmarrage. ________________________________________ 15
2. LILO. ___________________________________________________________________
2.1. Les arguments du dmarrage. ______________________________________________
2.2. Le fichier /etc/lilo.conf. __________________________________________________
2.3. Le mot cl password. ____________________________________________________

16
16
17
17

3. Le processus init. __________________________________________________________ 19


4. Les scripts de dmarrage. ___________________________________________________ 20
5. Larrt du systme. ________________________________________________________ 20
6. Le redmarrage du systme._________________________________________________ 21

J-F Challe

HEPCUT - ISIPH

II

III. Configuration de linterface rseau. ____________________________________________ 23


1. La commande ifconfig. _____________________________________________________ 23
2. Structure des fichiers /etc/hosts et /etc/networks.________________________________ 23
3. Dtermination du nom de linterface. _________________________________________ 24
4.Vrification de linterface avec ifconfig. ________________________________________ 26
5. Affectation un masque de sous -rseau. ________________________________________ 26
6. Affectation de ladresse broadcast. ___________________________________________ 27
7. Autres options. ____________________________________________________________
7.1. Activer et dsactiver linterface. ____________________________________________
7.2. ARP et trailers. _________________________________________________________
7.3. Metric.________________________________________________________________
7.4. MTU. ________________________________________________________________
7.5. Mode promiscuous.______________________________________________________

27
27
28
28
28
29

8. Configuration permanente.__________________________________________________ 29
9. Linuxconf. ________________________________________________________________ 30
IV. Configuration du routage. ____________________________________________________ 31
1. Configuration gnrale du routage.___________________________________________ 31
2. Table de routage minimale. _________________________________________________ 31
3. Cration dune table de routage statique. ______________________________________ 32
3.1. Ajouter des routes statiques. _______________________________________________ 33
3.2. Ajouter des routes statiques lamorage. ____________________________________ 34
4. Les protocoles de routage internes. ___________________________________________
4.1. Le protocole RIP. _______________________________________________________
4.2. RIP version 2. __________________________________________________________
4.3. OSPF : Open Shortest Path First. ___________________________________________

35
35
38
38

5. Les protocoles de routage externe.____________________________________________


5.1. EGP : Exterior Gateway Protocol. __________________________________________
5.2. BGP : Border Gateway Protocol. ___________________________________________
5.3. Choisir un protocole de routage.____________________________________________

40
40
40
40

6. gated : Gateway Routing Daemon. ____________________________________________ 41


7. Configurer gated. __________________________________________________________
7.1. Exemple de fichier /etc/gated.conf. _________________________________________
7.1.1. Configuration dune machine. ____________________________________________
7.1.2. Configuration dune passerelle interne. _____________________________________
7.1.3. Configuration dune passerelle externe. ____________________________________

42
42
42
43
44

V. Configuration du DNS. _______________________________________________________ 47


1. Le fichier /etc/hosts.________________________________________________________ 47
2. BIND : Berkeley Internet Name Domain. ______________________________________ 47
3. Configurer le rsolveur. ____________________________________________________ 48
4. Initialisation des donnes du DNS.____________________________________________ 48
4.1. Les fichiers de la base de donnes. __________________________________________ 48

J-F Challe

HEPCUT - ISIPH

4.1.1. Les enregistrements SOA (Start Of Authority). ____________________________


4.1.2. Les enregistrements NS (Name Server). __________________________________
4.1.3. Les enregistrements dadresse et dalias.__________________________________
4.1.4. Les enregistrements PTR (Pointer).______________________________________
4.1.5. Les donnes de la zone racine. _________________________________________
4.2. Le fichier de configuration de BIND. ________________________________________
4.3. Les abrviations. ________________________________________________________
4.4. Dmarrage dun serveur-matre primaire. ____________________________________
4.5. Dmarrage dun serveur-esclave. ___________________________________________
4.6. Les champs de lenregistrement SOA. _______________________________________
4.7. Gestion de plusieurs domaines. ____________________________________________

III

49
49
49
50
51
53
53
56
57
57
58

5. Gestion des sous -domaines.__________________________________________________ 58


6. La scurit. _______________________________________________________________
6.1. Restriction des requtes. __________________________________________________
6.1.1. Restriction sur toutes les requtes._______________________________________
6.1.2. Restriction des requtes concernant une zone. _____________________________
6.2. Contrle des transferts de zones. ___________________________________________
6.2.1. Limitation globale du transfert. _________________________________________
6.2.2. Limitation du transfert une zone. ______________________________________
6.3. Excution de BIND par un utilisateur sans privilge. ___________________________

59
59
59
60
60
60
61
62

7. La commande nslookup. ____________________________________________________


7.1. Recherche de diffrents types de donnes. ____________________________________
7.2. Rponses faisant autorit. _________________________________________________
7.3. Changement de serveur. __________________________________________________
7.4. Visualisation des paquets de requte et de rponse. _____________________________
7.5. Recherche la manire dun serveur de noms. ________________________________
7.6. Transferts de zone. ______________________________________________________

62
64
64
65
66
67
69

VI. Le courrier lectronique. _____________________________________________________ 71


1. Introduction. ______________________________________________________________ 71
2. La structure dun message.__________________________________________________ 71
3. Principe de livraison des mails. ______________________________________________ 72
4. Le routage du courrier. _____________________________________________________ 72
5. Sendmail. ________________________________________________________________
5.1. Les fonctions de sendmail. ________________________________________________
5.2. Le dmon sendmail. _____________________________________________________
5.3. Configuration de sendmail.________________________________________________
5.3.1. Configurer le mail local. ______________________________________________
5.3.2. Configurer le mail distant. _____________________________________________
5.3.3. Agir comme serveur relais. ____________________________________________
5.3.4. Options supplmentaires.______________________________________________
5.4. Sendmail et les alias._____________________________________________________
5.5. Utilisation dun .forward personnel. _________________________________________
5.6. Configuration de la scurit. _______________________________________________
5.6.1. Les commandes vrfy et expn. __________________________________________
5.6.2. Restriction daccs la file des messages. ________________________________
5.6.3. Forcer lidentification du client. ________________________________________

J-F Challe

73
73
73
73
74
75
75
77
79
80
80
80
81
81

HEPCUT - ISIPH

5.6.4. Message dinvite de sendmail.__________________________________________


5.6.5. Contrler les connexions SMTP avec TCP Wrappers. _______________________
5.6.6. Lutter contre les attaques de dni de service. ______________________________
5.6.7. Utilisation dun shell restreint. _________________________________________

IV

81
82
82
82

VII. NFS._____________________________________________________________________ 85
1. Introduction. ______________________________________________________________ 85
2. Configuration de NFS.______________________________________________________ 85
3. Exportation dun systme de fichiers. _________________________________________ 85
3.1. Rgles dexportation des systmes de fichiers. ________________________________ 85
3.2. Exportation simple dun systme de fichiers. __________________________________ 85
4. Montage dun systme de fichiers. ____________________________________________ 86
5. Les options dexportation. ___________________________________________________ 86
6. Les options de montage. ____________________________________________________ 87
6.1. Les arguments gnraux. _________________________________________________ 87
6.2. Les arguments spcifiques. ________________________________________________ 88
7. Le montage permanent._____________________________________________________ 88
8. La rsolution des liens symboliques. __________________________________________ 88
VIII. NIS. ____________________________________________________________________ 89
1. Introduction. ______________________________________________________________ 89
2. Les notions de matres, esclaves et clients. _____________________________________ 89
3. Fondements de la gestion NIS. _______________________________________________
3.1. Installation du serveur NIS matre. __________________________________________
3.2. Configuration des clients NIS. _____________________________________________
3.3. Ajout dun serveur NIS esclave. ____________________________________________

90
90
91
92

4. Les commandes-clients._____________________________________________________
4.1. ypmatch. ______________________________________________________________
4.2. ypcat._________________________________________________________________
4.3. ypwhich. ______________________________________________________________
4.4. yppasswd. _____________________________________________________________

93
93
93
93
94

IX. LPD. _____________________________________________________________________ 95


1. Introduction. ______________________________________________________________ 95
2. Le fichier /etc/printcap. _____________________________________________________ 95
3. Scurit avec LPD._________________________________________________________ 96
4. Utilisation de LPD._________________________________________________________
4.1. Envoyer une requte dimpression. _________________________________________
4.2. Gestion du dmon dimpression. ___________________________________________
4.3. Consultation de la file dattente. ____________________________________________
4.4. Suppression dun requte._________________________________________________

97
97
97
97
98

X. DHCP._____________________________________________________________________ 99
1. Introduction. ______________________________________________________________ 99
2. Le fichier dhcpd.conf. ______________________________________________________ 99

J-F Challe

HEPCUT - ISIPH

2.1. Configuration de base. ___________________________________________________ 99


2.2. Lancement du serveur DHCP. ____________________________________________ 100
2.3. Utilisation des adresses physiques. _________________________________________ 101
XI. Samba.___________________________________________________________________ 103
1. Introduction. _____________________________________________________________
1.1. Partage dun service disque. ______________________________________________
1.2. Partage dune imprimante. _______________________________________________
1.3. Visualisation des ressources sous UNIX. ____________________________________
1.4. Prise en main dun rseau SMB. ___________________________________________
1.4.1. Matrise de NetBIOS. _______________________________________________
1.4.2. Attribution dun no m. _______________________________________________
1.4.3. Anatomie dun nom. ________________________________________________
1.5. Implmentations par Microsoft. ___________________________________________
1.5.1. Domaines Windows. ________________________________________________
1.5.2. Exploration. _______________________________________________________
1.5.3. Le service WINS.___________________________________________________

103
103
105
106
106
106
106
107
107
107
108
108

2. Configuration de Samba. __________________________________________________ 109


2.1. Fichier de configuration de base pour Samba. ________________________________ 109
2.2. Dmarrage du serveur Samba. ____________________________________________ 110
3. Partages de disque. _______________________________________________________
3.1. Structure du fichier de configuration. _______________________________________
3.2. Les sections du fichier de configuration. ____________________________________
3.2.1. La section global. ___________________________________________________
3.2.2. La section homes. __________________________________________________
3.2.3. La section printers.__________________________________________________
3.3. Configuration du serveur. ________________________________________________
3.4. Les options rseau. _____________________________________________________

110
110
110
110
111
111
111
112

4. Exploration et partages de disques avancs.___________________________________


4.1. Lexploration. _________________________________________________________
4.1.1. Blocage de lexploration. _____________________________________________
4.1.2. Election dexplorateurs. ______________________________________________
4.2. Diffrences entre systmes de fichiers. _____________________________________
4.2.1 Droits daccs et fichiers cachs. _______________________________________
4.3. Permissions et attributs des fichiers sous MS-DOS et sous UNIX. ________________

113
113
113
113
115
115
116

5. Utilisateur, scurit et domaines. ____________________________________________


5.1. Utilisateurs et groupes. __________________________________________________
5.2. Scurit des authentifications. ____________________________________________
5.2.1. Scurit de niveau partage. ___________________________________________
5.2.2. Scurit de niveau utilisateur. _________________________________________
5.2.3. Scurit de niveau serveur. ___________________________________________
5.2.4. Scurit de niveau domaine. __________________________________________
5.2.5. Ajout dun serveur Samba un domaine Windows NT. _____________________
5.3. Domaine Windows. ____________________________________________________
5.3.1. Introduction. _______________________________________________________
5.3.2. Configuration PDC pour des clients Windows NT. ________________________

116
117
119
119
119
119
120
121
121
121
122

6. Impression. ______________________________________________________________ 124


7. Rsolution de noms._______________________________________________________ 124

J-F Challe

HEPCUT - ISIPH

VI

XII. APACHE. _______________________________________________________________ 127


1. Introduction. _____________________________________________________________ 127
2. Premier lancement du serveur Web. _________________________________________ 127
3. Un vritable site. _________________________________________________________
3.1. Interprtation du code HTML. ____________________________________________
3.2. Chargement automatique du fichier index.html. ______________________________
3.3. Gestion de plusieurs rpertoires.___________________________________________
3.4. Utilisation des CGI. ____________________________________________________
3.5. Remarque. ____________________________________________________________

128
128
129
129
130
130

4. Gestion de plusieurs sites.__________________________________________________ 131


XIII. SQUID._________________________________________________________________ 133
1. Introduction. _____________________________________________________________ 133
2. Protocoles utiliss. ________________________________________________________ 133
3. Configuration matrielle. __________________________________________________ 133
4. Installation et mise en route.________________________________________________ 134
5. Contourner SQUID. ______________________________________________________ 134
6. Configuration de SQUID. __________________________________________________
6.1. Ports de communication. ________________________________________________
6.2. Taille du cache. ________________________________________________________
6.3. Emplacement du cache et de lhistorique. ___________________________________
6.4. Support de programmes externes.__________________________________________
6.5. Timeouts _____________________________________________________________
6.6. Contrles daccs. ______________________________________________________
6.7. Paramtres administratifs.________________________________________________
6.8. Vrification de la connexion. _____________________________________________

134
134
134
135
136
136
136
138
139

7. Configuration avance. ____________________________________________________


7.1. Bannir des sites. _______________________________________________________
7.2. Interdire le tlchargement de fichier excutables. ____________________________
7.3. Authentification des utilisateurs. __________________________________________

139
139
140
140

XIV. IPCHAINS. _____________________________________________________________ 143


1. Introduction. _____________________________________________________________ 143
2. Choix dune politique de filtrage.____________________________________________ 143
3. Rejeter ou refuser un paquet. _______________________________________________ 144
4. Filtrage des paquets entrants._______________________________________________
4.1. Filtrage dadresse source distante. _________________________________________
4.1.1. Spoofing dadresses source et adresses illgales. __________________________
4.1.2. Bloquer les sites problmatiques. ______________________________________
4.1.3. Limiter les paquets entrants des htes slectionns. _______________________
4.2. Filtrage local dadresses destination. _______________________________________
4.3. Filtrage de port source distant. ____________________________________________
4.4. Filtrage de port destination local. __________________________________________
4.5. Filtrage de ltat de connexion TCP. _______________________________________
4.6. Sondes et balayages. ____________________________________________________

J-F Challe

144
144
144
145
145
145
145
146
146
146

HEPCUT - ISIPH

VII

4.6.1. Balayages gnraux de ports. _________________________________________


4.6.2. Balayages cibls de ports. ____________________________________________
4.7. Attaques par dni de service. _____________________________________________
4.7.1. TCP et SYN flooding. _______________________________________________
4.7.2. Ping flooding. _____________________________________________________
4.7.3. UDP flooding. _____________________________________________________
4.7.4. Bombes ICMP-redirect. ______________________________________________
4.7.5. Autres attaques par dni de service. ____________________________________

146
146
146
147
147
147
147
147

5. Filtrage de paquets sortants.________________________________________________


5.1. Filtrage dadresse source locale. ___________________________________________
5.2. Filtrage dadresse de destination distante. ___________________________________
5.3. Filtrage de port source local. _____________________________________________
5.4. Filtrage de port destination distant. ________________________________________
5.5. Filtrage de ltat des connexions TCP sortantes. ______________________________

148
148
148
148
149
149

6. Services rseau privs/publics. ______________________________________________ 149


7. Construction dun firewall. _________________________________________________
7.1. Le programme ipchains. _________________________________________________
7.2. Initialisation du firewall._________________________________________________
7.2.1. Les constantes symboliques. __________________________________________
7.2.2. Supprimer les rgles existantes.________________________________________
7.2.3. Dfinir la politique par dfaut._________________________________________
7.2.4. Activer linterface loopback. __________________________________________
7.2.5. Le spoofing et les mauvaises adresses source. ____________________________
7.3. Filtrage des messages dtat et de contrle ICMP. _____________________________
7.3.1. Messages derreur dtat et de contrle. _________________________________
7.3.2. Messages de contrle ping Echo Request et Echo Reply. ____________________
7.4. Protection des services sur les ports TCP sans privilge. ________________________
7.4.1. Interdire les connexions Open Window. _________________________________
7.4.2. Interdire les connexions X Window. ____________________________________
7.4.3. Interdire les connexions au serveur SOCKS. _____________________________
7.5. Protection des services sur les ports UDP sans privilge. _______________________
7.6. Activation des services Internet de base. ____________________________________
7.6.1. Permettre DNS. ____________________________________________________
7.6.2. Filtrer les identifications. _____________________________________________
7.7. Activer des services TCP courants. ________________________________________
7.7.1. Le courrier lectronique. _____________________________________________
7.7.2. Accder aux services Usenet. _________________________________________
7.7.3. Le service telnet. ___________________________________________________
7.7.4. Le service ssh. _____________________________________________________
7.7.5. Le service ftp. _____________________________________________________
7.7.6. Les services Web. __________________________________________________
7.7.7. Le service finger. ___________________________________________________
7.7.8. Le service whois. ___________________________________________________
7.7.9. Le service gopher. __________________________________________________
7.7.10. Le service WAIS.__________________________________________________
7.8. Habiliter les services UDP courants. _______________________________________
7.8.1. Le programme traceroute. ____________________________________________
7.8.2. Accder un serveur DHCP.__________________________________________
7.8.3. Accder un serveur Network Time. ___________________________________

J-F Challe

149
149
150
151
151
151
152
152
154
154
155
156
156
156
156
156
157
157
158
158
158
161
161
162
162
163
164
164
165
165
165
165
166
166

HEPCUT - ISIPH

7.9. Journaliser des paquets entrants refuss. ____________________________________


7.10. Refuser laccs aux sites problmatiques. __________________________________
7.11. Activer laccs au rseau local. __________________________________________
7.12. Installer le firewall. ____________________________________________________

VIII

166
166
167
167

Bibliographie. ________________________________________________________________ 168

J-F Challe

HEPCUT - ISIPH

I. Gestion des comptes utilisateurs.


1. Introduction.
La gestion des comptes utilisateurs est lun des travaux absolument essentiels dvolu aux administrateurs. Grer les
utilisateurs et les mots de passe sont une tche de base laquelle tout administrateur doit attacher une attention
particulire car une mauvaise gestion peut gravement affaiblir la scurit dun systme.
Mme dans le cas dun systme offrant des services rseau ne ncessitant pas la gestion de plusieurs utilisateurs, comme
le DNS par exemple, il est essentiel de disposer dau moins un compte autre que celui rserv ladministrateur du
systme (root). Lutilisation du compte root doit tre limite des tches spcifiques qui ne peuvent pas tre ralises
sous lidentit dun utilisateur normal. Lorsquune personne est connecte un systme UNIX sous lidentit root, il a
le droit deffectuer toutes les oprations sans aucune contrainte. Une utilisation abusive de cette identit peut corrompre
compltement lintgrit du systme par le biais de fausses manuvres. Tout administrateur systme doit toujours
disposer du compte root pour raliser les tches administratives critiques mais galement dun compte utilisateur
traditionnel afin deffectuer de petits travaux nexigeant pas de privilges particuliers.
Aprs linstallation dun systme Linux, le compte adminis trateur est cr et un mot de passe y est associ. Si
ladministrateur se connecte la console, il aura toujours la facult de sidentifier et de raliser les travaux ncessaires
la bonne marche de ce systme. Nanmoins, dans de nombreux cas, ladministrateur nutilise que rarement la console.
En rgle gnrale ladministrateur se connecte par lintermdiaire dun poste distant. Pour des raisons de scurit, root
ne peut se connecter directement qu la console. Cette scurit est tablie au travers du fichier de configuration
/etc/securetty. Ce fichier contient la liste des terminaux qui sont considrs comme des points dentre scuriss du
systme. Ces terminaux nengendrent pas de connexion rseau, ce qui rend impossible une coute de la ligne la
recherche du mot de passe du super-utilisateur. Voici un exemple de fichier /etc/securetty :
[root@p200 /etc]# cat securetty
tty1
tty2
tty3
tty4
tty5
tty6
tty7
tty8
Ce fichier dcrit que les huit consoles sont des postes de travail scuriss permettant ladministrateur de se connecter
sans risque. Leffacement de ce fichier peut introduire un trou dans la scurit. En labsence du fichier /etc/securetty,
ladministrateur est autoris se connecter directement au systme partir de nimporte quel poste de travail.

2. Les attributs dun fichier.


Une modification ou un effacement du fichier /etc/securetty peut engendrer une faille dans le systme. Thoriquement,
seul ladministrateur a les autorisations suffisantes pour effacer ou pour modifie r ce fichier. Nanmoins, la scurit
dun systme consiste placer le plus de barrires possibles de manire ralentir autant quil se peut le processus
deffraction.
Le fichier /etc/securetty doit donc tre protg contre les risques deffacement ou de modification. Les commandes
UNIX traditionnelles ne permettent pas la scurisation dun fichier particulier. De nombreux concepteurs de systmes
UNIX ont apport leurs extensions de manire offrir plus de scurit. Le systme Linux ne fait pas exception cette
rgle et propose une commande permettant de scuriser un fichier. Il sagit de la commande chattr. Elle possde de
nombreuses options dont une protgeant un fichier contre les modifications et leffacement. Voici un exemple de
scurisation du fichier /etc/securetty :
[root@p200 /etc]# chattr +i securetty
Comme le montre la session interactive suivante, lorsquun fichier possde lattribut i, mme ladministrateur systme
ne peut le supprimer :

J-F Challe

HEPCUT - ISIPH

[root@p200 /etc]# rm securetty


rm: dtruire le fichier protg en criture `securetty'? y
rm: Ne peut dlier `securetty'.: Opration non permise
Dans certains cas, ladministrateur doit connatre les attributs associs un fichier. La commande lsattr permet de
visualiser tous les attributs affects un fichier :
[root@p200 /etc]# lsattr securetty
----i--- securetty
Toujours pour des raisons de scurit, seul ladministrateur du systme a le droit demployer la commande lsattr pour
visualiser les attributs affects un fichier. Voici un exemple dutilisation de la commande lsattr par un utilisateur
normal :
[jfc@p200 /etc]$ lsattr securetty
lsattr: Permission non accorde While reading flags on securetty
Les tches administratives peuvent conduire lutilisateur root modifier un fichier dont les attributs empchent son
effacement. La commande chattr avec loption moins permet denlever une protection. Voici un exemple de
suppression de lattribut i plac sur le fichier /etc/securetty :
[root@p200 /etc]# chattr -i securetty
[root@p200 /etc]# rm securetty
rm: dtruire `securetty'? y
[root@p200 /etc]# ls securetty
ls: securetty: Aucun fichier ou rpertoire de ce type

3. Cration de comptes utilisateurs.


3.1. Principe de base.
En la qualit de root, il est possible dajouter des utilisateurs au systme par le biais de la commande adduser. La
version minimale de cette commande consiste donner en paramtre le nom de lutilisateur crer.
[root@p200 /root]# adduser jfc
Les options de la commande adduser permettent de peaufiner le processus de cration dun nouvel utilisateur. La
cration dun nouveau compte utilisateur par le biais de la version simplifie de la commande donne des valeurs par
dfaut aux options qui ne sont pas spcifies. Cest ainsi que le compte de lutilisateur ne peut pas tre immdiatement
employ aucun mot de passe valide ny a t associ. Ladministrateur du systme doit alors employer la commande
passwd pour donner un mot de passe valide au nouvel utilisateur cr. Voici un exemple dattribution dun mot de
passe un compte utilisateur :
[root@p200 /root]# passwd jfc
Changing password for user jfc
New UNIX password:
Retype new UNIX password:
Passwd: all authentication tokens updated successfully

3.2. Script de cration des comptes.


Dans un contexte scolaire o il y a de nombreux comptes utilisateurs crer au mme moment, la procdure qui vient
dtre mentionne peut savrer trs lourde. Non seulement il faut employer la commande adduser pour crer un
compte utilisateur mais galement la commande passwd pour attribuer un mot de passe lutilisateur cr. Cette
modification du mot de passe impose de dactylographier deux fois le mot de passe. Afin de rendre le processus de
cration dun utilisateur moins lourd, il est possible de prciser un argument la commande passwd de sorte quelle
puisse accepter directement un mot de passe.

J-F Challe

HEPCUT - ISIPH

Loption stdin informe la commande passwd de ce quelle doit utiliser son entre standard pour obtenir le mot de passe
en clair. Lentre standard peut, comme dans la majorit des cas des commandes UNIX, obtenir ses informations par
lintermdiaire dun pipe.
Supposons que le nom dun utilisateur et son mot de passe soient drivs de son nom et de son prnom. Le nom de
lutilisateur est form de la premire lettre de son prnom suivi de son nom. Le mot de passe est le nom de lutilisateur
crit lenvers. Dans ce cas de figure, il est possible de placer dans un fichier texte, le prnom et le nom de plusieurs
utilisateurs qui doivent recevoir un compte. Il suffit alors dcrire un script UNIX charg de crer les comptes des
utilisateurs. Voici un exemple de script capable de crer automatiquement les comptes utilisateurs partir dun fichier
de donnes :
#!/bin/bash
read a b
while [ "$a" != "" ]; do
a=`expr substr "$a" 1 1`
username=$a$b
l=`expr length $b`
pass=""
while [ "$l" != 0 ]; do
p=`expr substr $b $l 1`
l=`expr $l - 1`
pass=$pass$p
done
pass=$pass$a
adduser $username > /dev/null
echo $pass | passwd --stdin $username >/dev/null
read a b

3.3. Options de la commande adduser.


3.3.1. Les commentaires.
Lors de la cration dun utilisateur, ladministrateur donne gnralement des renseignements complmentaires sur
lidentit de la personne qui utilisera le compte. Cette information est gnralement constitue du prnom et du nom de
la personne utilisatrice. Ce type dinformation tant gnralement constitue dau moins deux mots spars par un
espace, il ne faut pas que la commande adduser considre ces informations comme tant deux arguments distincts. Pour
contrecarrer le principe gnral de dtection des diffrents arguments sur base de lespacement, il suffit de placer le
prnom et le nom de lutilisateur entre guillemets. Cette identit doit tre prcde de loption c afin dinformer la
commande adduser de ce que largument suivant est le commentaire mmoriser. Voici la commande de cration dun
utilisateur avec un argument commentaire :
[root@p200 /root]# adduser -c "Jean-Francois Challe" jchalle
Toute commande adduser ajoute les renseignements relatifs au nouvel utilisateur dans les fichiers /etc/passwd,
/et/shadow et /etc/group. Voici un extrait de ces trois fichiers :
[root@p200 /etc]# cat passwd
jchalle:x:502:502:Jean-Francois Challe:/home/jchalle:/bin/bash
[root@p200 /etc]# cat shadow
jchalle:!!:11642:0:99999:7:::
[root@p200 /etc]# cat group
jchalle:x:502:
Le fichier texte passwd contient la liste des comptes existants sur le systme ainsi que des informations utiles sur ces
comptes, comme lidentification de lutilisateur et de son groupe, la localisation de son rpertoire de travail, etc
Souvent, ce fichier contient aussi le mot de passe chiffr de lutilisateur. Le fichier des mots de passe doit permettre
tout utilisateur de le lire. Par contre, lcriture dans ce fichier ne peut tre effectue que par le super-utilisateur.
Autrefois, aucun problme de scurit ne se posait au sujet de ce droit gnral en lecture. Chacun pouvait consulter les
mots de passe crypts le matriel tant beaucoup trop lent pour dchiffrer les informations. De plus, le principe de base
dUNIX reposait sur une communaut soude dutilisateurs sans intentions nfastes. Actuellement, il est de plus en

J-F Challe

HEPCUT - ISIPH

plus recommand dutiliser des systmes de masquage des mots de passe comme shadow. Le fichier /etc/shadow
contient les mots de passe chiffrs, des utilisateurs. Contrairement au fichier /etc/passwd, /etc/shadow nest accessible
que par le super-utilisateur du systme. Lorsque le masquage des mots de passe est activ, le fichier /etc/passwd
contient un x en lieu et place du mot de passe chiffr.
Une entre du fichier /etc/passwd est de la forme suivante :
account:passwd:UID:GID:GECOS:directory:shell
Chaque champ est spar du suivant par le caractre : . Voici la signification de ces diffrents champs :

account : ce champ spcifie le nom que lutilisateur emploiera pour se connecter ;


passwd : dans le cas o les mots de passe masqus ne sont pas activs, ce champ doit contenir la reprsentation
encrypte du mot de passe ;
UID : ce champ contient une valeur entire permettant didentifier lutilisateur de manire univoque ;
GID : ce champ contient galement une valeur entire permettant didentifier de manire univoque le groupe
auquel lutilisateur appartient. Ce champ doit correspondre une entre du fichier /etc/group ;
GECOS : ce champ est optionnel et na quun rle informatif. Il contient gnralement le nom complet de
lutilisateur. GECOS signifie General Electric Comprehensive Operating System. Cette signification est donc
un reliquat des anciens systmes dexploitation ;
directory : les utilisateurs devant se connecter au systme pour y travailler doivent disposer dun rpertoire de
travail dans lequel ils stockeront leurs fichiers. Lemplacement de ce rpertoire est prcis par ce champ dans
la hirarchie du systme de fichiers ;
shell : si un utilisateur doit tre mme demployer des commandes UNIX aprs sa connexion, il doit disposer
dun interprteur de commandes par dfaut. Le champ shell permet de prciser la localisation de linterprteur
de commandes exploit par lutilisateur.

Le fichier texte /etc/shadow contient les champs suivants :

le nom de connexion de lutilisateur ;


le mot de passe crypt de lutilisateur ;
le nombre de jours couls entre le premier janvier 1970 et le jour du changement du mot de passe ;
le nombre minimum de jours avant que lutilisateur soit oblig de changer de mot de passe ;
le nombre maximum de jours restant avant que le mot de passe soit chang ;
le nombre de jours prcdant lexpiration dun mot de passe. Durant cette priode, lutilisateur est averti de ce
que son mot de passe doit tre chang ;
le nombre de jours passs depuis lexpiration du mot de passe. Le compte utilisateur est alors dsactiv ;
la date aprs laquelle lutilisateur ne pourra plus se connecter. Cette date est exprime sous la forme du
nombre de jours couls depuis le premier janvier 1970 ;
un champ rserv.

Le fichier texte /etc/group dfinit les groupes auxquels appartient chaque utilisateur. Le format de chaque ligne de ce
fichier est le suivant :
nom du groupe:mot de passe:GID:liste dutilisateurs
Voici la signification des diffrents champs :

J-F Challe

tout groupe possde un nom. Gnralement, tout utilisateur fait partie dau moins un groupe dont le nom est
identique son nom de compte. Par dfaut, lutilisateur est seul dans son groupe ;
gnralement aucun mot de passe nest associ un groupe. Dans ce cas, le champ correspondant est vide ;
le GID est une valeur entire identifiant un groupe de manire univoque ;
la liste des utilisateurs comporte un ensemble de noms de comptes spars par une virgule. Cela permet de
dfinir lensemble des utilisateurs qui appartiennent un groupe.

HEPCUT - ISIPH

3.3.2. Le rpertoire de base.


Lorsque la commande adduser est utilise sans prcision du rpertoire de travail de lutilisateur, le systme cre un
rpertoire dans /home dont le nom est identique au login. De nombreux administrateurs placent le rpertoire de travail
des utilisateurs dans un sous-rpertoire de /home. Dans un environnement rel, il se pourrait que les utilisateurs soient
regroups suivant le type dactivits quils effectuent. Il existerait alors autant de sous-rpertoires dans /home que de
groupes dutilisateurs (cette notion na pas de rapport avec la notion UNIX de groupe).
Loption d de la commande adduser permet, comme le montre lexemple suivant, de spcifier lemplacement et le nom
du rpertoire de travail de lutilisateur.
[root@p200 /root]# adduser d /home/staff/jchalle jchalle
Pour que cette commande aboutisse, il faut que le rpertoire /home/staff soit cr.
3.3.3. Le shell utilis.
Les systmes UNIX sont gnralement livrs avec plusieurs interprteurs de commandes, chacun ayant ses
caractristiques propres. Selon lutilis ateur et le travail qui sera ralis, un type dinterprteur de commandes peut tre
choisi au moment de la cration du compte. Les systmes Linux disposent des interprteurs suivants dans le rpertoire
/bin :

ash ;
bash ;
bsh ;
csh ;
ksh ;
sh ;
tcsh ;
zsh ;

Loption s de la commande adduser permet ladministrateur de spcifier le shell par dfaut qui sera employ par
lutilisateur. Voici la syntaxe de la commande adduser permettant de configurer un compte pour quil utilise le korn
shell :
[root@p200 /root]# adduser s /bin/ksh jchalle
3.3.4. Les groupes.
Tous les utilisateurs font partie dau moins un groupe. Par dfaut, la commande adduser cre un groupe dont le nom
sera le mme que celui du login. Au moyen de loption g, il est possible de spcifier un autre groupe par dfaut la
condition que ce groupe existe. Voici la commande permettant de crer un nouvel utilisateur dont le groupe par dfaut
sera celui du super-utilisateur :
[root@p200 /root]# adduser g root jchalle
Pour affiner les autorisations daccess dun utilisateur, il est possible de le placer dans plusieurs groupes. Cette
opration peut tre effectue au moment de la cration du compte par lintermdiaire de loption G de la commande
adduser.
[root@p200 /root]# adduser G adm,sys jchalle
Lorsque plusieurs utilisateurs forment un groupe de travail pench sur un mme projet, il est intressant quils puissent
se partager des informations. Pour cela, chaque utilisateur est plac dans un groupe qui lui est propre mais gale ment
dans un groupe o tous les acteurs du projet se trouvent. Une autre utilit de la commande consiste donner, certains
utilisateurs, des droits correspondants ceux du super-utilisateur. Dans ce cas, il suffit dinclure galement le nouvel
utilisateur dans le groupe root.

J-F Challe

HEPCUT - ISIPH

3.3.5. Spcification de lUID.


A chaque utilisateur du systme est associ un entier unique appel User IDentifier. Pour les utilisateurs privilgis du
systme, cet UID a une valeur comprise entre 0 et 99.
Lorsque la commande adduser doit attribuer un UID par dfaut, elle donne toujours une valeur suprieure 99. De
plus, si dautres comptes ont t crs, la commande adduser choisit comme valeur dUID, celle dune unit suprieure
la plus grande valeur utilise.
Ladministrateur a la possibilit dimposer une valeur dUID au moment de la cration dun compte. Cette possibilit
permet au gestionnaire du systme dattribuer, par exemple, un UID compris entre 1000 et 2000 aux utilisateurs du
service commercial et un UID compris en 3000 et 4000 aux utilisateurs du service recherche et dveloppement.
Voici un exemple de commande adduser attribuant lUID 1000 au nouvel utilisateur cr :
[root@p200 /root]# adduser u 1000 jchalle
3.3.6. Date dexpiration.
Dans certains cas, des comptes sont crs pour une dure limite. Cest, par exemple, le cas lorsquune socit reoit un
stagiaire. Aprs une certaine date, le compte ne doit plus tre utilis. Loption e de la commande adduser permet de
fixer la date partir de laquelle le compte expire. Cette date peut tre rvise la hausse au moyen de loption f.
Loption e spcifie simplement une date dexpiration alors que loption f donne le nombre de jours de sursis accord
lutilisateur. Voici un exemple de commande crant un compte utilisateur dont lexpiration sera imprativement le 15
janvier 2005 :
[root@p200 /root]# adduser e 2005-01-15 f 0 jchalle

4. Modification dun compte utilisateur.


4.1. La commande usermod.
La commande usermod permet de modifier toutes les options fixes par la commande adduser. Pour simplifier
lutilisation de cette commande, les options sont identiques celles de la commande adduser. Voici un exemple
dutilisation de la commande usermod :
[root@p200 /root]# usermod G sys,adm jchalle
Dans certains cas, ladministrateur peut tre amen retirer un utilisateur de tous les groupes dont il fait partie, sauf de
son groupe individuel. Voici la syntaxe de la commande employer :
[root@p200 /root]# usermod G "" jchalle
Cela signifie que loption G remplace totalement les informations. Si lutilisateur jchalle fait partie du groupe adm et
que, par lentremise de la commande usermod, il est plac dans le groupe sys, en ralit, il ne fera plus partie du groupe
adm mais uniquement du groupe sys.

J-F Challe

HEPCUT - ISIPH

4.2. La commande chage.


La commande chage permet de grer aisment les contraintes lies la validit des comptes et des mots de passe. Au
moyen de loption l, cette commande permet dafficher les informations de validits associes un compte :
[root@p200 /root]# chage -l jchalle
Minimum :
0
Maximum :
99999
Avertissement : 7
Dsactiv :
-1
Dernier changement :
nov 15, 2001
Expiration du mot de passe :
Jamais
Password Inactive:
Jamais
Account Expires:
Jamais
La commande chage possde plusieurs options :

-m : fixe la dure de vie minimale dun mot de passe. Si une valeur nulle est spcifie, le mot de passe peut
tre chang tout moment ;
-M : dtermine la dure de vie maximale dun mo t de passe.
-W : spcifie quun message davertissement doit tre envoy lutilisateur un certain nombre de jours avant
lexpiration du mot de passe ;
-d : fixe la date du dernier changement de mot de passe. La date doit tre exprime sous la forme du nombre
de jours couls depuis le premier janvier 1970;
-E : spcifie la date dexpiration du compte utilisateur. Lorsque cette date est atteinte, lutilisateur devra
contacter ladministrateur du systme afin dobtenir, de nouveau, un accs. Cette date doit tre exprime sous
la forme du nombre de jours couls depuis le premier janvier 1970 ;
-I : dtermine le nombre de jours dinactivit permis avant que le profil de lutilisateur soit bloqu. Une valeur
de zro annihile cette fonctionnalit.

Toutes les dates sont mentionnes sous la forme du nombre de jours couls depuis le premier janvier 1970. Parmi les
commandes du systme, il en existe une retournant le nombre de secondes coules depuis le premier janvier 1970 1
heure du matin. Il faut donc crire un script pour quil soit ais de transmettre les dates la commande chage. Voici un
script recevant une date sous la forme JJ MM AAAA et renvoyant le nombre de jours couls depuis le premier janvier
1970 :
[root@p200 /root]# cat dt
#!/bin/bash
DATE=$2"/"$1"/"$3
ns=`convdate -n $DATE`
ns=`expr $ns + 3600`
nj=`expr $ns / 86400`
echo $nj
Voici un exemple dutilisation de la commande chage :
[root@p200 /root]# ./dt 01 12 2010
14944
[root@p200 /root]# chage -m 0 -M 5 W 3 -E 14944 -I 5 jchalle
Dans cet exemple, le mot de passe de lutilisateur jchalle est limit 5 jours. Ds que lutilisateur aura conserv son
mot de passe 2 jours (5-3), il sera averti quil doit changer son mot de passe. De plus, ce compte expirera le premier
dcembre 2010. Si le compte nest pas utilis durant une priode de 5 jours, il sera bloqu.

J-F Challe

HEPCUT - ISIPH

Voici un exemple de message reu par lutilisateur, deux jours aprs lexcution de la commande chage :
Red Hat Linux release 6.2 (Zoot)
Kernel 2.2.14-5.0 on an i586
login: jchalle
Password:
Warning: your password will expire in 5 days
[jchalle@p200 jchalle]$

4.3. La commande passwd.


La commande passwd permet de verrouiller et de dverrouiller un compte. Loption l permet de verrouiller le compte
alors que loption u permet de dverrouiller le compte. Voici un exemple dutilisation de cette commande :
[root@p200 /root]# passwd l jchalle
Changing password for user jchalle
Locking password for user jchalle
passwd: Success
[root@p200 /root]# passwd -u jchalle
Changing password for user jchalle
Unlocking password for user jchalle
passwd: Success

5. Suppression dun compte utilisateur.


La commande userdel permet de supprimer un compte utilisateur. Sans argument, cette commande supprime les
informations relatives au compte des fichiers /etc/passwd, /etc/group et /etc/shadow. Tous les fichiers de lutilisateur
sont toujours prsents dans le rpertoire de travail de lutilisateur. Pour que la suppression du compte puisse tre
effectue, le compte utilisateur doit exister et ne doit pas tre en cours dutilisation. Voici un exemple de suppression
dun compte utilisateur :
[root@p200 /root]# userdel jchalle
Pour que la suppression efface galement tous les fichiers que possdait lutilisateur, il suffit dadjoindre loption r la
commande userdel. Voici un exemple de suppression dun compte utilisateur ainsi que de tous les fichiers quil
possdait dans son rpertoire de travail :
[root@p200 /root]# userdel -r jchalle

6. La gestion des groupes.


6.1. Cration dun groupe.
La commande groupadd permet dajouter de nouveaux groupes au systme. La version simplifie de la commande
accepte uniquement le nom du groupe crer. Dans cette situation, le numro de groupe associ est toujours une unit
suprieure celle du plus grand numro de groupe actuellement employ. Voici un exemple simple dutilisation de la
commande groupadd :
[root@p200 /root]# groupadd students
Ladministrateur a la possibilit de fixer lui mme le GID qui sera attribu lors de la cration dun groupe. Loption g
de la commande groupadd doit tre suivie du GID attribuer au groupe crer. Voici un exemple dune telle
commande :
[root@p200 /root]# groupadd -g 1000 students

J-F Challe

HEPCUT - ISIPH

6.2. Modification dun groupe.


La commande groupmod modifie les attributs dun groupe. Loption n permet de changer le nom dun groupe sans
changer le GID associ. Voici un exemple de modification du nom dun groupe :
[root@p200 /root]# groupmod -n jfchalle jchalle
Voici la visualisation de ce changement de nom :
[root@p200 /home]# ls -l
total 24
drwxr-xr-x
6 root
drwxr-xr-x
5 root
drwx-----4 jchalle
drwx-----6 jfc
drwx-----4 rc
drwxr-xr-x
2 root

root
root
jfchalle
jfc
rc
root

4096
4096
4096
4096
4096
4096

oct
oct
nov
nov
nov
nov

31
31
18
15
15
17

22:48
22:48
12:15
21:04
20:45
19:08

ftp
httpd
jchalle
jfc
rc
staff

6.3. Suppressions dun groupe.


La suppression dun groupe exige lemploi de la commande groupdel suivie du nom du group supprimer. Voici un
exemple dune telle commande :
[root@p200 /root]# groupdel students

7. Arrt momentan des connexions.


Lorsque ladministrateur doit effectuer certains travaux de maintenance, il ne faut pas que les utilisateurs puissent se
connecter au systme. Lorsque le fichier /etc/nologin existe, seul le super-utilisateur du systme a le droit de se
connecter. Ce fichier contient gnralement un message invitant les utilisateurs patienter. Voici un exemple dun tel
fichier :
[root@p200 /etc]# cat nologin
Systeme indisponible jusqu' 13:00 (maintenance)
Voici un exemple de session interactive lorsquun utilisateur tente de se connecter alors que le fichier /etc/nologin
existe :
Red Hat Linux release 6.2 (Zoot)
Kernel 2.2.14-5.0 on an i586
login: jfc
Password:
Systeme indisponible jusqu'a 13:00 (maintenance)
Login incorrect
Cette mthode ne permet pas dempcher les utilisateurs de continuer travailler mais interdit uniquement les nouvelles
connexions.

8. Message du jour.
Lorsque ladministrateur doit communiquer des informations lensemble de la communaut des utilisateurs, il peut le
faire au moyen dun courrier lectronique qui sera envoy chacun dentre eux. Ce procd engendre de multiples
copies du mme message, ce qui occupe inutilement de la place sur le disque. Pour viter cela, ladministrateur peut
placer, dans le fichier /etc/motd (Message Of The Day), le message dlivrer chaque utilisateur. Voici un exemple de
ce fichier :
[root@p200 /etc]# cat motd
Un nouveau serveur DNS est maintenant installe.

J-F Challe

HEPCUT - ISIPH

10

Lorsquun utilisateur se connecte au systme, le texte du message prsent dans le fichier /etc/motd est affich. Voici un
exemple de session interactive lorsquun message du jour est configur :
Red Hat Linux release 6.2 (Zoot)
Kernel 2.2.14-5.0 on an i586
login: jfc
Password:
Last login: Sun Nov 18 20:59:26 from P2366
Un nouveau serveur DNS est maintenant configure.
[jfc@p200 jfc]$

9. Gestion des quotas.


9.1. Introduction.
Les quotas permettent ladministrateur de limiter de deux manires, lespace disque employ par les utilisateurs et par
les groupes dutilisateurs :

limiter le nombre de fichiers (nombre di-nodes) ;


limiter la place occupe (nombre de blocs de 1kb).

Larborescence dun systme UNIX tant compos de plusieurs systmes de fichiers, il est ncessaire de placer un
dispositif de quotas sur tous ceux qui peuvent abriter des donnes en provenance des utilisateurs. Gnralement, le
rpertoire /home contenant les comptes des utilis ateurs rside dans un systme de fichiers spar de manire mieux
contrler loccupation du disque. Le mcanisme de quotas doit donc tre mis en place sur ce systme de fichiers.
Sous Linux, les quotas sont grs selon trois paramtres :

une limite soft ;


une limite hard ;
une priode de grce.

La limite hard est la limite absolue quun utilisateur ne peut en aucun cas dpasser. La limite soft peut tre dpasse
durant une priode de temps stipule par le dlais de grce. Durant cette priode, des messages sont envoys
lutilisateur pour linformer de ce quil a dpass la limite autorise.

9.2. Processus de mise en place des quotas.


Les quotas sont grs par des fichiers de base de donnes prsents dans la racine des systmes de fichiers contrler.
Le fichier quota.user contient les informations relatives aux limites des diffrents utilisateurs alors que le fichier
quota.group contient les limites relatives aux diffrents groupes du systme. Ces deux fichiers doivent tre accessibles,
en lecture et en criture, uniquement par le super-utilisateur. Voici un exemple de cration des fichiers de base de
donnes de quotas :
[root@p200
[root@p200
[root@p200
[root@p200

/]#
/]#
/]#
/]#

touch
touch
chmod
chmod

quota.user
quota.group
600 quota.user
600 quota.group

Pour que les quotas soient pris en considration, il faut diter le fichier /etc/fstab. Tout systme de fichiers ncessitant
une gestion des quotas soit au niveau des utilisateurs, soit au niveau des groupes ou bien la fois pour les groupes et
pour les utilisateurs doit comporter une indication dans le fichier /etc/fstab. La mention usrquota active les quotas au
niveau des utilisateurs et grpquota active les quotas au niveau des groupes.
Voici un exemple dactivation des quotas pour le systme de fichiers racine :

J-F Challe

HEPCUT - ISIPH

[root@p200 /etc]# cat fstab


/dev/hda5
/
/dev/hda1
/boot
/dev/cdrom
/mnt/cdrom
/dev/fd0
/mnt/floppy
none
/proc
none
/dev/pts
/dev/hda6
swap

11

ext2
ext2
iso9660
auto
proc
devpts
swap

defaults,usrquota,grpquota
defaults
noauto,owner,ro
noauto,owner
defaults
gid=5,mode=620
defaults

1
1
0
0
0
0
0

1
2
0
0
0
0
0

Chaque ligne du fichier /etc/fstab dcrivant un systme de fichiers est constitue de six champs :

le premier champ est le priphrique bloc monter ;


le second champ indique le point de montage du systme de fichiers ;
le troisime champ dcrit le type de systme de fichiers ;
le quatrime champ stipule les options de montage du systme de fichiers. Cest dans ce champ que
lactivation des quotas sera mentionne ;
le cinquime champ prcise les systmes de fichiers qui doivent tre sauvegards. Une valeur zro indique que
le systme de fichiers ne doit pas tre sauvegard ;
le sixime champ mentionne lordre de vrification des systmes de fichiers lors du dmarrage du systme.

Le fichier /etc/fstab ntant lu quau dmarrage du systme, il faut rebooter la machine pour que les modifications
rendent la gestion des quotas active.
Au dpart, les bases de donnes quota.user et quota.group ne sont pas initialises. Dans un premier temps, il est
ncessaire de construire ces bases de donnes sans imposer de limites. La commande quotacheck permet deffectuer
cette opration comme le montre la session interactive suivante :
[root@p200 /]# quotacheck avug
Scanning /dev/hda5 [/] done
Checked 4393 directories and 85060 files
Using quotafile /quota.user
Using quotafile /quota.group
La commande quotacheck doit construire une base de donnes pour les utilisateurs (option u) ainsi que pour les
groupes (option g). Cette construction est base sur les informations prsentes dans le fichier /etc/fstab (option a).
Gnralement ladministrateur souhaite un rapport dactivit de la commande quotacheck (option v).
Bien que les bases de donnes soient cres, ladministrateur doit enclencher la surveillance des quotas au moyen de la
commande quotaon. Larrt de la surveillance peut tre ralise au moyen de la commande quotaoff. Voici un exemple
de ces deux commandes :
[root@p200 /etc]# quotaon /
[root@p200 /etc]# quotaoff /

9.3. Attribution des quotas.


9.3.1. Quotas dun utilisateur.
La commande edquota permet dditer les quotas relatifs un utilisateur. Voici un exemple ddition des quotas :
[root@p200 /etc]# edquota jchalle
Quotas for user jchalle:
/dev/hda5: blocks in use: 184, limits (soft = 190, hard = 200)
inodes in use: 46, limits (soft = 50, hard = 60)
Ladministrateur peut modifier les limites places entre parenthses. Labsence de quotas est indique par des limites
nulles.

J-F Challe

HEPCUT - ISIPH

12

Ds que lune des limites soft est atteinte, lutilisateur voit sa commande chouer et il en est averti par un message.
Voici un exemple de session interactive montrant lchec doprations en raison de la limite des quotas :
[jchalle@p200 jchalle]$ man ls > m
/: write failed, user disk limit reached.
[jchalle@p200 jchalle]$ touch fichier
/: warning, user file quota exceeded
9.3.2. Quotas dun groupe.
Loption g de la commande edquota permet dditer les quotas relatifs un groupe. Voici un exemple ddition des
quotas pour un groupe :
[root@p200 /etc]# edquota -g jchalle
Quotas for group jchalle:
/dev/hda5: blocks in use: 148, limits (soft = 0, hard = 0)
inodes in use: 49, limits (soft = 0, hard = 0)
Ds quun des membres du groupe dpasse une limite soft, tous les membres du groupe sont dans lincapacit de
continuer leur travail sans avoir au pralable effac des fichiers afin de rpondre aux critres mis en uvre par le
systme des quotas.
9.3.3. Priode de grce.
La priode de grce peut tre fix e au moyen de loption t de la commande edquota. Voici un exemple fixant les
dlais 7 jours :
[root@p200 /etc]# edquota -t
Time units may be: days, hours, minutes, or seconds
Grace period before enforcing soft limits for users:
/dev/hda5: block grace period: 7 days, file grace period: 7 days
9.3.4. Attribution des quotas plusieurs utilisateurs.
La gestion des quotas peut tre trs lourde lorsquil faut diter les limites relatives chaque utilisateur du systme. Ds
que les limites sont fixes pour un utilisateur, il est possible de les recopier pour dautres. Loption p de la commande
edquota permet de prendre un utilisateur comme base pour fixer les quotas de plusieurs autres. Voici un exemple dune
telle commande :
[root@p200 /etc]# edquota -p jchalle jfc jl rc
Dans cet exemple, les utilisateurs jfc, jl et rc reoivent les mmes limites que lutilisateur jchalle.

J-F Challe

HEPCUT - ISIPH

13

9.4. Consultation des quotas.


La commande repquota tablit un rapport sur lutilisation des quotas. Voici un exemple de consultation des limites
associes aux utilisateurs (option u) :
[root@p200 /etc]# repquota u /
Block limits
User
used
soft
hard
root
-- 1458472
0
0
daemon
-8
0
0
news
-5768
0
0
uucp
-1048
0
0
games
-36
0
0
squid
-8
0
0
postgres -6572
0
0
gdm
-4
0
0
xfs
-8
0
0
piranha
-0
0
0
nobody
-8
0
0
jfc
++
248
190
200
rc
-180
190
200
jchalle
-+
172
190
200

grace

none

used
88539
3
236
16
41
2
458
1
3
1
2
60
45
51

File limits
soft hard
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
50
60
50
60
50
60

grace

none
7days

Les mmes vrifications peuvent avoir lieu pour les groupes. Pour cela, il suffit de mentionner loption g. Voici un
exemple de vrification des quotas relatifs aux groupes :
[root@p200 /etc]# repquota -g /
Block limits
User
used
soft
hard
root
-- 1445028
0
0
bin
-52
0
0
daemon
-88
0
0
sys
-0
0
0
tty
-932
0
0
disk
-0
0
0
lp
-88
0
0
kmem
-108
0
0
mail
-2064
0
0
news
-5944
0
0
uucp
-1244
0
0
man
-7696
0
0
floppy
-0
0
0
games
-832
0
0
slocate
-888
0
0
utmp
-424
0
0
squid
-8
0
0
postgres -6572
0
0
gdm
-4
0
0
xfs
-8
0
0
ftp
-4
0
0
nobody
-4
0
0
jfc
-236
0
0
rc
-180
0
0
jchalle
-148
0
0

J-F Challe

grace

used
81528
3
21
283
655
3753
4
5
10
239
461
1791
20
56
5
4
2
458
1
3
1
2
56
45
49

File limits
soft hard
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0

grace

HEPCUT - ISIPH

J-F Challe

14

HEPCUT - ISIPH

15

II. La squence de dmarrage du systme.


1. Principe de la squence de dmarrage.
Ds quun PC est mis sous tension, le BIOS effectue diffrents tests pour vrifier que tous les composants sont mme
de fonctionner. Cette phase est appele POST (Power On Self Test). Ds que cette phase de vrification est termine,
le vritable dmarrage du systme dexploitation dbute par le chargement du secteur de dmarrage. Ce secteur de
dmarrage appel master boot record est le premier secteur du disque.
Le secteur de boot contient un petit programme dont le rle consiste continuer la squence de lancement du systme.
Le code du master boot record examine la table des partitions afin didentifier la partition active. La partition bootable
doit contenir dans son secteur de boot un code permettant le lancement du systme dexploitation. Ce secteur appel le
master boot record de la partition est charg en mmoire et ensuite est excut. Lobjectif du programme, prsent dans
le secteur de boot de la partition, rside dans le but de charger entirement le systme dexploitation en mmoire.
La majorit des distributions de Linux installent un chargeur appel LILO (LInux LOader) soit dans le MBR du disque,
soit dans le MBR de la partition active. Ce chargeur permet lutilisateur de choisir le noyau du systme dexploitation
quil souhaite lancer. Notons que LILO est galement capable de lancer dautres systmes dexploitation que Linux.
Lorsque le choix du noyau est effectu, LILO le place en mmoire. Limage du noyau place en mmoire est une
archive compresse contenant en son dbut le code dextraction. Conscutivement cette opration, le noyau vrifie la
prsence de priphriques (disques durs, lecteurs de disquettes, cartes rseau, ) et les configure de manire
approprie. Durant cette phase, le noyau affiche des messages sur les priphriques quil trouve.
Voici un exemple des messages gnrs par le noyau au moment du dmarrage du systme :
LILO boot :
Loading linux ....................
Linux version 2.2.14-5.0 (root@porky.devel.redhat.com) (gcc version egcs-2.91.66
19990314/Linux (egcs-1.1.2 release)) #1 Tue Mar 7 20:53:41 EST 2000
Detected 200456694 Hz processor.
Console: colour VGA+ 80x25
Calibrating delay loop... 399.77 BogoMIPS
Memory: 95452k/98304k available (1084k kernel code, 412k reserved, 1292k data, 6
4k init, 0k bigmem)
Dentry hash table entries: 262144 (order 9, 2048k)
Buffer cache hash table entries: 131072 (order 7, 512k)
Page cache hash table entries: 32768 (order 5, 128k)
VFS: Diskquotas version dquot_6.4.0 initialized
CPU: Intel Pentium MMX stepping 03
Checking 386/387 coupling... OK, FPU using exception 16 error reporting.
Checking 'hlt' instruction... OK.
Intel Pentium with F0 0F bug - workaround enabled.
POSIX conformance testing by UNIFIX
PCI: PCI BIOS revision 2.10 entry at 0xf0510
PCI: Using configuration type 1
PCI: Probing PCI hardware
Linux NET4.0 for Linux 2.2
Based upon Swansea University Computer Society NET3.039
NET4: Unix domain sockets 1.0 for Linux NET4.0.
NET4: Linux TCP/IP 1.0 for NET4.0
IP Protocols: ICMP, UDP, TCP, IGMP
TCP: Hash tables configured (ehash 131072 bhash 65536)
Initializing RT netlink socket
Starting kswapd v 1.5
Detected PS/2 Mouse Port.
Serial driver version 4.27 with MANY_PORTS MULTIPORT SHARE_IRQ enabled
ttyS00 at 0x03f8 (irq = 4) is a 16550A
ttyS01 at 0x02f8 (irq = 3) is a 16550A
pty: 256 Unix98 ptys configured

J-F Challe

HEPCUT - ISIPH

16

apm: BIOS version 1.2 Flags 0x0b (Driver version 1.9)


Real Time Clock Driver v1.09
RAM disk driver initialized: 16 RAM disks of 4096K size
PIIX4: IDE controller on PCI bus 00 dev 09
PIIX4: not 100% native mode: will probe irqs later
ide0: BM-DMA at 0xe000-0xe007, BIOS settings: hda:DMA, hdb:DMA
ide1: BM-DMA at 0xe008-0xe00f, BIOS settings: hdc:pio, hdd:pio
hda: WDC AC38400L, ATA DISK drive
hdb: ATAPI CDROM 52X, ATAPI CDROM drive
ide0 at 0x1f0-0x1f7,0x3f6 on irq 14
hda: WDC AC38400L, 8063MB w/256kB Cache, CHS=1027/255/63
hdb: ATAPI 52X CD-ROM drive, 128kB Cache
Uniform CDROM driver Revision: 2.56
Floppy drive(s): fd0 is 1.44M
FDC 0 is a post-1991 82077
md driver 0.90.0 MAX_MD_DEVS=256, MAX_REAL=12
raid5: measuring checksumming speed
raid5: MMX detected, trying high-speed MMX checksum routines
pII_mmx
:
323.469 MB/sec
p5_mmx
:
374.523 MB/sec
8regs
:
216.408 MB/sec
32regs
:
160.401 MB/sec
using fastest function: p5_mmx (374.523 MB/sec)
scsi : 0 hosts.
scsi : detected total.
md.c: sizeof(mdp_super_t) = 4096
Partition check:
hda: hda1 hda2 < hda5 hda6 >
autodetecting RAID arrays
autorun ...
... autorun DONE.
VFS: Mounted root (ext2 filesystem) readonly.
Freeing unused kernel memory: 64k freed
Adding Swap: 136512k swap-space (priority -1)
Le noyau essaie ensuite de monter le systme de fichiers racine. Si cette opration choue, le noyau panique et arrte le
systme. Le systme de fichiers racine est normalement mont en lecture seule afin de permettre une vrification de
son intgrit.
Le noyau lance ensuite le programme /sbin/init en tche de fond. Ce processus est lanctre de tous les processus du
systme. Cest partir de ce programme que toutes les fonctionnalits du systme sont dmarres. Lorsque le
processus init arrive la fin de linitialisation de ce systme, il lance de programme getty pour toutes les consoles afin
dautoriser les utilisateurs se connecter.

2. LILO.
2.1. Les arguments du dmarrage.
Le chargeur Linux est le programme responsable du chargement du noyau Linux une fois que le BIOS a pass le
contrle de lordinateur au systme dexploitation. Le chargeur de Linux se manifeste par laffichage de linformation
suivante :
LILO boot:
Cette ligne est affiche par le programme LILO avant que le noyau LINUX nait dmarr. Cette ligne de sortie est
linvite damorage qui permet lutilisateur de choisir une image du noyau, dmarrer ou passer des arguments au
noyau.
La capacit de passer des arguments au noyau est utile. Par exemple, en cas de modification non adquate des
bibliothques du systme ou de la perte de donnes la suite dun problme dalimentation, lutilisateur peut passer des

J-F Challe

HEPCUT - ISIPH

17

arguments au noyau de manire amorcer le systme en mode maintenance. Ce mode de fonctionnement permet
ladministrateur de travailler en mode mono-utilisateur sans tre perturb par les autres utilisateurs. Lactivation de ce
mode est effectu en transmettant largument single au noyau. Voici un exemple de dmarrage du systme en mode
maintenance :
LILO boot: linux single
Le passage darguments au noyau peut constituer une faille de scurit. Le plus dangereux est largument init= qui
permet lutilisateur, lors de linvite de LILO, de spcifier un programme init alternatif. Le programme init est
responsable du dmarrage de tous les services, incluant la vrification du nom de compte et du mot de pas se.
Largument init= permet lutilisateur de prciser par exemple lexcution du shell /bin/bash en lieu en place du
programme init traditionnel. Voici un exemple dune telle saisie :
LILO boot: linux init=/bin/bash
Cette simple ligne peut compromettre lentiret du systme. Lorsque largument init pointe sur /bin/bash, le noyau
Linux dmarre comme premier processus /bin/bash. Cela signifie quaucun service ne sera dmarr, quaucune
demande dauthentification ne sera requise pour utiliser le systme. De plus, le shell est lanc sous lidentit du superutilisateur, ce qui permet aux personnes mal intentionnes dengendrer les pires dgts.
Des mesures doivent donc tre prises pour scuriser le chargeur LILO.

2.2. Le fichier /etc/lilo.conf.


Le comportement du chargeur est dirig par le contenu du fichier /etc/lilo.conf. Ce fichier est scind en deux sections
principales. La premire section contient des paramtres gnraux qui sappliquent toutes les autres sections. La
seconde section du fichier dbute par le mot image= ou other= et stend jusqu la fin du fichier. Plusieurs images du
noyau de Linux peuvent tre dfinies au moyen de plusieurs entres image=. Voici un exemple de fichier /etc/lilo.conf :
[root@P2450 /etc]# cat lilo.conf
boot=/dev/sda5
map=/boot/map
install=/boot/boot.b
prompt
timeout=50
default=linux
image=/boot/vmlinuz-2.2.14-5.0smp
label=linux
initrd=/boot/initrd-2.2.14-5.0smp.img
read-only
root=/dev/md0
image=/boot/vmlinuz-2.2.14-5.0
label=linux-up
initrd=/boot/initrd-2.2.14-5.0.img
read-only
root=/dev/md0
Ce fichier dexemple montre deux configurations de dmarrage du systme. La premire permet de charger un noyau
pour un systme multiprocesseurs et la seconde pour un noyau monoprocesseur.

2.3. Le mot cl password.


La scurisation du processus de dmarrage du systme consiste imposer un mot de passe. Le mot cl password
permet au systme de demander que lutilisateur entre un mot de passe avant lamorage de limage dun noyau. Le
mot cl password peut tre plac soit dans la premire section, soit dans une partie image=.

J-F Challe

HEPCUT - ISIPH

18

Si le mot cl password est plac dans la section de configuration globale, toutes tentatives damorage exigeront que
lutilisateur fournisse un mot de passe. Si le mot cl password est plac dans une section image=, seul le lancement de
cette image requerra un mot de passe. Voici un exemple de protection globale :
[root@P2450 /etc]# cat lilo.conf
boot=/dev/sda5
map=/boot/map
install=/boot/boot.b
prompt
timeout=50
default=linux
password= "qwerty"
image=/boot/vmlinuz-2.2.14-5.0smp
label=linux
initrd=/boot/initrd-2.2.14-5.0smp.img
read-only
root=/dev/md0
image=/boot/vmlinuz-2.2.14-5.0
label=linux-up
initrd=/boot/initrd-2.2.14-5.0.img
read-only
root=/dev/md0
Ds que le fichier /etc/lilo.conf est modifi, il faut que le secteur de dmarrage reflte cette modification. La commande
lilo permet dcrire un nouveau secteur de dmarrage en fonction de la configuration prsente dans le fichier
/etc/lilo.conf. Voici un exemple dexcution de cette commande :
[root@p2450 /etc]# lilo
Warning: /etc/lilo.conf should be readable only for root if using PASSWORD
Added linux *
Dans le cas dune protection par un mot de passe, le systme indique que le fichier /etc/lilo.conf ne puisse tre lisible
que par le super-utilisateur. Sans cela, le mot de passe ne serait quun secret de polichinelle.
Cette mthode de protection exige la prsence de ladministrateur lors dun dmarrage du systme. En ralit, lutilit
du mot de passe na de sens qu une condition : que des paramtres soient transmis au travers de linvite LILO. Le
mot cl restricted force ne LILO demander un mot de passe quuniquement dans le cas o des paramtres sont
transmis au dmarrage. Cela signifie quun dmarrage normal ne ncessitera pas lentre dun mot de passe.
[root@P2450 /etc]# cat lilo.conf
boot=/dev/sda5
map=/boot/map
install=/boot/boot.b
prompt
timeout=50
default=linux
password= "qwerty"
restricted
image=/boot/vmlinuz-2.2.14-5.0smp
label=linux
initrd=/boot/initrd-2.2.14-5.0smp.img
read-only
root=/dev/md0
image=/boot/vmlinuz-2.2.14-5.0
label=linux-up
initrd=/boot/initrd-2.2.14-5.0.img
read-only
root=/dev/md0

J-F Challe

HEPCUT - ISIPH

19

3. Le processus init.
Lorsque le noyau a termin son initialisation, il lance le processus init. Ce processus est charg de lancer tous les
services du systme par lintermdiaire de scripts, dont le principal est /etc/rc.d/rc.
Le comportement du processus init est bas sur le contenu du fichier /etc/inittab. Ce fichier dfinit la notion de run
level. Lide de ces run levels est que ladministrateur systme peut souhaiter booter le systme en mode mono
utilisateur, en mode multi-utilisateurs ou bien encore provoquer le dmarrage de X window.
Tout systme UNIX dispose de sept run levels numrots de 0 6. Voici la signification des ces diffrents niveaux
dexcution :
Run level
0
1
2
3
4
5
6

Signification
Arrt du systme (/etc/rc.d/rc0.d)
dmarrage du systme en mode mono utilisateur (/etc/rc.d/rc1.d)
dmarrage du systme en mode multi-utilisateurs mais sans le support NFS (/etc/rc.d/rc2.d)
dmarrage du systme en mode mult i-utilisateurs (/etc/rc.d/rc3.d)
non utilis (/etc/rc.d/rc4.d)
dmarrage du systme en mode multi-utilisateurs mais en lanant X window (/etc/rc.d/rc5.d)
redmarrer le systme (/etc/rc.d/rc6.d)

Cette convention de numrotation des niveaux dexcution est parfaitement arbitraire. Rien nempche une distribution
UNIX dattacher dautres significations ces niveaux dexcution. La description du travail qui doit tre ralis en
fonction du niveau dexcution est dcrite dans le fichier /etc/inittab. Voici un exemple de fichier /etc/inittab :
[root@p200 /etc]# cat inittab
id:3:initdefault:
si::sysinit:/etc/rc.d/rc.sysinit
l0:0:wait:/etc/rc.d/rc
l1:1:wait:/etc/rc.d/rc
l2:2:wait:/etc/rc.d/rc
l3:3:wait:/etc/rc.d/rc
l4:4:wait:/etc/rc.d/rc
l5:5:wait:/etc/rc.d/rc
l6:6:wait:/etc/rc.d/rc

0
1
2
3
4
5
6

ud::once:/sbin/update
ca::ctrlaltdel:/sbin/shutdown -t3 -r now
pf::powerfail:/sbin/shutdown -f -h +2 "Power Failure; System Shutting Down"
pr:12345:powerokwait:/sbin/shutdown -c "Power Restored; Shutdown Cancelled"

1:2345:respawn:/sbin/mingetty
2:2345:respawn:/sbin/mingetty
3:2345:respawn:/sbin/mingetty
4:2345:respawn:/sbin/mingetty
5:2345:respawn:/sbin/mingetty
6:2345:respawn:/sbin/mingetty

tty1
tty2
tty3
tty4
tty5
tty6

x:5:respawn:/etc/X11/prefdm nodaemon
Chaque ligne de ce fichier est de la forme :
id:runlevel:action:process
Voici la signification des champs de cette ligne :

J-F Challe

HEPCUT - ISIPH

20

id est une squence dun maximum de quatre caractres permettant didentifier la ligne ;
runlevel est le numro de niveau dexcution de cette ligne ;
action dtermine comment le processus doit tre lanc ainsi que laction prendre lorsquil se termine ;
process spcifie le processus qui doit tre excut.

Les actions possibles correspondent des mots cls. Voici la signification de quelque mots cls :

respawn : ds que le processus est termin, il est relanc automatiquement. Ce comportement est
particulirement utile pour la gestion des terminaux. Ds quun utilisateur clture une session interactive, cela
met un terme au processus de gestion du terminal. Pour quune autre personne puisse travailler sur ce terminal
il faut que le processus de gestion soit relanc automatiquement ;
wait : le processus correspondant est lanc une seule fois. Avant de continuer linitialisation du systme, init
doit attendre la fin de lexcution du processus qui vient dtre lanc ;
once : le processus correspondant est excut une seule fois ;
initdefault : cette entre dtermine le niveau dexcution par dfaut employ par init lors dune phase de boot
normale ;
sysinit : le processus correspondant sera excut durant la squence de dmarrage quel que soit le niveau
dexcution par dfaut. En dautres termes, le champ runlevels est ignor ;
powerfail : le processus correspondant est excut ds que lalimentation lectrique nest plus assure. Pour
que cette opration soit possible, il faut que le systme informatique soit connect un UPS ;
powerokwait : le processus correspondant est excut ds que lalimentation lectrique est restaure ;
ctrlaltdel : le processus correspondant est excut ds que la combinaison de touches ctrl-alt-del est enfonce.

A chaque run level correspond lexcution dun ensemble de scripts placs dans le rpertoire /etc/rc.d/rc#.d o le
caractre # doit tre remplac par le numro du niveau dexcution correspondant.

4. Les scripts de dmarrage.


Le rpertoire /etc/rc.d/init.d contient tous les scripts de dmarrage des services du systme. Les rpertoires
/etc/rc.d/rc#.d contiennent simplement des liens vers les scripts du rpertoire /etc/rc.d/init.d. Ces rpertoires de liens
contiennent des noms de fichiers dbutant soit par la lettre S ou bien par la lettre K. En seconde position est codifi un
nombre de deux chiffres. Les fichiers dbutant par la lettre S lancent les services du systme alors que les fichiers
dbutant par la lettre K les arrtent. Lordre dexcution des scripts dans un rpertoire /etc/rc.d/rc#.d est dtermin par
les deux chiffres suivant la lettre S ou K. Les scripts affects dun numro faible sont excuts avant ceux portant un
numro plus lev.
Le rpertoire /etc/rc.d contient un fichier appel rc.local. Ce fichier est un script dont lexcution est dclenche par init
lorsque tous les autres scripts dinitialisation du systme ont t excuts.
Le rpertoire /etc/rc.d contient galement un fichier appel rc.sysinit. Ce script est lanc par le processus init avant tout
autre script dinitialisation.

5. Larrt du systme.
Larrt dun systme UNIX doit seffectuer suivant une procdure bien tablie. Il est hors de question de couper
lalimentation lectrique nimporte quel moment. Si tel est le cas, les systmes de fichiers ainsi que les fichiers
risquent de se trouver en tat dincohrence. Ce risque est bien rel en raison des buffers employs par le systme pour
optimiser les accs aux fichiers.
Une autre raison proscrivant lextinction brutale de la machine est que, dans un systme multi-tches et multiutilisateurs, il peut y avoir de nombreux travaux excuts en quasi paralllisme. Lutilisation dun procdure correcte
dextinction permet de terminer proprement tous les processus.
La commande permettant darrter proprement un systme UNIX sappelle shutdown. Elle est gnralement utilise de
deux faon possibles :

J-F Challe

HEPCUT - ISIPH

21

Si le systme est employ uniquement par une seule personne, la faon classique dutiliser la commande
shutdown consiste quitter tous les programmes qui sexcutent, se dconnecter de toutes les consoles, e se
connecter sous le compte root et dactylographier la commande suivante :

[root@p200 /root]# shutdown -h now


Loption h prcise que le systme doit simplement tre arrt.

Si le systme est employ par plusieurs utilisateurs, il faut leur laisser le temps de terminer les travaux en
cours. Ladministrateur doit donc lancer la commande en demandant que la procdure darrt soit excute de
manire diffre.

[root@p200 /root]# shutdown -h 10 'maintenance'


Tous les utilisateurs reoivent alors le message suivant :
Broadcast message from root (pts/0) Mon Nov 19 19:55:02 2001...
maintenance
The system is going DOWN for system halt in 10 minutes !!
Lorsque le procdure darrt se lance aprs le dlai prcis, tous les systmes de fichiers, sauf la racine, sont dmonts,
les processus utilisateur sont tus, les dmons sont arrts et enfin le systme de fichiers racine est dmont. Lorsque
toutes les oprations sont termines, le processus init affiche un message invitant ladministrateur couper
lalimentation lectrique.

6. Le redmarrage du systme.
Ceci peut tre ralis en arrtant dabord compltement le systme en teignant puis en rallumant la machine. Une
faon plus simple consiste demander la commande shutdown de relancer le systme au lieu de simplement larrter.
Ceci est ralis au moyen de loption r de la commande shutdown.
La plupart des systme Linux lancent la commande shutdown r now lorsque la combinaison de touche ctrl-alt-del est
tape au clavier de la console. Cette possibilit peut constituer une faille de scurit dans le systme. Pour inhiber cette
fonctionnalit, il suffit dditer le fichier /etc/inittab et de supprimer la ligne suivante :
ca::ctrlaltdel:/sbin/shutdown t3 r now

J-F Challe

HEPCUT - ISIPH

J-F Challe

22

HEPCUT - ISIPH

23

III. Configuration de linterface rseau.


1. La commande ifconfig.
La commande ifconfig fixe et vrifie la configuration des interfaces rseau. Cette commande affectera les arguments
suivants chacune des interfaces rseau :

ladresse IP ;
le masque de sous-rseau ;
ladresse broadcast.

Voici la commande ifconfig employe lors de la configuration dune interface Ethernet dun pc fonctionnant sous
Linux :
ifconfig eth0 212.68.194.203 netmask 255.255.255.240 broadcast 212.68.194.207
Un grand nombre dautres arguments peuvent tre utiliss avec cette commande. Toutefois, voici ceux permettant de
spcifier les informations de base de TCP/IP pour une interface rseau :

interface. Cest le nom de linterface rseau configurer. Lexemple ci-dessus configure linterface eth0.
adresse. Il est permis de donner soit ladresse IP soit le nom symbolique de la machine. Notre exemple affecte
ladresse 212.68.194.203 linterface eth0. Si linterface rseau est configure au moyen dun nom
symbolique, il faut que la rsolution de ladresse (transformation du nom symbolique en une adresse IP) soit
effectue au moyen du fichier /etc/hosts. Le serveur DNS tant lanc aprs la configuration des interfaces
rseau, il faut ajouter une entre dans le fichier /etc/hosts.
netmask. Cest le masque de sous-rseau pour cette interface. Cet argument peut tre omis uniquement dans
le cas o le masque est driv de la structure de classe traditionnelle. Dans notre exemple, nous avons dcoup
une adresse de classe C en 16 sous-rseaux (adresse rseau sur 28 bits). Le masque doit, dans cet exemple,
possder ses 28 bits de poids fort 1. Le masque est donc 255.255.255.240.
broadcast. Cest ladresse de diffusion du rseau. La plupart des machines utilisent comme adresse par dfaut
ladresse broadcast standard qui correspond une adresse IP dont tous les bits dsignant la machine sont
positionns 1. Linterface eth0 a donc une adresse broadcast qui est 212.68.194.207. Ladresse broadcast
peut galement tre spcifie de manire symbolique. Dans ce cas, ladministrateur placera la valeur soit dans
le fichier /etc/hosts, soit dans le fichier /etc/networks.

2. Structure des fichiers /etc/hosts et /etc/networks.


Les fichiers /etc/hosts et /etc/networks sont au format texte. Chaque ligne de ces fichiers associent une adresse IP un
ou plusieurs noms symboliques.
Voici un exemple de fichier /etc/hosts :
127.0.0.1
212.68.194.203

localhost localhost.localdomain
gateway

Voici un exemple de fichier /etc/networks :


212.68.194.207

bcasteth0

En se basant sur le contenu des fichiers dcrits ci-dessus, la commande de configuration de linterface eth0 peut se
rdiger de la manire suivante :
ifconfig eth0 gateway netmask 255.255.255.240 broadcast bcasteth0

J-F Challe

HEPCUT - ISIPH

24

3. Dtermination du nom de linterface.


Un ordinateur peut disposer de plusieurs cartes rseau auxquelles des noms sont associs. En principe, il est possible,
de dterminer le nom des interfaces disponibles partir des messages affichs la console lors du dmarrage du
systme. Sur bon nombre de systmes, ces informations peuvent tre consultes en utilisant la commande dmesg.
Lexemple qui suit montre les messages correspondants une machine quipe de 6 cartes Ethernet :
gateway:~# dmesg | grep "eth[0-9]:*"
eth0: 3Com 3c905B Cyclone 100baseTx at 0x6100, 00:50:04:32:a7:e7, IRQ
eth1: 3Com 3c905B Cyclone 100baseTx at 0x6200, 00:50:04:32:98:1b, IRQ
eth2: 3Com 3c905B Cyclone 100baseTx at 0x6300, 00:50:04:32:9b:45, IRQ
eth3: 3Com 3c905B Cyclone 100baseTx at 0x6400, 00:50:04:32:9b:6b, IRQ
eth4: WD80x3 at 0x240, 00 00 C0 08 70 29 WD8013, IRQ 10, shared memory
0xc8000-0xcbfff.
eth5: NE2000 found at 0x340, using IRQ 9.

11
12
5
5
at

Il nest pas toujours ais de dterminer toutes les interfaces disponibles sur un systme en se basant uniquement sur les
messages fournis par la commande dmesg. Puisquelle donne seulement les informations relatives aux interfaces
physiques. Un systme informatique pouvant tre quip dinterfaces virtuelles, il faut employer les commandes netstat
et ifconfig pour obtenir la liste de toutes les interfaces disponibles. Quant elle la commande netstat permet de
visualiser toutes les interfaces configures.
Loption i de la commande netstat permet de visualiser les statistiques relatives aux cartes rseau installes.
Nanmoins, si une interface nest pas active, aucune information nest fournie par netstat. La liste de toutes les
interfaces est obtenue par le biais de loption -a. Cette option demande laffichage des informations concernant toutes
les interfaces quelles soient actives ou inactives.
Voici un exemple dutilisation de la commande netstat :
gateway:~# netstat -ia
Kernel Interface table
Iface
MTU Met
RX-OK RX-ERR RX-DRP RX-OVR
eth0
1500
0 1107745
0
0
0
eth1
1500
0
126495
1
0
0
eth2
1500
0
72856
14
0
0
eth3
1500
0
0
0
0
0
eth4
1500
0
18739
0
0
0
eth5
1500
0
972754
0
0
0
eth5: 1500
0
- no statistics available
eth5: 1500
0
- no statistics available
eth5: 1500
0
- no statistics available
lo
3924
0
65491
0
0
0

TX-OK TX-ERR TX-DRP TX-OVR Flg


1039503
0
0
0 BRU
205668
0
0
0 BRU
35432
0
0
0 BRU
6
0
0
0 BRU
6
0
0
0 BRU
1019355
0
0
0 BRU
BRU
BRU
BRU
65491
0
0
0 LRU

Voici la signification des champs affichs par netstat :

J-F Challe

MTU : cette valeur correspond la taille en octets de la plus grande trame (paquet) pouvant tre transmise par
linterface sans engendrer de fragmentation.
Met : cette valeur numrique fixe le cot pour emprunter une route. Plus cette valeur est faible plus le cot est
faible.
RX-OK : informe du nombre de trames reues sans erreur.
RX-ERR : informe du nombre de trames endommages qui ont t reues.
RX-DRP : informe du nombre de trames reues qui ont t limines (mmoire insuffisante).
RX-OVR : informe du nombre de trames qui ont t perdues (arrive trop rapide des donnes).
TX-OK : informe du nombre de trames envoyes sans erreur.
TX-ERR : informe du nombre de trames envoyes qui ont t endommages.
TX-DRP : informe du nombre de trames reues qui ont t limines.
TX-OVR :informe du nombre de trames qui ont t perdues (mission trop rapide des donnes).
Flg : donne des informations sur linterface comme le montre le tableau suivant :

HEPCUT - ISIPH

25

flag
B
L
M
O
P
R
U

signification
Une adresse broadcast est attribue linterface
Linterface est de type loopback
Linterface est configure en mode promiscuous
Le protocole ARP nest pas utilis avec cette interface
Cest une connexion point point
Linterface est oprationnelle (running)
Linterface est en cours dutilisation (UP)

La commande ifconfig peut galement tre employe pour dterminer les interfaces rseau disponibles. Voici le
rsultat dexcution de la commande ifconfig sur une machine quipe de 6 cartes Ethernet.
gateway:~# ifconfig
eth0
Link encap:Ethernet HWaddr 00:50:04:32:A7:E7
inet addr:192.168.1.10 Bcast:192.168.1.255 Mask:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:3066319 errors:0 dropped:0 overruns:0 frame:0
TX packets:2862439 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:100
Interrupt:11 Base address:0x6100
eth1

Link encap:Ethernet HWaddr 00:50:04:32:98:1B


inet addr:192.168.23.1 Bcast:192.168.23.255 Mask:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:1163838 errors:14 dropped:0 overruns:0 frame:18
TX packets:1409032 errors:0 dropped:0 overruns:0 carrier:0
collisions:6765 txqueuelen:100
Interrupt:12 Base address:0x6200

eth2

Link encap:Ethernet HWaddr 00:50:04:32:9B:45


inet addr:192.168.24.1 Bcast:192.168.24.255 Mask:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:806344 errors:1480 dropped:0 overruns:0 frame:2245
TX packets:814853 errors:0 dropped:0 overruns:0 carrier:0
collisions:4659 txqueuelen:100
Interrupt:5 Base address:0x6300

eth3

Link encap:Ethernet HWaddr 00:50:04:32:9B:6B


inet addr:192.168.25.1 Bcast:192.168.25.255 Mask:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:14 errors:0 dropped:0 overruns:0 carrier:14
collisions:0 txqueuelen:100
Interrupt:5 Base address:0x6400

eth4

Link encap:Ethernet HWaddr 00:00:C0:08:70:29


inet addr:192.168.22.1 Bcast:192.168.22.255 Mask:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:39374 errors:0 dropped:0 overruns:0 frame:19
TX packets:17 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:100
Interrupt:10 Base address:0x250 Memory:c8000-cc000

eth5

Link encap:Ethernet HWaddr 00:00:E8:3A:1B:2E


inet addr:212.68.194.203 Bcast:212.68.194.207 Mask:255.255.255.240
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:1333799 errors:0 dropped:0 overruns:0 frame:0
TX packets:1350119 errors:0 dropped:0 overruns:0 carrier:0
collisions:233 txqueuelen:100
Interrupt:9 Base address:0x340

J-F Challe

HEPCUT - ISIPH

26

eth5:0

Link encap:Ethernet HWaddr 00:00:E8:3A:1B:2E


inet addr:212.68.194.202 Bcast:212.68.194.207 Mask:255.255.255.240
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
Interrupt:9 Base address:0x340

eth5:1

Link encap:Ethernet HWaddr 00:00:E8:3A:1B:2E


inet addr:212.68.194.201 Bcast:212.68.194.207 Mask:255.255.255.240
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
Interrupt:9 Base address:0x340

eth5:2

Link encap:Ethernet HWaddr 00:00:E8:3A:1B:2E


inet addr:212.68.194.200 Bcast:212.68.194.207 Mask:255.255.255.240
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
Interrupt:9 Base address:0x340

lo

Link encap:Local Loopback


inet addr:127.0.0.1 Mask:255.0.0.0
UP LOOPBACK RUNNING MTU:3924 Metric:1
RX packets:125993 errors:0 dropped:0 overruns:0 frame:0
TX packets:125993 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0

4.Vrification de linterface avec ifconfig.


Lors de linstallation dun systme UNIX, des valeurs sont attribues aux interfaces rseau. Toutefois, la configuration
peut ne pas correspondre exactement ce que lon souhaite. Cependant il est possible den modifier, a posteriori, la
configuration des interfaces. Avant toute chose, il est prfrable de vrifier la configuration dune interface au moyen
de la commande ifconfig ayant comme paramtre le nom de linterface tudier. Voici le rsultat dexcution de la
commande ifconfig applique la premire carte Ethernet du systme :
gateway:~# ifconfig eth0
eth0
Link encap:Ethernet HWaddr 00:50:04:32:A7:E7
inet addr:192.168.1.10 Bcast:192.168.1.255 Mask:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:3072771 errors:0 dropped:0 overruns:0 frame:0
TX packets:2868667 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:100
Interrupt:11 Base address:0x6100
Les champs MTU et Metric montrent les valeurs pour cette interface. Sur un systme Linux le champ Metric nest pas
exploit, il est uniquement dfini pour des raisons de compatibilit. Les lignes RX et TX fournissent des informations
statistiques sur le fonctionnement de linterface, elles correspondent aux champ s retourns par la commande netstat. La
commande ifconfig affiche galement des informations sur les caractristiques physiques du priphrique telles que :

ladresse MAC de la carte ;


ladresse mmoire utilise ;
linterruption employe.

La seconde ligne dinformation stipule ladresse IP, ladresse broadcast ainsi que le masque de sous-rseau attribu
cette interface. La troisime ligne contient sous une forme textuelle la valeur des flags relatifs cette interface (voir
commande netstat).

5. Affectation un masque de sous-rseau.


Pour fonctionner correctement, chaque interface dun mme rseau doit possder le mme masque de sous-rseau.
Supposons que lon dispose de deux machines interconnectes par lintermdiaire de linterface rseau eth0. Elles
doivent possder le mme masque de sous-rseau, pour leur interface eth0 respective. Le rsultat de lexcution de la
commande ifconfig sur les deux machines permet de visualiser lexistence dun masque rseau identique.
Voici le rsultat dexcution des commandes ifconfig sur les deux machines concernes.

J-F Challe

HEPCUT - ISIPH

27

gateway:~# ifconfig eth0


eth0
Link encap:Ethernet HWaddr 00:50:04:32:A7:E7
inet addr:192.168.1.10 Bcast:192.168.1.255 Mask:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:3072771 errors:0 dropped:0 overruns:0 frame:0
TX packets:2868667 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:100
Interrupt:11 Base address:0x6100
[root@linux /root]# ifconfig eth0
eth0
Link encap:Ethernet HWaddr 00:60:08:4A:5B:F6
inet addr:192.168.1.4 Bcast:192.168.1.255 Mask:255.255.255.0
IPX/Ethernet 802.3 addr:0060084A5BF6
UP BROADCAST RUNNING PROMISC MULTICAST MTU:1500 Metric:1
RX packets:1331052 errors:0 dropped:0 overruns:0 frame:0
TX packets:1291902 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:100
Interrupt:11 Base address:0xb800

6. Affectation de ladresse broadcast.


Le RFC 919, Broadcasting internet datagrams , dfinit le format dune adresse broadcast comme tant une adresse dont
tous les bits dcrivant la machine sont positionns 1. Cette dfinition de ladresse broadcast devrait permettre la
commande ifconfig den dterminer automatiquement la valeur. Ce nest malheureusement pas toujours le cas. TCP/IP
a t incorpor UNIX BSD 4.2 avant que le RFC 919 ne soit adopt comme norme. Cette version de UNIX utilise
une adresse broadcast dont tous les bits relatifs la machine sont positionns 0. De plus, ce systme dexploitation ne
permet pas la modification de ladresse broadcast durant la configuration du systme. Pour cette raison historique,
certaines versions dUNIX mettent, par dfaut, ladresse broadcast au format 0 pour tre compatibles avec certains
anciens systmes, alors que dautres versions utilisent la norme et mettent par dfaut ladresse au format 1 .
Afin dviter toute confusion lors de la dfinition des adresses broadcast dun rseau, il est prfrable de dfinir
explicitement cette adresse en choisissant lun des deux formats disponibles. De nos jours, il est vivement conseill de
suivre la norme RFC 919.

7. Autres options.
Jusqu prsent, la commande ifconfig a t emp loye principalement pour fixer ladresse de linterface, le masque de
sous-rseau et ladresse broadcast. Bien quil sagisse probablement de lutilit majeure de la commande ifconfig, elle
possde dautres options. Elle peut activer ou dsactive :

la mise en queue de lencapsulation des paquets IP ;


lutilisation dARP ;
linterface en elle -mme.

La commande ifconfig peut galement fixer les valeurs MTU et Metric.

7.1. Activer et dsactiver linterface.


La commande ifconfig possde deux arguments, up et down pour activer et dsactiver linterface rseau. Largument
up active linterface rseau alors que largument down dsactive linterface rseau qui ne pourra plus tre utilise.
Lors de la modification de ladresse IP associe une interface, il est impratif de dsactiver linterface avant
dattribuer une nouvelle adresse IP. Le changement dadresse IP doit tre effectu en trois temps :

J-F Challe

dsactivation de linterface rseau ;


modification de ladresse IP ;
activation de linterface rseau.

HEPCUT - ISIPH

28

7.2. ARP et trailers .


Dans le cas des interfaces Ethernet, la commande ifconfig admet les arguments arp et trailers. Largument trailers
active ou dsactive la ngociation de la mise en queue de lencapsulation des paquets IP. Pour rappel, les paquets IP
sont envoys travers plusieurs rseaux physiques en tant encapsuls dans les trames de ces rseaux physiques. La
mise en queue est une technique optionnelle qui rduit le nombre de copies mmoire mmoire que le systme
rcepteur est oblig deffectuer. Pour activer la mise en queue, il suffit dadjoindre la commande ifconfig largument
trailers. Lorsque cette option est active, cela impose aux autres systmes deffectuer une mise en queue lors de la
transmission des donnes. Sur un systme Linux, cette option nexiste pas.
Le protocole ARP (Address Resolution Protocol) traduit les adresses IP en mac adresses. Ce protocole peut tre activ
au moyen de loption arp de la commande ifconfig. La dsactivation de ce protocole repose sur largument arp de la
commande ifconfig.
Bien que cela ne soit pas recommand, il est donc possible de dsactiver lutilisation du protocole ARP. Cette dcision
de dsactivation ne devrait tre prise quau moment de lutilisation dun rseau exprimental disposant dun matriel
spcifique. Dans ces circonstances trs particulires o des quipement non-standards existent il est important de
disposer de la capacit de dsactivation du protocole ARP.

7.3. Metric.
Sur certains systmes, la commande ifconfig cre une entre dans la table de routage pour chaque interface qui possde
une adresse IP. Chaque interface est une route vers un rseau. Mme si une machine nest pas une passerelle, son
interface est toujours une route vers le rseau local. La commande ifconfig dtermine la route vers le rseau destination
en appliquant le masque de sous-rseau de linterface ladresse IP de linterface. Par exemple, si une interface rseau
possde ladresse IP 192.168.1.10 et un masque de sous-rseau 255.255.255.0 le rseau de destination est 192.168.1.0.
Le protocole RIP (Routing Information Protocol) est un protocole de routage frquemment utilis sous UNIX. Ce
protocole a deux utilits :

diffuser les informations de routage aux autres machines ;


utiliser les informations de routage entrantes pour construire des tables de routage dynamiques.

Les routes cres par la commande ifconfig sont une des sources dinformations de routage diffuses par le protocole
RIP. Largument metric de cette commande peut tre employ pour contrler lutilisation de cette information au
niveau du protocole RIP.
Le protocole RIP base sa dcision de routage en fonction du cot dune route par une mtrique associe la route.
Cette information ne peut tre quun nombre. Plus le nombre est petit, plus le cot pour emprunter cette route est faible.
Lors de la construction de la table de routage, le protocole RIP favorise les routes faible cot plutt que celles plus
onreuses. Un cot faible est gnralement associ aux rseaux directement connects. Par consquent, le paramtre
metric par dfaut est 0 pour une route passant par une interface directement connecte au rseau. Dans le cas des
systmes Linux, les scripts de dmarrage du systme donnent la valeur 1 au paramtre metric.
En pratique, largument metric nest utilis qu la condition de disposer de plusieurs routes ayant une mme
destination ce qui privilgie lutilisation dune route au dtriment dune autre. Lorsquun systme dispose de plusieurs
interfaces vers une mme destination, une valeur metric faible est associe au rseau de plus haut dbit.

7.4. MTU.
Tout rseau possde un MTU (Maximum Transmission Unit), abrviation qui dsigne la taille du plus grand paquet
pouvant tre transmis sans fragmentation sur le rseau physique. Sur un rseau Ethernet, la taille maximale est de 1500
bytes. Le comportement par dfaut de la commande ifconfig consiste choisir la valeur la plus grande en fonction du
rseau physique employ. Gnralement un MTU de grande taille fournit de meilleures performances, toutefois, une
valeur plus petite peut tre utilise pour les raisons suivantes :

J-F Challe

viter la fragmentation. Si les donnes transitent dun rseau FDDI (MTU de 4500) vers un rseau Ethernet
(MTU de 1500), il est prfrable demployer un MTU de 1500 afin dviter une fragmentation des paquets,
origine dune baisse de performance. Naturellement, ladministrateur effectuera cette diminution sil a de

HEPCUT - ISIPH

29

bonnes raisons de penser que la baisse des performances tire sa source dans la fragmentation des paquets et
cette condition seulement ;
lors de lutilisation dquipements dont la performance est particulirement faible il nest pas possible
dutiliser une taille standard de 1006 bytes. Dans ce cas, il est prfrable de diminuer la valeur du MTU.
Toutefois, une telle solution nest que temporaire car il faudra songer au remplacement du matriel par un
dispositif mieux adapt lapplication employe.

7.5. Mode promiscuous .


Un rseau broadcast permet une interface de recevoir tous les paquets y compris ceux non destins lhte
propritaire de linterface. Ce mode de fonctionnement de linterface rseau autorise lutilisation doutils danalyse de
paquets, technique de mise en vidence des problmes particulirement malaiss dtecter.
Ce mode de fonctionnement ouvre galement la possibilit doprer des actions illicites. Lon peut en effet visualiser le
nom et le mot de passe des utilisateurs qui se connectent un systme distant. Lors de la configuration dun parc
informatique, il est important de ne pas configurer toutes les interfaces en mode promiscuous. Afin dviter le plus
possible les risques de piratage, il est vivement conseill demployer des systmes de cryptage des informations
transitant au travers dun rseau.

8. Configuration permanente.
Aprs chaque dmarrage du systme, les modifications effectues, au moyen de la commande ifconfig, sont oublies.
Pour les rendre permanentes, il sindique dditer les scripts de dmarrage du systme. Ces scripts utilisent plusieurs
fichiers de configuration qui figurent, dans le cas dun systme Linux RedHat, dans le rpertoire
/etc/sysconfig/network-scripts. Pour chaque interface rseau il existe un fichier ifcfg-eth contenant la configuration de
linterface. Voici le rsultat dexcution de la commande ifconfig sur une machine ainsi que le contenu du fichier de
configuration relatif cette mme interface rseau :
[root@P100 network-scripts]# ifconfig eth1
eth1
Lien encap:Ethernet HWaddr 00:00:C0:36:4B:2E
inet adr:192.168.1.1 Bcast:192.168.1.255 Masque:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
Paquets Reus:1783 erreurs:0 jets:0 dbordements:0 trames:0
Paquets transmis:1479 erreurs:0 jets:0 dbordements:0 carrier:0
collisions:1 lg file transmission:100
Interruption:10 Adresse de base:0x230 Mmoire:dc000-e0000
[root@P100 network-scripts]# cat ifcfg-eth1
DEVICE="eth1"
USERCTL=no
ONBOOT="yes"
BOOTPROTO="none"
BROADCAST=192.168.1.255
NETWORK=192.168.1.0
NETMASK="255.255.255.0"
IPADDR="192.168.1.1"
IPXNETNUM_802_2=""
IPXPRIMARY_802_2="no"
IPXACTIVE_802_2="no"
IPXNETNUM_802_3=""
IPXPRIMARY_802_3="no"
IPXACTIVE_802_3="no"
IPXNETNUM_ETHERII=""
IPXPRIMARY_ETHERII="no"
IPXACTIVE_ETHERII="no"
IPXNETNUM_SNAP=""
IPXPRIMARY_SNAP="no"
IPXACTIVE_SNAP="no"

J-F Challe

HEPCUT - ISIPH

30

9. Linuxconf.
La majorit des systmes UNIX offrent des outils permettant dviter la modification manuelle des fichiers de
configuration aux administrateurs. Sous Linux, lutilitaire linuxc onf permet, notamment, la configuration des interfaces
rseau. Voici un exemple des informations affiches par linuxconf lors de la configuration des interfaces rseau :

Configuration/Rseau/Tches clientes/Configuration de base de la machine

Aprs avoir modifi les paramtres, linuxconf se charge :

J-F Challe

de transcrire les renseignements dans les fichiers de configuration du systme ;


dactiver les changements.

HEPCUT - ISIPH

31

IV. Configuration du routage.


Sans le routage, le trafic TCP/IP serait limit un seul rseau physique. Le routage permet une machine den
atteindre dautres en traversant, si ncessaire, un grand nombre de rseaux intermdiaires.
La plupart des problmes rencontrs dans la vie quotidienne dun administrateur de rseaux sont causs par une
mauvaise configuration des routeurs et non pas par des erreurs inhrentes aux protocoles de routage.

1. Configuration gnrale du routage.


Il est impratif de distinguer le routage des protocoles de routage. Tous les systmes routent des informations mais tous
nexcutent pas des protocoles de routage. Le routage consiste diffuser des datagrammes en fonction des informations
prsentes dans la table de routage. Les protocoles de routage sont des programmes qui schangent des informations
afin de construire des tables de routage.
La configuration de routage dun rseau ne ncessite pas toujours lutilisation dun protocole de routage. Dans le cas o
les informations de routage sont immuables, il suffit de crer la table de routage manuellement. Il existe trois
configurations possibles :

le routage minimum. Un rseau totalement isol de tout autre rseau TCP/IP ne ncessite quun routage
minimum. Bon nombre de systmes crent une table de routage minimale lors de lexcution de la commande
ifconfig. Cela nest pas le cas des systmes Linux o il faut explicitement crer toutes les routes au moyen de
la commande route ;
le routage statique. Un rseau possdant un nombre rduit de passerelles vers dautres rseaux TCP/IP peut
tre configur statiquement. Une table de routage statique est construite manuellement en utilisant la
commande route. Les tables de routage statiques nvoluent pas en fonction des modifications du rseau. Ce
type de configuration est utilis lorsque les routes ne changent pas ;
le routage dynamique. Lorsquun rseau possde plus dune route possible vers la mme destination il est
impratif demployer un routage dynamique. Une table de routage dynamique est gnre partir des
informations changes par les protocoles de routage. Ces protocoles sont conus pour changer des
informations dajustement du contenu des tables de routage en fonction de lvolution des rseaux. Les
protocoles de routage grent des situations complexes de manire sre et efficace.

En rsum, les routes sont cres :

automatiquement par la commande ifconfig ;


manuellement par ladministrateur systme ;
dynamiquement par les protocoles de routage.

2. Table de routage minimale.


Examinons le contenu dune table de routage lorsque les interfaces rseau sont configures. Sous Linux, supposons
galement que les routes ont t ajoutes. Comme le montre lexemple suivant, la commande netstat permet de
visualiser le contenu de la table de routage
[jfc@P100 jfc]$ netstat -nr
Table de routage IP du noyau
Destination
Passerelle
192.168.1.1
0.0.0.0
212.68.198.221 0.0.0.0
212.68.198.208 0.0.0.0
192.168.1.0
0.0.0.0
127.0.0.0
0.0.0.0
0.0.0.0
212.68.198.209

Genmask
255.255.255.255
255.255.255.255
255.255.255.240
255.255.255.0
255.0.0.0
0.0.0.0

Indic
UH
UH
U
U
U
UG

MSS
0
0
0
0
0
0

Fentre irtt Iface


0
0 eth1
0
0 eth0
0
0 eth0
0
0 eth1
0
0 lo
0
0 eth0

Cette table de routage dnombre trois interfaces. Pour chaque interface, la commande netstat montre les routes qui ont
t dfinies. La seconde ligne indique quil est possible datteindre au travers de linterface eth0 lhte (indicateur H)
dont ladresse est 212.68.198.221. La troisime ligne prcise que le sous-rseau 212.68.198.208 est joignable par

J-F Challe

HEPCUT - ISIPH

32

lentremise de linterface eth0. La dernire ligne informe de ce que nimporte quelle destination (0.0.0.0) est atteinte
par lintermdiaire de la passerelle (indicateur G) dont ladresse IP est 212.68.198.209.
Les capacits de cette table de routage sont aisment vrifiables au moyen de la commande ping. Cette commande
met le datagramme ICMP Echo Request pour forcer la machine distante mettre un datagramme ICMP Echo
Response vers la machine locale. Si les datagrammes peuvent partir de la machine locale vers la machine destination et
en revenir, les deux machines peuvent communiquer entre elles. Voici un exemple dutilisation de la commande ping.
[root@P100 /root]# ping 212.68.198.209
PING 212.68.198.209 (212.68.198.209) from 212.68.198.221 : 56(84) bytes
64 bytes from gateway (212.68.198.209): icmp_seq=0 ttl=64 time=56.8 ms
64 bytes from gateway (212.68.198.209): icmp_seq=1 ttl=64 time=78.1 ms
64 bytes from gateway (212.68.198.209): icmp_seq=2 ttl=64 time=53.7 ms
64 bytes from gateway (212.68.198.209): icmp_seq=3 ttl=64 time=26.2 ms
64 bytes from gateway (212.68.198.209): icmp_seq=4 ttl=64 time=53.7 ms
64 bytes from gateway (212.68.198.209): icmp_seq=5 ttl=64 time=50.1 ms
64 bytes from gateway (212.68.198.209): icmp_seq=6 ttl=64 time=55.9 ms
64 bytes from gateway (212.68.198.209): icmp_seq=7 ttl=64 time=87.1 ms
64 bytes from gateway (212.68.198.209): icmp_seq=8 ttl=64 time=56.7 ms
64 bytes from gateway (212.68.198.209): icmp_seq=9 ttl=64 time=50.1 ms
64 bytes from gateway (212.68.198.209): icmp_seq=10 ttl=64 time=25.1 ms
64 bytes from gateway (212.68.198.209): icmp_seq=11 ttl=64 time=53.7 ms
--- 212.68.198.209 ping statistics --12 packets transmitted, 12 packets received, 0% packet loss
round-trip min/avg/max = 25.1/53.9/87.1 ms

3. Cration dune table de routage statique.


La commande route est utilise soit pour ajouter soit pour supprimer manuellement des entres dans la table de routage.
Par exemple, pour ajouter une route vers le sous-rseau 212.68.198.208 dans la table de routage dune machine
fonctionnant sous Linux, il suffit de dactylographier :
[root@P100 /root]# route add net 212.68.198.208
Le premier argument donn dans cet exemple est loption add. La commande route prend comme premier argument
soit add, soit delete, ce qui lui permet de dterminer si elle doit ajouter une nouvelle route ou dtruire une route
existante. Il ny a pas dopration par dfaut. Si aucun argument nest donn, la commande route affiche le contenu de
la table de routage.
La valeur qui suit est ladresse de destination qui est celle atteinte via cette route.
Le fonctionnement de la commande route peut sembler obscur car rien ne spcifie dans la syntaxe de cette commande,
linterface laquelle la route doit tre applique. Le noyau du systme compare ladresse de destination aux adresses
rseau de toutes les interfaces configures. Seule linterface eth0 a une adresse rseau correspondant ladresse
destination dans la commande route. Ce principe de fonctionnement justifie labsence du nom de linterface rseau
dans la syntaxe de la commande route.
Si loption default est utilise comme adresse de destination, la commande route cre une route par dfaut (ladresse
associe une route par dfaut est 0.0.0.0). La route par dfaut est utilise chaque fois quil ny a pas de route
spcifique vers une destination donne. Lorsquun rseau ne dispose que dune seule passerelle, une route par dfaut
est une solution simple pour rediriger lensemble du trafic destination de rseaux externes.
Loption gw permet dindiquer ladresse IP de la passerelle externe travers laquelle les donnes sont transmises au
destinataire. Cette adresse doit tre celle dune passerelle ou bien celle dun rseau directement connect. Les routes
TCP/IP dfinissent ltape suivante atteindre sur le chemin qui mne les paquets jusqu leur destination. Ce prochain
relais doit tre directement accessible par la machine locale. Il est donc ncessaire quil se trouve sur le mme rseau.
Le dernier argument de la commande route concerne le paramtre metric du routage. Un grand nombre de systmes
exige la prsence de ce paramtre lors de la dfinition dune route.

J-F Challe

HEPCUT - ISIPH

33

3.1. Ajouter des routes statiques.


Supposons que le rseau dune entreprise corresponde au schma suivant :

Routage dun sous-rseau.

Imaginons que toutes les machines du rseau soient configures sauf celle portant ladresse IP 192.168.1.10. Le rseau
dadresse 192.168.1.0 est constitu de deux passerelles, lune donnant accs au rseau 192.168.2.0 et une autre
permettant de rejoindre Internet. La passerelle 192.168.1.1 sera la passerelle par dfaut car utilise par des milliers de
routes. Un nombre plus limit de routes passant par 192.168.1.30 facilite leurs saisies. Le nombre de routes traversant
une passerelle est llment dcisif du choix de la passerelle adopter comme tant par dfaut. Mme si la majorit du
trafic rseau transite par la passerelle 192.168.1.30 pour rejoindre les autres machines du rseau, celle par dfaut devrait
tre 192.168.1.1.
La mise en service de lordinateur portant ladresse IP 192.168.1.10 ncessite lexploitation des commandes ifconfig et
route pour configurer respectivement linterface rseau et le routage. Voici la commande de configuration de linterface
rseau de cet ordinateur :
[root@P200 /root]# ifconfig eth0 192.168.1.10 netmask 255.255.255.0
[root@P200 /root]# ifconfig eth0
eth0
Lien encap:Ethernet HWaddr 00:A0:24:72:4C:A3
inet adr:192.168.1.10 Bcast:192.168.1.255 Masque:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
Paquets Reus:9713 erreurs:0 jets:0 dbordements:0 trames:0
Paquets transmis:8864 erreurs:0 jets:0 dbordements:0 carrier:0
collisions:2 lg file transmission:100
Interruption:14 Adresse de base:0xe000
Afin de rendre cette interface utilisable, il est ncessaire de dfinir des routes. Il faut spcifier que linterface peut :

rejoindre lhte 192.168.1.10 ;


atteindre le rseau 192.168.1.0 ;
utiliser la passerelle 192.168.1.1 comme passerelle par dfaut ;
utiliser la passerelle 192.168.1.30 pour rejoindre le sous-rseau 192.168.2.0.

La commande route doit tre utilise quatre fois de manire garnir correctement la table de routage. Voici les quatre
utilisations de la commande route ncessaires la configuration du routage :

J-F Challe

HEPCUT - ISIPH

[root@P200
[root@P200
[root@P200
[root@P200

34

/root]#
/root]#
/root]#
/root]#

route
route
route
route

add
add
add
add

host 192.168.1.10 eth0


net 192.168.1.0
default gw 192.168.1.1
net 192.168.2.0 netmask 255.255.255.0 gw 192.168.1.30

Loption host, de la commande route, permet de spcifier que la destination est un hte (une machine). Loption net
stipule que la destination est un rseau. Loption default gw prcise que toutes les destinations autres que celles
prsentes dans la table de routage sont joignables par lintermdiaire dune passerelle dont ladresse IP est 192.168.1.1.
Loption default est un moyen de spcifier ladresse 0.0.0.0 dsignant nimporte quelle destination possible. Loption
gw employe seule permet de spcifier la passerelle donnant accs au sous-rseau dadresse 192.168.2.0
[root@P200 /root]# netstat -nr
Table de routage IP du noyau
Destination
Passerelle
192.168.2.0
192.168.1.30
192.168.1.0
0.0.0.0
127.0.0.0
0.0.0.0
0.0.0.0
192.168.1.1

Genmask
255.255.255.0
255.255.255.0
255.0.0.0
0.0.0.0

Indic
UG
U
U
UG

MSS
0
0
0
0

Fentre irtt Iface


0
0 eth0
0
0 eth0
0
0 lo
0
0 eth0

Il est possible de dfinir le routage de la machine 192.168.1.10 sans dterminer laccs au rseau 192.168.2.0. Si la
passerelle 192.168.1.1 est correctement configure, sa table de routage dfinit laccs ce sous-rseau. Les paquets
provenant de la machine 192.168.1.10 destination du sous-rseau 192.168.2.0 seraient alors redirigs vers la bonne
passerelle. En ralit, la machine dadresse 192.168.1.10 est informe par la passerelle par dfaut de ce que les
informations doivent tre achemines vers 192.168.1.30. Cest un message ICMP Redirect qui est envoy par la
passerelle par dfaut. Ce message a pour effet de modifier la table de routage de la machine 192.168.1.10 pour tenir
compte du nouveau trajet possible.
[root@P200 /root]# netstat nr
Table de routage IP du noyau
Destination
Passerelle
192.168.2.0
192.168.1.30
192.168.1.0
0.0.0.0
127.0.0.0
0.0.0.0
0.0.0.0
192.168.1.1

Genmask
255.255.255.0
255.255.255.0
255.0.0.0
0.0.0.0

Indic
UGD
U
U
UG

MSS
0
0
0
0

Fentre irtt Iface


0
0 eth0
0
0 eth0
0
0 lo
0
0 eth0

Certains administrateurs rseau exploitent ces redirections lors de la conception du rseau. Toutes les machines sont
configures avec une route par dfaut, mme celles connectes un rseau possdant plus dune passerelle. Ces
passerelles changent des informations de routage via les protocoles de routage et redirigent les machines vers la
meilleure passerelle utiliser pour une route donne. Ce type de routage, dpendant des redirections ICMP, est devenu
trs populaire grce lutilisation des ordinateurs personnels. Beaucoup de PC ne peuvent pas excuter de protocole de
routage. Certains le peuvent mais ne possdent pas la commande route et sont limits une seule route par dfaut. De
faon vidente, ce type de routage est ais mettre en place et est bien adapt une configuration via un serveur de
configuration, puisque la mme route par dfaut est utilise sur toutes les machines. Pour ces raisons, certains
administrateurs rseau encouragent la redirection de messages ICMP.
Par contre dautres administrateurs prfrent viter ces redirections et maintiennent directement le contenu des tables de
routage. Au moyen de la commande route, et pour viter ces redirections, des routes spcifiques doivent tre installes
pour chaque sous-rseau.

3.2. Ajouter des routes statiques lamorage.


Le choix dun routage statique impose la modification des scripts de dmarrage afin dy ajouter les routes statiques
souhaites.
Sous un systme Linux RedHat, le fichier /etc/sysconfig/static-routes contient la dfinition des routes statiques. Voici
un exemple de contenu de ce fichier :

J-F Challe

HEPCUT - ISIPH

35

[root@gateway2 sysconfig]# cat static-routes


eth0 net 192.168.22.0 netmask 255.255.255.0 gw 192.168.1.10
eth0 net 192.168.23.0 netmask 255.255.255.0 gw 192.168.1.10
eth0 net 192.168.24.0 netmask 255.255.255.0 gw 192.168.1.10
eth0 net 192.168.25.0 netmask 255.255.255.0 gw 192.168.1.10
eth0 net 192.168.213.0 netmask 255.255.255.0 gw 192.168.1.30
eth0 net 192.168.220.0 netmask 255.255.255.0 gw 192.168.1.30
eth0 net 192.168.217.0 netmask 255.255.255.0 gw 192.168.1.30
eth0 net 192.168.2.0 netmask 255.255.255.0 gw 192.168.1.3
Le systme RedHat ne ncessite donc pas la modification des scripts de dmarrage du systme mais ldition dun
fichier de configuration.

4. Les protocoles de routage internes.


Les protocoles de routage sont diviss en deux groupes :

les protocoles internes ;


les protocoles externes.

Un protocole interne est utilis lintrieur de systmes rseau indpendants. En utilisant la terminologie TCP/IP, ces
systmes rseau indpendants sont appels des systmes autonomes. Un systme autonome est un ensemble de rseaux
et de passerelles avec son propre mcanisme interne de traitement des informations de routage et de transmission de ces
informations. A lintrieur dun systme autonome, les informations de routage sont donc changes en utilisant un
protocole interne choisi par ladministrateur du systme.
Tous les protocoles de routage internes ralisent les mme oprations de base savoir :

dterminer la meilleure route suivre pour atteindre une destination donne ;


diffuser les informations de routage aux autres systmes du rseau.

Il existe plusieurs protocoles de routage internes, il sont :

RIP (Routing Information Protocol) est le protocole de routage interne le plus rpandu sur les plates -formes
UNIX. Ce protocole, destin aux rseaux locaux fait partie intgrante des systmes UNIX. RIP choisit la
meilleure route en utilisant le nombre le plus faible dtapes. Il sagit du nombre de passerelles travers
lesquelles les informations doivent transiter avant datteindre leur destination. Le protocole RIP suppose la
meilleure route comme tant celle qui utilise le moins de passerelles. Cette approche est appele algorithme
vecteur de distance.
Hello est un protocole utilisateur du temps comme facteur de dcision lorsquil est amen choisir une route.
Le principe est dexploiter la dure mise par un datagramme pour effectuer un trajet aller-retour entre la source
et la destination. Un paquet Hello contient lheure dexpdition. Lorsque le paquet arrive destination, le
systme rcepteur dtermine le temps mis par le paquet pour atteindre la destination. Hello est un protocole de
moins en moins utilis. A lorigine, il tait employ sur la dorsale NSFNET 56kps.
IS-IS (Intermediate System to Intermediate System) est un protocole interne de routage provenant du modle
OSI. Il sagit dun protocole par state-link (tat des liaisons) de type SPF (Shortest Path First). Ce protocole
est utilis sur les lignes T1 dont la capacit est de 1.544 Mb/s.
OSPF (Open Shortest Path First) est un autre protocole par tat des liaisons dvelopp pour TCP/IP. Il est
particulirement bien adapt aux rseaux importants.

Les protocoles RIP et OSPF seront les seuls tre dvelopps dans la suite de cet expos car ils sont les plus
frquemment employs.

4.1. Le protocole RIP.


Le protocole RIP est lanc par le dmon de routage routed. Ds son lancement, ce dmon effectue une requte en vue
dobtenir les mises jour en matire de routage ensuite il attend les rponses ses requtes. Lorsquun routeur est
configur pour rpondre ce type de requtes, il rpond par un paquet de mise jour constitu des informations de sa

J-F Challe

HEPCUT - ISIPH

36

table de routage. Ce paquet contient les adresses de destination de la table de routage et les mtriques de routage
associes chaque destination. Ces paquets sont mis non seulement pour rpondre des requtes mais aussi de temps
autre pour que les informations de routage restent valables.
Le dmon routed utilise les informations contenues dans les paquets de mise jour pour construire sa table de routage.
Si ces informations contiennent une route dirige vers une destination qui nexiste pas dans la table de routage locale,
une nouvelle route est cre. Si dans les information de mise jour figure une route dont la destination est dj prsente
dans la table de routage locale, cette nouvelle route nest utilise que si elle est de moindre cot que celle dj
mmorise. Le cot de la nouvelle route est dtermin en additionnant au cot pour atteindre la passerelle mettrice du
paquet de mise jour le cot spcifi dans le paquet. Si la somme obtenue est infrieure la mtrique actuelle de la
route, la nouvelle route est utilise.
Le protocole RIP dtruit galement des routes de la table de routage. Cette opration de destruction est effectue dans
deux cas, si :

la passerelle vers une destination indique que le cot de la route est suprieur 15 ;
RIP prsume quune passerelle qui nenvoie pas rgulirement dinformations de mise jour est hors service.
Toutes les routes passant par cette passerelle sont dtruites si aucune mise jour nest reue aprs un certain
temps. En rgle gnrale, des mises jour sont transmises toutes les 30 secondes. Si une passerelle ne diffuse
pas dinformation aprs 180 secondes, toutes les routes passant par cette passerelle sont supprime de la table
de routage.

Lactivation du protocole RIP ncessite le lancement du dmon routed par lintermdiaire de la commande routed. Le
dmon routed lit le fichier /etc/gateways au moment de son dmarrage. Les informations contenues dans ce fichier sont
ajoutes la table de routage. Le protocole RIP est capable de crer une table de routage fonctionnelle en utilisant les
mises jour reues des diffuseurs RIP. Il est parfois ncessaire de complter cette information par une route initiale par
dfaut ou par des informations concernant une passerelle qui nannonce pas ses routes. Dans ce cas, le fichier
/etc/gateways offre les informations de routage supplmentaires. Ce fichier sert le plus souvent dfinir une route par
dfaut comme le montre lexemple suivant :
[root@P200 /etc]# cat gateways
net 0.0.0.0
gateway 192.168.1.1

metric 1 passive

Cette entre dbute par le mot-cl net. Toutes les entres commencent soit par net, soit par host pour indiquer que
ladresse qui suit est soit celle dun rseau, soit celle dune machine. Ladresse de destination 0.0.0.0 est ladresse
utilise pour la route par dfaut. Ensuite, le mot-cl gateway est suivi de ladresse de la passerelle quil faut contacter
pour rejoindre la destination spcifie. Aprs cela, le mot-cl metric est suivi dune valeur numrique. Cette valeur
dsigne le cot de la route. Cette mtrique reprsente le nombre de passerelles franchir pour rejoindre la destination.
Toutes les entres du fichier /etc/gateways se terminent soit par passive, soit par active. Le mot-cl passive signifie que
la passerelle donne dans lentre nest pas prendre en considration dans lchange des informations de routage.
Cela peut savrer utile lorsque la passerelle ne diffuse pas dinformations de routage. Dans ce cas, le mot-cl passive
permet dviter la destruction de la route en raison de la non rception dinformations de mises jour. Lutilisation de
loption passive est donc une autre manire de dfinir une route statique sous le contrle du dmon routed. Par contre,
le mot cl active cre une route qui peut tre mise jour par RIP. Une passerelle active est sense produire
rgulirement des informations de mises jour.
Le protocole RIP semble ais implanter et configurer. Nanmoins, RIP possde trois dfauts :

J-F Challe

Envergure de rseau limite. La plus longue route gre par RIP est constitue de 15 relais. Un routeur RIP ne
peut maintenir la table de routage dun rseau constitu de plus de 15 passerelles en cascade.
Convergence lente. La destruction dune route ncessite lchange dinformations de mises jour jusqu ce
que le cot atteigne 16 (comptage jusqu linfini). Cela peut se produire lorsquun changement dans la
structure du rs eau loigne une destination. De plus, RIP doit attendre 180 secondes avant de dtruire une
route incorrecte. En claire il faut attendre un dlai relativement important avant que la table de routage reflte
ltat rel du rseau.
Routage sur des classes compltes. Pour le protocole RIP, toutes les adresses font partie des classes A, B ou C.
Cela rend RIP incapable de grer un rseau sans classe.

HEPCUT - ISIPH

37

Il ne sera pas possible de changer lenvergure du rseau de manire significative car le protocole doit tre capable
datteindre une mtrique dont la valeur est considre comme infinie. Le travail ralis sur le protocole RIP est
concentr sur la convergence lente et sur le routage de classes compltes.
Des fonctionnalits ont t ajoutes au protocole RIP afin de rsoudre le problme de la lenteur de convergence. Afin
de comprendre les amliorations apportes, il faut matriser la notion de comptage jusqu linfini.

Exemple de rseau.

Lexemple ci-dessus montre que A atteint le sous-rseau 3 via les passerelles B et C. Le sous-rseau 3 est deux relais
de A et un relais de B. Donc, B annonce un cot de 1 pour le sous-rseau 3 et A annonce un cot de 2 pour ce mme
sous-rseau. Le trafic est donc rout par B pour atteindre le sous-rseau 3. Ce fonctionnement persiste jusquau
moment o la passerelle C sarrte. Dans ce cas, B attend une information de mise jour manant de C durant 180
secondes. Pendant cette priode, B continue denvoyer A des informations de mises jour stipulant que B se trouve
toujours 1 relais du sous-rseau 3. Lorsque les 180 secondes sont coules, B enlve toutes les routes qui passaient
par C de sa table de routage. Nanmoins, A dispose toujours, dans sa table de routage, dune information stipulant quil
se trouve 2 relais du sous-rseau 3. Une information de mise jour est envoye de A vers B ce qui provoque la mise
jour de la table de routage de B qui considre tre maintenant 3 relais du sous-rseau 3. La machine B envoie la
machine A une information de mise jour stipulant quelle est prsent 3 relais du sous-rseau 3. La machine A met
sa table de routage jour en considrant tre 4 relais du sous-rseau 3. Ce processus dchange et daugmentation du
cot de la route vers le sous-rseau 3 continue jusquau moment o un cot de 16 est atteint sur les deux machines.
Le split horizon (horizon partag) et le poison reverse (retour empoisonn) sont deux fonctionnalits qui tentent
dempcher le comptage jusqu linfini.

J-F Challe

HEPCUT - ISIPH

38

La fonctionnalit split horizon permet une passerelle de ne pas diffuser les informations de mises jour vers
les sous-rseaux qui ont permis la cration de cette information. Cette rgle interdit la passerelle A de
diffuser la passerelle B des informations de routage concernant le sous-rseau 3 car les informations ont t
obtenues partir de la passerelle B.
La fonctionnalit poison reverse est une amlioration du split horizon. Linterdiction de diffusion est la mme
que pour le split horizon. Avec cette fonctionnalit, la passerelle A annonce aux systmes connects par
lintermdiaire du sous-rseau 12 que le sous-rseau 3 a maintenant une mtrique de 16.

En supposant que les fonctionnalits split horizon et poison reverse soient implantes, que se passe-t-il si la passerelle A
cesse son activit ? Avec le split horizon, les passerelles D et E nannoncent pas A la route vers le sous-rseau 12 car
elles ont appris la route de A. Toutefois, elles annoncent la route vers le sous-rseau 12 tous les autres sous-rseaux.
Lorsque la passerelle A sarrte, les passerelles D et E effectuent leur propre comptage jusqu linfini avant de
supprimer la route vers le sous-rseau 12. Ds la fin du comptage linfini, les passerelles D et E envoient un trigger
update (mise jour dclenche) aux autres sous-rseaux afin de limiter le comptage linfini et de minimiser la bande
passante employe. Ainsi, lorsque les passerelles D et E ont termin le comptage linfini, une mise jour dclenche
est envoye aux sous-rseaux 25 et 36 pour quils suppriment la route vers le sous-rseau 12.

4.2. RIP version 2.


Le protocole RIP-2 dfini par le RFC 1723 est une nouvelle version de RIP capable de prendre en charge les rseaux
sans classe. Pour cela, le masque de sous-rseau fait partie intgrante des paquets changs. Par rapport RIP, les
mises jour sont transmises par lintermdiaire de ladresse multicast 224.0.0.9.
Les passerelles qui utilisent toujours le protocole RIP peuvent exploiter les informations du protocole RIP-2. Il suffit
ces routeurs dextraire les donnes dont ils ont besoin des paquets RIP-2.

4.3. OSPF : Open Shortest Path First.


OSPF, dfini dans le RFC 2178, est un protocole par tat de liaison. Il est trs diffrent de RIP. Un routeur utilisateur
de RIP partage les informations concernant le rseau tout entier (au moins un systme unique autonome) avec ses
voisins. Inversement, un routeur qui utilise OSPF partage ses informations concernant ses voisins avec le rseau tout
entier. OSPF dfinit quelques notions :

Zone (area). Une zone est un ensemble arbitraire de rseaux, de machines, de routeurs interconnects. Les
zones changent des informations de routage avec dautres zones par lintermdiaire de routeurs interzones
(area border routers)
Dorsale (backbone). Une dorsale est une zone particulire qui interconnecte toutes les zones lintrieur dun
systme autonome. Chaque zone doit tre connecte la dorsale car elle est charge de diffuser les
informations de routage entre les zones.
Zone terminale (stub area). Une zone terminale ne possde quun seul routeur interzone. En claire, il ny a
quune seule route vers lextrieur de cette zone. Le routeur doit donc simplement sannoncer comme tant la
route par dfaut.

Un systme autonome de grande taille doit tre divis en zones. Le rseau utilis dans lexemple ci-dessous est petit
mais rien ninterdit de le diviser en zones. Supposons quil soit divis en trois zones : la zone 1 contient le sous-rseau
3, la zone 2 contient les sous-rseaux 1 et 12 et la zone 3 contient les sous-rseaux 25, 36 et les liaisons PPP. De plus,
on pourrait dfinir la zone 1 comme tant une zone terminale car C est dans cette zone le seul routeur interzone. Nous
pourrions galement dfinir la zone 2 comme tant une dorsale car elle interconnecte les deux autres zones et toutes les
informations de routage entre les zones 1 et 3 doivent tre diffuses par la zone 2. La zone 2 contient les routeurs
interzones A et C et un routeur interne, B. La zone 3 contient trois routeurs A, D et E.
Le protocole OSPF offre une grande souplesse de dcoupe des systmes autonomes.

J-F Challe

HEPCUT - ISIPH

39

Dcoupe du rseau en zones.

Tout routeur OSPF construit un graphe orient modlisant le rseau tout entier. Ce graphe est une carte du rseau du
point de vue du routeur. La racine du graphe est le routeur.

C(0)
5
B(5)
10
A(15)
20

20

D(35)
20

E(35)
20

E(55)

D(55)

Graphe du routeur C.

J-F Challe

HEPCUT - ISIPH

40

Le graphe est construit partir de la base de donnes dtats de liaison. Elle inclut des informations sur les routeurs du
rseau ainsi que sur tous leurs voisins. Pour le systme autonome qui nous occupe il y a 5 routeurs et 10 voisins. Un
cot est dfini pour chaque routeur et chaque liaison. Cela permet au systme de calculer le plus court chemin dans un
graphe ce qui dtermine la route emprunter pour atteindre une destination.
Pour dcouvrir ses voisins, un routeur envoie un paquet hello et attend de recevoir de ses voisins des paquets hello. Le
paquet hello contient le routeur metteur et la liste des routeurs adjacents.

5. Les protocoles de routage externe.


Les protocoles de routage externe sont utiliss pour changer des informations entre les systmes autonomes. Les
informations de routage changes entre les systmes autonomes sont appeles informations de joignabilit
(reachability information). Ces informations de joignabilit sont simplement des donnes spcifiant quel rseau peut
tre rejoint en passant par un systme autonome.

5.1. EGP : Exterior Gateway Protocol.


Une passerelle qui utilise EGP annonce quelle peut atteindre les rseaux faisant partie de son systme autonome. Elle
nannonce pas quelle peut atteindre des rseaux situs lextrieur de son systme autonome.
Dans un premier temps, les systmes schangent des messages afin dtablir un dialogue entre les passerelles EGP.
Les participants une communication EGP sont appels des voisins. Lchange dinformations entre les passerelles est
appel acquisition dun voisin.
Ds que les voisins sont acquis, les informations de routage sont demandes. Le voisin rpond en envoyant un paquet
daccessibilit appel mise jour. La passerelle rceptrice utilise ces informations pour garnir sa table de routage. Si
un voisin nest pas mme de rpondre trois demandes successives dinformations de routage, la passerelle
demanderesse supprime les routes qui passent par ce voisin de sa table de routage.
Actuellement, les passerelles centrales dInternet ne sont pas mme de faire face lvolution rapide du rseau.
Aussi, le protocole EGP qui tait employ dans ces passerelles a-t-il t remplac par un protocole distribu sadaptant
lvolution rapide dInternet.

5.2. BGP : Border Gateway Protocol.


BGP est le protocole de routage le plus utilis sur Internet. Il est bas sur une spcification de protocole du modle
OSI. BGP gre le routage sur base de raisons non techniques (accords de peering)
Les politiques de routage ne font pas partie du protocole BGP. Elles sont dfinies de manire externe au moment de la
configuration du systme. Les fournisseurs daccs Internet ont la facult de dvelopper des politiques de routage
bases sur des accords bilatraux avec dautres fournisseurs daccs.
BGP peut tre configur de manire contrler les routes annonces ainsi que les routes acceptes des autres
fournisseurs.
Le protocole BGP est implant au-dessus de TCP/IP, ce qui permet dutiliser un service de transmission fiable. BGP
utilise le port 179. Il contacte ses voisins en utilisant le systme de ngociation TCP, en trois tapes.

5.3. Choisir un protocole de routage.


Il existe un nombre important de protocoles de routage. Nanmoins, le choix dun protocole de routage est ais. Les
protocoles ont t tablis pour rpondre des problmes inhrents aux rseaux de grande taille. Dans ce cas, OSPF est
un choix judicieux.
Dans le cas o un protocole de routage externe doit tre mis en uvre, le choix oprer dpendra de celui effectu par
le voisin. Pour que deux systmes autonomes puissent schanger des informations de routage, il faut quils exploitent
le mme protocole externe. Dans la majorit des cas, le protocole BGP est adopt.

J-F Challe

HEPCUT - ISIPH

41

Le type dquipement influence galement le choix du protocole. Les routeurs sont gnralement des systmes ddis
grant un grand nombre de protocoles. Les ordinateurs ne font gnralement pas tourner des protocoles de routage.
Permettre des ordinateurs de participer au routage dynamique pourrait rduire le choix de protocoles. Par exemple,
les systmes UNIX sont gnralement livrs avec uniquement le protocole RIP. Toutefois, le dmon gated des
systmes UNIX permet dexploiter un grand nombre de protocoles.
Mme si les performances des systmes ddis sont suprieures celles des systmes UNIX, gated permet dexploiter
une machine UNIX comme routeur.

6. gated : Gateway Routing Daemon.


Le dveloppement de programmes de routage pour les systmes UNIX est relativement limit. La majorit des
machines UNIX effectuent des tches de routage simple pour lesquelles RIP est suffisant. Les applications lourdes et
complexes de routage demandant lexploitation de protocoles avancs sont gres par des routeurs spcialiss. Le
dmon gated offre aux systmes UNIX la plupart des protocoles de routage avancs. Ce dmon combine plusieurs
protocoles de routage en un seul programme.
Le dmon gated prsente lavantage doffrir des fonctionnalits en principe uniquement disponibles sur des routeurs
ddis, elles sont celles ci :

les informations de plusieurs protocoles sont combines par gated de manire choisir les meilleures routes ;
des routes apprises par un protocole interne peuvent tre diffuses en utilisant un protocole externe. Cela
permet dadapter les annonces externes aux changements internes ;
les politiques de routage peuvent tre implantes pour contrler quelles routes sont acceptes et quelles routes
sont diffuses ;
tous les protocoles sont configurs au moyen du fichier /etc/gated.conf ;
le dmon gated est mis jour rgulirement.

Dans toute implantation dun protocole de routage, il existe un aspect externe et un aspect interne. Le ct externe
permet lchange dinformations avec les systmes distants. Le ct interne quant lui utilise les informations reues
des systmes distants pour mettre jour la table de routage. Dans le cas de gated, les fonctions du protocole externe
sont les mmes que celles des autres implantations. Par contre, la partie interne, est propre au systme UNIX.
Chaque protocole possde sa propre mtrique qui dtermine la meilleure route prendre. Aussi, gated doit-il jongler
avec ces diffrentes mtriques pour oprer un choix de routage. Pour cela, gated utilise une valeur permettant de
pondrer les protocoles. Cette valeur est appele prfrence. Ces prfrences permettent gated de combiner en une
seule table de routage les informations de routage manant de diffrentes sources. Le tableau suivant donne la liste des
sources dinformations potentielles reues par gated ainsi que les prfrences associes. Ces valeurs de prfrences
schelonnent de 0 255. La valeur la plus petite indique la route prioritaire.
Type de route
Route directe
OSPF
Route par dfaut gnre de manire interne
Redirection ICMP
Route statique
Protocole Hello
RIP
Route OSPF ASE
BGP
EGP

Prfrence par dfaut


0
10
20
30
60
90
100
150
170
200

Prfrences par dfaut.

Les prfrences peuvent tre modifies lors de la configuration du dmon gated. Il est aussi possible daffecter des
prfrences des routes provenant :

J-F Challe

dune interface rseau spcifique ;


dun protocole spcifique ;
dune passerelle spcifique.

HEPCUT - ISIPH

42

7. Configurer gated.
Le dmon gated lit sa configuration partir du fichier /etc/gated.conf. Les commandes quil contient ressemblent du
code C. Toutes les instructions sont termines par un point-virgule. Les accolades permettent de rassembler les
instructions.

7.1. Exemple de fichier /etc/gated.conf.


Considrons le rseau dont voici la vue schmatique.

Exemple de topologie de routage.

La passerelle B interconnecte le sous-rseau 172.16.9.0 et le sous-rseau 172.16.1.0. Pour les machines du rseau 9, la
passerelle se prsente comme une passerelle par dfaut vers le monde extrieur. Elle utilise RIP-2 et diffuse les routes
sur le sous-rseau 9. Sur le sous-rseau 1, la passerelle B se prsente comme tant la passerelle donnant accs au sousrseau 9 en utilisant OSPF. La passerelle C fournit laccs Internet au sous-rseau 1. Puisque la passerelle C fournit
cet accs, elle se prsente comme tant celle par dfaut aux autres systmes du sous-rseau 1 en utilisant OSPF. Vu de
lextrieur, la passerelle C offre un accs au systme autonome, elle utilise BGP pour se prsenter comme tant le
chemin pour atteindre les rseaux quelle dtecte grce OSPF.

7.1.1. Configuration dune machine.


La configuration de la machine A est trs simple. Voici un exemple de configuration :
rip yes {
nobroadcast;
interface 172.16.9.23
version 2
multicast
authentication simple "password";
};
Linstruction rip yes active RIP. Le mot-cl nobroadcast vite la machine de diffuser ses mises jour par un paquet
broadcast. Cette option est active par dfaut lorsque la machine ne possde quune seule interface rseau.
Le membre interface dfinit les paramtres de linterface pour RIP. Ce memb re indique que les mises jour RIP-2
seront reues sous la forme de multicasts sur linterface dont ladresse IP est 172.16.9.23. De plus, les mises jour
contiendront une authentification sous la forme dun mot de passe en clair qui sera dans notre cas password. Ce mot de
passe permet daccepter des mises jour dun diffuseur RIP mais uniquement dans le cas o le mot de passe fourni est
correct.

J-F Challe

HEPCUT - ISIPH

43

7.1.2. Configuration dune passerelle interne.


La configuration des passerelles est plus complexe que celle dune banale machine. Les passerelles possdent plusieurs
interfaces et peuvent utiliser plusieurs protocoles de routage. La passerelle B utilise RIP-2 pour la gestion du sousrseau 9 afin dannoncer les routes aux machines UNIX. Mais elle utilise OSPF sur le sous-rseau 1 pour changer les
routes avec dautres passerelles. Voici le contenu du fichier /etc/gated.conf de la passerelle B.
interfaces {
interface 172.16.9.1 passive;
};
routerid 172.16.1.9;
rip yes {
broadcast;
defaultmetric 5;
interface 172.16.9.1
version 2
multicast
authentication simple "password";
};
ospf yes {
backbone {
authtype simple;
interface 172.16.1.9 {
priority 5
authkey "pw";
};
};
};
Linstruction interfaces dfinit les caractristiques du routage des interfaces rseau. Le mot cl passive du membre
interface est utilis pour crer une route statique qui ne sera pas retire de la table de routage. Dans ce cas, la route
permanente passe par une interface rseau directement relie la passerelle. En principe, lorsque gated ne reoit plus
de mises jour de routage par une interface, il considre quelle fonctionne mal. En consquence, son cot est
augment pour ne plus router de trafic via cette interface. Dans cet exemple, la passerelle B est le seul moyen daccs
au rseau 9. Il ny aura pas dinformations de mise jour en provenance de cette interface. Il faut ds lors viter que
gated ne supprime la route vers le rseau suite du manque de rception dinformations de mises jour. En qualifiant
la route de passive, rien ne permettra gated dliminer la route.
Linstruction routerid dfinit lidentification du routeur pour le protocole OSPF, processus ncessaire car, par dfaut,
gated utilise ladresse de la premire interface. Cette instruction permet de spcifier linterface qui utilise vritablement
OSPF.
Par rapport lexemple prcdent, linstruction rip yes contient la dfinition dune mtrique. Le membre defaultmetric
dfinit la mtrique RIP utiliser pour annoncer les routes apprises dautres protocoles de routage. Cette passerelle
utilise les protocoles RIP et OSPF. Il est ncessaire de diffuser les routes apprises par OSPF aux clients RIP. Sans la
prcision dune mtrique par dfaut, les clients RIP ne seraient pas informs des routes transmises par OSPF.
Linstruction ospf yes active le protocole OSPF. La passerelle B fait partie de la zone dorsale. Pour reflter cette
situation, le membre backbone est spcifi.
Le membre authtype simple indique quune authentification simple base sur des mots de passe est utilise dans la zone
dorsale. Deux choix dauthentification sont possibles : simple ou none. Le paramtre none indique quaucune
identification nest effectue. Le paramtre simple prcise quun mot de passe doit tre utilis. Ce mot de passe est
dfinit par authkey.
Linterface qui relie ce routeur la zone dorsale est dfinie par le membre interface.

J-F Challe

HEPCUT - ISIPH

44

7.1.3. Configuration dune passerelle externe.


La configuration de la passerelle C est plus complexe car elle utilise la fois OSPF et BGP. Voici son fichier de
configuration :
autonomoussystem 249;
routerid 172.16.1.1;
rip no;
bgp yes {
preference 50 ;
group type external peeras 164 {
peer 10.6.0.103 ;
peer 10.20.0.72 ;
};
};
ospf yes {
backbone {
authtype simple ;
interface 172.16.1.1 {
priority 10 ;
authkey "pw" ;
} ;
} ;
};
export proto bgp as 164 {
proto direct ;
proto ospf ;
};
export proto ospfase type 2 {
proto bgp as 164 {
all ;
};
};
Cette configuration active la fois le protocole BGP et le protocole OSPF. Chaque systme autonome porte un
identificateur sous forme dun numro. Le protocole BGP doit connatre cet identificateur qui est par exemple 249. Le
protocole OSPF doit connatre lidentification du routeur. Cette information est fournie par la dfinition routerid.
Notons que autonomoussystem et routerid sont des dfinitions et non pas des instructions. Comme dans la majorit des
langages, les dfinitions doivent prcder les instructions.
Par dfaut, le protocole RIP est lanc par gated. Dans cette configuration, RIP nest pas utilis, il faut donc le
dsactiver.
Le protocole BGP est activ au moyen de linstruction bgp yes. Le membre preference 50 fixe la prfrence des routes
reues par BGP 50. Ce membre permet donc de modifier les prfrences par dfaut. Pour rappel, la prfrence par
dfaut pour le protocole BGP est de 170.
Le membre groupe dfinit que la passerelle C se connecte un systme autonome portant lidentification 164. Les
accords de peering permettent de spcifier partir de quelles passerelles les informations de mises jour seront
acceptes. Dans lexemple, nous souhaitons accepter les mises jours en provenance des passerelles 10.6.0.103 et
10.20.0.72. Dans le cas o toutes les mises jour provenant de nimporte quel systme sont acceptes, il suffit de
remplacer le mot peer par allow.
La configuration du protocole OSPF est la mme que celle de lexemple prcdent sauf en ce qui concerne la priorit
qui est de 10 au lieu de 5. La passerelle C doit grer un trafic particulirement important, une priorit moindre lui est
attribue de manire favoriser lutilisation de la passerelle B.
Linstruction export contrle les routes que gated indique aux autres routeurs. La premire instruction export demande
gated dutiliser BGP (proto bgp) pour diffuser les informations de routage au systme autonome 164. Les
informations qui seront diffuses proviennent dinformations directes (proto direct) ou de routes obtenues partir du

J-F Challe

HEPCUT - ISIPH

45

protocole OSPF (proto ospf). Linstruction export spcifie donc vers qui les informations sont transmises alors que le
membre proto dfinit les informations qui seront diffuses.
La seconde instruction export a la signification suivante : les routes obtenues du systme autonome 164 par le protocole
BGP sont diffuses via OSPF. Puisque ces routes proviennent dun systme autonome externe elles sont annonces
ASE. Le protocole de diffusion est donc OSPFASE.
Les routes reues dun systme autonome externe peuvent avoir ou non une mtrique comparable au protocole OSPF.
Dans notre exemple, les mtriques ne sont pas comparables cest la raison pour laquelle le paramtre type 2 est ajout.
Si les mtriques taient comparables le type 1 serait spcifi.
La seconde instruction export prcise galement que la source des routes provient du protocole BGP (proto bgp) en
connexion avec le systme autonome 164.

J-F Challe

HEPCUT - ISIPH

J-F Challe

46

HEPCUT - ISIPH

47

V. Configuration du DNS.
Le service des noms nest pas ncessaire aux ordinateurs pour communiquer entre eux. Il sagit en fait dun service
dont le but est de rendre le rseau plus convivial. Les logiciels peuvent se contenter des adresses IP mais les utilisateurs
prfrent utiliser des noms de machines.

1. Le fichier /etc/hosts.
Les petites infrastructures rseau ne ncessitent pas toujours la configuration dune architecture client/serveur pour
transformer les noms symboliques en adresses IP. Les systmes UNIX disposent du fichier /etc/hosts. Ce fichier
associe un ou plusieurs noms une adresse IP. Lorsquun nom symbolique est employ, le systme consulte, dabord le
contenu de ce fichier dans un but de recherche dune adresse IP correspondant au nom spcifi. Voici un exemple de
fichier /etc/hosts :
[root@P100 /etc]# cat hosts
127.0.0.1
P100.challe.be
212.68.198.209 gateway
212.68.194.200 isec1
212.68.194.201 isec2
212.68.194.202 isec3
212.68.194.203 isec4
212.68.245.203 jmb

P100

localhost.localdomain

localhost

Cette configuration nest exploitable que sur la machine o rside le fichier. Cela ne constitue donc pas une base de
donnes distribue, exploitable par dautres htes du rseau. A petite chelle, il est envisageable de configurer plusieurs
ordinateurs de cette manire. A plus grande chelle, cette mthode prsente le dsavantage dimposer la gestion de
multiples copies rigoureusement identiques du mme fichier.

2. BIND : Berkeley Internet Name Domain.


Sous UNIX, le DNS est implant par le programme BIND. BIND est un systme client/serveur. La partie client est
appele le rsolveur. Elle gnre des requtes pour obtenir des informations relatives un nom et les envoie au serveur.
Le serveur DNS rpond aux requtes des clients. La partie serveur de BIND est le dmon named. Le RFC 1033,
Domain Administrators Operations Guide, dfinit la syntaxe des fichiers de configuration du serveur de noms.
BIND supporte quatre niveaux de services qui peuvent tre dfinis dans les fichiers de configuration :

J-F Challe

Les systmes rsolveurs. Le rsolveur est le programme qui demande des informations concernant un domaine
aux serveurs de noms. La majorit des ordinateurs, appels systmes rsolveurs, nexploitent que le rsolveur ;
ils nexcutent pas de serveur de noms. Ces systmes ncessitent uniquement la modification du fichier
/etc/resolv.conf.
Les serveurs primaires. Le serveur primaire de noms est la source officielle de toutes les informations
concernant un domaine spcifique. Les informations relatives au domaine figurent dans un fichier de zone. La
configuration dun serveur primaire implique la cration dun ensemble complexe de fichiers.
Les serveurs secondaires. Un serveur secondaire transfre un ensemble complet dinformations sur le domaine
partir du serveur primaire. Ce transfert est appel un transfert de fichier de zone. Un serveur secondaire
conserve une copie complte de toutes les informations du domaine. Cela lui permet de rpondre aux requtes
manant des clients comme sil tait le serveur primaire. La seule diffrence entre un serveur primaire et un
serveur secondaire est linexistence de fichiers de description des zones au niveau du serveur secondaire. Un
serveur secondaire est galement source officielle dinformations concernant un domaine spcifique. Les
domaines sont gnralement grs par un serveur primaire et un ou plusieurs serveurs secondaires. De cette
manire, en cas de panne du serveur primaire, les informations du domaine seront toujours disponibles. Cela
contribue la robustesse du systme.
Les serveurs caches. Un serveur de cache utilise le programme de serveur de noms mais il ne possde aucun
fichier de configuration de la base de donnes distribue. Un serveur cache se contente dapprendre des
informations provenant dautres serveurs de noms. Lorsquun serveur cache dispose de linformation
demande par un client, aucune requte vers dautres serveurs de noms nest lance. La copie locale de
linformation recherche est envoye au client. Ce type de serveur nest donc pas la source officielle des
informations ces donnes tant de seconde main. Lexploitation dun serveur cache limite le nombre de

HEPCUT - ISIPH

48

requtes formules aux serveurs qui constituent la source officielle des informations. En corollaire, cette
configuration diminue le trafic rseau et, par le fait mme, conomise la bande passante.
Un serveur peut utiliser nimporte laquelle de ces configuration ou, comme cela est souvent le cas, il peut associer
plusieurs lments de plusieurs configurations.

3. Configurer le rsolveur.
La configuration du rsolveur figure dans le fichier /etc/resolv.conf et ce fichier est lu ds linstant o un processus
utilisant le rsolveur est lanc. En labsence de ce fichier, le rsolveur tente de se connecter au serveur named
fonctionnant sur la machine. Bien que cela puisse fonctionner, cette technique nest pas recommandable. En effet, cela
configure le rsolveur avec des paramtres par dfaut dont les valeurs peuvent varier dun systme lautre.
Voici un exemple de fichier /etc/resolv.conf :
[root@P200 /etc]# cat resolv.conf
domain challe.be
search brutele.be challe.yi.org
nameserver 192.168.1.1
nameserver 192.168.1.50
Il existe certaines variations dpendant du systme utilis mais voici la signification des entres les plus couramment
acceptes par la plupart des systmes :

nameserver. Les entres nameserver indiquent les adresses IP des serveurs auxquelles le rsolveur envoie ses
requtes pour obtenir des informations. Les serveurs de noms sont interrogs dans lordre de leur apparition
dans le fichier. Si aucune rponse nest reue dun serveur, le serveur suivant dans la liste est alors consult
jusqu ce que le nombre maximum de serveurs soit essay. Dans la plupart des configurations, BIND est
capable de grer trois serveurs de noms. Si aucune entre nameserver ne se trouve dans le fichier
/etc/resolv.conf ou si ce fichier nexiste pas, toutes les requtes sont envoyes au serveur de la machine.
Toutefois, si le fichier /etc/resolv.conf contient une entre nameserver, le serveur local nest pas interrog sauf
si une entre nameserver pointe sur elle. Dans le cas o le serveur de nom est implant sur la machine o le
rsolveur est configur, il est prfrable de ne pas employer ladresse loopback de la machine cela pouvant
poser des problmes sur certaines versions dUNIX.
domain. Lentre domain dfinit le nom de domaine par dfaut. Le rsolveur ajoute le nom de domaine par
dfaut nimporte quel nom de machine qui ne contient pas de point. Le rsolveur utilise ensuite le nom
expans dans la requte quil envoie au serveur de noms. Dans lexemple ci-dessus, une requte P100 sera
complte en P100.challe.be.
search. Lentre search dfinit une liste de domaines recherchs lorsquun nom ne contient pas de point. Cela
signifie que les entres domain et search sont redondantes. En ralit, lorsquun nom ne contient pas de point,
lentre domain est en premier lieu utilise pour complter le nom. Si la recherche choue, ce sont les entres
search qui sont exploites dans lordre de leurs apparitions pour tenter de complter le nom. Il nest pas
recommand dutiliser la fois domain et search dans une mme configuration.

4. Initialisation des donnes du DNS.


La version de la table /etc/hosts pour le DNS est compose de deux fichiers. Lun deux relie les noms dhtes leur
adresse, un autre relie les adresses leur nom dhte. La correspondance adresse-nom est appele correspondance
inverse. Ces deux fichiers constituent la base de donnes du DNS. Pour relier entre eux tous les fichiers de base de
donnes, un serveur de noms doit possder un fichier dinitialisation qui est gnralement /etc/named.conf

4.1. Les fichiers de la base de donnes.


Les recherches dans la base de donnes du DNS ignorent la casse des caractres. Les informations peuvent tre saisies
en majuscules, en minuscules ou dans nimporte quel mixage des deux.

J-F Challe

HEPCUT - ISIPH

49

4.1.1. Les enregistrements SOA (Start Of Authority).


Le premier enregistrement de chacun des fichiers est lenregistrement SOA. Il indique que le serveur de noms est la
meilleure source dinformations pour les donnes de cette zone. Considrons que le serveur de noms a lautorit sur la
zone challe.be
Voici lenregistrement SOA du fichier de zone challe.be :
[root@P200 named]# cat challe.be
challe.be.
IN
SOA

P200.challe.be.
root.challe.be. (
1998120701; Serial
28800
; Refresh
14400
; Retry
3600000
; Expire
86400 )
; Minimum

Le nom challe.be. doit commencer la premire colonne du fichier. Ladministrateur doit sassurer de ce que le nom se
termine bien par un point de manire prciser un nom complet depuis la racine de larbre du DNS.
Le mot-cl IN signale que lenregistrement est dans la classe internet. Il existe dautres classes, mais aucune nest
actuellement trs utilise. Le champ classe est facultatif ; sil est omis le systme supposera quil sagit de la classe IN.
Le premier nom aprs SOA (challe.be) est le nom du serveur-maitre primaire. Le second nom est ladresse email de
ladministrateur du domaine. Pour lire correctement cette adresse mail il faut remplacer le premier point par le symbole
@. Les serveurs de noms nutilisent jamais cette adresse email ; elle est l titre indicatif.
Les parenthses permettent de prsenter lenregistrement SOA sur plusieurs lignes. La plupart des champs lintrieur
de lenregistrement SOA sont destins aux serveurs secondaires.
Le mme enregistrement SOA figure au dbut des fichiers de rsolution inverse des noms.
4.1.2. Les enregistrements NS (Name Server).
Les enregistrements NS permettent de dfinir les serveurs de noms. Dans notre exemple, il y a un serveur de noms
implant dans lhte P100.
Voici un extrait du fichier de base de donnes contenant un enregistrement NS.
[root@P200 named]# cat challe.be
challe.be.
IN
SOA

challe.be.

IN

NS

P200.challe.be.
root.challe.be. (
1998120701; Serial
28800
; Refresh
14400
; Retry
3600000
; Expire
86400 )
; Minimum
P200.challe.be.

Les fichiers de rsolution inverse contiennent galement un enregistrement NS.


4.1.3. Les enregistrements dadresse et dalias.
Il faut tablir la correspondance entre les noms et les adresses IP. Il faut ajouter les correspondances au fichier
challe.be.
Voici un extrait du fichier challe.be :

J-F Challe

HEPCUT - ISIPH

50

[root@P200 named]# cat challe.be


challe.be.
IN
SOA

P200.challe.be.
root.challe.be. (
1998120701; Serial
28800
; Refresh
14400
; Retry
3600000
; Expire
86400 )
; Minimum
P200.challe.be.

challe.be.

IN

NS

P100.challe.be.
macii.challe.be.
powerpc.challe.be.
fuji.challe.be.
p166.challe.be.
P200.challe.be.
P133.challe.be.
P166PLUS.challe.be.
P2450.challe.be.
P2300.challe.be.
se30.challe.be.
P3450.challe.be.
P2366.challe.be.
modem.challe.be.
HP4.challe.be.

IN
IN
IN
IN
IN
IN
IN
IN
IN
IN
IN
IN
IN
IN
IN

A
A
A
A
A
A
A
A
A
A
A
A
A
A
A

192.168.1.1
192.168.1.2
192.168.1.3
192.168.1.4
192.168.1.5
192.168.1.10
192.168.1.20
192.168.1.30
192.168.1.40
192.168.1.50
192.168.1.60
192.168.1.70
192.168.1.80
192.168.1.100
192.168.1.192

www.challe.be.
ftp.challe.be.
irc.challe.be.
mail.challe.be.
pop.challe.be.
news.challe.be.

IN
IN
IN
IN
IN
IN

CNAME
CNAME
CNAME
CNAME
CNAME
CNAME

P100.challe.be.
P100.challe.be.
P100.challe.be.
P100.challe.be.
P100.challe.be.
P100.challe.be.

Le premier bloc de lignes fait correspondre une adresse IP chaque nom (le A signifie adresse). Un mme nom peut
apparatre dans plusieurs enregistrements et par le fait mme tre associ plus dune adresse IP. A la diffrence de la
recherche dans la table /etc/hosts, une recherche dans le DNS peut conduire au renvoi de plusieurs adresses par nom. Si
le client et le serveur de noms sont sur le mme rseau, certains serveurs indiquent en premier lieu ladresse la plus
proche du client.
Le dernier bloc de lignes est la table dalias. Ces enregis trements sont dfinis par la clause CNAME (Canonical Name).
Lorsquun serveur recherche un nom et trouve un enregistrement CNAME, il remplace le nom par le nom canonique et
procde une nouvelle recherche. Par exemple : si lors de la recherche de www, le serveur trouve un enregistrement
CNAME qui dsigne P100, il recherche alors P100 et renvoie ladresse correspondante.
4.1.4. Les enregistrements PTR (Pointer).
Le serveur DNS doit galement contenir une correspondance entre les adresses IP et les noms. Il sagit de la rsolution
inverse. Voici un exemple de table inverse pour le rseau 192.168.1 :
[root@P200 named]# cat 1.168.192
1.168.192.in-addr.arpa.
IN
(

SOA

P200.challe.be.
1998120701
28800
14400
3600000
86400 )

1.168.192.in-addr.arpa.

NS

1.1.168.192.in-addr.arpa.

IN

J-F Challe

;
;
;
;
;

root.challe.be
Serial
Refresh
Retry
Expire
Minimum

P200.challe.be.
PTR

P100.challe.be.

HEPCUT - ISIPH

2.1.168.192.in-addr.arpa.
3.1.168.192.in-addr.arpa.
4.1.168.192.in-addr.arpa.
5.1.168.192.in-addr.arpa.
10.1.168.192.in-addr.arpa.
20.1.168.192.in-addr.arpa.
30.1.168.192.in-addr.arpa.
40.1.168.192.in-addr.arpa.
50.1.168.192.in-addr.arpa.
60.1.168.192.in-addr.arpa.
70.1.168.192.in-addr.arpa.
80.1.168.192.in-addr.arpa.
100.1.168.192.in-addr.arpa.
192.1.168.192.in-addr.arpa.

51

IN
IN
IN
IN
IN
IN
IN
IN
IN
IN
IN
IN
IN
IN

PTR
PTR
PTR
PTR
PTR
PTR
PTR
PTR
PTR
PTR
PTR
PTR
PTR
PTR

macii.challe.be.
powerpc.challe.be.
fuji.challe.be.
P166.challe.be.
P200.challe.be.
P133.challe.be.
P166PLUS.challe.be.
P2450.challe.be.
P2300.challe.be.
se30.challe.be.
P3450.challe.be.
P2366.challe.be.
modem.challe.be.
HP4.challe.be.

Le serveur de noms a besoin dun autre fichier de correspondance inverse pour le rseau loopback. Ce rseau est utilis
par un hte pour communiquer avec lui-mme. Le numro de ce rseau est toujours 127.0.0 et ladresse de lhte est
toujours 127.0.0.1. Voici le fichier de rsolution inverse pour ladresse loopback :
[root@P200 named]# cat 0.0.127
0.0.127.in-addr.arpa.

0.0.127.in-addr.arpa.

IN

NS

SOA

P200.challe.be.
1998120701
28800
14400
3600000
86400 )

;
;
;
;
;

root.challe.be (
Serial
Refresh
Retry
Expire
Minimum

localhost.

Ce fichier, en apparence anodin, est indispensable aux serveurs de noms. Aucun serveur na reu la dlgation pour le
rseau 127 et malgr son utilisation relle, chaque serveur doit en tre responsable pour lui-mme. Lomission de ce
fichier permettra au serveur de fonctionner mais la recherche de 127.0.0.1 chouera car le serveur racine ne peut raliser
la correspondance 127.0.0.1 lhte local.
4.1.5. Les donnes de la zone racine.
Le serveur DNS a aussi besoin de connatre lemplacement des serveurs de noms de la racine. Lobjectif du fichier
named.ca consiste dfinir lemplacement des serveurs de la racine. Gnra lement, les configurations de serveurs de
noms possdent dj un tel fichier. Voici un exemple de ce fichier :
[root@P100 named]# cat named.ca
;
This file holds the information on root name servers needed to
;
initialize cache of Internet domain name servers
;
(e.g. reference this file in the "cache . <file>"
;
configuration file of BIND domain name servers).
;
;
This file is made available by InterNIC registration services
;
under anonymous FTP as
;
file
/domain/named.root
;
on server
FTP.RS.INTERNIC.NET
;
-OR- under Gopher at
RS.INTERNIC.NET
;
under menu
InterNIC Registration Services (NSI)
;
submenu
InterNIC Registration Archives
;
file
named.root
;
;
last update:
Aug 22, 1997
;
related version of root zone:
1997082200
;
;
; formerly NS.INTERNIC.NET
;

J-F Challe

HEPCUT - ISIPH

.
3600000 IN NS
A.ROOT-SERVERS.NET.
3600000
A
;
; formerly NS1.ISI.EDU
;
.
3600000
NS
B.ROOT-SERVERS.NET.
3600000
A
;
; formerly C.PSI.NET
;
.
3600000
NS
C.ROOT-SERVERS.NET.
3600000
A
;
; formerly TERP.UMD.EDU
;
.
3600000
NS
D.ROOT-SERVERS.NET.
3600000
A
;
; formerly NS.NASA.GOV
;
.
3600000
NS
E.ROOT-SERVERS.NET.
3600000
A
;
; formerly NS.ISC.ORG
;
.
3600000
NS
F.ROOT-SERVERS.NET.
3600000
A
;
; formerly NS.NIC.DDN.MIL
;
.
3600000
NS
G.ROOT-SERVERS.NET.
3600000
A
;
; formerly AOS.ARL.ARMY.MIL
;
.
3600000
NS
H.ROOT-SERVERS.NET.
3600000
A
;
; formerly NIC.NORDU.NET
;
.
3600000
NS
I.ROOT-SERVERS.NET.
3600000
A
;
; temporarily housed at NSI (InterNIC)
;
.
3600000
NS
J.ROOT-SERVERS.NET.
3600000
A
;
; housed in LINX, operated by RIPE NCC
;
.
3600000
NS
K.ROOT-SERVERS.NET.
3600000
A
;
; temporarily housed at ISI (IANA)
;
.
3600000
NS
L.ROOT-SERVERS.NET.
3600000
A
;
; housed in Japan, operated by WIDE
;
.
3600000
NS

J-F Challe

52

A.ROOT-SERVERS.NET.
198.41.0.4

B.ROOT-SERVERS.NET.
128.9.0.107

C.ROOT-SERVERS.NET.
192.33.4.12

D.ROOT-SERVERS.NET.
128.8.10.90

E.ROOT-SERVERS.NET.
192.203.230.10

F.ROOT-SERVERS.NET.
192.5.5.241

G.ROOT-SERVERS.NET.
192.112.36.4

H.ROOT-SERVERS.NET.
128.63.2.53

I.ROOT-SERVERS.NET.
192.36.148.17

J.ROOT-SERVERS.NET.
198.41.0.10

K.ROOT-SERVERS.NET.
193.0.14.129

L.ROOT-SERVERS.NET.
198.32.64.12

M.ROOT-SERVERS.NET.

HEPCUT - ISIPH

M.ROOT-SERVERS.NET.
; End of File

53

3600000

202.12.27.33

Le nom de domaine . est celui du domaine racine. Cette liste de serveur tant susceptible dvoluer, il est conseill
de tlcharger rgulirement la dernire version de ce fichier. Certains serveurs de noms sont capables de tlcharger
automatiquement les mises jour de ce fichier. Nanmoins, cette fonctionnalit ne sest pas montre la hauteur des
exigences.

4.2. Le fichier de configuration de BIND.


Le fichier de configuration est exploit afin de stipuler BIND quels fichiers de base de donnes il doit utiliser. Les
fichiers de base de donnes contiennent des informations dont le format est dcrit dans les standards du DNS. Par
contre, le fichier de configuration est spcifique BIND et nest pas dfini dans les RFC. Actuellement, deux versions
de BIND existent : la version 4 et la version 8. Des problmes de scurit ont rendu la version 4 de BIND dpasse. Il
est fortement recommand dinstaller et dexploiter la dernire version du serveur de noms.
Voici un exemple de fichier de configuration de la version 8 de BIND :
[root@P200 /etc]# cat named.conf
options {
directory "/var/named";
};
zone "." IN {
type hint;
file "named.ca";
};
zone "localhost" IN {
type master;
file "localhost";
};
zone "0.0.127.in-addr.arpa" IN {
type master;
file "0.0.127";
};
zone "challe.be" IN {
type master;
file "challe.be";
};
zone "1.168.192.in-addr.arpa" IN {
type master;
file "1.168.192";
};
Habituellement, les fichiers de configuration contiennent une ligne indiquant le rpertoire dans lequel sont situs les
fichiers de donnes (directory "/var/named "). Le serveur de noms lutilise comme rpertoire de travail, ce qui permet
dutiliser des chemins relatifs pour accder aux fichiers de donnes.
Sur un serveur-matre primaire, le fichier de configuration contient un enregistrement zone pour chaque fichier de
donnes lire. Le mot zone est suivi du nom du domaine grer. Le mot IN indique que la classe est internet. Le type
master permet dinformer le dmon BIND de ce que le serveur est primaire. Le dernier paramtre indique
lemplacement du fichier de donnes au moyen dun chemin relatif.

4.3. Les abrviations.


Jusqu prsent, les fichiers de donnes du serveur de noms ont t pleinement qualifis car aucune forme raccourcie
pouvant prter confusion n t employe.
Linformation place entre guillemets dans lenregistrement zone indique le nom de domaine. Ce nom est la cl de la
plupart des abrviations utilisables. Ce domaine est lorigine de toutes les donnes du fichier de base de donnes. Cette

J-F Challe

HEPCUT - ISIPH

54

origine est ajoute tous les noms ne se terminant pas par un point. Cela permet de modifier les fichier challe.be et
1.168.192 de la manire suivante :
[root@P200 named]# cat challe.be
challe.be.
IN
SOA

P100
macii
powerpc
fuji
p166
P200
P133
P166PLUS
P2450
P2300
se30
P3450
P2366
modem
HP4

P200.challe.be.
root.challe.be. (
1998120701; Serial
28800
; Refresh
14400
; Retry
3600000
; Expire
86400 )
; Minimum

IN

NS

P200

IN
IN
IN
IN
IN
IN
IN
IN
IN
IN
IN
IN
IN
IN
IN

A
A
A
A
A
A
A
A
A
A
A
A
A
A
A

192.168.1.1
192.168.1.2
192.168.1.3
192.168.1.4
192.168.1.5
192.168.1.10
192.168.1.20
192.168.1.30
192.168.1.40
192.168.1.50
192.168.1.60
192.168.1.70
192.168.1.80
192.168.1.100
192.168.1.192

www
IN
CNAME
P100
ftp
IN
CNAME
P100
irc
IN
CNAME
P100
mail
IN
CNAME
P100
pop
IN
CNAME
P100
news
IN
CNAME
P100
[root@P200 named]# cat 1.168.192
1.168.192.in-addr.arpa.
IN
(

SOA

P200.challe.be.
1998120701
28800
14400
3600000
86400 )

NS
1
2
3
4
5
10
20
30
40
50
60
70
80
100
192

J-F Challe

IN
IN
IN
IN
IN
IN
IN
IN
IN
IN
IN
IN
IN
IN
IN

P200.challe.be.
PTR
PTR
PTR
PTR
PTR
PTR
PTR
PTR
PTR
PTR
PTR
PTR
PTR
PTR
PTR

P100.challe.be.
macii.challe.be.
powerpc.challe.be.
fuji.challe.be.
P166.challe.be.
P200.challe.be.
P133.challe.be.
P166PLUS.challe.be.
P2450.challe.be.
P2300.challe.be.
se30.challe.be.
P3450.challe.be.
P2366.challe.be.
modem.challe.be.
HP4.challe.be.

;
;
;
;
;

root.challe.be
Serial
Refresh
Retry
Expire
Minimum

HEPCUT - ISIPH

55

Si le nom de domaine est le mme que celui de lorigine prcise dans le fichier named.conf, le nom peut tre remplac
par le caractre @. Ceci est gnralement le cas dans le lenregistrement SOA. Notons que dans le cas de la clause NS,
le caractre @ est implicite.
Voici la nouvelle version des fichiers de donnes :
[root@P200 named]# cat challe.be
@
IN
SOA
P200.challe.be.

IN

NS

root.challe.be. (
1998120701; Serial
28800
; Refresh
14400
; Retry
3600000
; Expire
86400 )
; Minimum

P200

P100
IN
A
192.168.1.1
macii
IN
A
192.168.1.2
powerpc
IN
A
192.168.1.3
fuji
IN
A
192.168.1.4
p166
IN
A
192.168.1.5
P200
IN
A
192.168.1.10
P133
IN
A
192.168.1.20
P166PLUS
IN
A
192.168.1.30
P2450
IN
A
192.168.1.40
P2300
IN
A
192.168.1.50
se30
IN
A
192.168.1.60
P3450
IN
A
192.168.1.70
P2366
IN
A
192.168.1.80
modem
IN
A
192.168.1.100
HP4
IN
A
192.168.1.192
www
IN
CNAME
P100
ftp
IN
CNAME
P100
irc
IN
CNAME
P100
mail
IN
CNAME
P100
pop
IN
CNAME
P100
news
IN
CNAME
P100
[root@P200 named]# cat 1.168.192
@
IN
SOA P200.challe.be.
root.challe.be (
1998120701
28800
14400
3600000
86400 )
NS
1
2
3
4
5
10
20
30
40
50
60
70
80
100
192

J-F Challe

IN
IN
IN
IN
IN
IN
IN
IN
IN
IN
IN
IN
IN
IN
IN

P200.challe.be.
PTR
PTR
PTR
PTR
PTR
PTR
PTR
PTR
PTR
PTR
PTR
PTR
PTR
PTR
PTR

P100.challe.be.
macii.challe.be.
powerpc.challe.be.
fuji.challe.be.
P166.challe.be.
P200.challe.be.
P133.challe.be.
P166PLUS.challe.be.
P2450.challe.be.
P2300.challe.be.
se30.challe.be.
P3450.challe.be.
P2366.challe.be.
modem.challe.be.
HP4.challe.be.

;
;
;
;
;

Serial
Refresh
Retry
Expire
Minimum

HEPCUT - ISIPH

56

4.4. Dmarrage dun serveur-matre primaire.


Le dmarrage du serveur de noms ncessite lutilisation du compte root car BIND exploite un port privilgi. Le
lancement du serveur ncessite la dactylographie de la commande suivante :
[root@P200 named]# /etc/rc.d/init.d/named start
Cette commande est uniquement valable sur Linux RedHat.
Ds que le serveur de noms est lanc, il est possible de lui envoyer des requtes au moyen de la commande nslookup.
Par exemple, la recherche de ladresse IP de lhte P2300 est ralise au moyen de la commande suivante :
[root@P200 named]# nslookup p2300
Server: P200.challe.be
Address: 192.168.1.10
Name:
p2300.challe.be
Address: 192.168.1.50
Si la recherche choue, la commande nslookup se termine avec un message derreur, comme le montre lillustration
suivante :
[root@P200 named]# nslookup p1597
Server: P200.challe.be
Address: 192.168.1.10
*** P200.challe.be can't find p1597: Non-existent host/domain
Lorsquune adresse IP est fournie, la commande nslookup sait quelle doit rechercher un enregistrement PTR dans la
table de rsolution inverse. Voici un exemple dinterrogation du domaine in-addr.arpa :
[root@P200 named]# nslookup 192.168.1.192
Server: P200.challe.be
Address: 192.168.1.10
Name:
HP4.challe.be
Address: 192.168.1.192
Le serveur de noms actuellement configur est capable dinterroger les serveurs racine lorsquune requte concerne un
autre domaine. Voici un exemple dune telle interrogation :
[root@P200 named]# nslookup www.redhat.com
Server: P200.challe.be
Address: 192.168.1.10
Name:
www.redhat.com
Addresses: 216.148.218.197, 216.148.218.195
Le serveur de noms peut tre interrog partir dune autre machine. Pour cela, la commande nslookup doit prciser le
nom de lhte dont ladresse est recherche ainsi que le nom du serveur de noms interroger. Voici un exemple de
cette situation :
[jfc@P100 jfc]$ nslookup hp4.challe.be p200
Server: P200.challe.be
Address: 192.168.1.10
Name:
hp4.challe.be
Address: 192.168.1.192

J-F Challe

HEPCUT - ISIPH

57

4.5. Dmarrage dun serveur-esclave.


Pour la robustesse du systme, il est ncessaire dinstaller un second serveur de noms. Si un domaine est gr par un
seul serveur de noms et quil vienne sarrter, plus personne ne pourra effectuer de recherche sur le domaine. Un
second serveur de noms partage la charge avec le premier ou la reoit en totalit en cas de dfaillance du premier.
Un serveur-esclave peut tre la rplique exacte dun serveur-matre. Cela oblige ladministrateur grer deux bases de
donnes qui doivent tre rigoureusement identiques. Une autre mthode de configuration consiste stipuler que le
serveur-esclave obtiendra ses donnes automatiquement du serveur-matre. Pour effectuer cette configuration, il suffit
dindiquer dans le fichier /etc/named.conf que le serveur est de type slave pour une certaine zone. En plus de cela, il
faut indiquer ladresse IP du serveur-matre qui constitue la source dinformation.
Bien quun serveur-esclave naie pas ncessairement besoin de fichiers pour mmoriser les bases de donnes, il est
prfrable de stipuler un nom de fichier dans le champ file. De cette manire, lors de son premier lancement le serveuresclave placera une copie des informations provenant du matre dans ces fichiers. En cas de dfaillance du matre,
lesclave possdera toujours une copie des informations.
Voici un exemple de configuration dun serveur-esclave :
[root@P2450 /etc]# cat named.conf
options {
directory "/var/named/slave";
};
zone "." {
type hint;
file "named.ca";
};
zone "challe.be." {
type slave;
file "challe.be";
masters { 192.168.1.1; };
};
zone "0.0.127.in-addr.arpa" {
type master;
file "named.local";
};
zone "1.168.192.in-addr.arpa" {
type slave;
file "1.168.192";
masters { 192.168.1.1; };
};

4.6. Les champs de lenregistrement SOA.


Voici un enregistrement SOA :
[root@P100 named]# cat challe.be
@
IN
SOA
challe.be. root.localhost.
1998120701 ;
28800
;
14400
;
604800
;
86400 )
;

(
Serial
Refresh
Retry
Expire
TTL

Jusqu prsent, la signification des valeurs places entre parenthses na pas encore t donne.
Le numro de srie sapplique toutes les donnes de la zone. De nombreux administrateurs utilisent la date du jour
suivi dun numro de squence. Le format est donc AAAAMMJJSS. Chaque fois quune mise jour du fichier est
ralise, il est important dincrmenter le numro de srie.

J-F Challe

HEPCUT - ISIPH

58

Lorsquun esclave demande les donnes de la zone un serveur matre, il fournit dabord son numro de srie. Si celui
de lesclave est infrieur celui du matre, les donnes de lesclave sont obsoltes. Dans ce cas, lesclave tlcharge
une nouvelle copie de la zone. Quand un serveur-esclave dmarre et quil ne possde pas de fichier de sauvegarde, il
tlcharge toujours la zone.
Les quatre champs suivants indiquent des intervalles de temps en seconde :

Rafrachissement (refresh). Lintervalle de rafrachissement indique la priodicit de test de validit de ses


donnes lesclave qui, lui, demande lenregistrement SOA de la zone chaque intervalle de rafrachissement.
Dans lexemple, cet intervalle est de 8 heures. En fonction du niveau de service souhait et de la frquence de
modification des donnes, cette valeur peut-tre augmente ou diminue.
Nouvel essai (retry). Si le serveur-esclave narrive pas contacter le serveur-matre au bout de la priode de
rafrachissement, il essaie de le contacter selon la priodicit de nouvel essai. Cette priodicit est
gnralement plus courte que la priodicit de rafrachissement mais ce nest pas une obligation respecter.
Dans lexemple, cet intervalle est de 4 heures.
Obsolescence (expire). Si lesclave narrive pas contacter le serveur-matre avant lobsolescence, lesclave
arrte sa fonction de serveur en cessant de rpondre aux requtes, les donnes tant considres comme trop
anciennes pour tre valables. Une obsolescence dune semaine est une valeur courante. Cette priodicit doit
tre imprativement suprieure celles de rafrachissement et de nouvel essai.
TTL (Time To Live). La TTL est la dure de validit des donnes. Le serveur de noms revoie cette valeur
avec ses rponses aux demandes de rsolution des noms. Cette valeur impose aux autres serveurs de limiter la
conservation des donnes dans la mmoire -cache. Si les donnes voluent peu, une valeur de plusieurs jours
est permise. Par contre, si les donnes voluent rapidement, une valeur de moins dune heure peut tre
employe. Nanmoins, une si faible valeur nest pas recommande car elle engendre du trafic rseau.

En gnral, des dures plus longues diminuent la charge du serveur de noms et augmentent le dlai de propagation des
mises jour. Inversement, des dures plus courtes augmentent la charge du serveur de noms et diminuent le dlai de
propagation. La RFC 1537 recommande les valeurs suivantes :
86400
7200
2592000
345600

Rafrachissement aprs 24 heures


Nouvel essai aprs 2 heures
Obsolescence aprs 30 jours
TTL minimale de 4 jours

4.7. Gestion de plusieurs domaines.


Un serveur de noms est capable de grer plusieurs zones simultanment. Il suffit pour cela dajouter autant
denregistrements de type zone que de zones grer. Il reste ensuite configurer les fichiers de la base de donnes en
consquence.

5. Gestion des sous-domaines.


La dlgation dun sous-domaine consiste crer un serveur de noms pour le sous-domaine et placer, un lien vers le
domaine enfant au niveau du domaine parent. La configuration du sous-domaine suit exactement la procdure qui t
dcrite dans les paragraphes prcdents de ce chapitre. Il faut donc se concentrer sur la dlgation dun sou-domaine au
niveau du domaine parent. Le serveur de noms BIND permet deffectuer trs simplement cette opration. Il suffit
dajouter les lignes suivantes au fichier /etc/named.conf du domaine parent :
zone "bureau1.challe.be" {
type stub;
file "db.bureau1";
masters { 192.168.1.40; };
};
Le type stub informe le serveur de noms du domaine parent de ce quune dlgation a lieu pour la zone
bureau1.challe.be. Il faut alors spcifier ladresse IP du serveur-enfant au moyen du champ masters.

J-F Challe

HEPCUT - ISIPH

59

La dlgation de la rsolution inverse des noms est beaucoup plus complexe. En substance, il faut dcouper le rseau
en sous-rseaux (au niveau des adresses IP) et dlguer chaque sous-rseau.

6. La scurit.
Lun des moyens permettant daugmenter la scurit des serveurs de noms consiste installer la version de BIND la
plus rcente. La version 8 de BIND est plus robuste que la version 4 en raison des nouvelles fonctions de scurit
quelle apporte. Nanmoins, cela ne suffit pas car de nouvelles attaques apparaissent tous les jours.

6.1. Restriction des requtes.


Jusqu la version 4 de BIND, un administrateur ne pouvait pas effectuer de contrle daccs son serveur. Cette
approche correspond la philosophie dInternet consistant rendre les informations aisment accessibles. Lvolution
du comportement des utilisateurs oblige les administrateurs protger leurs systmes en masquant certaines parties de
lespace de nommage tout en rendant dautres parties disponibles.
Loption allow-query permet de configurer un contrle daccs bas sur ladresse IP du client lorigine de la requte.
Ce contrle peut concerner soit une zone particulire, soit lensemble des requtes reues. La liste daccs stipule
quelles adresses IP sont habilites envoyer des requtes au serveur.
6.1.1. Restriction sur toutes les requtes.
Pour indiquer un serveur de noms de ne rpondre quaux requtes provenant du rseau 192.168.1.0 ainsi qu la
machine dont ladresse IP est 212.68.194.200, il suffit dajouter ces informations la liste globale des permissions.
Voici un exemple de permissions :
[root@P100 /etc]# cat named.conf
options {
directory "/var/named";
allow-query {192.168.1/24; 212.68.194.200; };
};
zone "." {
type hint;
file "named.ca";
};
zone "0.0.127.in-addr.arpa" {
type master;
file "named.local";
};
zone "challe.be" {
type master;
file "challe.be";
};
zone "challe.yi.org" {
type master;
file "challe.yi.org";
};
zone "1.168.192.in-addr.arpa" {
type master;
file "1.168.192";
};

J-F Challe

HEPCUT - ISIPH

60

6.1.2. Restriction des requtes concernant une zone.


Le serveur de noms BIND permet galement lapplication dune liste daccs une zone particulire. Dans ce cas, il
suffit dutiliser la clause allow-query dans la dfinition de la structure de zone protger.
[root@P100 /etc]# cat named.conf
options {
directory "/var/named";
};
zone "." {
type hint;
file "named.ca";
};
zone "0.0.127.in-addr.arpa" {
type master;
file "named.local";
};
zone "challe.be" {
type master;
file "challe.be";
allow-query {192.168.1/24; };
};
zone "challe.yi.org" {
type master;
file "challe.yi.org";
};
zone "1.168.192.in-addr.arpa" {
type master;
file "1.168.192";
allow-query {192.168.1/24; };
};
Tout serveur, quil soit matre ou esclave, peut appliquer un contrle daccs une zone. Les listes spcifiques une
zone sont prpondrantes sur la liste globale. En labsence dune liste spcifique une zone, cest la liste globale qui
est utilise.

6.2. Contrle des transferts de zones.


Il est trs important de vrifier que seuls les rels serveurs -esclaves dune zone peuvent demander un transfert de zone.
Les utilisateurs dhtes distants qui peuvent interroger un serveur ne peuvent rechercher que des donnes concernant
des htes dont ils connaissent le nom. Ils ne peuvent oprer que sur une seule la fois. Les utilisateurs qui peuvent
demander un transfert de zone peuvent obtenir la liste complte des htes dun domaine.
La clause allow-transfer permet aux administrateurs dappliquer une liste daccs aux transferts de zones. Cette clause
est apte limiter les transferts dune zone spcifique ou bien limiter les transferts de toutes les zones.
6.2.1. Limitation globale du transfert.
La limitation globale du transfert de zone est effectue en plaant la clause allow-transfer dans la structure option du
fichier /etc/named.conf. Voici la structure de ce fichier lorsque ladministrateur accepte de transfrer toutes les zones
au serveur-esclave dont ladresse IP est 192.168.1.40 :
[root@P100 /etc]# cat named.conf
options {
directory "/var/named";
allow-transfer { 192.168.1.40; };
};
zone "." {
type hint;
file "named.ca";
};

J-F Challe

HEPCUT - ISIPH

61

zone "0.0.127.in-addr.arpa" {
type master;
file "named.local";
};
zone "challe.be" {
type master;
file "challe.be";
};
zone "challe.yi.org" {
type master;
file "challe.yi.org";
};
zone "1.168.192.in-addr.arpa" {
type master;
file "1.168.192";
};
6.2.2. Limitation du transfert une zone.
Afin de rendre plus fin le contrle de transfert de zone, la clause allow-transfer sera place dans une structure de zone.
Dans lexemple qui suit, le transfert de la zone challe.be sera accepte uniquement dans le cas o le serveur-esclave a
pour adresse IP 192.168.1.40.
[root@P100 /etc]# cat named.conf
options {
directory "/var/named";
};
zone "." {
type hint;
file "named.ca";
};
zone "0.0.127.in-addr.arpa" {
type master;
file "named.local";
};
zone "challe.be" {
type master;
file "challe.be";
allow-transfer { 192.168.1.40; };
};
zone "challe.yi.org" {
type master;
file "challe.yi.org";
};
zone "1.168.192.in-addr.arpa" {
type master;
file "1.168.192";
};
Les transferts de zones peuvent galement seffectuer au dpart dun serveur-esclave. Il ne faut donc pas oublier de
scuriser galement ces serveurs.
Dans le cas o une liste globale de permissions de transfert de zone est spcifie ainsi que des listes locales, la
prpondrance est donne aux listes locales.
Il est concevable quun administrateur configure un serveur de noms de manire telle quil accepte les transferts de zone
vers toutes les machines du sous-rseau 192.168.1 mais que seul lhte 192.168.1.40 puisse demander un transfert de la
zone challe.be. Cette configuration ncessite deux listes de permissions :

J-F Challe

une globale ;
une locale.

HEPCUT - ISIPH

62

La liste globale permet daccepter les transferts vers les machines du sous-rseau 192.16.1 alors que la liste locale
permet uniquement la machine 192.168.1.40 deffectuer un transfert de la zone challe.be. Voici un exemple dune
telle configuration :
[root@P100 /etc]# cat named.conf
options {
directory "/var/named";
allow-transfer { 192.168.1/24; };
};
zone "." {
type hint;
file "named.ca";
};
zone "0.0.127.in-addr.arpa" {
type master;
file "named.local";
};
zone "challe.be" {
type master;
file "challe.be";
allow-transfer { 192.168.1.40; };
};
zone "challe.yi.org" {
type master;
file "challe.yi.org";
};
zone "1.168.192.in-addr.arpa" {
type master;
file "1.168.192";
};

6.3. Excution de BIND par un utilisateur sans privilge.


Lexcution de BIND par un utilisateur privilgi tel que root pourrait tre dangereuse et cest ce qui se passe par
dfaut. Si un pirate trouve une faille dans le serveur de noms lui permettant de lire ou dcrire des fichiers, il
obtiendrait un accs privilgi au systme de fichiers. Sil peut exploiter une imperfection lui permettant dexcuter des
commandes, il le fera sous lidentit de lutilisateur privilgi.
Le serveur BIND a t conu de manire changer lidentit de lutilisateur et du groupe pour le compte de qui il
sexcute. Le serveur de noms peut donc tre excut avec moins de privilges. De cette manire, si un pirate utilise
BIND pour sintroduire dans le systme, il nobtiendra pas les droits de root.
Voici quelques options employer lors du lancement du serveur BIND :

-u : impose lidentit de lutilisateur qui excute BIND lissue de son dmarrage (named u named).
-g : impose lidentit du groupe qui excute BIND lissue de son dmarrage (named g other). Si loption u
nest pas utilise conjointement avec loption g, le serveur utilise le groupe primaire de lutilisateur spcifi.
-t : indique la racine du systme de fichiers vu par BIND.

La meilleure manire de protger le systme consiste crer un nouvel utilisateur sans privilge, comme par exemple,
named et dexcuter BIND sous cette identit. Puisque le serveur de noms lit le fichier named.conf avant dabandonner
les privilges de root, il nest pas ncessaire de changer les autorisations daccs sur ce fichier. Par contre, il faut
modifier les permissions et les proprits des fichiers de donnes afin que lutilisateur sans privilge puisse les lire.

7. La commande nslookup.
Loutil nslookup permet de vrifier de manire efficace la configuration des serveurs de noms. La commande nslookup
gnre des requtes soit comme un resolver, soit comme un serveur de noms. Cependant, nslookup nutilise pas les

J-F Challe

HEPCUT - ISIPH

63

fonctions du resolver mais ses propres procdures pour interroger les serveurs de noms. Aussi son comportement bien
que trs similaire celui dun resolver diffre -t-il lgrement.
La commande nslookup peut tre utilise soit de manire interactive, soit de manire non interactive. Le lancement
dune session interactive exige simplement le lancement sans paramtre de la commande nslookup. Par contre
lexcution de nslookup en mode non interactif impose dexploiter nslookup avec des paramtres.
Voici un exemple de session interactive :
[root@P100 /root]# nslookup
Default Server: P100.challe.be
Address: 192.168.1.1
>
Pour obtenir de laide, il suffit de taper help ou ? . Pour quitter nslookup, il faut taper ctrl-D.
En mode non interactif, il faut donner un nom rechercher sur la ligne de commande :
[root@P100 /root]# nslookup p2300.challe.be
Server: P100.challe.be
Address: 192.168.1.1
Name:
p2300.challe.be
Address: 192.168.1.50
En mode interactif dispose dun ensemble doptions qui peuvent tre visualises au moyen de la commande set all :
[root@P100 /root]# nslookup
Default Server: P100.challe.be
Address: 192.168.1.1
> set all
Default Server: P100.challe.be
Address: 192.168.1.1
Set options:
nodebug
defname
nod2
novc
querytype=A
class=IN
root=a.root-servers.net.
domain=challe.be
srchlist=challe.be

search
noignoretc
timeout=5

recurse
port=53
retry=2

>
La commande nslookup informe lutilisateur de ce que le serveur par dfaut est lhte p100.challe.be dont ladresse IP
est 192.168.1.1. Cela signifie que toutes les requtes gnres par nslookup seront envoyes ce serveur.
Les options se rpartissent en deux catgories :

les options boolennes ;


les options valeur.

Les options qui ne sont pas suivies dun signe gal sont boolennes ; elles sont soit inhibes, soit actives. Pour inhiber
une option boolenne, il suffit dajouter le prfixe no au nom de loption. Dans lexemple ci-dessus, nodebug
signifie que le dbogage est inhib.
La modification dune option de nslookup varie selon que nslookup est utilis en mode interactif ou non. Dans une
session interactive, la commande set permet de modifier une option : set debug. En ligne de commande, le mot set est
remplac par le caractre tiret : nslookup debug brutele.be.

J-F Challe

HEPCUT - ISIPH

64

7.1. Recherche de diffrents types de donnes.


Par dfaut, nslookup recherche ladresse correspondant un nom ou le nom correspondant une adresse. Dautres
types de recherche peuvent tre effectue en employant loption q .
[root@P100 /root]# nslookup
Default Server: P100.challe.be
Address: 192.168.1.1
> P200
Server: P100.challe.be
Address: 192.168.1.1
Name:
P200.challe.be
Address: 192.168.1.10
> set q=any
> P200
Server: P100.challe.be
Address: 192.168.1.1
P200.challe.be internet address = 192.168.1.10
challe.be
nameserver = P100.challe.be
P100.challe.be internet address = 192.168.1.1
> set q=ptr
> P100
Server: P100.challe.be
Address: 192.168.1.1
challe.be
origin = challe.be
mail addr = root.localhost
serial = 1998120701
refresh = 28800 (8H)
retry
= 14400 (4H)
expire = 3600000 (5w6d16h)
minimum ttl = 86400 (1D)
> set q=a
> p200
Server: P100.challe.be
Address: 192.168.1.1
Name:
p200.challe.be
Address: 192.168.1.10
>

7.2. Rponses faisant autorit.


La premire fois que nslookup recherche un nom distant, la rponse fait autorit, alors quelle ne le fait plus la seconde
fois.
La premire fois que le serveur local recherche www.isiph.be, il contacte un serveur de isiph.be dont la rponse fait
autorit. Le serveur local retransmet cette rponse nslookup et la place galement dans sa mmoire-cache. Lors de la
seconde recherche de www.isiph.be, le serveur local utilise linformation stocke dans sa mmoire -cache, ce qui produit
une rponse ne faisant pas autorit.
Dans lexemple qui suit, les noms recherchs sont totalement qualifis (point terminal) mais le rsultat serait le mme
sans le point terminal. Lutilisation du point terminal nest en effet pas toujours indispensable. Au lieu dhsiter sur la

J-F Challe

HEPCUT - ISIPH

65

mise ou non dun point terminal, il est prfrable den mettre un systmatiquement ds que le nom est totalement
qualifi.
[root@P100 /root]# nslookup
Default Server: P100.challe.be
Address: 192.168.1.1
> www.isiph.be.
Server: P100.challe.be
Address: 192.168.1.1
Name:
email.isiph.be
Address: 212.68.213.100
Aliases: www.isiph.be
> www.isiph.be.
Server: P100.challe.be
Address: 192.168.1.1
Non-authoritative answer:
Name:
email.isiph.be
Address: 212.68.213.100
Aliases: www.isiph.be
>

7.3. Changement de serveur.


La commande nslookup peut interroger directement un serveur spcifique. Pour cela, il suffit de dfinir le nom du
serveur interroger par lintermdiaire de loption server. Pour retourner au serveur local, il suffit demployer loption
lserver.
[root@P100 /root]# nslookup
Default Server: P100.challe.be
Address: 192.168.1.1
Le serveur utilis lors du dmarrage de la session interactive est le lserver P100.challe.be.
> server email.isiph.be.
Default Server: email.isiph.be
Address: 212.68.213.100
> www.isiph.be
Server: email.isiph.be
Address: 212.68.213.100
*** email.isiph.be can't find www.isiph.be: No response from server
Puisque le nouveau serveur ne rpond pas, il est possible de revenir au serveur dorigine en utilisant loption server.
> server p100.challe.be
*** Can't find address for server p100.challe.be: No response from server
> lserver p100.challe.be
Default Server: p100.challe.be
Address: 192.168.1.1
Le serveur email.isiph.be nest pas capable de retrouver ladresse du serveur p100.challe.be. Aussi, la commande
lserver permet-elle dinterroger le serveur local afin deffectuer cette opration.
> www.isiph.be.
Server: p100.challe.be

J-F Challe

HEPCUT - ISIPH

Address:

66

192.168.1.1

Non-authoritative answer:
Name:
email.isiph.be
Address: 212.68.213.100
Aliases: www.isiph.be
>
Le nom du serveur interroger peut tre plac comme second argument de la requte. Linterrogation du serveur yi.org
au sujet de endor.yi.org donne la rponse suivante :
[root@P100 /root]# nslookup
Default Server: P100.challe.be
Address: 192.168.1.1
> endor.yi.org yi.org
Server: yi.org
Address: 139.142.244.62
Non-authoritative answer:
Name:
endor.yi.org
Address: 212.68.199.229
>
Ce type dopration peut galement tre ralise de manire non interactive :
[root@P100 /root]# nslookup endor.yi.org yi.org
Server: yi.org
Address: 139.142.244.62
Non-authoritative answer:
Name:
endor.yi.org
Address: 212.68.199.229

7.4. Visualisation des paquets de requte et de rponse.


En validant loption debug, nslookup peut visualiser les requtes expdies et les rponses reues.
Un paquet DNS est compos de cinq sections :

section den-tte ;
section de la question ;
section des rponses ;
section des serveurs faisant autorit ;
section des enregistrements complmentaires.

La section den-tte est prsente dans chaque question et dans chaque rponse. Le code de lopration est toujours gal
QUERY. Lidentificateur id sert associer une rponse une requte ainsi qu dtecter les duplications. Le champ
des drapeaux (header flags), diffrencie la requte de la rponse. La chane want recursion indique le souhait de
lexpditeur de la requte de voir le serveur excuter la totalit du travail. La chane auth answer indique que cette
rponse fait autorit, cest--dire que la rponse provient dun serveur faisant autorit et non dune mmoire cache.
Il y a toujours une section question dans un paquet DNS. Cette section contient le nom, le type et la classe de
linformation recherche. En raison de la structure du paquet DNS, il nest pas possible de poser simultanment
plusieurs questions.
La section des rponses contient les enregistrements qui rpondent la question pose.

J-F Challe

HEPCUT - ISIPH

67

La section des serveurs faisant autorit contient les enregistrements NS du serveur.


La section des enregistrements complmentaires est destine fournir des informations complmentaires celles
dautres sections. Par exemple, si un serveur est mentionn dans la section des serveurs faisant autorit, ladresse de ce
serveur apparat dans cette section.
Voici un exemple de session interactive ayant activ loption debug :
[root@P100 /root]# nslookup
Default Server: P100.challe.be
Address: 192.168.1.1
> set debug
> P200
Server: P100.challe.be
Address: 192.168.1.1
;; res_nmkquery(QUERY, P200.challe.be, IN, A)
-----------Got answer:
HEADER:
opcode = QUERY, id = 4992, rcode = NOERROR
header flags: response, auth. answer, want recursion, recursion avail.
questions = 1, answers = 1, authority records = 1, additional = 1
QUESTIONS:
P200.challe.be, type = A, class = IN
ANSWERS:
-> P200.challe.be
internet address = 192.168.1.10
ttl = 86400 (1D)
AUTHORITY RECORDS:
-> challe.be
nameserver = P100.challe.be
ttl = 86400 (1D)
ADDITIONAL RECORDS:
-> P100.challe.be
internet address = 192.168.1.1
ttl = 86400 (1D)
-----------Name:
P200.challe.be
Address: 192.168.1.10
>

7.5. Recherche la manire dun serveur de noms.


La commande nslookup peut envoyer des requtes la manire dun serveur de noms. Pour cela, il nest pas ncessaire
deffectuer une recherche rcursive. De plus, il ne faut pas utiliser la liste de recherche du resolver. Il sindique ds
lors, de dsactiver les fonctions rcursive et de recherche. La dsactivation de la consultation de la liste de recherche
nest pas ncessaire si les noms sont entirement qualifis.
Lorsque nslookup fonctionne en mode rcursif, le serveur interrog doit de lui-mme interroger dautres serveurs
distants pour rpondre la question. Par contre, en mode non rcursif, le serveur se contente de donner la rponse la
plus proche.
Dans la recherche de www.isiph.be, la meilleure rponse que puisse fournir un serveur de noms est la liste des serveurs
de be.

J-F Challe

HEPCUT - ISIPH

68

[root@P100 /root]# nslookup


Default Server: P100.challe.be
Address: 192.168.1.1
> set norec
> set nosearch
> www.isiph.be.
Server: P100.challe.be
Address: 192.168.1.1
Name:
www.isiph.be
Served by:
- AUTH02.NS.UU.NET
198.6.1.82
be
- NS.EU.NET
192.16.202.11
be
- NS.BELNET.be
193.190.198.10, 193.190.198.2
be
- DNS.CS.KULEUVEN.AC.be
134.58.40.4
be
- SECDNS.EUNET.be
193.74.208.139
be
- SUNIC.SUNET.SE
192.36.125.2
be
- MASTER.DNS.be
194.7.171.243
be
Il faut prsent interroger les serveurs de be de manire affiner la recherche.
> server auth02.ns.UU.net
Default Server: auth02.ns.UU.net
Address: 198.6.1.82
> www.isiph.be.
Server: auth02.ns.UU.net
Address: 198.6.1.82
Name:
www.isiph.be
Served by:
- ns.isiph.be
212.68.213.98
isiph.be
- brutele01.brutele.be
212.68.193.32
isiph.be
Le serveur auth02.ns.UU.net spcifie la liste des serveurs isiph.be. Il suffit prsent dinterroger lun de ces serveurs
pour obtenir linformation recherche.
> server ns.isiph.be
Default Server: ns.isiph.be
Address: 212.68.213.98

J-F Challe

HEPCUT - ISIPH

69

> www.isiph.be.
Server: ns.isiph.be
Address: 212.68.213.98
Name:
email.isiph.be
Address: 212.68.213.100
Aliases: www.isiph.be
>
Cet exemple montre le mcanisme de recherche utilis par un serveur de noms. Tout au long de ces manipulations, la
question tait : quelle est ladresse de www.isiph.be ? Si un serveur de be avait eu la rponse en mmoire-cache, il
aurait envoy la rponse au lieu de fournir des renseignements sur les serveurs de isiph.be.

7.6. Transferts de zone.


Il est possible la commande nslookup de transfrer la totalit dune zone au moyen de loption ls. Comme il est
possible de rediriger la visualisation vers un fichier. Soit pour des raisons de scurit, soit pour limiter leur charge
certains serveurs peuvent refuser de transfrer leur zone.
Voici un exemple de transfert de zone :
[root@P100 /root]# nslookup
Default Server: P100.challe.be
Address: 192.168.1.1
> ls challe.be.
[P100.challe.be]
$ORIGIN challe.be.
P3450
P2366
macii
powerpc
P100
se30
P2450
P166PLUS
P2300
P133
P2450
HP4
fuji
P166
modem
P200
>

J-F Challe

1D
1D
1D
1D
1D
1D
1D
1D
1D
1D
1D
1D
1D
1D
1D
1D

IN
IN
IN
IN
IN
IN
IN
IN
IN
IN
IN
IN
IN
IN
IN
IN

A
A
A
A
A
A
A
A
A
A
A
A
A
A
A
A

192.168.1.70
192.168.1.80
192.168.1.2
192.168.1.3
192.168.1.1
192.168.1.60
192.168.1.40
192.168.1.30
192.168.1.50
192.168.1.20
192.168.1.40
192.168.1.192
192.168.1.4
192.168.1.5
192.168.1.100
192.168.1.10

HEPCUT - ISIPH

J-F Challe

70

HEPCUT - ISIPH

71

VI. Le courrier lectronique.


1. Introduction.
Depuis la cration des premiers rseaux, le courrier lectronique est lapplication la plus employe. Au dbut, ce
service consistait en la simple copie dun fichier dune machine une autre. Avec lmergence dInternet, le concept de
transfert dinformations est rest identique bien quun routage complexe et une charge de travail accrue ayant donn
naissance un schma plus labor.
Un certain nombre de programmes de transport de mails (Mail Transport Agent) ont t implments sur les systmes
UNIX. Le MTA le plus connu est sendmail. Cette application ncessite la cration dun fichier de configuration afin
dy imposer des rgles dfinissant le comportement du programme de transport de mails.

2. La structure dun message.


Un mail est gnralement compos :

du corps du message ;
de donnes dadministration.

Le corps du message est uniquement compos du texte du message alors que les donnes dadministration sont
composes dinformations concernant les destinataires du message, le moyen de transport utilis, etc
Les informations administratives peuvent tre rassembles en deux catgories. La premire est constitue de toutes les
informations relatives au transport de linformation comme les adresses de lexpditeur et du destinataire. Cette
catgorie est appele lenveloppe. Ces informations peuvent tre modifies par les logiciels de transport. La seconde
catgorie est constitue des informations permettant de manipuler le message. Cette catgorie regroupe donc des
informations qui ne sont pas spcifiques au mcanisme de transport des informations. Dans cette catgorie figurent le
sujet du message, la liste de tous les destinataires ainsi que la date dexpdition du dit message. Ces informations
forment len-tte du mail. La structure de len-tte en dfinie par la RFC-822.
Lvolution dans lutilisation des mails a ncessit des changements en vue dune adaptation au chiffrement des
informations, lutilisation dun jeu de caractres international, Ces changements dans lutilisation du courrier
lectronique ont conduit la cration dautres standards. Nanmoins, dans tous ces standards, len-tte est constitu de
plusieurs lignes spares les unes des autres par un caractre de fin de ligne. Une ligne est compose dun nom de
champ suivi du caractre deux points et dun espace. A la suite de cette description figure la valeur du champ.
Voici un exemple den-tte :
From jfc@isec.be Sat Oct 27 11:48:11 2001
Return-Path: <jfc@isec.be>
Received: from gateway1.isec.net (root@isec4 [212.68.194.203])
by mail.challe.yi.org (8.9.3/8.9.3) with ESMTP id LAA02458;
Sat, 27 Oct 2001 11:48:10 +0200
From: jfc@isec.be
Received-Date: Sat, 27 Oct 2001 11:48:10 +0200
Received: (from jfc@localhost)
by gateway1.isec.net (8.9.3/8.9.3/Debian 8.9.3-21) id LAA28363;
Sat, 27 Oct 2001 11:56:07 +0200
Date: Sat, 27 Oct 2001 11:56:07 +0200
Message-Id: <200110270956.LAA28363@gateway1.isec.net>
To: jfc@challe.yi.org
Subject: tst
Cc: root@challe.yi.org
Gnralement, tous les en-ttes sont gnrs par le programme qui est utilis pour rdiger les mails. Voici la liste des
en-ttes les plus employs ainsi que leurs significations :

J-F Challe

HEPCUT - ISIPH

72

From. Ce champ contient ladresse mail de lexpditeur.


To. Cette partie de len-tte donne la liste de tous les destinataires du message.
Cc. Ce champ (Carbon copies) dtermine la liste des destinataires qui recevront une copie du message.
Subject. Chaque mail contient un champ sujet permettant de dcrire en quelques mots lobjet du courrier.
Date. Tout mail possde une date denvoi.
Reply-TO. Un mail peut spcifier ladresse laquelle les rponses doivent tre expdies.
Message-ID. La valeur de ce champ est une chane gnre par le programme de transport du systme de
dpart permettant didentifier le message de manire univoque.
Received. Tous les htes par lesquels le courrier transite ajoutent un tel champ len-tte. Les valeurs
prsentes dans ce champ sont lidentification du site, un identificateur de message, le moment de la rception
du message, le site de provenance du message ainsi que le nom du logiciel de transport utilis. Ces
informations permettent de retracer le chemin emprunt par un mail.

3. Principe de livraison des mails.


Un mail est compos en utilisant des programmes tels que netscape messenger, outlook express, pine etc Ces
programmes sont appels des MUA (Mail User Agent). Lorsquun utilisateur expdie un mail en utilisant linterface
dun MUA, le message est transmis un MTA charg de lexpdition. Sur la plupart des systmes le logiciel MTA est
charg la fois de lacheminement des mails locaux et distants.
La livraison dun courrier local est plus quun simple ajout dun nouveau message dans une boite de rception. Les
MTA peuvent traiter des alias ainsi que le forwarding. De plus, si un message ne peut tre dlivr en raison de la non
existence du destinataire, par exemple, le MTA doit tre capable denvoyer automatiquement un message derreur
lexpditeur.
La livraison de courriers distants est gnralement effectue au moyen du protocole SMTP (Simple Mail Transfer
Protocol). Ce protocole est conu pour dlivrer directement le courrier la machine du destinataire. En ralit, une
ngociation a lieu entre les dmons SMTP des machines source et destination.

4. Le routage du courrier.
Le processus consistant diriger les mails vers un hte est appel le routage. A partir du moment o ladresse IP du
destinataire est connue, la majorit du travail de routage est ralis par la couche IP.
Ladresse dun destinataire est constitue dun nom dutilisateur et dun nom de domaine. Lorsquun courrier doit tre
dlivr un certain domaine, il est ncessaire de savoir quelle machine est capable de grer larrive de mails. Pour
effectuer ce travail il faut faire appel au DNS. Les fichiers de configuration du DNS peuvent contenir un
enregistrement MX (Mail eXchanger).
Les enregistrements MX dsignent un hte appel changeur de messages qui tantt traite le courrier, et tantt le
retransmet. Le traitement du courrier consiste en la livraison du courrier ladresse indique. La retransmission du
courrier concerne son envoi vers sa destination finale ou vers un autre changeur de messages proche de la destination.
Chaque enregistrement MX possde une valeur de prfrence code sur 16 bits. Cette valeur indique, au routeur,
lordre de priorit utiliser lors du choix dun changeur de messages.
Voici une partie du fichier /var/named/challe.be :
[root@P100 named]# cat challe.be | more
@
IN
SOA
challe.be. root.localhost.
1998120701 ;
28800
;
14400
;
3600000
;
86400 )
;
NS
MX

J-F Challe

P100.challe.be.
10
P100.challe.be.

(
Serial
Refresh
Retry
Expire
Minimum

HEPCUT - ISIPH

73

Dans cet exemple, la machine P100.challe.be est lchangeur de messages pour le domaine challe.be. Cela signifie que
si un mail stipule une adresse dans le domaine challe.be, cest lhte P100.challe.be qui est mme de recevoir
linformation.

5. Sendmail.
La diversit des programmes et des protocoles utiliss en matire de courrier lectronique complique la configuration de
sendmail. Le protocole SMTP envoie le courrier lectronique travers les rseaux TCP/IP. Un autre programme
envoie du courrier lectronique entre les utilisateurs situs sur la mme machine. Chacun de ces systmes de courrier
lectronique possde son propre programme de distribution et son propre systme dadressage.

5.1. Les fonctions de sendmail.


Lapplication sendmail supprime la plus grande partie des problmes engendrs par lutilisation de plusieurs
programmes de livraison de courrier lectronique. Le programme sendmail route le courrier lectronique vers le
programme de livraison correct en se basant sur ladresse email. Il accepte du courrier provenant dun programme de
courrier lectronique de niveau utilisateur (MUA), interprte ladresse, la rcrit sous une forme approprie pour le
programme de livraison et enfin route le courrier vers le bon programme de livraison. De plus, pour tout courrier
arrivant, sendmail interprte ladresse et, soit dlivre le courrier, soit le renvoie un autre systme.
En plus de router le courrier entre les programmes utilisateurs et les programmes de livraison, sendmail joue deux rles
supplmentaires :

recevoir et livrer les courriers lectroniques SMTP (Internet) ;


fournir un systme dalias de courrier lectronique permettant la mise en place de listes de discussion.

5.2. Le dmon sendmail.


Par dfaut, sendmail est capable de recevoir un courrier SMTP en provenance du rseau. Pour effectuer cela, il suffit de
lancer sendmail au dmarrage du systme. Ds son lancement, sendmail scrute le port TCP numro 25. Il traite ainsi le
courrier lectronique entrant. Le fichier de dmarrage automatique de sendmail contient gnralement deux options
comme le montre un extrait du fichier /etc/rc.d/init.d/sendmail :
daemon /usr/sbin/sendmail bd q 15m
La seconde option de lancement de sendmail (-q) spcifie le rythme de traitement des courriers lectroniques de la file
dattente. Dans lexemple ci-dessus, la file dattente est traite toutes les 15 minutes. Lorsque temporairement un
message ne peut pas tre dlivr, il est plac dans une file dattente. Cette mise en attente peut tre provoque par une
indisponibilit temporaire de la machine rceptrice du message. Lorsque le message aura t dlivr, il sera retir de la
file dattente.
La premire option (-bd) concerne directement la rception du courrier lectronique par SMTP. Cette option ordonne
sendmail de fonctionner en tant que dmon et de scruter le port TCP 25 pour rceptionner le courrier lectronique.
Lemploi de cette option est impratif dans le cas o le systme doit tre en mesure de recevoir du courrier lectronique
via TCP/IP.

5.3. Configuration de sendmail.


Le programme sendmail est le serveur de mails. Conu en 1982, souple et puissant, il est prsent et utilis sur la plupart
des serveurs. Ce produit est en volution constante depuis plus de 20 ans. Ce MTA a mauvaise rputation. Pendant de
nombreuses annes, il nexistait pas dalternative aussi puissante, et lcriture du fichier de configuration tait un
cauchemar pour bon nombre dadministrateurs systmes. Aujourdhui, les macros m4 ont rendu le programme plus
simple configurer. Ce systme de mails peut grer un nombre important de connexions simultanes. Cest une des
raisons qui a conduit la plupart des administrateurs de gros systmes lemployer.
Le programme sendmail est gourmand en ressources CPU. Si un administrateur est confront la configuration dun
petit site ne recevant pas beaucoup de courriers ou un serveur modeste, il est prfrable de choisir un autre MTA. De
plus, bien que des amlioration dans le processus de configuration exista, sendmail reste un des serveurs de courriers
lectroniques les plus difficiles configurer.

J-F Challe

HEPCUT - ISIPH

74

5.3.1. Configurer le mail local.


Lobjectif est de configurer un serveur de courriers lectroniques pour une utilisation interne. Les diffrents utilisateurs
dun systme UNIX doivent avoir la possibilit de schanger des messages sans pour autant envoyer des mails vers
lextrieur.
Voici un exemple de ficher de macros m4 destines la configuration du courrier local :
[root@P100 sendmail] cat sendmail.mc
include(`/usr/lib/sendmail-cf/m4/cf.m4')
OSTYPE(`linux')
FEATURE(local_procmail)
MAILER(procmail)
Tout fichier de macros doit contenir la directive OSTYPE afin de spcifier le systme dexploitation utilis. Le
paramtre est le nom dun fichier contenant des informations sur :

lemplacement des fichiers de configuration ;


les chemins et les arguments employs par les mailers ;
les rpertoires utiliss par sendmail pour stocker les message ;

Cette option est donc obligatoire et devrait apparatre au dbut de tout fichier de configuration.
La macro MAILER permet de spcifier comment le courrier doit tre distribu. Dans cette configuration, les mails
doivent uniquement tre changs entre les utilisateurs du systme. Sous Linux, lagent de distribution local est le
programme procmail. Il faut donc spcifier largument procmail au niveau de la macro MAILER.
Le programme procmail rside un endroit prcis de la hirarchie du systme de fichier. Cet emplacement est dfini au
moyen de la macro FEATURE. Le paramtre local_procamail de cette macro stipule notamment quel est le chemin
daccs au programme procmail.
La premire ligne du fichier est destine inclure des dfinitions servant une bonne gnration du fichier sendmail.cf.
Ds que le fichier sendmail.mc est encod, il faut gnrer le fichier sendmail.cf au moyen de la commande suivante :
[root@P100 sendmail] m4 sendmail.mc > /etc/sendmail.cf
Cette commande demande au macro processeur m4 de lire le fichier sendmail.mc et de gnrer un fichier sendmail.cf
qui sera plac dans le rpertoire /etc. Le serveur de courriers lectroniques doit prsent tre redmarr afin quil
applique la nouvelle configuration.
[root@P100 sendmail] /etc/rc.d/init.d/sendmail restart
A prsent, les utilisateurs peuvent schanger du courrier localement en utilisant la commande mail. Voici un exemple
de message envoy par lutilisateur root lutilisateur jfc.
[root@P100 sendmail]# mail jfc
Subject: Nouveau serveur de mails
Monsieur,
Le serveur de mails est des maintenant disponible sur ce systeme.
.
Cc:
Lutilisateur jfc reoit un message lui indiquant quun courrier est arriv. Il suffit jfc dutiliser la commande mail sans
paramtre pour activer le mode interactif de ce programme afin de relever le courrier. La commande p lui permet de
visualiser le texte du message. La commande d permet deffacer un message alors que la commande q permet de quitter
le logiciel mail.

J-F Challe

HEPCUT - ISIPH

You have new mail.


[jfc@P100 jfc]$ mail
Mail version 8.1 6/6/93. Type ? for help.
"/var/spool/mail/jfc": 1 message 1 new
>N 1 root
Sun Nov 4 20:21
& p
Message 1:
From root Sun Nov 4 20:21:27 2001
Date: Sun, 4 Nov 2001 20:21:26 +0100
From: root <root>
To: jfc
Subject: Nouveau serveur de mails

75

15/405

"Nouveau serveur de ma"

Monsieur,
Le serveur de mails est des maintenant disponible sur ce systeme.
& d
& q
[jfc@P100 jfc]$
5.3.2. Configurer le mail distant.
Dans cette configuration, il faut que le serveur de courriers lectroniques soit la fois capable denvoyer du courrier
vers un destinataire connu dInternet mais galement den recevoir en provenance dInternet.
Sur Internet, les courriers sont changs au moyen du protocole SMTP. Il faut donc que sendmail soit capable de grer
ce type de connexion. Pour cela, il faut ajouter MAILER(smtp) la configuration prcdente. De cette manire,
lagent de transport SMTP est connu de sendmail.
Lorsque les mails arrivent, ils contiennent le nom complet du destinataire, nom complet qui doit tre accept en local.
Pour cela, il faut stipuler, dans le fichier sendmail.cw, le nom de domaine qui dans ce cas est challe.yi.org. Ce fichier
doit contenir la liste de tous les domaines pour lesquels sendmail doit accepter les messages Voici le contenu des
fichiers sendmail.mc et sendmail.cw :
[root@P100 sendmail] cat sendmail.mc
include(`/usr/lib/sendmail-cf/m4/cf.m4')
OSTYPE(`linux')
FEATURE(use_cw_file)
FEATURE(local_procmail)
MAILER(procmail)
MAILER(smtp)
[root@P100 sendmail]# cd /etc
[root@P100 /etc]# cat sendmail.cw
# sendmail.cw - include all aliases for your machine here.
challe.yi.org
Aprs avoir activ ces modifications, sendmail permet denvoyer du courrier vers des utilisateurs distants ainsi que den
recevoir en provenance dutilisateurs distants.
5.3.3. Agir comme serveur relais.
Un grand nombre de configurations sont tablies de telle sorte que des utilisateurs sous Windows puissent envoyer du
courrier en utilisant le serveur SMTP prsent oprationnel. Dans ltat actuel des choses, cette opration se soldera
par un chec car pour des raisons de scurit le serveur de mail refuse dtre serveur relais. Pour cela, il faut alors
dfinir dans la base de donnes des accs que certaines machines peuvent exploiter le serveur de mails comme serveur
relais. De plus, la configuration de sendmail doit tre modifie afin quil puisse consulter cette base de donnes. Il faut
pour cela ajouter la macro FEATURE(`access_db).
Voici la nouvelle configuration prsente dans le fichier sendmail.mc :

J-F Challe

HEPCUT - ISIPH

76

[root@P100 sendmail]# cat sendmail.mc


include(`/usr/lib/sendmail-cf/m4/cf.m4')
OSTYPE(`linux')
FEATURE(use_cw_file)
FEATURE(local_procmail)
MAILER(procmail)
MAILER(smtp)
FEATURE(`access_db')
Supposons que le serveur de mails soit un routeur entre un rseau local et internet. Supposons galement que le rseau
local soit dans le domaine challe.be. Il faut alors diter le fichier /etc/mail/access afin dautoriser les machines du
domaine challe.be utiliser le serveur en tant que serveur relais.
Voici le contenu du fichier /etc/mail/access :
[root@P100 mail]# cat access
# Check the /usr/doc/sendmail-8.9.3/README.cf file for a description
# of the format of this file. (search for access_db in that file)
# The /usr/doc/sendmail-8.9.3/README.cf is part of the sendmail-doc
# package.
#
# by default we allow relaying from localhost...
localhost.localdomain
RELAY
localhost
RELAY
challe.be
RELAY
Le fichier /etc/mail/access nest quune version lisible du vritable fichier de base de donnes qui est
/etc/mail/access.db. Afin de rendre actives, les modifications prsentes dans le fichier texte, il faut gnrer la base de
donnes au moyen du makefile prsent dans le rpertoire /etc/mail. Cette cration ncessite simplement lutilisation de
la commande make.
Le fichier /etc/mail/access peut contenir dautres spcifications que RELAY. Voici la liste des spcifications les plus
courantes :
Valeur
OK
RELAY
REJECT

Action
Accepter le courrier mme si dautres rgles opposent un refus.
Accepter le message mme sil nest pas destin lhte excutant sendmail
Rejeter le message en envoyant un message de refus

Dans le mme ordre dide, les utilisateurs dInternet relvent leur courrier distance. Pour cela, ils configurent leur
programme de gestion du courrier lectronique pour quil se connecte un serveur POP (Post Office Protocol) afin dy
tlcharger le courrier. Cette fonctionnalit, qui ne fait pas partie de sendmail, constitue un outil annexe. Pour quun
systme UNIX agisse comme serveur POP, il suffit quil excute le dmon pop. Le lancement de ce dmon est effectu
par le super dmon inetd. Le fichier de configuration de inetd est /etc/inetd.conf. Il faut que les lignes concernant POP
ne soient pas places en commentaire pour que le serveur POP puisse fonctionner.
Voici extrait du fichier inetd.conf relatif au serveur POP :
#
# Pop and imap mail services et
#
pop-2
stream tcp
nowait
pop-3
stream tcp
nowait
imap
stream tcp
nowait
#

al
root
root
root

/usr/sbin/tcpd
/usr/sbin/tcpd
/usr/sbin/tcpd

ipop2d
ipop3d
imapd

Ces entres supposent que lexcutable se trouve dans le rpertoire /etc/sbin. Les ports de communication utiliss par
ces services sont dfinis dans le fichier /etc/services. Voici un extrait du fichier /etc/services :

J-F Challe

HEPCUT - ISIPH

pop2
pop2
pop3
pop3
imap2
imap2
imap3
imap3

77

109/tcp
109/udp
110/tcp
110/udp
143/tcp
143/udp
220/tcp
220/udp

pop-2
pop-2
pop-3
pop-3
imap
imap

postoffice

# POP version 2

# POP version 3
# Interim Mail Access Proto v2
# Interactive Mail Access
# Protocol v3

5.3.4. Options supplmentaires.


Lorsque des courriers locaux sont changs, le nom de la machine nest pas indiqu aprs le nom de lutilisateur. Pour
remdier cette situation, il faut explicitement demander sendmail dajouter el nom de domaine au moyen de
FEATURE (always_add_domain).
Voici le nouveau fichier de configuration de sendmail permettant cette
fonctionnalit.
[root@P100 sendmail]# cat sendmail.mc
include(`/usr/lib/sendmail-cf/m4/cf.m4')
OSTYPE(`linux')
FEATURE(always_add_domain)
FEATURE(use_cw_file)
FEATURE(local_procmail)
MAILER(procmail)
MAILER(smtp)
FEATURE(`access_db')
Lenvoi dun courrier ne ncessite pas lutilisation dun nom complet car sendmail modifiera lui mme ladresse du
destinataire. Il est donc permis denvoyer un mail local de la manire suivante :
[root@P100 sendmail]# mail jfc
Subject: message
bonjour
.
Cc:
Lutilisateur remarque que le mail provient de root@ns.challe.yi.org et non pas simplement de root.
[jfc@P100 jfc]$ mail
Mail version 8.1 6/6/93. Type ? for help.
"/var/spool/mail/jfc": 1 messages 1 new
> N 1 root@ns.challe.yi.or Sun Nov 4 20:56
& p 2
Message 1:
From root Sun Nov 4 20:56:43 2001
Date: Sun, 4 Nov 2001 20:56:43 +0100
From: root <root@ns.challe.yi.org>
To: jfc@ns.challe.yi.org
Subject: message

13/353

"message"

bonjour
&
Dans le cadre dune utilisation normale dInternet, des gens souscrivent des listes de discussion, publient des articles
du UseNet, Ces oprations diffusent ladresse de courrier lectronique. Certains font la chasse aux adresses mails
pour les revendre des publicistes vantant leurs produits via Internet. Des personnes reoivent ainsi des courriers non
sollicits appels spam.
Fort heureusement, sendmail permet dliminer les spams. Pour cela, il faut se rfrer The Real-time blackhole List,
organisation qui maintient une base de donnes dadresses mails source de spams. Le programme sendmail peut
exploiter cette base de donnes et refuser des mails provenant dadresses qui figurent sur cette liste noire. Pour activer

J-F Challe

HEPCUT - ISIPH

78

cette fonctionnalit, il suffit dajouter FEATURE(rbl) au fichier de configuration de sendmail. Voici la nouvelle
version du fichier sendmail.mc :
[root@P100 sendmail]# cat sendmail.mc
include(`/usr/lib/sendmail-cf/m4/cf.m4')
OSTYPE(`linux')
FEATURE(rbl)
FEATURE(always_add_domain)
FEATURE(use_cw_file)
FEATURE(local_procmail)
MAILER(procmail)
MAILER(smtp)
FEATURE(`access_db')
Lorsque des messages sont envoys, sendmail ajoute automatiquement ladresse de lexpditeur le nom de domaine
pleinement qualifi. Avec la configuration actuelle, tous les mails envoys ont une adresse dexpdition de la forme
utilisateur@ns.challe.yi.org. Pour viter que le nom de la machine soit ajout au nom de domaine, il suffit de dfinir ce
dernier la main au moyen dune macro define comme le montre lexemple suivant :
[root@P100 sendmail]# cat sendmail.mc
include(`/usr/lib/sendmail-cf/m4/cf.m4')
OSTYPE(`linux')
define(`confDOMAIN_NAME',`challe.yi.org')
FEATURE(rbl)
FEATURE(always_add_domain)
FEATURE(use_cw_file)
FEATURE(local_procmail)
MAILER(procmail)
MAILER(smtp)
FEATURE(`access_db')
Lexemple suivant montre que le nom de domaine nest plus pleinement qualifi.
[root@P100 /root]# mail jfc
Subject: Bonjour
Bonjour Monsieur
.
Cc:
[jfc@P100 jfc]$ mail
Mail version 8.1 6/6/93. Type ? for help.
"/var/spool/mail/jfc": 1 message 1 new
>N 1 root@challe.yi.org
Tue Nov 6 13:32
& p
Message 1:
From root Tue Nov 6 13:32:42 2001
Date: Tue, 6 Nov 2001 13:32:42 +0100
From: root <root@challe.yi.org>
To: jfc@challe.yi.org
Subject: Bonjour
Bonjour Monsieur
&

J-F Challe

13/350

"Bonjour"

HEPCUT - ISIPH

79

5.4. Sendmail et les alias.


Les alias doivent fournir :

d'autres noms (surnoms) pour les utilisateurs ;


la possibilit de renvoyer du courrier dautres machines ;
les listes de discussion.

Ces alias sont dfinis dans le fichier /etc/aliases. Le format des entres de ce fichier est :
alias: destinataire {,destinataire, }
Le mot alias est le nom de lutilisateur qui le courrier lectronique est adress. Les mots destinataire spcifient
les noms qui le courrier est vritablement destin. Le destinataire peut tre le nom dun utilisateur du systme, un
autre alias ou bien une adresse lectronique complte contenant la fois le nom dun utilisateur et celui dune machine.
Un courrier envoy alias sera envoy tous les destinataires spcifis dans la liste. Cette mthode permet la cration
dune liste de discussion.
Voici un exemple de fichier /etc/aliases :
[root@P100 /etc]# cat aliases
MAILER-DAEMON: postmaster
postmaster:
root
bin:
root
daemon:
root
games:
root
ingres:
root
nobody:
root
system:
root
toor:
root
uucp:
root
manager:
root
dumper:
root
operator:
root
decode:
root
jfchalle:
jfc
jf.challe:
jfc
mailinglist:
jfc, rc, root, jfc@p200.challe.be
Les 14 premires lignes de ce fichier sont les alias par dfaut du systme. La quinzime ligne du fichier indique que
tous les mails envoys jfchalle sont redirigs vers lutilisateur jfc. La dernire ligne du fichier cre une liste de
discussion. Cela signifie que tous les mails envoys mailinglist seront envoys aux utilisateurs jfc, rc et root ainsi
qu lutilisateur jfc de la machine p200.challe.be.
Le programme sendmail nexploite pas directement le fichier /etc/aliases. Ce fichier doit tre trait de manire
gnrer une base de donnes qui sera exploite par sendmail. Pour transformer le fichier /etc/aliases en une base de
donnes, il faut utiliser la commande newaliases ou bien la commande sendmail avec loption bi.
Chaque fois que le fichier des aliases est modifi, il faut gnrer une nouvelle base de donnes afin que les
modifications soient prises en compte par sendmail. Voici les deux exemples de cration de la base de donnes des
alias :
[root@P100 /etc]# sendmail -bi
/etc/aliases: 18 aliases, longest 34 bytes, 243 bytes total
[root@P100 /etc]# newaliases
/etc/aliases: 18 aliases, longest 34 bytes, 243 bytes total

J-F Challe

HEPCUT - ISIPH

80

5.5. Utilisation dun .forward personnel.


En plus du mcanisme de renvoi de courrier lectronique par les alias, sendmail permet un utilisateur de dfinir luimme son propre renvoi de courrier. Il lui suffit de crer un fichier .forward la racine de son compte utilisateur. Le
programme sendmail consulte ce fichier aprs avoir utilis le fichier des alias et avant deffectuer la diffusion finale du
courrier lutilisateur. Si le fichier .forward existe, sendmail diffuse le message en fonction du contenu de ce fichier.
Voici un exemple de fichier .forward ou lutilisateur jfc redirige lui-mme son courrier vers jfc@p200.challe.be :
[jfc@P100 jfc]$ cat .forward
jfc@P200.challe.be

5.6. Configuration de la scurit.


5.6.1. Les commandes vrfy et expn.
Les commandes SMTP vrfy et expn sont gnralement interdites car elles fournissent des informations sur les adresses
de messageries disponibles sur le serveur. Voici une session telnet lance sur le port SMTP partir de la machine
e xcutant le serveur sendmail :
jfc@gateway:~$ telnet challe.yi.org 25
Trying 212.68.198.221...
Connected to challe.yi.org.
Escape character is '^]'.
220 challe.yi.org ESMTP Sendmail 8.9.3/8.9.3; Wed, 7 Nov 2001 11:32:01 +0100
vrfy jfc
250 Jean-Francois Challe <jfc@challe.yi.org>
expn jfc
250 Jean-Francois Challe <jfc@challe.yi.org>
Pour interdire lutilisation de ces commandes, il faut dfinir confPRIVACY_FLAGS comme le montre lexemple
suivant :
[root@P100 sendmail]# cat sendmail.mc
include(`/usr/lib/sendmail-cf/m4/cf.m4')
OSTYPE(`linux')
define(`confPRIVACY_FLAGS',novrfy noexpn)
define(`confDOMAIN_NAME',`challe.yi.org')
FEATURE(rbl)
FEATURE(always_add_domain)
FEATURE(use_cw_file)
FEATURE(local_procmail)
MAILER(procmail)
MAILER(smtp)
FEATURE(`access_db')
Les drapeaux novrfy et noexpn permettent dinterdire respectivement les commandes vrfy et expn. Voici un exemple
de session interactive lorsque les commandes vrfy et expn sont interdites :
jfc@gateway:~$ telnet challe.yi.org 25
Trying 212.68.198.221...
Connected to challe.yi.org.
Escape character is '^]'.
220 challe.yi.org ESMTP Sendmail 8.9.3/8.9.3; Wed, 7 Nov 2001 11:38:35 +0100
vrfy
252 Cannot VRFY user; try RCPT to attempt delivery (or try finger)
expn
502 Sorry, we do not allow this operation

J-F Challe

HEPCUT - ISIPH

81

5.6.2. Restriction daccs la file des messages.


Pour des raisons de scurit, il ncessaire dempcher laccs la file des messages par des personnes ne disposant pas
des autorisations ncessaires. Cette option est active en positionnant le drapeau restrictmailq.
[root@P100 sendmail]# cat sendmail.mc
include(`/usr/lib/sendmail-cf/m4/cf.m4')
OSTYPE(`linux')
define(`confPRIVACY_FLAGS',authwarnings novrfy noexpn restrictmailq)
define(`confDOMAIN_NAME',`challe.yi.org')
FEATURE(rbl)
FEATURE(always_add_domain)
FEATURE(use_cw_file)
FEATURE(local_procmail)
MAILER(procmail)
MAILER(smtp)
FEATURE(`access_db')
5.6.3. Forcer lidentification du client.
Les utilisateurs souhaitant utiliser le serveur SMTP peuvent galement tre invits sidentifier avant de pouvoir
envoyer un message. Pour cela, il suffit dimposer le drapeau needmailhelo. Voici le fichier sendmail.mc modifi :
[root@P100 sendmail]# cat sendmail.mc
include(`/usr/lib/sendmail-cf/m4/cf.m4')
OSTYPE(`linux')
define(`confPRIVACY_FLAGS',authwarnings novrfy noexpn restrictmailq needmailhelo)
define(`confDOMAIN_NAME',`challe.yi.org')
FEATURE(rbl)
FEATURE(always_add_domain)
FEATURE(use_cw_file)
FEATURE(local_procmail)
MAILER(procmail)
MAILER(smtp)
FEATURE(`access_db')

5.6.4. Message dinvite de sendmail.


Par dfaut, sendmail envoie un certain nombre dinformations lorsquun client se connecte au serveur de messagerie.
Ces informations permettent de dcouvrir sans effort, la version de sendmail utilise ainsi que la version du fichier
sendmail.cf. Le drapeau confSMTP_LOGIN_MSG permet de dfinir un nouveau message daccueil. Voici la nouvelle
version du fichier sendmail.mc
[root@P100 sendmail]# cat sendmail.mc
include(`/usr/lib/sendmail-cf/m4/cf.m4')
OSTYPE(`linux')
define(`confPRIVACY_FLAGS',authwarnings novrfy noexpn restrictmailq needmailhelo)
define(`confSMTP_LOGIN_MSG,Bonjour)
define(`confDOMAIN_NAME',`challe.yi.org')
FEATURE(rbl)
FEATURE(always_add_domain)
FEATURE(use_cw_file)
FEATURE(local_procmail)
MAILER(procmail)
MAILER(smtp)
FEATURE(`access_db')

J-F Challe

HEPCUT - ISIPH

82

Lorsquun client se connecte au serveur, il obtient le message suivant :


jfc@gateway:~$ telnet challe.yi.org 25
Trying 212.68.198.221...
Connected to challe.yi.org.
Escape character is '^]'.
220 Bonjour ESMTP
5.6.5. Contrler les connexions SMTP avec TCP Wrappers.
Le paquetage TCP Wrappers permet deffectuer un contrle et un filtrage au niveau des connexions rseau faites sur le
systme. Il est possible de contrler les connexions par adresse IP, nom de machine ou nom de domaine. Il est ainsi
possible dutiliser les fichiers /etc/hosts.allow et /etc/hosts.deny pour autoriser ou non les connexions au serveur de
messagerie.
Pour des raisons de scurit, le fichier /etc/hosts.deny devrait toujours contenir ALL:ALL. Cela signifie que tout ce qui
nest pas explicitement autoris dans /etc/hosts.allow est interdit.
Si ladministrateur souhaite autoriser tout serveur communiquer avec sendmail lexception la machine mail.isiph.be,
il faut placer les informations suivantes dans les fichiers /etc/hosts.allow et /etc/hosts.deny :
[root@P100 etc]# cat hosts.allow
sendmail:ALL
[root@P100 etc]# cat hosts.deny
sendmail:mail.isiph.be
ALL:ALL
5.6.6. Lutter contre les attaques de dni de service.
De nombreux paramtres peuvent tre configurs dans le fichier sendmail.mc afin doffrir une rsistance plus
importante aux attaques visant saturer les ressources du systme. Voici une liste des variables intressantes :
Variable
define(`confMin_FREE_BLOCKS,`100)
define(`confMAX_MESSAGE_SIZE,`50000000)
define(`confAUTO_REBUIL,`FALSE)
define(`confQUEUE_LA,`8)

define(`confREFUSE_LA,`12)

Signification
Dfinition du nombre minimum de blocs libres dans la
queue pour accepter les nouveaux messages.
Dtermine la taille maximale des messages qui sont
accepts (taille exprime en bits).
Interdiction de la recompilation automatique des alias.
Cette valeur indique une charge (nombre de messages
traiter simultanment) partir de laquelle les messages ne
sont plus dlivrs mais placs en file dattente. Il est
conseill de donner une valeur correspondant 8 fois le
nombre de processeurs disponibles dans la machine.
Lorsque la charge moyenne exprime en terme de nombre
de messages traiter au cours de la dernire minute
dpasse la valeur indique, sendmail refuse les messages.
Il est conseill de donner une valeur correspondant 12
fois le nombre de processeurs disponibles dans la
machine.

5.6.7. Utilisation dun shell restreint.


Bien que la programmation de sendmail soit soigne, il est possible de le dtourner de son but premier en lobligeant
excuter certaines commandes au niveau du shell. Pour protger le systme contre ce type dattaque, il suffit de limiter
les commandes qui peuvent tre excutes par sendmail. Pour cela, il sindique dimposer sendmail lutilisation dun
shell restreint lorsquil doit excuter des commandes. Ce shell est smrsh (SendMail Restricted Shell).

J-F Challe

HEPCUT - ISIPH

Voici le fichier sendmail.mc modifi pour imposer sendmail demployer un shell restreint :
[root@P100 sendmail]# cat sendmail.mc
include(`/usr/lib/sendmail-cf/m4/cf.m4')
OSTYPE(`linux')
define(`confPRIVACY_FLAGS',authwarnings novrfy noexpn restrictmailq needmailhelo)
define(`confSMTP_LOGIN_MSG,Bonjour)
define(`confDOMAIN_NAME',`challe.yi.org')
FEATURE(`smrsh,`/usr/sbin/smrsh)
FEATURE(rbl)
FEATURE(always_add_domain)
FEATURE(use_cw_file)
FEATURE(local_procmail)
MAILER(procmail)
MAILER(smtp)
FEATURE(`access_db')

J-F Challe

83

HEPCUT - ISIPH

J-F Challe

84

HEPCUT - ISIPH

85

VII. NFS.
1. Introduction.
Le systme de fichiers partags (Network File System) est un systme de fichiers distribus fournissant un mcanisme
transparent daccs des systmes de fichiers distants. Le systme NFS permet de centraliser ladministration des
disques plutt que de dupliquer des rpertoires comme /usr/local sur tous les systmes. Le systme de fichiers
distribus partage un ou plusieurs rpertoires de sorte quil nexiste quune seule copie des informations sur lesquelles
des systmes distants peuvent oprer. Par le biais de NFS, les utilisateurs ne doivent pas se connecter au moyen dune
session telnet pour accder aux informations. Dans le mme ordre dide, il nest pas ncessaire dutiliser une disquette
ou une bande magntique pour transporter les donnes dun systme lautre. Ds que NFS est correctement configur,
les utilisateurs peuvent exploiter les fichiers distants comme sils rsidaient sur la machine locale.

2. Configuration de NFS.
La mise en uvre de NFS sur le serveur et sur les postes clients ncessite le lancement de dmons qui implantent le
protocole NFS. De plus, des dmons auxiliaires sont lancs afin dassurer des services tels que le verrouillage des
fichiers, lexportation des systmes de fichiers et le montage des partages. Ces dmons sont lancs par les scripts de
dmarrage du systme.

3. Exportation dun systme de fichiers.


Lorsquun serveur partage des ressources au moyen de NFS, il conserve une liste des systmes de fichiers exports dans
un fichier. Ce fichier associe des restrictions daccs chaque systme de fichiers export. Lorsquun client souhaite
monter un systme de fichiers partags, le serveur compare la demande du client la liste des systmes de fichiers quil
exporte afin de dterminer si le client a le droit daccder aux informations.
La table des systmes de fichiers exports figure dans le fichier /etc/exports. En plus des fichiers initialement exports,
le super-utilisateur a tout moment la possibilit dexporter dautres systmes de fichiers au moyen de la commande
exportfs. Lors du dmarrage du systme, le fichier /etc/exports est lu. Pour chacune des entres de ce fichier, le
systme excute la commande exportfs correspondante de manire rendre les systmes de fichiers exports
disponibles pour les clients. Lorsquun client monte un systme de fichiers exp ort, le serveur conserve la trace de
lutilisation de la ressource dans le fichier /var/lib/nfs/xtab.

3.1. Rgles dexportation des systmes de fichiers.


Pour rendre un systme de fichiers accessible par lintermdiaire de NFS, il est impratif suivre les rgles suivantes :

Tout systme de fichiers ou tout sous-rpertoire dun systme de fichiers peut tre export par un serveur.
Cela permet dexporter un nombre trs limit de fichiers. Cette mthode est fortement employe par les
stations de travail qui ne possdent pas de disque.
Il est permis dexporter nimporte quel sous-rpertoire dun systme de fichiers export la condition quil
rside sur des disques diffrents. Par exemple, si le rpertoire /home rside sur le disque /dev/hda1 et que le
rpertoire /home/jfc rside sur le disque /dev/dha2 il est permis dexporter ces deux systmes de fichiers.
Il est interdit dexporter un rpertoire parent dun systme de fichier export sauf sil rside sur des disques
diffrents. Cette rgle est identique la prcdente sauf que les permissions sont exprimes en terme de
rpertoire parent au lieu de rpertoire enfant.
Seuls les systmes de fichiers locaux peuvent tre exports.

3.2. Exportation simple dun systme de fichiers.


Le fichier /etc/exports contient la liste des systmes de fichiers que le serveur exporte ainsi que les restrictions et les
options correspondantes. Chaque ligne de ce fichier correspond un point de montage et une liste de machines ou de
sous-rseaux autoriss monter llment correspondant. Voici un exemple de fichier /etc/exports :
[root@P100 /etc]# cat exports
/mnt/cdrom
/mnt/floppy

J-F Challe

HEPCUT - ISIPH

86

Dans cet exemple, les rpertoires /mnt/cdrom et /mnt/floppy de lhte P100 sont accessibles en lecture seule partir de
tous les htes du rseau.
La modification du fichier /etc/exports na pas de rpercussion immdiate sur les permissions daccs aux systmes de
fichiers. En effet, le fichier /etc/exports est lu au moment du dmarrage du systme. De ce fait, si le super-utilisateur
dcide de modifier le fichier des exportations, il doit, aprs avoir effectu les changements, les faire prendre en
considration par le systme. Pour cela, il lui suffit demployer la commande exportfs en demandant une relecture du
fichier /etc/exports. Voici la syntaxe de la commande exportfs forant la relecture du fichier des exportations :
[root@P100 /etc]# exportfs -r

4. Montage dun systme de fichiers.


Les machines clientes peuvent monter un systme de fichiers export au moyen de la commande mount. Voici un
exemple de montage dun systme de fichiers.
[root@p200 /root]# mount -t nfs P100:/mnt/cdrom /mnt
Cette commande permet de monter le systeme de fichiers /mnt/cdrom rsidants sur lhte P100 dans le rpertoire /mnt
de la machine P200. Ds que cette commande est excute, il est possible dexploiter les fichiers placs dans le
rpertoire /mnt comme sils faisaient partie du disque local du client.
Les diffrents systmes de fichiers monts peuvent tre visualiss au moyen de la commande df. Voici un exemple
dexcution de cette commande :
[root@p200 /root]# df
Filesystem
1k-blocks
/dev/hda5
7961648
/dev/hda1
23302
P100:/mnt/cdrom
13156032

Used Available Use% Mounted on


1440976
6116240 19% /
2482
19617 11% /boot
11587248
900496 93% /mnt

5. Les options dexportation.


Plusieurs options peuvent modifier la manire dont un systme de fichiers est export au travers du rseau :

rw : permet aux clients NFS de lire et dcrire sur le systme de fichiers export
ro : empche les clients NFS dcrire sur le systme de fichiers.

Voici un exemple dutilisation des options ro et rw :


[root@P100 /etc]# cat exports
/mnt/cdrom
192.168.1.0/255.255.255.0(rw)
/mnt/floppy
(ro)
/home
P200(rw)
La premire ligne du fichier indique que le rpertoire /mnt/cdrom est export en lecture et en criture vers tous les htes
du sous rseau 192.168.1.0. La seconde ligne exporte le rpertoire /mnt/floppy en lecture seule vers tous les htes. La
dernire ligne du fichier /etc/exports permet dexporter le rpertoire /home en lecture et en criture uniquement vers
lhte p200.
Daprs la description qui vient dtre faite, tout utilisateur de lhte p200 devrait avoir accs en lecture et en criture
lensemble de la hirarchie des fichiers accessibles partir de /home. Voici un exemple de session interactive lance
partir de lhte P200 :
[root@p200 /root]# mount -t nfs P100:/home /mnt/floppy
[root@p200 /root]# cd /mnt/floppy/
[root@p200 floppy]# touch ess
touch: ess: Permission non accorde

J-F Challe

HEPCUT - ISIPH

87

Bien que ce soit le super-utilisateur de la machine P200 qui tente de crer un fichier dans le rpertoire /home de lhte
P100, lopration choue. Lorsquun utilisateur dUID 0 (root) accde un systme de fichiers export, son UID est
transform en lUID de lutilisateur nobody ou bien en la valeur 65534 si lutilisateur nobody nexiste pas sur le
systme client. Cette technique constituant le comportement par dfaut porte le nom de root squashing. Ce
comportement peut tre inhib au moyen de loption no_root_squash. Voici le fichier /etc/exports modifi :
[root@P100 /etc]# cat exports
/mnt/cdrom
192.168.1.0/255.255.255.0(rw)
/mnt/floppy
(ro)
/home
P200(rw,no_root_squash)
Une session interactive sur lhte P200 montre que lutilisateur root de la machine P200 est considr comme tant le
super-utilisateur de la machine P100.
[root@p200
[root@p200
[root@p200
[root@p200
total 28
-rw-r--r-drwxr-xr-x
drwxr-xr-x
drwx-----drwx-----drwx-----drwx-----drwx------

/root]# mount -t nfs P100:/home /mnt/floppy


/root]# cd /mnt/floppy
floppy]# touch ess
floppy]# ls -l
1
8
5
42
4
10
4
11

root
root
root
jfc
504
502
503
501

root
root
root
jfc
504
502
503
501

0
4096
4096
4096
4096
4096
4096
4096

nov
oct
jui
nov
avr
ao
nov
oct

10
25
26
10
9
14
16
29

19:48
18:56
2000
17:53
2001
2000
2000
11:59

ess
ftp
httpd
jfc
jl
multi
pppuser
rc

Voici la liste des options les plus utilises :

root_squash : transforme les UID/GID 0 en UID/GID anonyme.


no_root_squash : ne transforme pas les UID/GID 0 en UID/GID anonyme.
all_squash : transforme les UID/GID de tous les utilisateurs en UID/GID anonyme. Loption inverse est
no_all_squash.
squash_uid et squash_gid : ces options prcisent une liste dUID et de GID qui sont convertis en utilisateur
anonyme. Il est ainsi possible dcrire squash_uid=0-50,70-100. De cette manire les UID de 0 50 et de 70
100 sont convertis en utilisateur anonyme.
anonuid et anongid : ces options permettent de stipuler lUID et le GID dun utilisateur. Ces options sont
particulirement utiles lorsque des systmes de fichiers sont exports vers des clients Windows qui
implmentent le protocole NFS. Dans ce cas, un PC est gnralement ddi un utilisateur. Il est alors
ncessaire que cet utilisateur puisse manipuler ses fichiers en exploitant son identit UNIX. Cest ainsi que
anonuid=501 et anongid=501 permettent de fixer lidentit de lutilisateur.

6. Les options de montage.


La commande mount accepte un certain nombre darguments gnraux ainsi que des arguments spcifiques au
protocole NFS.

6.1. Les arguments gnraux.


Les options de la commande mount sont prfixs par o. Deux options peuvent savrer utiles : ro et rw. Elles
permettent respectivement de monter un systme de fichiers soit en lecture seule ou bien alors en lecture et en criture.
Bien que les indications daccs aux systmes de fichiers NFS soient dfinies par le contenu du fichier /etc/exports, un
client a toujours la possibilit de restreindre ses accs.
Voici un exemple de session interactive consistant monter en lecture seule le rpertoire /home de la machine P100
bien que daprs le fichier /etc/exports, P200 y ait accs en lecture et en criture :

J-F Challe

HEPCUT - ISIPH

88

[root@p200 /root]# mount -t nfs -o ro P100:/home /mnt/floppy


[root@p200 /root]# cd /mnt/floppy
[root@p200 floppy]# touch ess
touch: ess: Systme de fichiers accessible en lecture seulement

6.2. Les arguments spcifiques.


Les informations changes entre le serveur et les clients sont organises en bloc dont la taille est un facteur
dterminant de performance. Il est possible de contrler indpendamment la taille des blocs lus par le client et la taille
des blocs crits par le client. Les options rsize et wsize contrlent cet aspect de la communication. Par lintermdiaire
de ces options, le client et le serveur se mettent daccord sur la taille des units dchange des informations. Ces tailles
peuvent tre dau maximum 8192 ou 32768 bytes suivant les versions de NFS utilises. Gnralement une valeur de
8192 bytes est spcifie.
Voici un exemple de la syntaxe utilise pour spcifier ces options :
[root@p200 /root]# mount -t nfs -o rsize=8192,wsize=8192 P100:/home /mnt/floppy
Lorsquun serveur nest pas oprationnel, le noyau des clients essaye indfiniment de monter le systme de fichiers
spcifi. Afin dempcher ce comportement, il est permis dutiliser loption soft. Au bout dun certain temps prcis
par loption timeo, la tentative de montage prend fin.
Voici un exemple de ce type de montage :
[root@p200 /root]# mount -t nfs -o rsize=8192,wsize=8192,soft,timeo=10
P100:/home /mnt/floppy

7. Le montage permanent.
Lors du dmarrage du systme, le fichier /etc/fstab est lu afin de monter les systmes de fichiers qui y sont spcifis. Il
est permis de placer dans ce fichier, une entre stipulant le montage dun systme de fichiers NFS lors du dmarrage du
systme. Voici un exemple de fichier fstab :
[root@p200 /etc]# cat fstab
/dev/hda5
/
ext2
defaults
/dev/hda1
/boot
ext2
defaults
/dev/cdrom
/mnt/cdrom
iso9660 noauto,owner,ro
/dev/fd0
/mnt/floppy
auto
noauto,owner
none
/proc
proc
defaults
none
/dev/pts
devpts gid=5,mode=620
/dev/hda6
swap
swap
defaults
192.168.1.1:/home /mnt/floppy nfs rw,rsize=8192,wsize=8192,soft

1
1
0
0
0
0
0
0

1
2
0
0
0
0
0
0

8. La rsolution des liens symboliques.


Lutilisation de liens symboliques peut engendrer des problmes lorsquun systme de fichiers est export par NFS.
Lorsquun processus rfrence un lien symbolique, un appel systme est gnr pour trouver lemplacement du
rpertoire original. Dans le cas dune exportation NFS, ce mme comportement a lieu. Lorsque le client rencontre un
lien symbolique, il demande au serveur le chemin daccs vers le rpertoire dorigine. Linformation retourne par le
serveur est alors interprte par le client qui recherche le rpertoire dans sa hirarchie locale. Il est possible que le lien
nexiste que sur le serveur et pas sur le client. Dans ce cas, la rsolution du lien symbolique posera un problme car le
fichier nexiste pas.
Lutilisation conjointe de NFS et des liens symboliques doit tre tudie avec attention. Il faut imprativement quun
lien symbolique dfini au niveau du serveur ait un sens au niveau des clients. Il faut pour cela, soit crer les liens
symboliques au niveau de tous les clients, soit utiliser un schma de xportation ne brisant pas les liens symboliques.

J-F Challe

HEPCUT - ISIPH

89

VIII. NIS.
1. Introduction.
Le protocole NIS (Network Information Service) est un exemple de service dannuaire. Pour comprendre dutilit dun
tel service, prenons lexemple du service des renseignements tlphoniques. Lorsque un abonn au tlphone souhaite
connatre le numro dappel dun correspondant, il peut exploiter le service des renseignements. Lappelant est un
client du service dannuaire alors que loprateur, qui se trouve lautre bout de la ligne, est considr comme tant le
serveur. Loprateur consulte une base de donnes afin de rpondre la demande du client. Dans un systme
informatique, loprateur est remplac par un programme qui consulte une base de donnes. La partie client est un
ensemble de fonctions de bibliothque pouvant contacter lapplication distante ayant accs la base de donnes. Le
DNS qui a t tudi prcdemment est un exemple de service dannuaire.
Le protocole NIS a t dvelopp au milieu des annes 80 par la socit Sun Microsystem dsireuse de rsoudre le
problme de gestion dun grand nombre de stations sous UNIX. Lorsque les fonctionnalits de TCP/IP ont t ajoutes
aux systmes UNIX, les administrateurs ont prouv des difficults de gestion des fichiers /etc/hosts et /etc/passwd.
Ajouter un systme dans un rseau comptant plus de 100 htes et grer les utilisateurs correspondants devenait
problmatique. Pour le fichier /etc/hosts, le DNS a t invent et pour la gestion centralise des informations relatives
aux utilisateurs, NIS a t dvelopp. A lorigine NIS tait galement appel le service des Yellow Pages (YP)
Un problme majeur dans un environnement distribu comportant plusieurs systmes UNIX est de maintenir de
multiples copies des fichiers de mots de passe et de groupes. Dans une architecture distribue, un utilisateur doit avoir
la possibilit dexploiter nimporte quelle machine du rseau pour effectuer son travail. Cela impose un partage la
fois des informations relatives lidentification des utilisateurs mais aussi des donnes manipules par les utilisateurs.
Le partage des donnes des utilisateurs entre les diffrentes machines du rseau est ralis au moyen de NFS. Le
partage des informations dauthentification des utilisateurs est opr au moyen du protocole NIS.
Le protocole NIS distribue une base de donnes qui remplace les informations locales concernant les utilisateurs. Au
lieu de maintenir de multiples copies des fichiers /etc/passwd et /etc/group, ladministrateur doit uniquement maintenir,
dans un tat cohrent, une base de donnes localise sur un serveur NIS. Les machines ayant besoin dinformations
relatives aux utilisateurs doivent simplement se connecter au serveur NIS pour obtenir les renseignements souhaits. Le
couple de services NIS et NFS permet de partager la fois le rpertoire /home et les donnes dauthentification entre les
htes du rseau.

2. Les notions de matres, esclaves et clients.


Le service NIS est construit sur la base dun modle client-serveur. Un serveur NIS est un hte qui contient les fichiers
NIS appels maps. Les clients sont des htes qui requirent des informations de ces maps. Les serveurs sont en plus
subdiviss en serveurs matres et serveurs esclaves. Un serveur matre est lunique propritaire des maps alors que les
serveurs esclaves grent les requtes en provenance des clients mais sans pour autant avoir la possibilit de modifier les
maps. Le serveur matre est responsable de la maintenance et de la distribution des maps vers les esclaves. Cela
signifie que la modification dune map au niveau dun serveur matre une rpercussion au niveau des esclaves.
Un client doit tre configur de manire spcifier la source dinformation employer lors dune requte. Cette
configuration est effectue par lintermdiaire du fichier /etc/nsswitch.conf. Voici un exemple dun tel fichier :
[root@P100 /etc]# cat nsswitch.conf
# Legal entries are:
#
#
nisplus or nis+
Use NIS+ (NIS version 3)
#
nis or yp
Use NIS (NIS version 2), also called YP
#
dns
Use DNS (Domain Name Service)
#
files
Use the local files
#
db
Use the local database (.db) files
#
compat
Use NIS on compat mode
#
hesiod
Use Hesiod for user lookups
#
[NOTFOUND=return]
Stop searching if not found so far
#

J-F Challe

HEPCUT - ISIPH

passwd:
shadow:
group:
hosts:
bootparams:
ethers:
netmasks:
networks:
protocols:
rpc:
services:
netgroup:
publickey:
automount:
aliases:

90

files nisplus nis


files nisplus nis
files nisplus nis
files nisplus nis dns
nisplus [NOTFOUND=return] files
files
files
files
files
files
files
nisplus
nisplus
files nisplus
files nisplus

Lentre hosts du fichier /etc/nsswitch.conf contient les valeurs files, nisplus, nis et dns. Lorsquune requte de
conversion dun nom dhte en adresse IP est requise, le fichier /etc/hosts est tout dabord consult. Si le fichier ne
contient pas linformation recherche, la recherche se poursuit au moyen des services NIS+ et NIS. En dautres termes,
un serveur NIS est contact afin de pouvoir exploiter les informations prsentes dans le fichier /etc/hosts du serveur. Si
le serveur NIS ne possde pas linformation recherche, cest au serveur DNS dintervenir. Une entre du fichier
/etc/nsswitch.conf stipule dans quel ordre les services de rsolution de noms doivent tre employs.
Le rseau dune entreprise peut tre compos de deux groupes de machines. Il peut en exister un groupe utilis par les
services administratifs de lentreprise et un autre groupe par le service recherche et dveloppement. Bien que ces deux
groupes de machines soient interconnects par le biais du mme rseau, les politiques de partage dinformations entre
les htes diffrent suivant quune machine appartient lun ou lautre groupe. Pour reflter une diffrence potentielle
de gestion des groupes de machines, NIS propose la notion de domaine. Un doma ine est un ensemble de machines qui
partagent un mme ensemble de maps NIS.

3. Fondements de la gestion NIS.


La gestion NIS inclut la mise en place dun serveur et la configuration des clients. La configuration dun serveur NIS
comporte les actions suivantes :

installation dun nouvel environnement NIS sur les serveurs matre et esclave ;
lancement du dmon ypserv permettant un hte dagir en tant que serveur ;
ajout de nouveaux serveurs esclaves en fonction de la croissance du rseau et des performances souhaites.

La mise en uvre des clients ncessite les tches suivantes :

modification des fichiers de configuration du systme afin de permettre au client de tirer parti des avantages de
NIS ;
lancement du dmon ypbind permettant un client deffectuer des requtes NIS.

3.1. Installation du serveur NIS matre.


Pour quune machine puisse agir en tant que serveur, elle doit imprativement lancer les dmons NIS au dmarrage du
systme. Dans le cas dun serveur NIS, les services dmarrer sont /etc/rc.d/init.d/ypserv et /etc/rc.d/init.d/yppasswdd.
Tout serveur NIS doit grer un domaine. Le nom de ce domaine peut tre fix au moyen de la commande domainname.
Voici un exemple dutilisation permettant de fixer le nom de domaine NIS la valeur doma inenis :
[root@P100 /root]# domainname DOMAINENIS
La commande domainname permet de fixer le nom de domaine tant que le systme nest pas redmarr. Une
mmorisation permanente du nom de domaine ncessite la modification du fichier /etc/sysconfig/network. Il faut
ajouter une entre NISDOMAIN dans ce fichier comme le montre lexemple suivant :

J-F Challe

HEPCUT - ISIPH

91

NETWORKING=yes
HOSTNAME="P100.challe.yi.org"
GATEWAY=212.68.198.209
FORWARD_IPV4=yes
GATEWAYDEV=eth0
NISDOMAIN=DOMAINENIS

Cette mmorisation du nom de domaine NIS peut galement tre ralise au moyen de lutilitaire linuxconf. Il faut
alors choisir Configuration/Rseau/Tches clientes/NIS. Aprs avoir effectu ce choix, une fentre permet dencoder le
nom de domaine NIS.

Mmorisation du nom de domaine NIS.

A prsent, les maps peuvent tre cres de la manire suivante :


[root@P100 sysconfig]# /usr/lib/yp/ypinit -m
Loption m de la commande ypinit indique que ladministrateur souhaite configurer un serveur matre (master).
Si les fichiers ayant donn naissance aux maps sont modifis, il faut recrer les maps. Pour cela, il suffit daller dans le
rpertoire /var/yp qui contient les maps. Ce rpertoire contient galement un fichier Makefile permettant de gnrer
nouveau les maps. Voici un exemple de recration des maps :
[root@P100 yp]# make

3.2. Configuration des clients NIS.


Ds quun serveur NIS est configur, il est permis de mettre en place des clients NIS qui interrogeront le serveur. Il ne
faut jamais configurer des clients NIS aussi longtemps quil nexiste pas au moins un serveur NIS. En effet, la
configuration dun client sans serveur pourrait conduire un plantage des machines clientes.
Aussi bien dans le cas du client que dans celui du serveur, il faut fixer le nom de domaine NIS utiliser. Cette
opration peut tre ralise soit :

en utilisant la commande domainname ;


en ditant le fichier /etc/sysconfig/network ;
en utilisant linuxconf.

Ds que cette opration est ralise, il faut lancer le client NIS par lintermdiaire de la commande :

J-F Challe

HEPCUT - ISIPH

92

[root@P100 root]# /etc/rc.d/init.d/ypbind start


Ds que le client NIS est oprationnel, les rfrences aux fichiers dadministration sont gres de deux manires selon
la configuration du fichier /etc/nsswitch.conf :

la base de donnes NIS remplace les copies locales de certains fichiers ;


certains fichiers sont enrichis des informations provenant du serveur NIS.

Pour que limpression denrichissement soit possible, il faut que le fichier /etc/nsswitch.conf prcise que les copies
locales des fichiers doivent tre consultes avant dexploiter la base de donnes NIS. Cest par exemple le cas pour les
fichiers :

passwd ;
shadow ;
group ;
hosts.

Le partage par NIS des fichiers passwd, shadow et group permet un utilisateur nayant pas de compte sur une machine
de se connecter avec le nom dutilisateur et le mot de passe quil possde au niveau du serveur NIS. En utilisant NIS
conjointement avec le service NFS, des utilisateurs pourront se connecter nimporte quelle machine et exploiter le s
donnes quils possdent dans leur rpertoire.
Le partage du fichier hosts permet de remplacer, dans une certaine mesure, la notion de DNS. Les projets NIS et DNS
ont t dvelopps en parallle. Cela signifie quau dbut de la conception de NIS, le service DNS nexistait pas. Le
service NIS a ds lors t charg de distribuer les informations du fichier hosts de sorte quune seule copie des
informations soit ncessaire.
Le service NIS ne peut cependant pas remplacer compltement les fichiers locaux. En effet, le service NIS nest pas
lanc immdiatement au dmarrage du systme. Il faut donc que les copies locales des fichiers puissent fournir les
renseignements ncessaires au dmarrage du systme avant que le service NIS soit lanc. Si le serveur NIS tombe en
panne, il est ncessaire que les clients puissent toujours assurer un service minimum. Lexistence des fichiers locaux
permet de ne pas interrompre compltement les services de ces machines.

3.3. Ajout dun serveur NIS esclave.


La configuration dun serveur esclave consiste mettre en place une machine qui obtient ses informations partir dun
serveur et qui les fournit ses clients. Un serveur esclave est donc la fois un client et un serveur. Il faut donc
configurer le serveur esclave comme une machine cliente.
Pour que le serveur esclave puisse distribuer des informations NIS, il faut quil possde une copie des bases de donnes
prsentes au niveau du serveur matre. La cration des maps nest donc pas base sur les fichiers locaux mais sur les
maps existants au niveau du serveur. La cration des maps sur un serveur esclave ncessite la commande suivante :
[root@P133 root]# /usr/lib/yp/ypinit s P100.challe.be
Loption s de la commande ypinit indique quil faut crer des maps pour un serveur esclave.
Maintenant que les bases de donnes sont cres au niveau du serveur esclave, celui-ci doit tre en mesure de rpondre
des requtes en provenance des clients. Il faut donc lancer les services serveurs de NIS comme dans le cas dun
serveur matre.
Lorsquun client NIS se prsente sur le rseau, il obtient la liste des serveurs pouvant rpondre ses questions. A ce
moment, le serveur matre ne diffuse pas linformation indiquant la prsence dune nouvelle machine serveur. Il faut
ajouter cette liste le nom du nouveau serveur en ditant le fichier /var/yp/ypservers du serveur matre comme le
montre la session interactive suivante :
[root@P100 yp]# cat ypservers
P100.challe.be
P133.challe.be
[root@P100 yp]# make

J-F Challe

HEPCUT - ISIPH

93

La liste des serveurs disponibles fait partie de la base de donnes NIS. Une modification du fichier ypservers doit donc
tre suivie dune reconstruction des maps au moyen de la commande make.

4. Les commandes-clients.
Les utilisateurs de systmes fonds sur NIS ont la possibilit dinteragir avec la base de donnes au moyen de
diffrentes commandes.

4.1. ypmatch.
La commande ypmatch est une commande grep pour les maps NIS. Cette commande recherche une chane dans une
map et imprime les donnes correspondantes.
Le premier paramtre de la commande ypmatch est la chane rechercher et le second paramtre est le nom de la map
dans laquelle il faut effectuer la recherche. Voici un exemple dutilisation de la commande ypmatch :
[jfc@p200 jfc]$ ypmatch jfc passwd
jfc:$1$RTbs4X0mVLTKq2A0CQnysr0:500:500:Jean-Francois Challe:/home/jfc:/bin/bash
[jfc@p200 jfc]$ ypmatch isec1 hosts
212.68.194.200 isec1
[jfc@p200 jfc]$

4.2. ypcat.
La commande ypcat est lquivalent de la commande cat. Cette commande permet de visualis er le contenu dune map.
Le paramtre de la commande est donc le nom dune map. Voici un exemple dexcution de la commande ypcat :
[jfc@p200 jfc]$
127.0.0.1
212.68.194.201
127.0.0.1
127.0.0.1
212.68.194.203
212.68.245.203
212.68.194.200
127.0.0.1
212.68.198.209
212.68.194.202

ypcat hosts
P100.challe.be
isec2
P100.challe.be
P100.challe.be
isec4
jmb
isec1
P100.challe.be
gateway
isec3

P100

localhost.localdomain

localhost

P100
P100

localhost.localdomain
localhost.localdomain

localhost
localhost

P100

localhost.localdomain

localhost

4.3. ypwhich.
La commande ypwhich permet de connatre ladresse IP du serveur NIS actuellement employ par un client. Voici un
exemple dutilisation de cette commande :
[jfc@p200 jfc]$ ypwhich
192.168.1.1
La commande ypwhich avec loption x permet de connatre lensemble des maps disponibles :
[jfc@p200 jfc]$
Use "ethers"
Use "aliases"
Use "services"
Use "protocols"
Use "hosts"
Use "networks"
Use "group"
Use "passwd"

J-F Challe

ypwhich
for map
for map
for map
for map
for map
for map
for map
for map

x
"ethers.byname"
"mail.aliases"
"services.byname"
"protocols.bynumber"
"hosts.byname"
"networks.byaddr"
"group.byname"
"passwd.byname"

HEPCUT - ISIPH

94

4.4. yppasswd.
Lorsquun utilisateur souhaite changer de mot de passe, il ne doit plus utiliser la commande passwd mais la commande
yppasswd pour que les modifications soient effectues au niveau du serveur.

J-F Challe

HEPCUT - ISIPH

95

IX. LPD.
1. Introduction.
Les imprimantes connectes un systme Linux sont gnralement branches par lintermdiaire du port parallle.
Chaque port parallle du systme correspond un device dans le rpertoire /dev. Le premier port parallle est /dev/lp0,
le second /dev/lp1 et le troisime /dev/lp2.
Si une imprimante est branche sur le premier port parallle (/dev/lp0), il est possible de dclencher limpression en
envoyant directement des informations vers le priphrique. Voici un exemple dune telle opration :
[root@P100 /root]# cat ess.c > /dev/lp0
Procder de la sorte pour imprimer un document est de loin la plus mauvaise mthode. Durant tout le processus
dimpression, lutilisateur na pas la possibilit deffectuer dautres travaux. De plus, dautres utilisateurs nauront pas
la possibilit dimprimer tant que le port est en cours dutilisation par un autre processus.
Comme la majorit des systmes dexploitation dignes de ce nom, Linux possde la notion de spool dimpression. Cela
permet aux utilisateurs de soumettre leurs travaux au spooler qui se chargera dimprimer le document correctement.
Cette technique permet un partage de la ressource dimpression sans y imposer un accs exclusif.
Sous UNIX, le dmon LPD (Line Printer Daemon) est le serveur dimpression pour les utilisateurs locaux et distants. Il
gre les diffrentes imprimantes ainsi que leurs files dattente respectives.

2. Le fichier /etc/printcap.
Lorsque LPD est lanc, il lit le fichier /etc/printcap pour dcouvrir les imprimantes existantes. Ce fichier dfinit les
imprimantes et leurs caractristiques. Configurer ce fichier est la partie la plus dlicate du travail car lanalyseur qui
exploite ce fichier est trs tatillon et la syntaxe des paramtres du fichier est particulirement obscure. La plupart des
problmes de syntaxe et de lecture du fichier peuvent tre vits en suivant quelques rgles :

commencer chaque entre par un nom dimprimante la premire colonne du fichier. Aucun espace ne doit
prcder le premier nom dune imprimante. Plusieurs noms dimprimante peuvent tre utiliss la condition
quils soient spars par le caractre |. Lune des entres doit absolument porter le nom lp. Si plusieurs
imprimantes sont connectes, ce nom doit tre affect limprimante par dfaut ;
les entres du fichier printcap peuvent tre rdiges sur plusieurs lignes la condition que soit utilis le
caractre dchappement \ la fin de chaque ligne et en commenant toute nouvelle ligne par une tabulation.
Aucun espace ne doit se trouver avant le caractre \. De plus, le caractre suivant \ doit obligatoirement tre un
retour de chariot ;
tout champ, autre que le nom de limprimante, commence et se termine par le caractre deux-points. Le
caractre prcdent \ ou suivant une tabulation doit tre le caractre deux-points.

Les paramtres de configuration utiliss dans le fichier /etc/printcap dcrivent les caractristiques de limprimante. Le
dmon LPD besoin de connatre ces caractristiques afin de communiquer avec limprimante. Les paramtres, cods
sur deux caractres, peuvent gnralement tre affects dune valeur. La syntaxe des paramtres varie lgrement en
fonction du type de la valeur affecte. Les paramtres sont de trois types :

boolen : toutes les valeurs de ce type sont par dfaut faux. Spcifier une valeur boolenne active sa
fonction. Ces paramtres sont spcifis en utilisant leur nom. Par exemple, :rc: active les mesure de scurit
pour les utilisateurs distants ;
numrique : il est permis daffecter une valeur numrique certains paramtres. Par exemple, :br#9600 fixe la
vitesse de communication avec une imprimante srie ;
chane de caractres : certains paramtres peuvent utiliser une valeur sous la forme dune chane de caractres.
Par exemple, :rp=laserjet: dfinit le nom dune imprimante distante.

Les serveurs dimpression nont en gnral quune ou deux imprimantes directement connectes. Toutes les autres
dfinies dans le fichier /etc/printcap sont probablement des imprimantes distantes.

J-F Challe

HEPCUT - ISIPH

96

Voici un exemple de fichier /etc/printcap :


[root@P100 /etc]# cat printcap
seikosha|lp:\
:sd=/var/spool/lpd/seikosha:\
:mx#0:\
:sh:\
:lp=/dev/lp0:
hp4:\
:sd=/var/spool/lpd/hp4:\
:mx#0:\
:sh:\
:rm=192.168.1.192:\
:rp=:
Dans cet exemple, limprimante par dfaut seikosha est connecte au port lpt1 de lordinateur alors que limprimante
hp4 est distante. Le paramtre sd dfinit lemplacement du rpertoire destin la mmorisation des travaux
dimpression. Ce rpertoire doit appartenir au super-utilisateur du systme. Le paramtre mx fixe la taille maximale
des fichiers qui peuvent tre imprims. La valeur 0 indique quaucune limite nest fixe. Dans le cas o une valeur
diffrente de zro est indique, elle est exprime en kilo bytes. Le paramtre sh indique que les pages den-tte ne
doivent pas tre imprimes. En labsence de ce paramtre boolen, chaque impression est prcde dune page dentte contenant le nom de lutilisateur qui a lanc limpression du document. Dans le cas dune imprimante locale, il faut
spcifier le priphrique employer. Le paramtre lp prend pour valeur une chane de caractres indiquant le chemin
daccs la ressource dimpression. Dans le cas dune imprimante distante, il faut prciser le nom ou ladresse IP de la
machine qui possde limprimante. Dans cet exemple, limprimante HP laserjet 4 Mplus dispose dun kit jet direct
mulant un grand nombre de protocoles dont LPD. Le dmon LPD de la machine UNIX est alors capable denvoyer les
travaux dimpression au dmon LPD de limprimante. Le paramtre rp permet dindiquer le nom de limprimante
distante utiliser.

3. Scurit avec LPD.


Lorsquun hte ne dispose pas dimprimante, il peut tre intressant de le configurer pour quil puisse exploiter le
service dimpression dune autre machine. Le fichier /etc/printcap du client doit reflter lutilisation dune imprimante
distante. En supposant que lhte P200.challe.be soit un client du service dimpression de lhte P100.challe.be, voici
le fichier /etc/printcap de lhte P200.challe.be :
[root@p200 /etc]# cat printcap
lp:\
:sd=/var/spool/lpd/lp:\
:mx#0:\
:sh:\
:rm=P100.challe.be:\
:rp=seikosha:
Le paramtre rm prcise que le serveur dimpression est P100.challe.be alors que le paramtre rp dfinit le nom de
limprimante employer au niveau du serveur. Bien que lhte p200.challe.be utilise la file dimpression dun serveur,
il faut nanmoins y dfinir un rpertoire pour la file dattente des travaux dimpression. Cette configuration permet au
client daccepter des demandes dimpression mme lorsque le serveur nest pas disponible. Il faut donc crer le
rpertoire /var/spool/lpd/lp au niveau du client au moyen de la commande suivante :
[root@p200 /etc]# mkdir /var/spool/lpd/lp
Si un travail dimpression est soumis au serveur, il refusera deffectuer lopration car le dmon LPD utilise le modle
de scurit de machine fiable. Il est courant de permettre le partage dune imprimante sans accorder aucun privilge au
serveur dimpression. Pour cela, LPD utilise le fichier /etc/hosts.lpd. Une machine digne de confiance, dclare dans
ce fichier ne peut accder quaux imprimantes. Voici le contenu du fichier /etc/hosts.lpd du serveur dimpression :
[root@P100 /etc]# cat hosts.lpd
P200.challe.be

J-F Challe

HEPCUT - ISIPH

97

4. Utilisation de LPD.
4.1. Envoyer une requte dimpression.
Les documents imprimer sont envoys au dmon dimpression via la commande lpr (Line Printer Remote). La
commande lpr possde un grand nombre darguments, mais en gnral, on donne juste le nom de limprimante ainsi que
le fichier imprimer. Voici un exemple denvoi dune requte dimpression vers limprimante hp4 :
[root@P100 /etc]# lpr -P hp4 printcap
Sans le paramtre P, la commande lpr envoie la requte dimpression vers limprimante par dfaut portant le nom lp.

4.2. Gestion du dmon dimpression.


La commande lpc (Line Printer Control Program) est utilise par ladministrateur pour contrler le fonctionnement du
systme dimpression. Pour chaque imprimante configure dans le fichier /etc/printcap, la commande lpc peut tre
employe pour :

activer ou dsactiver une imprimante ;


activer ou dsactiver une file dimpression ;
changer lordre des requtes dans la file dattente ;
dterminer le statut des imprimantes.

Sans argument prcis, la commande lpc entre en mode interactif. Par contre, si des arguments sont spcifis, la
commande lpc interprte le premier comme tant une commande et les autres comme tant des paramtres. Voici la
liste des commandes reconnues par lpc :

abort {all | printer } : arrte le dmon dimpression immdiatement ;


clean {all | printer } : efface les fichiers temporaires qui ne peuvent pas tre imprims ;
disable {all | printer } : dsactive une file dattente. A ce moment, plus aucuns travaux ne peuvent tre soumis
cette file via la commande lpr ;
down {all | printer }message : dsactive une file dattente, dsactive limpression et place le message dans le
fichier status correspondant. Cela permet dinformer les utilisateurs des raisons pour lesquelles limpression
est dsactive ;
enable {all | printer } : active la file dattente. Cela permet la commande lpr de soumettre des requtes ;
exit : termine une session interactive ;
restart {all | printer } : essaie de relancer le dmon dimpression ;
start {all | printer } : active limpression et relance la file dattente ;
status {all | printer } : affiche le statut des dmons et des files dattente ;
stop {all | printer } : dsactive un dmon aprs que la requte en cours dimpression soit termine ;
topq printer [ jobnum ] [ user ] : place une requte en tte de la file dattente ;
up {all | printer } : relance tout.

4.3. Consultation de la file dattente.


La commande lpq (Line Printer Queue) examine le rpertoire contenant la file dattente et affiche ltat des requtes
spcifies ou de tous les travaux associs un utilisateur. Si lpq est appel sans argument, elle retourne ltat de tous
les travaux dans la file dattente.
Cette commande accepte plusieurs options :

-P :indique une imprimante particulire. Sans cette options, limprimante par dfaut est consulte. Tous les
autres arguments sont interprts comme des noms dutilisateurs ou des numros de travaux ;
-l : toute linformation disponible sur un travail est affiche.

Voici un exemple dutilisation de la commande lpq :

J-F Challe

HEPCUT - ISIPH

[root@P100 /root]# lpq


lp is ready and printing
Rank
Owner
Job Files
1st
jfc
29
ex.doc
1st
jfc
28
ess.c

98

Total Size
23552 bytes
53 bytes

4.4. Suppression dun requte.


La commande lprm (Line Printer ReMove) supprime des travaux de la file dattente dune imprimante. La commande
lprm accepte plusieurs options :

-P :indique quelle imprimante est concerne. Sans cela, cest limprimante par dfaut qui est employe ;
- : un seul signe moins permet de supprimer toutes les requtes appartenant un utilisateur. Si lutilisateur est
root, tous les travaux sont supprims ;
utilisateur : la commande lprm tente de supprimer tous les travaux de lutilisateur ou des utilisateurs spcifis.
Cette option nest exploitable que par le super-utilisateur ;
job # : un utilisateur peut supprimer des travaux de manire individuelle en prcisant leur numro.

Voici un exemple dutilisation de cette commande :


[root@P100 /root]# lprm dfA028P100.challe.be dequeued
cfA028P100.challe.be dequeued
dfA029P100.challe.be dequeued
cfA029P100.challe.be dequeued

J-F Challe

HEPCUT - ISIPH

99

X. DHCP.
1. Introduction.
Le protocole DHCP (Dynamic Host Configuration Protocol) permet de configurer dynamiquement des clients.
Lorsquun hte doit tre connect un rseau, il faut configurer :

ladresse IP ;
le masque de sous-rseau ;
ladresse de diffusion ;
ladresse de la passerelle ;
ladresse du serveur DNS ;
le nom de la machine.

Le protocole DHCP permet daffecter une adresse de trois manires :

allocation manuelle. Ladministrateur garde un contrle total sur les adresses en les affectant de manire
spcifique aux clients ;
allocation automatique. Le serveur DHCP affecte de faon permanente une adresse partir dun ensemble
dadresses disponibles. Ladministrateur nintervient pas de faon prcise dans laffectation dune adresse un
client ;
allocation dynamique. Le serveur affecte une adresse un client DHCP pour une dure limite. Cette dure
de vie limite de ladresse est appele un bail. Le client peut renvoyer ladresse au serveur nimporte quel
moment. Le serveur rclame automatiquement ladresse aprs lexpiration du bail.

Lallocation dynamique est utile dans les rseaux de grande taille o un grand nombre de machines sont ajoutes et
supprimes. Les adresses inutilises retrouvent lensemble des adresses libres sans que les utilisateurs ou
ladministrateur naient intervenir. Lallocation dynamique permet un rseau davoir une utilisation maximale dun
ensemble rduit dadresses. Cela est particulirement recommand dans le cas de systmes mobiles qui passent dun
sous-rseau lautre et qui doivent donc se voir raffecter une nouvelle adresse chaque endroit o ils sont connects.
Lallocation dynamique dadresses ne fonctionne pas sur tous les systmes (les serveurs de noms, de courrier
lectronique, etc ). En dautres termes, tous les systmes accessibles au moyen dune rsolution de nom ne peuvent
recevoir une adresse dynamiquement. Ces systmes doivent donc tre configurs manuellement.
Laffectation dadresse dynamique a principalement une rpercussion sur le DNS. Le DNS est ncessaire pour faire
correspondre un nom de machine une adresse IP. Il ne peut pas jouer son rle si les adresses IP changent sans arrt
sans quil ne soit tenu au courant de ces modifications. Pour faire en sorte que laffectation dadresses dynamiques
fonctionne avec tous les systmes, il est ncessaire davoir un nouveau type de DNS qui puisse tre mis jour
dynamiquement par le serveur DHCP. Une norme de DNS dynamique est actuellement ltude.

2. Le fichier dhcpd.conf.
La configuration du serveur DHCP figure dans le fichier /etc/dhcpd.conf. Ce fichier de configuration contient les
instructions indiquant au serveur quels sous-rseaux et quelles machines il sert ainsi que les informations de
configuration quil leur fournit.

2.1. Configuration de base.


Le fichier /etc/dhcpd.conf est constitu de deux parties, une dfinissant les paramtres globaux et lautre dfinissant des
paramtres spcifiques un sous-rseau.
Voici un exemple de fichier /etc/dhcpd.conf :

J-F Challe

HEPCUT - ISIPH

100

default-lease-time 86400;
get-lease-hostnames true;
option subnet-mask 255.255.255.0;
option domain-name "challe.be";
option domain-name-servers 192.168.1.1;
option lpr-servers 192.168.1.192;
option interface-mtu 1500;
subnet 192.168.1.0 netmask 255.255.255.0 {
option routers 192.168.1.1;
option broadcast-address 192.168.1.255;
range 192.168.1.200 192.168.1.240;
}
Loption default-lease-time indique au serveur, la dure en seconde dun bail dadresse. Lorsque le nombre de secondes
prcis expirera, ladresse sera rcupre par le serveur. Loption get-lease-hostnames demande au serveur DHCP de
fournir un nom de machine chaque fois quun client reoit une adresse dynamique. De plus, le nom de machine est
obtenu via le DNS. Ce paramtre est un boolen. Sil est positionn faux, ce qui est la valeur par dfaut, le client
reoit une adresse mais pas de nom. Rechercher le nom de machine pour toute adresse dynamique possible allonge
sensiblement le temps de rponse une demande dattribution dune adresse.
Les cinq lignes suivantes du fichier /etc/dhcpd.conf dfinissent des valeurs qui seront utilises par les clients pour
mener bien leur processus de configuration. La signification de ces options est clairement indique par leur nom.
Dans cet exemple, les clients recevront :

le masque de sous-rseau 255.255.255.0 ;


le nom de domaine challe.be ;
ladresse du serveur DNS 192.168.1.1
ladresse du serveur dimpression 192.168.1.192 ;
le MTU de 1500.

Linstruction subnet dfinit le rseau que le serveur DHCP va servir. Lidentit de chaque rseau est dtermine par
ladresse et le masque du rseau. Ces deux lments sont requis par cette instruction. Les options et les paramtres
dfinis dans une instruction subnet ne sappliquent quau sous-rseau et ses clients. Les options utilises dans cet
exemple indiquent aux clients, ladresse du router et ladresse de diffusion utiliser.
Le paramtre range dfinit lintervalle des adresses disponibles pour lallocation dynamique dadresses. Ce range se
trouve toujours associ une instruction subnet. Lintervalle de ce paramtre est dfini par les adresses de dbut et de
fin. La premire est ladresse la plus petite qui puisse tre automatiquement affecte et la seconde est ladresse la plus
grande pouvant tre automatiquement affecte.
Une instruction subnet peut contenir plusieurs clauses range. Cela permet dadapter la configuration du serveur DHCP
la structure dun rseau dj existant. Dans un grand nombre de sites, un serveur DHPC est ajout une configuration
existante. Dans ce cas, les adresses fixes ont dj t attribues. Le protocole DHCP doit donc sadapter lexistant.

2.2. Lancement du serveur DHCP.


Le script /etc/rc.d/init.d/dhcpd permet de lancer automatiquement le serveur DHCP lors du dmarrage du systme. Ce
script contient simplement la commande de lancement du dmon dhcpd. Par dfaut, ce programme tente de servir tous
les rseaux auxquels la machine est connecte. Dans le cas dun serveur quip de plusieurs interfaces de connexion
un rseau, cela peut avoir des rpercussions dsastreuses. Supposons quune machine soit quipe de deux cartes
Ethernet, lune connecte Internet et lautre un rseau local. Le dmon DHCPD va donc tenter de servir la fois le
rseau local mais galement Internet. Avec la configuration de lexemple prcdent, le lancement du dmon DHCPD
chouera car aucune instruction subnet ne dfinit la gestion de la partie internet. Une solution simple au problme
consiste ajouter une nouvelle clause subnet pour grer la partie Internet. Une telle configuration peut rendre la
connexion Internet inutilisable. En effet, le serveur DHCP se substitue au serveur DHCP du fournisseur daccs
Internet, ce qui peut naturellement perturber un certain nombre de clients. En raction, le fournisseur daccs risque de
dsactiver la connexion Internet de tout client faisant tourner un serveur DHCP. Afin dactiver le serveur DHCP pour
le rseau local, il suffit de modifier le script /etc/rc.d/init.d/dhcpd en spcifiant linterface rseau qui doit tre gre.
Voici un exemple de modification du fichier /etc/rc.d/init.d/dhcpd :

J-F Challe

HEPCUT - ISIPH

101

[root@P100 init.d]# cat dhcpd


. /etc/rc.d/init.d/functions
. /etc/sysconfig/network
[ ${NETWORKING} = "no" ] && exit 0
[ -f /usr/sbin/dhcpd ] || exit 0
[ -f /etc/dhcpd.conf ] || exit 0
RETVAL=0
case "$1" in
start)
echo -n "Starting dhcpd: "
daemon /usr/sbin/dhcpd eth1
RETVAL=$?
echo
[ $RETVAL -eq 0 ] && touch /var/lock/subsys/dhcpd
;;
stop)
echo -n "Shutting down dhcpd: "
killproc dhcpd
RETVAL=$?
echo
[ $RETVAL -eq 0 ] && rm -f /var/lock/subsys/dhcpd
;;
restart|reload)
$0 stop
$0 start
RETVAL=$?
;;
status)
status dhcpd
RETVAL=$?
;;
*)
echo "Usage: dhcpd {start|stop|restart|status}"
exit 1
esac
exit $RETVAL
Dans cet exemple, la commande de lancement du serveur DHCP possde le paramtre eth1 afin de prciser au dmon
quil ne doit grer que cette interface.

2.3. Utilisation des adresses physiques.


Un serveur DHCP peut tre configur pour attribuer une adresse IP spcifique un hte prcis. Chaque interface rseau
possde une adresse physique univoque appele adresse MAC. Sur base de cette adresse fixe, le serveur DHCP peut
retourner une adresse IP qui sera toujours la mme. De cette manire, un client DHCP peut obtenir une adresse IP fixe.
Voici un exemple de configuration dune adresse IP fixe :
[root@P100 jfc]# cat dhcpd.conf
get-lease-hostnames true;
option subnet-mask 255.255.255.0;
option domain-name "challe.be";
option domain-name-servers 192.168.1.1;
option lpr-servers 192.168.1.192;
option interface-mtu 1500;
host P2366 {
hardware ethernet 00:60:97:8E:8A:A6;
fixed-address 192.168.1.80;
option routers 192.168.1.1;
}

J-F Challe

HEPCUT - ISIPH

102

Le problme pos par ce type de configuration consiste en la connaissance des adresses MAC. La commande arp
permet de connatre la liste de toutes les adresses MAC. Voici un exemple dexcution de cette commande :
[root@P100 /etc]# arp
Adresse
powerpc.challe.be
P3450.challe.be
P2450.challe.be
P200.challe.be
P133.challe.be
P2300.challe.be
gateway
P166PLUS.challe.be
P2366.challe.be
HP4.challe.be

J-F Challe

TypeMap
ether
ether
ether
ether
ether
ether
ether
ether
ether
ether

AdresseMat
00:05:02:B4:5F:5B
00:00:C0:F8:B2:A4
00:10:4B:DC:A2:8E
00:80:C8:C1:3A:78
00:00:C0:64:21:67
00:00:C0:E1:20:67
00:00:77:95:5D:54
00:00:C0:BC:F1:A3
00:60:97:8E:8A:A6
00:60:B0:13:6F:D5

Indicateurs
C
C
C
C
C
C
C
C
C
C

Iface
eth1
eth1
eth1
eth1
eth1
eth1
eth0
eth1
eth1
eth1

HEPCUT - ISIPH

103

XI. Samba.
1. Introduction.
Samba est une suite dapplications UNIX utilisant le protocole SMB (Server Message Block). La plupart des systmes
dexploitation, comme Windows et OS/2, prennent en charge la communication rseau laide de SMB. Grce ce
protocole, Samba permet des serveurs Unix de communiquer avec des produits Microsoft Windows. Ainsi, une
machine UNIX dote de Samba peut elle tre vue comme un serveur de rseau Microsoft, en proposant les services
suivants :

le partage dun ou de plusieurs systmes de fichier ;


le partage dimprimantes installes sur le serveur et sur ses clients ;
l assistance des clients dans lexploration laide du voisinage rseau ;
la prise en charge de lauthentification de clients se connectant un domaine Windows ;
la prise en charge de la rsolution de noms WINS.

La suite Samba sarticule autour de deux dmons UNIX fournissant des ressources partages des clients SMB du
rseau. Ces dmons sappellent :

smbd : qui permet le partage de fichiers et dimprimantes sur un rseau SMB et prend en charge
lauthentification et les droits daccs des clients SMB ;
nmbd : qui est associ au service WINS et prend en charge la rsolution de noms.

Plusieurs raisons peuvent conduire la mise en uvre dun serveur Samba, elles sont :

la recherche des fonctionnalits offertes par un serveur Windows NT sans tre dans lobligation den acheter
un ;
le souhait de crer un espace commun pour les donnes des utilisateurs afin de remplacer un serveur Windows
par un serveur UNIX ou inversement ;
le souhait de partager des imprimantes entre des stations de travail sous Windows et sous UNIX ;
la ncessit daccder des fichiers rsidant sous Windows depuis un serveur UNIX.

Supposons dans la suite de cette section que lon dispose dun rseau o la machine de nom P100 est un serveur Samba
faisant partie du groupe PRIVE.

1.1. Partage dun service disque.


Si tout est parfaitement configur, le serveur Samba, P100, est visible dans le voisinage rseau dune machine cliente.
Loutil voisinage rseau affiche les noms de tous les ordinateurs appartenant au groupe PRIVE.

Liste des ordinateurs du groupe PRIVE.

J-F Challe

HEPCUT - ISIPH

104

Sous Windows, les noms dhtes combinent des majuscules et des minuscules. La casse na pas dimportance pour les
noms dhtes : dans les crans daffichage et les rsultats des commandes, P100 et p100 par exemple, font rfrence au
mme ordinateur.
En cliquant deux fois sur licne P100, Windows affiche les ressources partages appartenant ce serveur. Cette action
tablit un partage avec le serveur et lui demande la liste des partages proposs, cest--dire les ressources de fichiers et
les ressources dimprimantes. Dans le cas prsent, le serveur compte les imprimantes hp4 et seikosha ainsi que les
partages de disques ftp et jfc.

Ressources disponibles sur le serveur P100.

Cet exemple montre que grce Samba, un client Windows considre le serveur UNIX comme tant un serveur SMB.
Il est prsent sous la forme dune ressource accessible comme nimporte quelle autre.
Loption connecter un lecteur rseau de lexplorateur Windows permet dattribuer une lettre de lecteur un rpertoire
rseau recens. La lettre de lecteur devient un raccourci pratique auquel se rfrent les applications pour accder au
dossier rseau concern. Il est permis dy stocker des donnes, dy installer et dy lancer des programmes.

Connexion du lecteur rseau jfc du serveur P100.

Le paramtre Chemin de la bote de dialogue connecter un lecteur rseau est une autre manire de reprsenter un
rpertoire dune machine rseau. Dans le monde Windows, cette notation obit la convention UNC (Universal
Naming Convention).
Une fois le lecteur rseau dfini, Windows et ses logiciels se comportent comme si le rpertoire tait un disque dur
local. Cette unit peut alors recevoir les applications acceptant un fonctionnement multi-utilisateurs. Lillustration
suivante montre lunit rseau comme si elle faisait partie des priphriques de stockage appartenant au client. Licne
particulire du lecteur H : indique quil sagit dune unit rseau et non pas dune unit locale.

J-F Challe

HEPCUT - ISIPH

105

Rpertoire rseau associ la lettre de lecteur H.

1.2. Partage dune imprimante.


On peut remarquer que limprimante seikosha apparat sous les partages disponibles du serveur P100. Cela signifie que
le serveur UNIX possde une imprimante pouvant tre partage par les diffrents clients SMB du groupe de travail. Les
requtes quenvoient les clients limprimante sont diriges dans une file dattente dimpression du serveur UNIX et
sont traites dans lordre de rception.
Du ct Windows, la configuration dune imprimante gre par Samba est plus aise que celle dun partage de disque.
Pour installer le pilote dune imprimante sur le client rseau, il suffit de cliquer deux fois sur licne de limprimante
puis didentifier le constructeur et le modle appropris. Windows est alors capable de formater correctement toute
information envoye limprimante rseau, puis daccder cette dernire comme sil sagissait dune imprimante
locale. Limprimante rseau est identifie par une icne particulire dans la fentre Imprimantes de Windows.

Imprimantes disponibles sur un client Windows.

J-F Challe

HEPCUT - ISIPH

106

1.3. Visualisation des ressources sous UNIX.


Samba est considr par UNIX comme un ensemble de dmons. Les messages quils gnrent peuvent tre consults
dans les fichiers de log. Le serveur SMB est configur partir du fichier /etc/smb.conf. Pour connatre laction des
dmons, il suffit demployer la commande smbstatus :
[root@P100 /root]# smbstatus
Samba version 2.0.6
Service
uid
gid
pid
machine
---------------------------------------------jfc
jfc
jfc
1760
p2366
ftp
jfc
jfc
1760
p2366
jfc
jfc
jfc
2001
p2450

(192.168.1.80) Wed Oct 24 15:17:18 2001


(192.168.1.80) Wed Oct 24 15:18:22 2001
(192.168.1.40) Wed Oct 24 15:53:41 2001

No locked files
Share mode memory usage (bytes):
1048464(99%) free + 56(0%) used + 56(0%) overhead = 1048576(100%) total

1.4. Prise en main dun rseau SMB.


1.4.1. Matrise de NetBIOS.
En 1984, IBM dveloppa une interface de programmation simple pour la gestion de ses ordinateurs, appele NetBIOS
(Network Basic Input/Output). Linterface NetBIOS garantissait aux applications, une structure rudimentaire de
connexion et de partage des donnes avec dautres ordinateurs.
Linterface de programmation NetBIOS peut tre considre comme un ensemble dextensions rseau au BIOS
standard. Avec le BIOS, tous les appels de bas niveau sappliquent directement aux couches matrielles de lordinateur.
Cependant, NetBIOS devait initialement changer des instructions avec des ordinateurs en rseaux. Lacheminement
des demandes entre ordinateurs ncessitait donc un protocole de transport de bas niveau.
En 1985, IBM dfinissait ce protocole, intgr linterface de programmation NetBIOS et baptis NetBEUI (NetBIOS
Extended User Interface). NetBEUI est destin aux rseaux locaux de petite taille et permet dattribuer un nom unique
dune longueur maximale de 15 caractres chaque ordinateur. Par rseau de petite taille, on entend rseau de moins
de 255 machines, considr en 1985, comme une limite absolue.
Le protocole NetBEUI tait trs rpandu parmi les applications rseau, il en tait de mme pour celles sexcutant sous
Windows for Workgroups. Une version NetBIOS sur protocole IPX fut ensuite propose. Par la suite, les protocoles
choisis par la communaut Internet tant TCP/IP, NetBIOS fut port sur la pile TCP/IP et est appel NBT (NetBIOS
over TCP/IP).
1.4.2. Attribution dun nom.
Dans le monde NetBIOS, chaque ordinateur qui se connecte au rseau annonce son nom. Ce processus sappelle
lenregistrement de noms. Deux machines ne peuvent utiliser le mme nom, afin dviter tout problme de
communication avec les autres machines. Pour cela, deux approches sont possibles :

utiliser un serveur de noms NetBIOS ;


permettre chaque machine du rseau de dfendre son nom ;

Par ailleurs, le rseau doit avoir le moyen de rsoudre un nom NetBIOS en une adresse IP. Cette fois encore, deux
approches sont possibles :

J-F Challe

chaque machine transmet son adresse IP lorsquelle entend une demande de diffusion de son nom NetBIOS ;
le serveur de noms NetBIOS transforme le nom en adresse IP.

HEPCUT - ISIPH

107

1.4.3. Anatomie dun nom.


Les noms NetBIOS existent dans un espace de noms plat, ce qui signifie quils ne sont suivis daucun lment. Un nom
unique identifie chaque ordinateur.
Il nest pas surprenant que tous les noms DNS valides soient galement des noms NetBIOS valides. En fait, le nom
DNS dun serveur Samba est souvent repris comme nom NetBIOS. Si, par exemple, une machine sappelle
P100.challe.be, son nom NetBIOS a de fortes chances dtre P100.
Avec NetBIOS, une machine avertit non seulement les autres de sa prsence mais signale galement les types de
services quelle propose. Par exemple, P100 indique quelle nest pas uniquement un poste de travail mais aussi un
serveur de fichiers. Pour cela, un seizime octet, appel type de ressource, est adjoint au nom de la machine.
Le type de ressource dune longueur dun octet, indique quun service unique est fourni par une machine. Dans le
rsultat des commandes Windows, il figure souvent entre chevrons (<>) aprs le nom NetBIOS.
Pour connatre les noms enregistrs par une machine NBT spcifique, il suffit de lancer la commande Windows
NBTSTAT.
C:\>NBTSTAT -a P100
Connexion au rseau local:
Adresse IP du noeud : [192.168.1.80] ID d'tendue : []
Table de noms NetBIOS des ordinateurs distants
Nom
Type
tat
--------------------------------------------P100
<00> UNIQUE
Inscrit
P100
<03> UNIQUE
Inscrit
P100
<20> UNIQUE
Inscrit
PRIVE
<00> GROUP
Inscrit
PRIVE
<1B> UNIQUE
Inscrit
PRIVE
<1E> GROUP
Inscrit
Adresse MAC = 00-00-00-00-00-00
Le protocole SMB exploite galement le concept de groupe permettant aux machines de senregistrer sur le rseau.
Lexemple de NBTSTAT montre que le serveur Samba P100 est galement membre du groupe PRIVE

1.5. Implmentations par Microsoft.


1.5.1. Domaines Windows.
Un groupe de travail est un ensemble dordinateurs SMB rsidant dans le mme sous-rseau et qui sont rattachs au
mme groupe SMB. Un domaine Windows en est une extension. Il sagit dun groupe de travail de machines SMB
ayant pour particularit dtre gr par un serveur jouant le rle de contrleur de domaine. Un domaine Windows
dpourvu de contrleur de domaine nest quun groupe de travail.
Un contrleur de domaine (serveur de connexions) utilise deux protocoles distincts : lun pour les communications avec
les ordinateurs Windows 95/98/Me, lautre pour les communications avec les ordinateurs Windows NT/2000. Samba
implmente le premier protocole mais ne prend pas encore en charge le protocole des machines Windows NT sauf dans
la version 2.1.
Le contrleur de domaine est le centre nerveux dun domaine Windows. Les contrleurs de domaine sont chargs de
lauthentification des utilisateurs. Lauthentification est un processus consistant accorder ou refuser laccs une
ressource partage sur une autre machine un utilisateur.
Chaque contrleur de domaine confie ladministration des authentifications la SAM (Security Account Manager) qui
gre une base de donnes centralise de mots de passe.

J-F Challe

HEPCUT - ISIPH

108

Dans un domaine Windows, lorsquun client non authentifi demande laccs aux partages dun serveur, ce dernier
interroge le contrleur de domaine pour savoir si lutilisateur est authentifi ou non. Dans laffirmative, le serveur
tablit une connexion de session porteuse des droits daccs enregistrs pour le service et lutilisateur. Dans la ngative,
la connexion est refuse. Lorsque le contrleur de domaine authentifie un utilisateur, un jeton spcial est renvoy au
client de sorte que lutilisateur nait pas sidentifier nouveau pour accder aux autres ressources du domaine. A cette
tape, lutilisateur est connect au domaine.
La redondance est un concept important des domaines Windows. Le contrleur actif dun domaine sappelle le PDC
(Primary Domain Controller). Un domaine peut comporter un ou plusieurs BDC (Backup Domain Controller). Un
BDC prend le relais dun PDC en cas de dysfonctionnement ou de dfaillance de celui-ci. Les BDC synchronisent
rgulirement leurs donnes SAM avec le PDC.
Certains aspects sont communs un groupe de travail Windows et un domaine Windows puisque le concept de
domaine Windows na pas volu depuis Windows NT 3.51 et que les domaines Windows doivent tre compatibles
avec les groupes de travail Windows for Workgroups 3.1. En fait, un domaine Windows est un groupe de travail
Windows comprenant un ou plusieurs contrleurs de domaine.
A partir de la version 2.1, Samba peut tre configur comme PDC. Par contre, il est incapable de remplir la fonction de
BDC tant donn le caractre ferm du protocole Microsoft employ pour la synchronisation des donnes SAM.
Lvolution du produit Samba provient de la volont dune quipe deffectuer du reverse engineering de manire
dcouvrir les secrets de fabrication de Microsoft.
1.5.2. Exploration.
Lexploration est la rponse la question formule par les utilisateurs : Quelles sont les machines connectes au
rseau ? . Les utilisateurs doivent connatre le nom de lordinateur auquel ils souhaitent se connecter, puis doivent
entrer le chemin daccs la ressource avant dexplorer,.
Il existe donc deux types dexploration :

l'exploration dune liste de machines ;


lexploration des ressources partages dune machine spcifique.

Pour que lexploration de premier type soit possible, un ordinateur doit tenir jour une liste des machines accessibles
sur le rseau. Lordinateur dtenant cette liste est appel lexplorateur principal local et la liste est appele la liste
dexploration. Lorsquun ordinateur doit explorer le rseau, il demande la liste dexploration lexplorateur principal
local.
Pour explorer les ressources dune machine, lutilisateur doit sy connecter. Si lauthentification russit, la machine
sollicite revoie la liste des ressources auxquelles lutilisateur a le droit daccder.
Dans un groupe de travail Windows, chaque serveur doit annoncer non seulement sa prsence lexplorateur principal
local aprs lenregistrement de son nom NetBIOS, mais aussi son dpart lorsquil est mis hors tension. Toute machine
Windows (2000, NT, 95, 98, Me) peut jouer le rle dexplorateur principal local. Comme le contrleur de domaine,
lexplorateur principal local peut, en cas de panne, tre assist dun ou de plusieurs explorateurs secondaires. Pour
assurer une fluidit de fonctionnement, les explorateurs secondaires synchronisent rgulirement leur liste dexploration
avec lexplorateur principal.
Lorsque lexplorateur principal sarrte, il convient dlire un nouvel explorateur principal. Lalgorithme dlection
permet plusieurs ordinateurs de choisir lequel dentre eux devient explorateur principal, les autres tant alors
explorateurs secondaires. Une lection peut tre provoque nimporte quel moment. Lors de la mise en route dun
ordinateur, il signale sa prsence et provoque une lection au cours de laquelle lexplorateur principal peut tre remis en
cause.
1.5.3. Le service WINS.
Le service WINS est limplmentation par Microsoft dun serveur de noms NetBIOS. De plus, WINS est dynamique :
lors de sa premire connexion, un client doit fournir ses noms dhte, son adresse et son groupe au serveur WINS local.

J-F Challe

HEPCUT - ISIPH

109

Ce dernier mmorise ces informations tant que le client met priodiquement jour son enregistrement WINS, signifiant
ainsi quil est toujours connect au rseau.
Bien quil soit possible de configurer plusieurs serveurs WINS qui doivent cooprer entre eux, ce mcanisme devient
trs rapidement lourd et peu efficace. Lidal est de codifier au niveau de chaque client, ladresse dun serveur WINS
qui sera le mme pour tous.

2. Configuration de Samba.
2.1. Fichier de configuration de base pour Samba.
La configuration de Samba exige la modification du fichier /etc/samba/smb.conf. Ce fichier est lunique source de
renseignements ncessaires la configuration de Samba.
Le logiciel Samba peut tre configur de manire telle que le serveur fasse partie dun groupe de travail ou dun
domaine. Voici un exemple de configuration de Samba pour un groupe de travail :
[root@p200 samba]# cat smb.conf
[global]
workgroup = PRIVE
[test]
comment = Test et mise au point de Samba
path = /home/tst
read only = no
guest ok = yes
Ce fichier de configuration appelle, test le partage du serveur Samba. Ce dernier devient galement membre du groupe
PRIVE, auquel doit appartenir chaque client. Pour que les clients puissent utiliser le partage test, il faut quil
corresponde un rpertoire du systme UNIX. Dans cet exemple, le rpertoire UNIX correspondant est /home/tst.
Ladministrateur doit donc crer ce rpertoire veillant, par exemple, permettre tous le monde dy accder pour y lire
et y crire des donnes. Voici les commandes excuter pour le rpertoire cr et pour lui donner les permissions
daccs suffisantes :
[root@p200 /root]# mkdir /home/tst
[root@p200 /root]# chmod 777 /home/tst
La clause read only = no indique Samba de laisser un accs en lecture et en criture aux donnes du partage. Si la
valeur de cette clause avait t fixe yes, personne naurait pu crire dinformations dans le partage.
Sous Windows 98 ainsi qu partir de Windows NT 4.0 Service Pack 3, les mots de passe qui transitent sur le rseau
sont crypts. Par dfaut, Samba sattend recevoir les mots de passe en clair. Dans ce type denvironnement, il faut
que Samba soit configur pour recevoir des informations chiffres. Voici le fichier /etc/samba/smb.conf modifi pour
accepter les mots de passe crypts :
[root@p200 samba]# cat smb.conf
[global]
workgroup = PRIVE
encrypt passwords = yes
[test]
comment = Test et mise au point de Samba
path = /home/tst
read only = no
guest ok = yes
Dans ce cas de figure, le mot de passe ne transite plus en clair sur le rseau. En ralit, le client chiffre linformation et
la transmet au serveur qui la comparera avec sa version crypte. Si les deux informations sont identiques, le client aura
accs la ressource. Cela signifie que le serveur Samba doit disposer dune version crypte des mo ts de passe. La
commande smbpasswd permet dajouter un utilisateur la base de donnes des noms/mots de passe. Cette base de
donnes sera consulte par le serveur pour dterminer si un client peut accder aux informations. Voici un exemple de
commande qui ajoute un utilisateur UNIX existant la base de donnes :

J-F Challe

HEPCUT - ISIPH

[root@p200 /root]# smbpasswd a jfc


New SMB passwd:
Retype new SMB password:
Startsmbfilepwent_internal: unable to open file /etc/samba/smbpasswd.
Aucun fichier ou rpertoire de ce type
Added user jfc.

110

Error was

Le message derreur gnr par le systme nest pas important : la premire fois quun utilisateur est ajout la base de
donnes, cela provoque la cration du fichier des mots de passe qui nexistait pas.
Une autre technique permet des clients Windows NT et Windows 2000 de se connecter un serveur Samba sans que
ce dernier soit dans lobligation de chiffrer les mots de passe. La base de registre de Windows contient une entre
imposant le chiffrement des mots de passe. Il suffit de modifier cette entre pour indiquer que les mots de passe doivent
transiter en clair sur le rseau. Lentre de la base de registre modifier dans le cas de Windows NT est :
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Rdr\Parameters]
"EnablePlainTextPassword"=dword :00000001
Dans le cas de Windows 2000, lentre de la base de registre modifier est :
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\LanmanWorkStation
\Parameters]"EnablePlainTextPassword"=dword :00000001

2.2. Dmarrage du serveur Samba.


Dans le cas de la distribution Linux RedHat, le dmon Samba est lanc par le script /etc/rc.d/init.d/smb.
Ladministrateur doit donc simplement configurer la machine Linux pour quelle lance le serveur Samba au dmarrage.
Il peut aussi employer la commande suivante :
[root@p200 /root]# /etc/rc.d/init.d/smb start

3. Partages de disque.
3.1. Structure du fichier de configuration.
Le fichier /etc/samba/smb.conf est constitu de rubriques qui, lexception de la rubrique [global], dsignent chacune
un partage de disque ou dimprimante accessibles aux clients ouvrant une session avec le serveur Samba. Les autres
lignes sont des options propres au partage considr. Le contenu dune rubrique est compris entre le titre entre crochets
et le titre suivant ou, sil sagit de la dernire rubrique, la fin du fichier de configuration. Chaque option de
configuration se prsente sous la forme dun nom, suivi du signe dgalit, lui mme suivi de la valeur de loption.
Le fichier de configuration peut tre modifi lors de lexcution du dmon Samba. Par dfaut, Samba vrifie le fichier
de configuration toutes les 60 secondes. Sil y trouve des modifications, celles-ci prennent immdiatement effet.
Certaines modifications ne sont pas directement prises en compte par les clients. Par exemple, des modifications
apportes un partage en cours dutilisation ne le seront que lorsque le client sen dconnecte et sy reconnecte. Les
paramtres propres au serveur comme le nom du groupe de travail nentrent pas en vigueur immdiatement. Cela vite
que les clients actifs soient dconnects brusquement ou rencontrent des problmes daccs lorsquune session est
ouverte.

3.2. Les sections du fichier de configuration.


3.2.1. La section global.
Bien que facultative, la section global figure virtuellement dans chaque fichier de configuration de Samba. Les options
dfinies dans cette section sappliquent tous les autres partages comme si le contenu de la section y tait copi.
Cependant, une option dfinie dans la section global peut gnralement tre reprise et modifie dans une autre
section. En dautres termes, ce comportement est identique au masquage dune variable globale par une variable locale
de mme nom.

J-F Challe

HEPCUT - ISIPH

111

Prenons lexemple de loption read only. Si elle est dfinie la fois dans la section global et dans la section test, cest la
dclaration de la section test qui prvaut.
[root@p200 samba]# cat smb.conf
[global]
workgroup = PRIVE
encrypt passwords = yes
read only = yes
[test]
comment = Test et mise au point de Samba
path = /home/tst
read only = no
3.2.2. La section homes.
Si un client tente de se connecter un partage ne figurant pas dans le fichier smb.conf, Samba recherche un partage
homes dans le fichier de configuration. Sil en trouve un, le nom de partage non identifi est assimil un nom
dutilisateur UNIX qui est alors recherch dans la base des mots de passe du serveur Samba. Si le nom dutilisateur
existe, le serveur considre que le client est un utilisateur UNIX tentant de se connecter son rpertoire personnel. Cela
signifie que Samba cre dynamiquement des partages qui ne figurent pas dans le fichier de configuration.
3.2.3. La section printers.
Si un client souhaite accder un partage qui nest pas dfini dans le fichier de configuration et que ce nom ne
correspond pas un utilisateur UNIX, Samba vrifie sil sagit dune imprimante. Pour ce faire, il recherche le nom du
partage dans le fichier /etc/printcap.
Dans le cas o un partage homes est dclar dans le fichier de configuration, il est inutile dassocier un partage chaque
imprimante du systme. Au besoin, Samba consulte la dclaration des imprimantes UNIX pour les mettre la
disposition des clients.

3.3. Configuration du serveur.


Voici un exemple de fichier de configuration analyser :
[root@p200 samba]# cat smb.conf
[global]
netbios name = P200
server string = serveur Samba de lhote P200
workgroup = PRIVE
encrypt passwords = yes
[test]
comment = Disque de donnees
volume = exemple-de-partage
path = /home/tst
writeable = yes
Ce fichier de configuration est simple : il enregistre sur le rseau NBT, le serveur Samba sous le nom NetBIOS P200.
La machine appartient au groupe de travail PRIVE et propose aux clients une description du serveur sous la forme de la
phrase : serveur Samba de lhote P200 .
Loption netbios name a pour valeur par dfaut le nom de lhte du serveur Samba, cest--dire la premire partie du
nom DNS complet de la machine. Par exemple, une machine dont le nom DNS est P200.challe.be aura P200 pour nom
NetBIOS par dfaut. Cette option permet de redfinir le nom NetBIOS de la machine dans le fichier de configuration.
Le paramtre server string dfinit le commentaire figurant ct du nom du serveur dans le voisinage rseau et dans le
gestionnaire dimpression Microsoft Windows.
Le paramtre workgroup dfinit le groupe de travail dans lequel le serveur Samba se prsente. Les clients souhaitant
accder aux partages du serveur Samba doivent appartenir au mme groupe de travail NetBIOS.

J-F Challe

HEPCUT - ISIPH

112

Le partage test est associ au rpertoire /home/tst et possde un libell descriptif ainsi quun nom de volume. Le
partage est accessible en criture, ce qui permet aux utilisateurs dy inscrire des donnes. Par dfaut, un partage est
dfini en lecture seule. Pour modifier cette proprit, il faut spcifier writeable = yes. Les options read only et
writeable produisent le mme effet. Dfinir loption read only = yes revient dfinir writeable = no. Ces options sont
donc des alternatives possibles pouvant tre considres comme des synonymes inverss.
Loption path indique le chemin daccs la racine du partage de fichiers ou celui de limpression. Il est permis de
choisir nimporte quel rpertoire du serveur Samba la condition que le propritaire du processus dispose dun accs en
lecture et en criture ce rpertoire. Sil concerne un partage dimpression, le chemin daccs doit pointer vers un
rpertoire temporaire dans lequel les fichiers transitent avant dtre dirigs vers le spool de limprimante

3.4. Les options rseau.


Lorsque Samba est excut sur une machine connecte plusieurs rseaux, des options de scurit en fonction du
rseau client peuvent tre mises en place. Voici un exemple de fichier smb.conf :
[root@p100 etc]# cat smb.conf
[global]
netbios name = P100
server string = serveur Samba de lhote P100
workgroup = PRIVE
encrypt passwords = yes
hosts allow = 192.168.1.
hosts deny = 192.168.1.50
interfaces = 192.168.1.1/255.255.255.0
bind interfaces only = yes
[test]
comment = Disque de donnees
volume = exemple-de-partage
path = /home/tst
writeable = yes
Les options hosts allow et hosts deny fournissent un moyen de scurit pour autoriser ou pour refuser les connexions
des htes en fonction de leurs adresses IP. Dans cet exemple, la valeur 192.168.1. est attribue loption hosts allow.
Le point terminal signifie que ladresse nest pas complte mais quelle englobe tous les htes du sous-rseau
192.168.1.0. Cependant, laccs lhte 192.168.1.50 est interdit par loption hosts deny. Voici les rgles
dapplication des options hosts allow et hosts deny :

si aucune option allow ou deny ne figure dans le fichier de configuration, Samba autorise les connexions
partir de toutes les machines autorises par le systme lui-mme ;
les options hosts allow et hosts deny figurant dans la section global sappliquent tous les partages mme si
des options de substitution sont dfinies pour certains dentre eux ;
si seule loption hosts allow est associe un partage, seuls les htes spcifis ont accs celui-ci. Tous les
autres sont exclus ;
si seule une option hosts deny est associe un partage, celui-ci est accessible par toutes les machines ne
figurant pas dans la liste ;
si une option hosts allow et une option hosts deny sont dfinies, lhte doit figurer dans la liste des htes
autoriss et pas dans la liste des htes exclus pour pouvoir accder au partage. Autrement, il na pas accs.

En standard, Samba nenvoie des donnes que par lintermdiaire de linterface rseau principale. Pour transmettre des
donnes via plusieurs interfaces, il faut indiquer la liste complte de interfaces. Si Samba est connect aux sous-rseaux
192.168.1.0 et 212.68.198.208, il faut indiquer, en paramtre de loption interfaces, la liste de tous les rseaux qui
doivent tre desservis par Samba. Le rseau 212.68.198.208 tant une connexion vers Internet, il est prfrable de
limiter laccs Samba au rseau interne. Cette configuration est ncessaire car rien ne dit que Samba considre
linterface desservant le rseau interne comme interface principale.
Loption bind interfaces only demande Samba de naccepter des messages broadcast quen provenance des rseaux
dfinis dans la clause interfaces. Leffet de cette option est diffrent de celui des options hosts allow et hosts deny qui
empchent des machines de se connecter aux services mais pas de recevoir des messages de diffusion. Loption bind

J-F Challe

HEPCUT - ISIPH

113

interfaces only est un bon moyen dempcher le serveur Samba de recevoir des datagrammes manant dautres sousrseaux et de rduire le nombre de rseaux desservis par Samba.

4. Exploration et partages de disques avancs.


4.1. Lexploration.
Lexploration dsigne la fonction et lopration permettant dexaminer les serveurs et les partages disponibles sur le
rseau. Sur des clients Windows, le rsultat de la recherche de ressources partages saffiche dans le dossier voisinage
rseau. Pour afficher les ressources dimprimante ou de partage disque, lutilisateur na plus qu cliquer sur licne
reprsentant le serveur.
Pour afficher la liste des serveurs disponibles sur le rseau, lutilisateur peut aussi excuter la commande net view
linvite Windows. Voici un exemple dexcution de cette commande :
C:\>net view
Nom de serveur

Remarque

--------------------------------------------------\\P100
P100
\\P200
serveur Samba de l'hote P200
\\P2366
\\P3450
La commande s'est termine correctement.
4.1.1. Blocage de lexploration.
Loption boolenne browseable permet de ne pas afficher un partage dans le voisinage rseau. Bien quun partage
standard de disque soit le plus souvent affich, loption browseable est utile au cas o le partage est homes. Ce partage,
regroupant les rpertoires personnels des utilisateurs, est souvent protg en exploration de sorte que ses ressources ne
soient pas consultables, ce qui nempche pas chaque utilisateur daccder son rpertoire personnel chaque fois quil
se connecte au partage. Voici un exemple de limitation de lexploration :
[root@p200 samba]# cat smb.conf
[global]
netbios name = P200
server string = serveur Samba de l'hote P200
workgroup = PRIVE
encrypt passwords = yes
[test]
comment = Disque de donnees
volume = exemple-de-partage
path = /home/tst
writeable = yes
browseable = yes
[homes]
comment = Home directory
read only = no
browseable = no
4.1.2. Election dexplorateurs.
Une machine dun rseau conserve la liste de toutes les machines actives. Cette liste est appele liste dexploration et le
serveur qui la gre est appel explorateur local principal. Ce dernier met continuellement la liste jour et la diffuse la
demande, sur le rseau.
Un ordinateur devient explorateur local principal lissue dune lection. Cette lection peut avoir lieu tout moment.
Le serveur Samba peut provoquer une lection pour de multiples raisons et notamment pour faire en sorte dtre
toujours lexplorateur principal ou, au contraire, de ne jamais le devenir.

J-F Challe

HEPCUT - ISIPH

114

Toute machine candidate une lection doit diffuser des informations concernant :

la version du protocole dlection ;


le systme dexploitation de la machine ;
la dure de la session du client ;
le nom dhte du client.

Pour le moment, toutes les machines utilisent la mme version du protocole dlection. Ce paramtre nentre donc pas
en ligne de compte pour dterminer llu. A chaque version du systme dexploitation correspond une valeur entire
comme le montre le tableau suivant :
Systme
Windows NT Server 4.0
Windows NT Server 3.51
Windows NT Workstation 4.0
Windows NT Workstation 3.51
Windows 98
Windows 95
Windows 3.1 for Workgroups

Valeur
33
32
17
16
2
1
1

En fonction des informations diffuses, chaque ordinateur du rseau reoit une valeur qui dtermine son rle :
Rle
Contrleur principal de domaine
Client WINS
Explorateur principal favori
Explorateur principal actif
Explorateur en attente
Explorateur secondaire actif

Valeur
128
32
8
4
2
1

En conclusion, si ladministrateur du serveur UNIX souhaite que Samba joue le rle dexplorateur local principal, il
suffit de modifier le paramtre os level et de lui donner la valeur 34.
Un serveur Windows NT jouant le rle de contrleur principal de domaine possde une valeur cache lui permettant,
dans certaines conditions, de jouer le rle dexplorateur local principal. Cette valeur est appele bit de lexplorateur
principal favori. Sur un serveur Samba, ce bit peut tre positionn laide de loption preferred master. Voici un
exemple de fichier de configuration forant Samba tre un explorateur local principal :
[root@p200 samba]# cat smb.conf
[global]
netbios name = P200
server string = serveur Samba de l'hote P200
workgroup = PRIVE
encrypt passwords = yes
os level = 33
preferred master = yes
[test]
comment = Disque de donnees
volume = exemple-de-partage
path = /home/tst
writeable = yes
browseable = yes
[homes]
comment = Home directory
read only = no
browseable = no

J-F Challe

HEPCUT - ISIPH

115

4.2. Diffrences entre systmes de fichiers.


La compatibilit entre les systmes de fichiers UNIX et non UNIX constitue lune des principales difficults auxquelles
Samba est confront. Le serveur Samba doit grer :

les liens symboliques ;


les fichiers cachs ;
les permissions sur les fichiers.

4.2.1 Droits daccs et fichiers cachs.


Dans certains cas, un fichier doit absolument tre cach ou inaccessible lutilisateur. Dans dautres cas, le fichier ne
devra pas tre visible lors de la consultation dun rpertoire mais sont laccs devra tre possible. Sous Windows, les
attributs associs un fichier dfinissent les proprits daccs et daffichage. Sous UNIX, le masquage dun fichier
dans la liste dun rpertoire se fait par lajout dun point devant son nom. Les fichiers de configuration ou de
paramtres ne sont pas visibles lors de lexcution dun ls ordinaire. Linterdiction daccs ncessite, quant elle, la
gestion des permissions sur les fichiers et/ou les rpertoires.
Loption hide dot file permet, selon sa valeur, de cacher des fichiers dont le nom commence par un point. En ralit,
ces fichiers seront considrs par Windows comme affects de lattribut cach. Cela nempche pas un utilisateur
Windows de configurer son explorateur de fichiers pour quil affiche tous les fichiers y compris ceux affects de
lattribut cach. Voici un exemple de configuration permettant de masquer les fichiers dbutant par le caractre point :
[root@p200 samba]# cat smb.conf
[global]
netbios name = P200
server string = serveur Samba de l'hote P200
workgroup = PRIVE
encrypt passwords = yes
os level = 33
preferred master = yes
[test]
comment = Disque de donnees
volume = exemple-de-partage
path = /home/tst
writeable = yes
browseable = yes
[homes]
comment = Home directory
read only = no
browseable = no
hide dot files = yes
Loption hide files permet daffiner le comportement en dfinissant un maque de noms de fichiers cacher. Par
exemple, le fichier mbox contenant les courriers lectroniques reus par lutilisateur peut tre cach. En guise
dexemple il serait galement possible de masquer tous les fichiers dont le nom dbute par la lettre D (majuscule ou
minuscule). Voici le contenu du fichier de configuration permettant deffectuer cette opration :
[root@p200 samba]# cat smb.conf
[global]
netbios name = P200
server string = serveur Samba de l'hote P200
workgroup = PRIVE
encrypt passwords = yes
os level = 33
preferred master = yes
[test]
comment = Disque de donnees
volume = exemple-de-partage
path = /home/tst

J-F Challe

HEPCUT - ISIPH

116

writeable = yes
browseable = yes
[homes]
comment = Home directory
read only = no
browseable = no
hide dot files = yes
hide files = /mbox/D*/
Pour empcher laffichage des fichiers, quelle que soit loption de visualisation choisie dans lexplorateur de fichiers, il
faut utiliser loption veto files. De mme syntaxe que loption hide files, elle permet de dfinir la liste des fichiers qui
seront toujours masqus lutilisateur. Par exemple, les fichiers dbutant par le caractre point devraient toujours tre
masqus quelle que soit loption daffichage des rpertoires. Voici une configuration permettant ce comportement :
[root@p200 samba]# cat smb.conf
[global]
netbios name = P200
server string = serveur Samba de l'hote P200
workgroup = PRIVE
encrypt passwords = yes
os level = 33
preferred master = yes
[test]
comment = Disque de donnees
volume = exemple-de-partage
path = /home/tst
writeable = yes
browseable = yes
[homes]
comment = Home directory
read only = no
browseable = no
veto files = /.*/
Les fichiers masqus par loption veto files deviennent purement et simplement inaccessibles par les clients Windows.

4.3. Permissions et attributs des fichiers sous MS-DOS et sous UNIX.


Sous Windows, les attributs dun fichier sont :

lecture seule ;
systme ;
cach ;
archive ;

Thoriquement, Samba est capable de traiter les attributs Windows en affectant une signification particulires aux droits
sur les fichiers UNIX. Exprimentalement, la version 2.2.2 de Samba nest capable de grer que les attributs lecture
seule et archive. Lattribut lecture seule consiste retirer le droit dcriture au propritaire du fichier alors que lattribut
archive consiste ajouter le droit dexcution au propritaire du fichier

5. Utilisateur, scurit et domaines.


La configuration des utilisateurs avec le serveur Samba soulve un certain nombre de problmes. Les administrateurs
prouvent souvent des difficults dauthentification. Avant tout, il convient de prciser que si les clients de Samba
excutent Windows 98 ou Windows NT, il faut configurer la prise en charge des mots de passe crypts sur le serveur
Samba. Sans cela, il sera impossible dtablir des connexions entre les clients et le serveur.

J-F Challe

HEPCUT - ISIPH

117

5.1. Utilisateurs et groupes.


Le moyen le plus simple de configurer un utilisateur client consiste lui crer un compte UNIX ainsi quun rpertoire
personnel sur le serveur et informer Samba de lexistence de cet utilisateur. Cette dmarche est celle applique
jusqu prsent dans ce chapitre.
Lutilisation de ressources informatiques, par un groupe de personnes , conduit au partage des donnes. Plusieurs
utilisateurs souhaitent se partager des donnes. Lutilisation dun partage commun plusieurs personnes est une
rponse ce problme. Loption valid users peut recevoir une liste de noms dutilisateurs autoriss accder aux
informations. Voici lapplication de ce concept au partage test :
[root@p200 samba]# cat smb.conf
[global]
netbios name = P200
server string = serveur Samba de l'hote P200
workgroup = PRIVE
encrypt passwords = yes
os level = 34
preferred master = yes
[test]
comment = Disque de donnees
volume = exemple-de-partage
path = /home/tst
writeable = yes
browseable = yes
valid users = jfc rc
[homes]
comment = Home directory
read only = no
browseable = no
Lexploitation de cette mthode pour partager des informations entre un grand nombre dutilisateurs a ses limites. Il
devient rapidement malais dadministrer la liste des utilisateurs autoriss. Le systme UNIX offre la notion de groupe
dutilisateurs. Lorsque ladministrateur dsire autoriser laccs une ressource par plusieurs utilisateurs, il lui suffit de
crer un groupe dans lequel seront placs tous les utilisateurs devant se partager des donnes et de dclarer au niveau de
la configuration de Samba quun partage peut tre utilis par les membres de ce groupe. Pour rappel, voici la squence
de commandes aptes crer un groupe et y placer des utilisateurs :
[root@p200 samba]# groupadd staff
[root@p200 samba]# usermod -G staff jfc
[root@p200 samba]# usermod G staff rc
Le fichier de configuration de Samba doit contenir, au niveau de loption valid users, le nom du groupe dutilisateurs
autoriss accder aux donnes. Voici un exemple de cette configuration :
[root@p200 samba]# cat smb.conf
[global]
netbios name = P200
server string = serveur Samba de l'hote P200
workgroup = PRIVE
encrypt passwords = yes
os level = 34
preferred master = yes
[test]
comment = Disque de donnees
volume = exemple-de-partage
path = /home/tst
writeable = yes
browseable = yes
valid users = @staff

J-F Challe

HEPCUT - ISIPH

118

Certains utilisateurs ou groupes dutilisateurs devraient ne pas tre autoriss se connecter via Samba. En
consquence, loption globale invalid users permet dinterdire lutilis ation des services de Samba certains utilisateurs.
Voici un exemple permettant dinterdire lutilisateur root dexploiter Samba :
[root@p200 samba]# cat smb.conf
[global]
netbios name = P200
server string = serveur Samba de l'hote P200
workgroup = PRIVE
encrypt passwords = yes
os level = 34
preferred master = yes
invalid users = root
[test]
comment = Disque de donnees
volume = exemple-de-partage
path = /home/tst
writeable = yes
browseable = yes
valid users = @staff
[homes]
comment = Home directory
read only = no
browseable = no
Des partages peuvent tre dclars accessibles uniquement sous lidentit dun utilisateur par dfaut. La configuration
dorigine de Samba fixe lutilisateur anonyme nobody alors que loption guest account permet de spcifier une autre
identit.
Supposons que ladministrateur souhaite laisser un accs libre au site ftp de la machine UNIX. Tous les fichiers
prsents dans le rpertoire /home/ftp doivent appartenir lutilisateur ftp. De plus, seul cet utilisateur a les autorisations
suffisantes pour tout effectuer dans ce rpertoire. Voici un exemple de configuration dun partage sous lidentit dun
utilisateur par dfaut :
[root@p200 samba]# cat smb.conf
[global]
netbios name = P200
server string = serveur Samba de l'hote P200
workgroup = PRIVE
encrypt passwords = yes
os level = 34
preferred master = yes
invalid users = root
[test]
comment = Disque de donnees
volume = exemple-de-partage
path = /home/tst
writeable = yes
browseable = yes
valid users = @staff
[homes]
comment = Home directory
read only = no
browseable = no
[ftp]
path=/home/ftp
comment = site ftp de l'hote P200
writeable = yes
guest ok = yes
guest account = ftp
guest only = yes

J-F Challe

HEPCUT - ISIPH

119

Loption guest account fixe lidentit de lutilisateur invit alors que les options guest ok et guest only permettent
respectivement daccepter un accs au partage par un utilisateur invit et uniquement par celui-ci. Lide de partage
total du rpertoire ftp nest pas ncessairement un exemple mettre en uvre mais elle peut tre applique dautres
partages moins sensibles.

5.2. Scurit des authentifications.


Afin de permettre aux utilisateurs daccder aux partages, Samba les authentifie au moyen dun nom dutilisateur et
dun mot de passe. La faon dont Samba traite le mot de passe, et par consquent la stratgie quil adopte pour
lauthentification des utilisateurs, est dtermine par loption de configuration security. Le serveur Samba prend en
charge les quatre niveaux de scurit suivants :

scurit de niveau partage. Chaque partage dun groupe de travail dispose dun ou de plusieurs mots de passe.
Quiconque connat lun deux peut se connecter au partage ;
scurit de niveau utilisateur. Chaque partage dun groupe de travail est configur pour autoriser laccs de
certains utilisateurs. A chaque nouvelle connexion, le serveur Samba vrifie si les utilisateurs et leurs mots de
passe sont rpertoris. Dans laffirmative, il autorise laccs au partage ;
scurit de niveau serveur. Dans cette stratgie de scurit semblable la prcdente, le serveur Samba valide
les utilisateurs et leurs mots de passe laide dun serveur SMB spar avant daccorder laccs au partage ;
scurit de niveau domaine. Samba authentifie les utilisateurs auprs du PDC dont il est membre. Aprs
authentification, lutilisateur reoit un jeton spcial qui lui donne accs nimporte quel partage du domaine,
la condition de possder les permissions appropries. Grce au jeton, le PDC na pas valider le mot de passe
chaque fois que lutilisateur tente daccder un autre partage du domaine.

5.2.1. Scurit de niveau partage.


Dans ce modle, un ou plusieurs mots de passe sont associs chaque partage. Ne limitant pas des utilisateurs
spcifiques les accs aux partages, ce modle diffre radicalement des autres modes de scurit. Pour accder un
partage, il suffit de possder le mot de passe appropri. Certains partages en ont plusieurs, lun accordant un accs
uniquement en lecture, lautre autorisant un accs en lecture et en criture.
Ce modle de scurit correspond loption security = share. Il est uniquement employ sous Windows 95/98. Bien
que Samba puisse tre configur de cette manire, cela constitue de nos jours, une mthode dsute peu scurise.
Cest pour cette raison que ltude de cette technique ne sera pas pousse plus loin.
5.2.2. Scurit de niveau utilisateur.
La scurit de niveau utilisateur est le mode conseill par les dveloppeurs de Samba. Dans ce mode, chaque partage
est manipul par des utilisateurs distincts, dont les mots de passe figurent dans la base de donnes des mots de passe du
serveur Samba. Pour restreindre laccs dun partage des utilisateurs spcifiques, il est permis demployer loption
valid users qui a t tudie prcdemment. Les utilisateurs rpertoris au niveau de cette option peuvent se connecter
au partage la condition de fournir le mot de passe conforme celui figurant dans la base de donnes. Aprs
lidentification initiale, lutilisateur na plus fournir nouveau son mot de passe pour accder au partage. Ce type de
configuration (security = user) correspond au mode de fonctionnement par dfaut de Samba.
5.2.3. Scurit de niveau serveur.
Elle est similaire la scurit au niveau utilisateur. Dans ce mode (security = server), Samba dlgue lauthentification
un serveur de mots de passe SMB, qui est gnralement un autre serveur Samba ou un serveur Windows NT jouant le
rle de PDC. Lorsquun client demande se connecter un partage, le serveur doit vrifier que lutilisateur est autoris
le faire. Pour cela, il tente de valider le mot de passe en soumettant les informations dauthentification au serveur de
mots de passe SMB via un protocole spcifique. Si le mot de passe est accept, une session est tablie avec le client.
La configuration dune scurit serveur exige de prciser lemplacement du ou des serveurs de mots de passe SMB dans
le fichier de configuration de Samba. Loption password server accepte une liste de serveurs qui seront exploits
successivement pour valider laccs dun utilisateur. Le nom du serveur de mots de passe doit correspondre au nom
NetBIOS et pas au nom DNS. Si le premier serveur disponible refuse le mot de passe, le connexion choue car Samba
ne soumet pas la requte un autre serveur. Voici un exemple dune telle configuration :

J-F Challe

HEPCUT - ISIPH

120

[root@p200 samba]# cat smb.conf


[global]
security = server
password server = P166PLUS
netbios name = P200
server string = serveur Samba de l'hote P200
workgroup = PRIVE
encrypt passwords = yes
os level = 34
preferred master = yes
invalid users = root
[test]
comment = Disque de donnees
volume = exemple-de-partage
path = /home/tst
writeable = yes
browseable = yes
valid users = @staff
[homes]
comment = Home directory
read only = no
browseable = no
5.2.4. Scurit de niveau domaine.
Elle est identique la scurit de niveau serveur, hormis le fait que le serveur Samba soit membre dun domaine
Windows.
Chaque domaine comporte un contrleur, gnralement un serveur Windows NT charg de
lauthentification des mots de passe. Un contrleur de domaine fournit les services dun serveur de mots de passe. Il
rpertorie les noms des utilisateurs et les mots de passe dans le module dauthentification de scurit plus
communment appel module SAM (Security Authentication Module). Voici un exemple de scurit de niveau
domaine (security = domain) :
[root@p200 samba]# cat smb.conf
[global]
security = domain
netbios name = P200
server string = serveur Samba de l'hote P200
workgroup = PRIVE
encrypt passwords = yes
os level = 34
preferred master = yes
invalid users = root
[test]
comment = Disque de donnees
volume = exemple-de-partage
path = /home/tst
writeable = yes
browseable = yes
valid users = @staff
[homes]
comment = Home directory
read only = no
browseable = no
La scurit de niveau domaine permet demployer le mcanisme Windows NT natif, ce qui offre de nombreux
avantages, savoir :

J-F Challe

simplicit de la configuration ;
meilleure intgration des serveurs NT dans le rseau Samba ;

HEPCUT - ISIPH

121

5.2.5. Ajout dun serveur Samba un domaine Windows NT.


Cette opration est aisment ralisable si le domaine NT existe dj. Il faut en premier lieu arrter le serveur Samba,
puis, partir du contrleur principal il faut ajouter le serveur au domaine NT laide de loutil Gestionnaire de serveur
comme le mo ntre lillustration suivante :

Ajout dun ordinateur au domaine.

A laide de la commande smbpasswd, il faut ajouter la machine P200 au domaine NT dont le PDC est P166PLUS.
Voici la syntaxe de la commande employer :
[root@p200 samba]# smbpasswd j DOMPRIVE r P166PLUS
Afin que le serveur Samba soit serveur membre du domaine NT, il faut modifier le fichier de configuration de la
manire suivante :
[root@p200 samba]# cat smb.conf
[global]
netbios name = P200
server string = serveur Samba de l'hote P200
workgroup = DOMPRIVE
security = domain
password server = P166PLUS
encrypt passwords = yes
os level = 34
preferred master = yes
invalid users = root
[homes]
comment = Home directory
read only = no
browseable = no
Le serveur Samba est maintenant configur pour utiliser la scurit de niveau domaine.

5.3. Domaine Windows.


5.3.1. Introduction.
A partir de la version 2.1 de Samba, il est possible de configurer une machine UNIX en un PDC. Pour se connecter au
domaine, lutilisateur doit prsenter un nom et un mot de passe valides au dmarrage. Ces informations sont compares
celles figurant dans la base de donnes du contrleur principal de domaine. Si le couple dinformations saisi nest pas
valide, lutilisateur en est immdiatement averti et il ne peut se connecter au domaine. Aprs une connexion un
domaine, tout utilisateur peut accder nimporte quel partage pour lequel il dispose des droits suffisants. Cet accs

J-F Challe

HEPCUT - ISIPH

122

aux partages nexige pas une nouvelle authentification de la part de lutilisateur. En effet, le PDC revoie un jeton
lordinateur client au moment de lacceptation de louverture dune session. Cela vite de multiplier les consultations
de la base de donnes du PDC lors de chaque connexion une ressource. Ce mcanisme transparent pour lutilisateur
permet de diminuer considrablement le trafic rseau.
5.3.2. Configuration PDC pour des clients Windows NT.
Pour tre contrleur principal de domaine, le dmon Samba doit employer la scurit de niveau utilisateur ainsi que les
mots de passe chiffrs. De plus, lauthentification des utilisateurs doit tre effectue au moment de la demande de
connexion au domaine. Loption boolenne domain logons permet dactiver cette fonctionnalit.
Les diffrents clients Windows doivent avoir un accs une ressource appele netlogon. Cette ressource prive doit
tre protge contre lcriture.
Voici un exemple de fichier de configuration de Samba pour quil devienne PDC :
[root@p200 samba]# cat smb.conf
[global]
netbios name = P200
server string = serveur Samba de l'hote P200
workgroup = DOMPRIVE
security = user
domain logons = yes
encrypt passwords = yes
os level = 34
preferred master = yes
domain master = yes
local master = yes
[netlogon]
comment = Service de connexion au domaine
path = /home/logon
public = no
writeable = no
browseable = no
[homes]
comment = Home directory
read only = no
browseable = no
Tous les clients Windows NT se connectant un PDC font usage de comptes approuvs. Ces comptes permettent un
ordinateur de se connecter au PDC, ce qui permet ce dernier dapprouver toutes les connexions. A tout point de vue,
les comptes dapprobation traits par le serveur Samba sont des comptes dutilisateurs UNIX standard. Le nom de
connexion dun compte dapprobation dune machine est le nom de cette dernire auquel un signe dollar est ajout. Si
la machine Windows NT sappelle P2450, le nom de connexion sera P2450$. Le mot de passe initial du compte est le
nom de la machine en minuscule. Pour crer un compte dapprobation sur le serveur Samba, il faut crer un compte
UNIX avec le nom de la machine et un mot de passe chiffr dans la base de donnes smbpasswd.
Le fichier /etc/passwd doit tre modifi pour y ajouter un nouvel utilisateur. Il nest pas ncessaire demployer la
procdure standard de cration des profiles utilisateurs, lutilisateur ne devant pas avoir de rpertoire personnel ni de
shell associ. Voici un exemple dentre ajouter dans le fichier /etc/passwd :
p2450$:*:1000:900:Compte approbation:/dev/null:/dev/null
Lastrisque signifie que le champ mot de passe est dsactiv. Le dmon Samba stockera le mot de passe dans le fichier
smbpasswd ; de plus aucun utilisateur ne pourra se connecter la machine via telnet en utilisant ce profil. Hormis le
nom de compte, la seule valeur significative est son UID (1000) utilis galement dans la base de mots de passe
chiffrs.
Il faut ensuite ajouter le mot de passe chiffr laide de la commande smbpasswd comme le montre lexemple suivant :

J-F Challe

HEPCUT - ISIPH

123

[root@p200 /root]# smbpasswd -a -m p2450


Added user p2450$.
Loption m indique que le compte dapprobation doit tre gnr. La commande smbpasswd gnre automatiquement
le mot de passe chiffr partir du nom NetBIOS de la machine.
Les clients Windows NT doivent tre configurs pour se connecter au domaine. Cest bote de dialogue rseau qui
permet de raliser cette opration. Il suffit de cliquer sur le bouton modifier de manire changer de domaine. Voici
un exemple de cette manipulation :

Configuration du domaine de connexion dun client Windows NT.

Il ne faut surtout pas cocher la case Crer un compte dordinateur dans le domaine car Samba ne gre pas encore
cette fonctionnalit.

J-F Challe

HEPCUT - ISIPH

124

6. Impression.
Une imprimante raccorde un serveur Samba apparat dans la liste des partages affichs dans le voisinage rseau. Si
le client possde le pilote de priphrique appropri, il peut aisment envoyer des travaux une imprimante connecte
un serveur Samba.
Si le partage printers est dfini dans le fichier /etc/samba/smb.conf, le dmon Samba lit automatiquement le fichier de
dfinition des imprimantes et cre les partages dimpression pour chacune des imprimantes accessibles sous UNIX.
Voici un exemple de configuration :
[root@P100 /etc]# cat smb.conf
[global]
workgroup = PRIVE
server string = P100
encrypt passwords = yes
[homes]
comment = Home Directories
read only = No
browseable = No
[printers]
comment = All Printers
path = /var/spool/samba
print ok = Yes
browseable = No

7. Rsolution de noms.
Avant lapparition de serveurs de noms NetBIOS, la rsolution de noms seffectuait exclusivement par diffusion. Dans
ce mode, pour connatre ladresse dune machine, il suffisait de diffuser son nom sur le rseau et la machine concerne
renvoyait, en principe, linformation. Cette technique nest pas approprie que ce soit pour lexploration ou pour
lenregistrement et la rsolution des noms car elle ne traverse pas aisment un inter-rseau, de plus, elle a tendance
surcharger les rseaux. Pour y remdier, Microsoft propose le service WINS, vritable serveur de noms NetBIOS.
Ladministrateur peut installer un serveur WINS sur une machine et fournir son adresse tous les clients du rseau. En
consquence, la diffrence des diffusions les demandes denregistrement et de rsolution de noms peuvent tre
adresses une seule et mme machine, depuis nimporte quel point du rseau.
Le serveur Samba peut tre configur pour tre un client WINS ou pour tre un serveur WINS.
La configuration dun serveur Samba comme client WINS exige lemploi de loption wins server. Cette option doit
avoir pour valeur ladresse IP de la machine agissant comme serveur WINS.
[root@P100 /etc]# cat smb.conf
[global]
workgroup = PRIVE
server string = P100
encrypt passwords = yes
wins server = 192.168.1.80
[homes]
comment = Home Directories
read only = No
browseable = No
[printers]
comment = All Printers
path = /var/spool/samba
print ok = Yes
browseable = No
Pour que Samba soit serveur WINS, il faut dfinir deux options dans le fichier de configuration. Loption wins support
suffit rendre Samba serveur WINS. Lorsque Samba est serveur WINS, les administrateurs utilisent souvent loption

J-F Challe

HEPCUT - ISIPH

125

name resolver order. Cette option indique lordre des mthodes de rsolution de noms NetBIOS. Quatre mthodes de
rsolution des noms sont possibles :

lmhosts : le fichier LMHOSTS de type LAN Manager est utilis. Ce fichier est semblable au fichier /etc/hosts
si ce nest que les noms sont de type NetBIOS ;
hosts : cet argument indique une mthode de rsolution standard sous UNIX. Cette rsolution stipule quil faut
utiliser le fichier /etc/hosts ou le DNS ou le protocole NIS ou encore une combinaison des trois ;
wins : cet argument impose lemploi du serveur WINS ;
bcast : utilise une mthode de diffusion.

Voici un exemple de configuration de Samba en tant que serveur WINS :


[root@P100 /etc]# cat smb.conf
[global]
wins support = yes
name resolver order = wins lmhosts hosts bcast
workgroup = PRIVE
server string = P100
encrypt passwords = yes
wins server = 192.168.1.80
[homes]
comment = Home Directories
read only = No
browseable = No
[printers]
comment = All Printers
path = /var/spool/samba
print ok = Yes
browseable = No
Lordre dapparition des valeurs au niveau de loption name resolver order indique lordre successif des mthodes qui
sont employes pour rsoudre un nom.

J-F Challe

HEPCUT - ISIPH

J-F Challe

126

HEPCUT - ISIPH

127

XII. APACHE.
1. Introduction.
Lors de laccs un site Web, par exemple http://www.challe.be/doc, un ensemble de donnes sont envoyes via
Internet, la machine disposant de cette adresse IP. Une telle requte appele URL (Universal Resource Locator) est
constitue de trois parties :

une mthode qui dans notre exemple est http. Cela signifie lutilisation du protocole HTTP (HyperText
Transfer Protocol) ;
un nom dhte qui est dans ce cas www.challe.be;
un nom de rpertoire qui est ici doc.

En utilisant un navigateur, cette requte parvient au port 80 de lhte www.challe.be. Le serveur a deux possibilits de
traduction de lURL :

soit par un nom de fichier et en ce cas il doit renvoyer son contenu au client ;
soit sous un nom de programme et renvoyer ses sorties au client.

Dans tous les cas, le serveur doit excuter un serveur Web qui est lcoute du rseau et qui ragit aux requtes qui lui
sont soumissent en renvoyant des messages. Le programme Apache est un serveur Web pouvant fonctionner sur un
grand nombre de systmes dexploitation multitches. Cette caractristique fait dApache le serveur Web le plus utilis.
Au repos, le serveur Apache ne fait rien dautre qucouter les ports TCP des adresses IP indiques dans son fichier de
configuration. Lorsquune requte http se prsente sur un port valide, Apache la reoit et en analyse les en-ttes. Il
applique alors les rgles quil trouve dans le fichier de configuration et agit en consquence.
Le principal contrle exerc sur Apache, par ladministrateur, passe par le fichier de configuration. Ladministrateur
dispose denviron 150 directives infrant sur le comportement dApache.

2. Premier lancement du serveur Web.


Le serveur Apache prsume que le fichier de configuration est /etc/httpd/conf/httpd.conf. Gnralement, le site Web se
trouve dans le rpertoire /home/httpd. Ce rpertoire est compos de deux autres rpertoires : /home/httpd/html et
/home/httpd/cgi-bin. Le premier rpertoire est destin contenir les fichiers html du site Web alors que second
accueille les programmes de type CGI (Common Gateway Interface).
Le fichier de configuration du serveur APACHE doit contenir loption DocumentRoot afin de pouvoir indiquer
lemplacement des fichiers du site. Voici un exemple de configuration :
[root@p200 conf]# cat httpd.conf
User nobody
Group nobody
ServerName p200.challe.be
DocumentRoot /home/httpd/html
AccessConfig /dev/null
ResourceConfig /dev/null
Les options User et Group forcent le serveur sexcuter sous lidentit dun utilisateur particulier. Pour des raisons de
scurit, cet utilisateur ne doit pas avoir de privilge, sans quoi la totalit du systme de fichiers pourrait tre modifi
par les clients du site Web.
Loption ServerName permet dinformer APACHE du nom du site quil doit servir. Ce nom est utilis lors de
communications avec les clients en vue de les informer du nom du site.
Les options AccessConfig et ResourceConfig informent APACHE de lemplacement des fichiers de configuration
supplmentaires. Les fichiers de configuration /etc/httpd/conf/access.conf et /etc/httpd/conf/srm.conf sont traits aprs
le fichier gnral de configuration. Actuellement, les concepteurs dAPACHE recommandent de placer la totalit de la

J-F Challe

HEPCUT - ISIPH

128

configuration dans le fichier /etc/httpd/conf/httpd.conf. Il faut donc informer le dmon APACHE que les deux autres
fichiers ne doivent pas tre employs. Les options AccessConfig et ResourceConfig indiquent lemplacement des
fichiers supplmentaires de configuration. Dans lexemple prcdent, ces fichiers de configuration ne sont pas utiliss.
Cela est indiqu par le nom de fichier /dev/null.

3. Un vritable site.
3.1. Interprtation du code HTML.
Lexemple prcdent ne donne pas des rsultats satisfaisants avec tous les browsers. La navigation vers lURL
http://p200.challe.be/index.html naffiche une page correcte que par lutilisation de Microsoft Internet Explorer.
Lemploi de Netscape Navigator ou de lynx fait apparatre le code HTML de la page et non pas son interprtation. En
effet, ces navigateurs exploitent lextension du fichier pour dterminer la manire dont il doit tre interprt. Aussi, un
fichier de type .html doit-il tre interprt comme contenant du code HTML. Cette interprtation est rendue possible
par lintermdiaire du fichier /etc/mime.types. Ce fichier contient, pour chaque extension, la raction approprie du
navigateur. Lutilisation du fichier /etc/mime.types est prcise par loption TypesConfig suivie du nom du fichier
mime.
Toutes les versions dAPACHE ne sont pas compiles de manire prendre en compte la gestion mime. Dans certains
cas, lutilisation de mime dpend du chargement dun module spcifique contenant des extensions dAPACHE. Ces
extensions peuvent tre charges au moyen des options LoadModule et AddModule. Le programme APACHE a t
conu pour tre excut sur un grand nombre de systmes dont les interfaces de programmation diffrent. Les
diffrentes fonctionnalits dAPACHE tant parfois dpendantes du systme dexploitation sous-jacent, il est plus
commode de rdiger le programme en le dcoupant en plusieurs modules. Les modules spcifiques aux diffrents
systmes seront ainsi rcrits plusieurs fois. Cette approche modulaire prsente galement lavantage de rduire au
strict minimum la taille du code excutable. En effet, toutes les implmentations dAPACHE ne ncessitent pas
toujours les mmes fonctionnalits. De ce fait, APACHE a t dcoup en plusieurs modules chargeables la demande.
Pour quAPACHE puisse charger dynamiquement des modules, il faut lui adjoindre le code de gestion de ces modules.
Loption AddModule permet de charger le module mod_so.c autorisant le chargement dynamique de modules. Le
principe de chargement dun module se passe en deux tapes, il y a dune part son chargement et dautre part son ajout
la liste des modules. Loption LoadModule permet le chargement alors que loption AddModule permet lajout.
Dans le cas qui nous occupe actuellement, il faut charger le module mime. Voici le contenu du fichier de configuration
dAPACHE :
[root@p200 conf]# cat httpd.conf
ServerType standalone
ServerRoot "/etc/httpd"
LoadModule mime_module
modules/mod_mime.so
ClearModuleList
AddModule mod_mime.c
AddModule mod_so.c
User nobody
Group nobody
ServerAdmin root@p200.challe.be
DocumentRoot "/home/httpd/html"
TypesConfig /etc/mime.types
Loption ServerType dtermine comment le serveur Web est lanc. Il peut tre activ de manire autonome ou par
lintermdiaire du dmon inetd. Gnralement, APACHE est configur en standalone bien que la scurit soit meilleure
sil est excut par inetd. Les administrateurs prfrent ignorer la scurit car un lancement par inetd implique que lors
de chaque demande de connexion, une nouvelle instance du serveur Web est cre. Ds que la connexion est termine,
le serveur est arrt. Ce comportement peut dgrader les performances du systme.
Pour quAPACHE soit en mesure de trouver les modules quil doit charger, il doit localiser le rpertoire contenant les
informations de configuration. Le rpertoire /etc/httpd est la racine dun sous-rpertoire contenant les fichiers de
configuration, les fichiers denregistrement des erreurs ainsi que les fichiers correspondant aux diffrents modules.
Loption ServerRoot fixe lemplacement de la racine du systme de fichiers contenant les informations prcites.

J-F Challe

HEPCUT - ISIPH

129

Le serveur est fourni avec une liste de modules actifs. Cette liste peut tre vide au moyen de loption
ClearModuleList. Cette option prsume que la liste sera reconstruite en utilisant loption AddModule.

3.2. Chargement automatique du fichier index.html.


Lorsquun client souhaite accder un site Web, il ne prcise que le nom de la machine sur laquelle rside le site.
Cependant la configuration actuelle ne permet pas ce genre de requte. En effet, sans nom de fichier, le serveur na pas
suffisamment dinformations pour dterminer le fichier par dfaut quil faut envoyer au client. Une telle requte se
soldera donc par un chec.
Dans la majorit des cas, le nom du fichier charger par dfaut est index.html. Loption DirectoryIndex permet de fixer
le nom du fichier qui doit tre envoy au client lors dune requte ne contenant que le nom de la machine. Pour que
cette option soit reconnue, il faut charger le module mod_dir. Voici la nouvelle configuration du serveur APACHE :
[root@p200 conf]# cat httpd.conf
ServerType standalone
ServerRoot "/etc/httpd"
LoadModule mime_module
modules/mod_mime.so
LoadModule dir_module
modules/mod_dir.so
ClearModuleList
AddModule mod_mime.c
AddModule mod_dir.c
AddModule mod_so.c
Port 80
User nobody
Group nobody
ServerAdmin root@p200.challe.be
DocumentRoot "/home/httpd/html"
TypesConfig /etc/mime.types
DirectoryIndex index.html

3.3. Gestion de plusieurs rpertoires.


Le site dun serveur APACHE est, entre autres, constitu du rpertoire /home/httpd/html et du rpertoire
/home/httpd/icons. Le dernier rpertoire contient des icnes pouvant tre employes dans les diffrentes pages HTML
du site. Le code HTML fait rfrence ces objets comme sils figuraient dans le rpertoire /home/httpd/html/icons.
Dans ltat actuel des choses, une telle rfrence se soldera par un chec car le rpertoire /home/http/html/icons nexiste
pas. Le fichier de configuration dAPACHE doit tre modifi pour quune rfrence au rpertoire icons soit considre
comme une tentative daccs au rpertoire /home/httpd/icons. Loption Alias dtermine lemplacement rel dun
rpertoire correspondant au dossier demand. Pour que cette option soit utilisable, il faut charger le module mod_alias.
Voici un exemple de configuration du serveur APACHE prenant en charge les alias :
[root@p200 conf]# cat httpd.conf
ServerType standalone
ServerRoot "/etc/httpd"
LoadModule mime_module
modules/mod_mime.so
LoadModule dir_module
modules/mod_dir.so
LoadModule alias_module
modules/mod_alias.so
ClearModuleList
AddModule mod_mime.c
AddModule mod_dir.c
AddModule mod_alias.c
AddModule mod_so.c
Port 80
User nobody
Group nobody
ServerAdmin root@p200.challe.be
DocumentRoot "/home/httpd/html"
TypesConfig /etc/mime.types
DirectoryIndex index.html
Alias /icons/ "/home/httpd/icons/"

J-F Challe

HEPCUT - ISIPH

130

3.4. Utilisation des CGI.


Les sites Web peuvent tre configurs de manire ce quun programme soit excut par le serveur. Ces programmes
sont appels des scripts CGI (Common Gateway Interface). Ces scripts peuvent tre crits en langage C, en bash ou en
perl. Voici un exemple de script crit au moyen de linterprteur de commandes bash :
[root@p200 cgi-bin]# cat script
#!/bin/bash
echo "content-type:text/html"
echo
echo "<html>"
echo " Bonjour Monsieur"
echo "</html>"
Voici le mme exemple de CGI rdig en langage C :
[root@P100 cgi-bin]# cat ess.c
#include <stdio.h>
void main () {
printf("content-type:text/html\n\n");
printf("<html>\n");
printf("bonjour monsieur\n");
printf("</html>\n");
}
Pour que les scripts soient excutables, il faut non seulement inclure le module CGI dans la configuration dAPACHE
mais galement dfinir le rpertoire /home/httpd/cgi-bin comme tant un rpertoire accessible partir des clients. Voici
la nouvelle configuration du serveur :
[root@p200 conf]# cat httpd.conf
ServerType standalone
ServerRoot "/etc/httpd"
LoadModule mime_module
modules/mod_mime.so
LoadModule dir_module
modules/mod_dir.so
LoadModule cgi_module
modules/mod_cgi.so
LoadModule alias_module
modules/mod_alias.so
ClearModuleList
AddModule mod_dir.c
AddModule mod_cgi.c
AddModule mod_alias.c
AddModule mod_so.c
Port 80
User nobody
Group nobody
ServerAdmin root@p200.challe.be
DocumentRoot "/home/httpd/html"
TypesConfig /etc/mime.types
DirectoryIndex index.html
Alias /icons/ "/home/httpd/icons/"
ScriptAlias /cgi-bin/ "/home/httpd/cgi-bin/"

3.5. Remarque.
Les distributions dAPACHE sont fournies avec un fichier /etc/httpd/conf/httpd.conf prtabli contenant de nombreuses
options et proposant beaucoup de fonctionnalits. Gnralement, ladministrateur considre ce fichier comme une base
la configuration du serveur Web. A partir de maintenant, les modifications seront directement appliques au fichier
de base fourni avec APACHE.

J-F Challe

HEPCUT - ISIPH

131

4. Gestion de plusieurs sites.


Lorsque lon dispose dune connexion Internet permanente, il est permis dhberger plusieurs sites Web sur le mme
ordinateur. Le serveur APACHE est capable deffectuer cette gestion en se basant soit sur des adresses IP diffrentes,
soit sur des URL diffrentes.
La mthode base sur ladresse IP exige la configuration dune carte rseau ayant plusieurs adresses IP. Bien que cette
technique de rsolution donne de bons rsultats, elle est prsent dsute et la mthode base sur le nom lui est
prfre. Le fonctionnement de la mthode base sur le nom repose sur la capacit des navigateurs actuels envoyer le
nom du site atteindre en mme temps que la requte quils formulent.
Cette mthode exige denregistrer plusieurs noms DNS pour une mme adresse IP. En supposant que des clients
accdent aux sites p200.challe.be, wwww.challe.be et wwwww.challe.be, il faut modifier la configuration du serveur
DNS en consquence, comme le montre lillustration suivante :
[root@P100 named]# cat challe.be
@
IN
SOA
challe.be. root.localhost.
1998120701 ;
28800
;
14400
;
3600000
;
86400 )
;
NS
MX

P100.challe.be.
10
P100.challe.be.

P100
www
ftp
irc
mail
pop
news

A
CNAME
CNAME
CNAME
CNAME
CNAME
CNAME

192.168.1.1
P100
P100
P100
P100
P100
P100

P200
wwww
wwwww
P2450
P133
macii
powerpc
fuji
P166
P166PLUS
P2300
se30
HP4
PHASER560
P3450
P2366
modem

A
CNAME
CNAME
A
A
A
A
A
A
A
A
A
A
A
A
A
A

192.168.1.10
P200
P200
192.168.1.40
192.168.1.20
192.168.1.2
192.168.1.3
192.168.1.4
192.168.1.5
192.168.1.30
192.168.1.50
192.168.1.60
192.168.1.192
192.168.1.193
192.168.1.70
192.168.1.80
192.168.1.100

(
Serial
Refresh
Retry
Expire
Minimum

La configuration des htes virtuels exige la modification du fichier de configuration fourni avec APACHE en y ajoutant
les lignes suivantes :
NameVirtualHost 192.168.1.10
<VirtualHost 192.168.1.10>
ServerAdmin root@challe.be
DocumentRoot /home/httpd/html/
ServerName p200.challe.be
</VirtualHost>

J-F Challe

HEPCUT - ISIPH

132

<VirtualHost 192.168.1.10>
ServerAdmin root@challe.be
DocumentRoot /home/httpd/html/wwwww
ServerName wwwww.challe.be
</VirtualHost>
<VirtualHost 192.168.1.10>
ServerAdmin root@challe.be
DocumentRoot /home/httpd/html/wwww
ServerName wwww.challe.be
</VirtualHost>
Loption NameVirtualHost indique APACHE que les requtes vers cette adresse IP seront subdivises par noms. Il
peut sembler que les options ServerName jouent un rle primordial. En fait elles ne font que de fournir un nom
quAPACHE devra envoyer aux clients.

J-F Challe

HEPCUT - ISIPH

133

XIII. SQUID.
1. Introduction.
Le logiciel SQUID est un serveur mandataire (proxy server) dont lobjectif est double :

mandater l'accs aux serveurs Web. En fonction du mandat qui lui est attribu, SQUID va participer la
protection des rseaux internes connects Internet. La consquence importante de ce mandat est que l'adresse
IP source d'une requte n'est plus celle du client mais celle du serveur mandataire ;
garder en mmoire cache les pages HTML et dautres objets (images, animations...) tlchargs sur le Web
pour ainsi amliorer la rapidit de la connexion Internet. Les objets sont priodiquement limins ou
rafrachis.

Le serveur SQUID est form de deux dmons : squid et unlinkd. Le dmon unlinkd aide squid dans la gestion de la
mmoire cache place sur le disque.

2. Protocoles utiliss.
Les clients qui s'adressent SQUID doivent employer le protocole HTTP sur TCP. Un client FTP ne pourra donc pas se
servir de SQUID, au mme titre que les clients btis sur UDP, ce qui exclut un grand nombre de programmes
multimdias. Le serveur SQUID est toutefois capable de grer les accs et d'aller chercher des informations sur les
serveurs suivants :

HTTP (HyperText Transfer Protocol)


FTP (File Transfer Protocol)
WAIS (Wide Area Information System)
Gopher
SSL (Secure Socket Layer)

Pour la gestion de sa mmoire cache et des communications entre les serveurs mandataires, SQUID utilise les
protocoles suivants :

HTTP servant retirer les objets des mmoires cache, des autres serveurs mandataires ;
ICP (Internet Cache Protocol), sur UDP. Le protocole ICP est la base des communications inter-mandataires ;
Cache digests, particulirement utile pour amliorer les communications inter-mandataires. Chaque serveur
proxy cre, toutes les dix minutes, une petite table qui reprend tous les objets mmoriss. Cette table, appele
cache digest, est transfrable vers les serveurs voisins en utilisant le protocole HTTP. Cette faon de procder
rduit considrablement le trafic rseau et le temps de latence ncessaire la dcouverte d'un objet. Dans 5 %
des cas, un objet prsent dans la liste n'est plus sur le disque dur, le contenu du disque voluant vite. Dans ce
cas, SQUID effectue un accs direct au Web ;
SNMP (Simple Network Management Protocol) ;
CARP (Cache Array Routing Protocol) ;
HTCP (Hyper Text Caching Protocol).

3. Configuration matrielle.
Le serveur SQUID utilise une grande quantit de mmoire vive comme mmoire cache car elle est d'accs bien plus
rapide qu'un disque dur. Pour chaque objet conserv en mmoire cache disque, il y a 56 octets situs en mmoire vive :
les meta donnes (metadata). C'est ce qu'on appelle la StoreEntry data structure. Pour chaque StoreEntry, il y a en plus
en mmoire vive 16 octets destins une somme de contrle. S'il y a un million d'objets sur le disque dur, il faut 70
MO de mmoire vive rien que pour les meta donnes.
A cela s'ajoutent la mmoire vive utilise par le dmon SQUID lui-mme, par les objets tlchargs non encore placs
sur disque, par les tables des caches IP, par des informations sur l'tat des requtes en cours, par diffrentes statistiques
mises en place par le dmon SQUID... Tant et si bien que si ladministrateur souhaite calculer la quantit de mmoire
vive consomme par SQUID, il doit multiplier par deux ou trois la valeur dfinie la ligne cache_mem du fichier

J-F Challe

HEPCUT - ISIPH

134

/etc/squid/squid.conf. Un ralentissement progressif de SQUID traduit la plupart du temps une quantit de mmoire vive
insuffisante.
Les facteurs matriels les plus importants pour la performance d'un dmon SQUID sont, par ordre dcroissant
d'importance, la rapidit du disque dur, la quantit de mmoire vive et la puissance du processeur.

4. Installation et mise en route.


Le dmon SQUID est l'excutable /usr/sbin/squid qui appartient l'utilisateur root du groupe root. Larrt et le
redmarrage de SQUID est command par le script de dmarrage du systme /etc/rc.d/init.d/squid.

5. Contourner SQUID.
Lorsque la configuration du navigateur Web est termine, il est possible utiliser SQUID pour se connecter Internet.
Dans le cas de Netscape Navigator, l'utilisation du bouton "Recharger" (Reload) permet d'aller chercher la page Web
directement sur le site d'origine, sans passer par la mmoire cache.
Si, pour des raisons d'authentification (site bancaire...), l'adresse IP source des paquets doit tre celle du client Web, il
faut indiquer dans la configuration du client lobligation de ne pas passer par le serveur mandataire pour atteindre telle
ou telle adresse IP.

6. Configuration de SQUID.
La configuration de SQUID se fait l'aide du fichier de configuration /etc/squid.conf. Les lignes qui suivent montrent
une configuration de base, apte fonctionner sur la plupart des machines.

6.1. Ports de communication.


http_port 8080
icp_port 3130
Le serveur SQUID coute les requtes HTTP sur le port 3128, cest--dire sur un port non privilgi, au del de 1023.
Un autre numro de port souvent utilis est le 8080 devenu un pseudo-standard des serveurs mandataires. Le dmon
SQUID peut couter plusieurs ports HTTP (http_port 3128 8080).
Le port 3130 sert aux requtes ICP.

6.2. Taille du cache.


cache_mem 32 MB
cache_swap_low 90
cache_swap_high 95
La taille de mmoire vive que SQUID utilise comme mmoire cache est de 32 MB. Lorsque les 32 MB sont remplis
95%, les objets les plus anciens et ou les moins utiliss sont dtruits jusqu' ce que le remplissage de la mmoire cache
atteigne 90%.
maximum_object_size 4096 KB
La taille au-del de laquelle un objet ne sera pas mis en mmoire cache sur le disque est de 4 KB.
ipcache_size 1024
ipcache_low 90
ipcache_high 95
La mmoire vive destine au cache IP retient au maximum 1024 entres. Le cache IP est une table qui conserve les
noms d'hte et les adresses IP correspondantes, ce qui permet, lors de la requte d'un client, d'viter le recours aux
services DNS. La structure d'une entre du cache IP est celle-c i :

J-F Challe

HEPCUT - ISIPH

135

nom_d'hte flags lstref TTL N adresse_IP


La signification des diffrents champs est la suivante :

nom_d'hte est le nom de la machine dont l'adresse IP est garde en mmoire ;


la variable flags peut prendre les valeurs C (cached) ou L (locked) ;
lstref (last referenced) est une variable dfinie en secondes.
TTL signifie time to live.
N est le nombre d'adresses IP.
adresse_IP est l'adresse qui correspond au nom d'hte.

fqdncache_size 1024
La mmoire vive destine au cache fqdn est apte retenir un maximum de 1024 entres. Les entres de ce cache
retiennent les concordances entre les adresses IP et les noms d'hte correspondants. Il sagit donc dune correspondance
inverse au sens du DNS.
La structure d'une entre du cache fqdn est la suivante :
adresse_IP flags lstref TTL N nom_d'hte
La signification de ces champs est identique celle correspondant loption ipcache_size.

6.3. Emplacement du cache et de lhistorique.


Cache_dir ufs /var/spool/squid/cache 100 16 256
Cette option sert prciser l'endroit du disque dur o va se situer la mmoire cache, en l'occurrence le rpertoire
/var/squid/cache. Il est permis de spcifier plusieurs lignes cache_dir pour rpartir la mmoire cache sur plusieurs
disques durs, ce qui augmente fortement les performances de SQUID, surtout lorsquun grand nombre d'utilisateurs ont
recours ses services. Le ou les rpertoires doivent exister et tre accessibles en criture par le processus SQUID. Par
dfaut, le rpertoire /var/squid/cache est cr lors de linstallation du paquetage et appartient l'utilisateur squid.
La faon dont SQUID gre la mmoire cache obit la norme ufs. Mais le systme asyncufs existe aussi. Ce dernier
type est plus performant mais aussi plus rcent et moins fiable. Il diminue le temps de latence des requtes adresses
SQUID.
La valeur 100 est le nombre de MB rserv au rpertoire /var/squid/cache. Le serveur SQUID est d'autant plus efficace
qu'il a de la place. Si l'on rserve un disque dur d'une dizaine de giga octets pour SQUID, il est en gnral conseill de
donner une taille de 6 7 GO au rpertoire /var/squid/cache.
Le chiffre 16 reprsente le nombre de rpertoires de premier niveau qui sont crs sous /var/squid/cache. Le chiffre 256
est le nombre de rpertoires de second niveau. Tous ces rpertoires et sous-rpertoires ne contiennent que quelques
objets, ils permettent SQUID de trouver plus rapidement l'information dont il a besoin.
A partir de la version 2, il est possible d'ajouter une ligne cache_dir sans effacer ni perturber la mmoire cache
existante. Pour cela, SQUID doit tre arrt afin de raliser les modifications dans le fichier /etc/squid/squid.conf.
Aprs excution de ces modifications, le serveur peut tre relanc.
cache_access_log /var/log/squid/access.log
cache_log /var/log/squid/cache.log
cache_store_log /var/log/squid/store.log
cache_swap_log /var/log/squid/swap.log
Les quatre lignes ci-dessus dfinissent les fichiers d'historique qui seront utiliss et leur place respective au sein de
l'arborescence du systme de fichiers. Si un fichier ne doit pas tre cr, il suffit de dactylographier le mot none en lieu
et place du nom du fichier.
debug_options ALL,1

J-F Challe

HEPCUT - ISIPH

136

Le niveau de dbogage est fix 1 pour toutes les sections. Le niveau maximal est 9 mais il donne un flux
d'informations trs important. Les messages de dbogage sont stocks dans les fichiers d'historique.

6.4. Support de programmes externes.


ftp_user jfc@challe.yi.org
Le serveur SQUID est capable d'adresser des requtes un serveur FTP. Pour avoir accs aux services FTP, il faut
donner un nom d'utilisateur et un mot de passe. L'accs public utilise anonymous comme nom d'utilisateur et une
adresse lectronique comme mot de passe . Cette adresse est souvent fictive, alors que de rares serveurs FTP demandent
une adresse fonctionnelle. Si on veut en utiliser une qui permette en plus de recevoir les ventuels commentaires des
administrateurs des services FTP, on ajoutera cette ligne au fichier squid.conf.
authenticate_program /usr/sbin/pam_auth /etc/passwd
La ligne ci-dessus dfinit le module d'authentification externe que SQUID va employer si ladministrateur dsire mettre
en place un contrle d'accs aux services mandataires via le nom d'utilisateur et son mot de passe. Les modules
externes qui sont les plus employs sont NSCA et PAM. Pour les noms et mots de passe, la solution de facilit consiste
d'indiquer SQUID le fichier /etc/passwd comme rfrence. Si non, il est possible de crer un fichier indpendant
auquel on ajoute les noms et mots de passe avec l'excutable htpasswd.
Deux remarques sont mettre. Si plusieurs serveurs mandataires sont en rapport, seul celui qui est en contact direct
avec le client est capable de l'authentifier. L'authentification doit donc tre dsactive dans les communications intermandataires. L'authentification ne fonctionne pas avec les serveurs mandataires transparents.

6.5. Timeouts
connect_timeout 120 seconds
Certains systmes d'exploitation, dont Linux, ne stoppent pas les requtes de connexion aux serveurs Web de faon
suffisamment performante. C'est la raison pour laquelle SQUID peut tre configur pour stopper d'autorit les requtes
qui ne seraient pas honores par exemple aprs deux minutes.

6.6. Contrles daccs.


La restriction daccs au serveur mandataire est ncessaire car certains utilisateurs malveillants peuvent vouloir utiliser
un serveur pour masquer leur identit ou profiter de lui pour amliorer la rapidit de leur propre connexion Internet.
Lors du contrle d'accs, SQUID vrifie la section ligne par ligne, de haut en bas du fichier. Lorsqu'une ligne convient,
SQUID ne va pas plus loin et c'est la premire rgle valide rencontre qui est utilise. Si une requte de connexion
SQUID ne rencontre aucune des rgles dfinies, l'accs par dfaut entre en vigueur. Cet accs par dfaut est le contraire
de ce qu'indique la dernire ligne : si elle montre un deny, l'accs sera autoris pour tous et vice-versa. Cette rgle du
contraire a t btie en pensant que beaucoup d'administrateurs oublient de placer une rgle deny all aprs avoir autoris
tel ou tel groupe accder SQUID. Si aucune rgle n'existe, tout le monde peut utiliser SQUID. Le contrle d'accs
effectu par SQUID se fait sur base du protocole de la requte : ce sont des oprateurs diffrents qui seront vrifis
selon que la requte utilise le protocole HTTP (oprateur http_access) ou lICP (oprateur icp_access). Voici une
configuration de base :
acl all src 0/0
acl local src 192.168.1.0/255.255.255.0
acl localhost src 127.0.0.1/255.255.255.255
acl connexion method CONNECT
acl manager proto cache_object
acl SSL_ports port 443 563
acl Safe_ports port 80 21 443 563 70 210 1025-65535
http_access allow local localhost
http_access deny manager
icp_access allow all
http_access deny !Safe_ports
http_access deny connexion !SSL_ports

J-F Challe

HEPCUT - ISIPH

137

http_access deny all


miss_access allow all
Les sept premires lignes de la configuration de base commencent par loption acl (access control list) qui dfinit une
classe, cest--dire un ensemble ou groupe, le plus souvent d'utilisateurs. Loption acl est suivie du nom donn la
classe, par exemple all, local, localhost... Il est permis de choisir nimporte quel nom la condition qu'il prcise au
mieux la classe cre.
La distinction des membres d'une classe repose sur un filtre particulier. Parmi les filtres SQUID propose :

l'adresse IP source, cest--dire l'adresse IP de la machine qui adresse une requte SQUID ou bien l'adresse
IP destination qui est l'adresse IP du serveur Web sollicit. Les trois premires lignes de la configuration de
base dfinissent trois classes sur base des adresses IP source compltes par leur masque de sous-rseau. Pour
utiliser les adresses IP destination, on remplace src par dst. Il y a moyen de dfinir plusieurs groupes
d'adresses IP qui forment une classe, par exemple acl local src 192.168.0.0/255.255.255.0
192.168.1.0/255.255.255.0.
un nom de domaine source ou destination. Si ladministrateur dsire limiter l'accs SQUID aux personnes
qui appartiennent au domaine challe.be, il suffit de crer une classe base sur le filtre srcdomain challe.be.
Pour le domaine de destination, il faut remplacer srcdomain pour dstdomain.
certains mots au sein de lURL demande. Dans l'exemple qui suit, SQUID refusera de se connecter sur un
site qui contient le mot sexe :

acl urlporno url_regex -i sexe

Le mot regex signifie regular expression et le drapeau -i sert la prise en compte des majuscules aussi bien que
des minuscules.
la date et l'heure courantes. Afin de permettre les connexions tel ou tel moment de la journe. La syntaxe
est :

acl utilisateurs time jour heure_dbut:minute heure_fin:minute


o jour est S (dimanche), M (lundi), T (mardi), W (mercredi), H (jeudi), F (vendredi) ou A (samedi). Il est
permis de dfinir par exemple la classe :
acl nuit time 19:00 6:00

le numro de port destination. Les deux dernires lignes acl dfinissent deux groupes de ports destination. Les
ports 443 et 563 sont les ports d'coute standards des serveurs HTTP et NNTP scuriss par SSL. Les ports 70
et 210 sont les ports par dfaut utiliss par les serveurs Gopher et WAIS.
le protocole utilis par SQUID pour satisfaire une requte (FTP, HTTP, SSL...). Dans la configuration de base
prsente plus haut, une ligne acl manager proto cache_object est prsente. Le serveur SQUID utilise le
protocole cache_object pour donner des informations telles que les statistiques d'utilisation, de performance et
dautres qui ne sont pas destines n'importe qui. Cette ligne existe par dfaut pour permettre au gestionnaire
de cache de grer et d'obtenir des informations sur la mmoire cache de SQUID. Prenons un autre exemple :

acl ftp proto FTP


http_access deny ftp

J-F Challe

Ces option font en sorte quaucune machine du rseau ne pourra adresser une requte un serveur FTP via
SQUID.
la mthode que le protocole HTTP utilise pour aller chercher les objets. Le serveur SQUID en reconnat
plusieurs. En voici quelques -unes : GET (recherches simples et rapatriement d'objets), HEAD (rapatriement de
meta donnes), POST (pour soumettre des objets un programme), PUT (pour envoyer des objets un site
(uploader), DELETE (pour supprimer des objets), TRACE, OPTIONS, CONNECT (pour les connexions via
tunnel SSL), ICP_QUERY, PURGE (pour enlever les objets du cache), PROPFIND (pour connatre les
proprits d'un objet), PROPATCH, MKCOL, MOVE, COPY, LOCK (pour bloquer les modifications d'un
objet), UNLOCK... C'est grce la requte que lui envoie le client que SQUID sait quelle mthode il doit
utiliser.
le nom d'utilisateur et le mot de passe. Le filtre mettre en place est proxy_auth. Voici un exemple :

HEPCUT - ISIPH

138

acl all src 0/0


acl auth proxy_auth REQUIRED
http_access allow auth
http_access deny all
Les deux premires lignes de lexemple ci-dessus dfinissent les classes all et auth. Les deux dernires lignes
rglent les accs SQUID. Le mot REQUIRED signifie que n'importe quel utilisateur en passe dtre
authentifi correctement va faire partie de la classe utilisateurs. Ce mot peut tre remplac par une srie de
noms d'utilisateurs (acl utilisateurs proxy_auth nathalie laura christine isabelle).
Les lignes de la configuration de base qui suivent celles commenant par acl utilisent ce qu'on appelle des oprateurs
(http_access, icp_access, snmp_access...). Les oprateurs dfinissent le type de fonction de SQUID auquel une classe
peut avoir accs. L'oprateur est suivi des mots allow ou deny en fonction de ce que ladministrateur cherche
permettre ou interdire. Voici les principaux oprateurs :

http_access, icp_access. L'oprateur http_access est le plus rpandu, il sert ouvrir ou au contraire limiter
l'accs des clients SQUID.
no_cache. Cet oprateur sert prvenir la mise en mmoire cache de certaines pages, les pages locales du
rseau par exemple. De cette faon, la mmoire cache est rserve de faon beaucoup plus efficace pour les
pages recherches sur Internet.
ident_lookup_access. Cet oprateur demande SQUID de vrifier l'identit des machines qui font appel ses
services et de l'enregistrer dans ses fichiers d'historique. Il ne s'agit pas ici proprement parler d'une
restriction d'accs mais plutt d'un stockage d'information dans un but de protection contre les attaques
extrieures notamment. Pour exemple, les deux rgles qui suivent demandent SQUID de vrifier les identits
des machines qui ne font pas partie du rseau local :

ident_lookup_access deny local


ident_lookup_access allow all

Puisque cette vrification prend du temps et retarde SQUID, il faut qu'elle soit utilise bon escient.
miss_access. Cet oprateur, suivi de deny, force SQUID donner uniquement ses clients des objets dj
prsents sur le disque dur. En d'autres termes, il est interdit d'aller chercher un objet sur Internet pour rpondre
une requte. Cette option est surtout utile pour rgler les relations inter-mandataires : entre serveurs SQUID
pairs, seules les donnes dj prsentes sur le disque dur sont partages. Un serveur mandataire ne doit pas
raliser une demande d'objets via un autre serveur pair, sauf en cas de tentative de piratage. En crant une
classe regroupant les serveurs SQUID pairs et en utilisant cet oprateur suivi de deny, seuls les objets sur le
disque dur seront changs.
delay_classes. Cet oprateur permet de diminuer la bande passante attribue certains sites. On peut imaginer,
dans une institution scolaire, de diminuer la bande passante attribue des serveurs de jeux.

Il est souvent ncessaire de combiner plusieurs classes par oprateur. Les classes utilises dans les exemples qui suivent
ont t reprises des exemples prcdents :
http_access deny local nuit va interdire au membres de la classe local l'accs au serveur SQUID pendant la nuit.
http_access deny all !local va interdire l'accs au serveur SQUID toutes les adresses IP source l'exception de celles
du rseau local.
http_access allow local auth va autoriser l'accs aux seuls membres du groupe local et cela aprs authentification.
Les combinaisons de classes rendent la configuration de SQUID trs souple.

6.7. Paramtres administratifs.


cache_mgr root@challe.be
cache_effective_user squid
cache_effective_group nogroup
En cas de problmes, un courrier lectronique sera envoy root. C'est au lancement de l'excutable /usr/sbin/squid
appartenant l'utilisateur root et au groupe du mme nom que pour des raisons de scurit le dmon va subir le
changement didentit indiqu ici.

J-F Challe

HEPCUT - ISIPH

139

6.8. Vrification de la connexion.


dns_testnames netscape.com internic.net nlanr.net microsoft.com
Cette ligne dfinit les noms de domaines que SQUID va tester lors de son lancement afin de dterminer si la connexion
Internet est oprationnelle.

7. Configuration avance.
7.1. Bannir des sites.
Certaines socits ne souhaitent pas que leurs employs puissent visualiser le contenu de sites sensibles. Pour cela, la
configuration de SQUID peut tre adapte en crant des rgles dinterdiction de consultation de sites. Voici un exemple
dune telle configuration :
http_port 8080
ftp_user jfc@challe.yi.org
acl all src 0.0.0.0/0.0.0.0
acl local src 192.168.1.0/255.255.255.0
acl localhost src 127.0.0.1/255.255.255.255
acl bannirsites url_regex -i "/etc/squid/bannir"
http_access deny bannirsites
http_access allow local
http_access allow localhost
http_access deny all
Les options acl dfinissent quatre groupes :

toutes les adresses IP possibles (all) ;


les adresses IP du rseau local (local) ;
ladresse loopback de la machine hbergeant le serveur (localhost) ;
les sites bannir (bannirsites).

Contrairement aux options http_access lordre de dfinition des groupes na aucune importance. Lorsque SQUID doit
dterminer si un accs est autoris ou interdit, il parcourt la liste des options http_access dans lordre de leur apparition.
Ds quune option http_access est valable, lexploration des rgles daccs prend fin. Cela signifie, par exemple, quil
ne faut pas placer la rgle http_access deny all en premier lieu. En effet, cette rgle sera toujours valable, ce qui
interdira toute utilisation du serveur mandataire. Lalgorithme de dtermination si un client a le droit demployer le
serveur mandataire est le suivant :
si demande daccs un site interdit alors
refuser laccs
sinon
si le client fait partie du rseau local alors
autoriser laccs
sinon
si le client est la machine serveur alors
autoriser laccs
sinon
interdit laccs
fsi
fsi
fsi
Cette imbrication de vrification peut amener ladministrateur autoriser un client tout effectuer. Supposons que
lutilisateur de la machine 192.168.1.80 soit autoris accder aux sites bannis. Cette configuration exige lajout dune
classe correspondant la machine qui doit tre autorise tout faire, lajout aussi dune rgle daccs place au dbut de
la liste des options http_access autorisant toujours cette machine employer les services de SQUID. Voici un exemple
de ce type de configuration :

J-F Challe

HEPCUT - ISIPH

140

http_port 8080
ftp_user jfc@challe.yi.org
acl all src 0.0.0.0/0.0.0.0
acl local src 192.168.1.0/255.255.255.0
acl localhost src 127.0.0.1/255.255.255.255
acl bannirsites url_regex -i "/etc/squid/bannir"
acl P2366 src 192.168.1.80/255.255.255.255
http_access allow P2366
http_access deny bannirsites
http_access allow local
http_access allow localhost
http_access deny all
Dans les deux exemples qui prcdent, loption acl bannirsites se fonde sur une vrification dURL prsentes dans le
fichier /etc/squid/bannir. Ce fichier contient la lis te des sites qui doivent tre inaccessibles. Voici un exemple dun tel
fichier :
[root@p200 squid]# cat bannir
http://www.msn.com
http://www.microsoft.com
Les sites dont lURL dbute soit par http://www.msn.com, soit par http://www.microsoft.com ne peuvent tre rejoints
par les clients du serveur mandataire. Notons que lensemble de ces sites est banni car les diffrentes lignes du fichier
reprsentent des expressions rgulires.
Si ladministrateur effectue des modifications dans le fichier des sites bannis, il faut imprativement relancer le serveur
SQUID, les expressions rgulires prsentes dans ce fichier ntant lues que lors du lancement du serveur mandataire.

7.2. Interdire le tlchargement de fichier excutables.


Laccs Internet peut amener les utilisateurs rechercher des programmes pour les installer sur leur machine. Ce type
de comportement est de nature corrompre lintgrit des systmes et obliger le service informatique rinstaller
rgulirement les PC des utilisateurs. Le serveur SQUID peut tre configur de manire interdire le tlchargement
de fichiers excutables sous Windows et donc linstallation illicite de programmes.
Le tlchargement dun excutable consiste demander une URL dont le nom se termine par .exe. Lexpression
rgulire .exe$ stipule toutes les URL se terminant par .exe. Linterdiction de tlchargement de ces fichiers consiste
simplement en lajout dune rgle au niveau du fichier des sites bannis comme le montre lexemple suivant :
[root@p200 squid]# cat bannir
http://www.msn.com
http://www.microsoft.com
.exe$

7.3. Authentification des utilisateurs.


Lauthentification des utilisateurs consiste demander un nom et un mot de passe lors louverture dune session. Ce
couple dinformations est transmis un programme dauthentification qui retourne la chane OK si lutilisateur a le
droit de se connecter et la chane ERR sil na pas lautorisation demployer le serveur mandataire. Cette
authentification peut tre ralise par un programme que ladministrateur peut crire lui-mme.
Pour simplifier lcriture de ce programme, le nom de lutilisateur ainsi que son mot de passe sont cods directement
dans le programme. Naturellement, une utilisation approprie de cette fonctionnalit consiste crer une base de
donnes des noms des utilisateurs et des mots de passe associs qui sera exploite par le programme dauthentification.
Lorsquun navigateur envoie lidentification dun utilisateur, il le fait sur la base dune chane de caractres contenant
dans cet ordre, le nom de lutilisateur, un espace et le mot de passe. Ces deux informations sont termines par le
caractre de retour de chariot (\n).

J-F Challe

HEPCUT - ISIPH

141

Le programme dauthentification doit effectuer une boucle jusquau moment o la fin du fichier est rencontre au
niveau de lentre standard.
Voici un exemple de programme permettant de grer les authentifications :
[root@p200 squid]# cat auth.c
#include <stdio.h>
#include <string.h>
#define BUFSIZE 512
void main () {
char buffer[BUFSIZE],*p;
int continuer=1;
if (setvbuf(stdout,NULL,_IOLBF,0)==0)
while (continuer) {
if (fgets(buffer,BUFSIZE,stdin)==NULL)
continuer=0;
else {
if ((p=strchr(buffer,'\n'))!=NULL)
*p='\0';
if ((p=strchr(buffer,' '))==NULL)
printf("ERR\n");
else {
*p++='\0';
if ((strcmp(buffer,"jfc")==0)&&(strcmp(p,"azerty")==0))
printf("OK\n");
else
printf("ERR\n");
}
}
}
}
Lactivation du processus dauthentification ncessite la modification du fichier de configuration de SQUID. Loption
authenticate_program dtermine lemplacement du programme dauthentification alors que loption acl passwd
proxy_auth REQUIRED exige que tout utilisateur correctement identifi fasse partie de cette classe. Pour autoriser
laccs, il faut ajouter une option http_access comme le montre lexemple suivant :
[root@p200 squid]# cat squid.conf
http_port 8080
ftp_user jfc@challe.yi.org
authenticate_program /etc/squid/auth
acl all src 0.0.0.0/0.0.0.0
acl local src 192.168.1.0/255.255.255.0
acl localhost src 127.0.0.1/255.255.255.255
acl bannirsites url_regex -i "/etc/squid/bannir"
acl passwd proxy_auth REQUIRED
http_access deny bannirsites
http_access deny !local !localhost
http_access allow passwd
http_access deny all

J-F Challe

HEPCUT - ISIPH

J-F Challe

142

HEPCUT - ISIPH

143

XIV. IPCHAINS.
1. Introduction.
Un firewall est un routeur filtre de paquets implant dans le systme dexploitation. Son champ dopration couvre le
rseau IP et les couches du protocole de transport. Il protge le systme en prenant des dcisions de routage aprs avoir
filtr les paquets en se basant sur linformation contenue dans len-tte dun paquet IP.
Un firewall filtre de paquets consiste en une liste de rgles dacceptation et de refus. Ces rgles dfinissent
explicitement les paquets qui seront et ne seront pas autoriss traverser linterface rseau. Les rgles utilisent les
champs den-tte du paquet pour dcider si un paquet doit tre :

rout vers sa destination ;


mis de ct de faon non apparente ;
bloqu et retourn, avec un message derreur, la machine mettrice.

Ces rgles sont fondes sur :

la carte dinterface rseau ;


ladresse IP de lhte ;
ladresse IP source ;
ladresse IP destination ;
le numro de port du service UDP ou TCP ;
les indicateurs de connexion TCP ;
les types de messages ICMP ;
lentre ou la sortie du paquet.

Un firewall filtre de paquets fonctionne sur les couches rseau (IP et ICMP) et transport (UDP et TCP) du modle de
rfrence TCP/IP.
Lide gnrale suppose le contrler avec attention de ce qui passe entre la machine et Internet auquel elle y est
directement connecte. Il faut filtrer individuellement aussi exactement que possible ce qui vient de lextrieur et ce qui
sort de la machine. Le firewall filtre, indpendamment ce qui entre et ce qui sort travers linterface. Le filtrage
dentre et le filtrage de sortie peuvent reposer sur des rgles compltement diffrentes sont appeles chanes, les listes
des rgles dfinissant ce qui peut entrer et ce qui peut sortir sont appeles chanes. Elles sont ainsi appeles car un
paquet est compar individuellement chaque rgle de la liste jusqu ce quune correspondance soit trouve ou que la
liste soit puise.
Cette configuration est relativement puissante mais nest pas un mcanisme de scurit trs fiable. Elle constitue
seulement une partie de la stratgie de scurit qui doit tre mise en place. Ce type de scurit est dun niveau trop bas
pour permettre une authentification et un contrle daccs raffins. Ces services de scurit doivent tre fournis des
niveaux plus levs. Le protocole IP ne possde pas la capacit de vrifier lidentit de lmetteur. La seule
information didentification porte sur ladresse IP de lmetteur du paquet. Ni le rseau, ni la couche transport ne
peuvent vrifier que ladresse IP est exacte. Nanmoins, par rapport ce qui peut tre mis en uvre des niveaux plus
levs, le niveau paquet permet un contrle tendu de laccs direct aux ports.

2. Choix dune politique de filtrage.


Chaque chane du firewall comprend une politique par dfaut et une srie dactions entreprendre en rponse des
types spcifiques de messages. Chaque paquet est vrifi la lumire de chaque rgle de la liste jusqu ce quune
correspondance soit trouve. Si le paquet ne correspond aucune rgle, il naboutit pas et la politique par dfaut est
applique au paquet. Deux approches possible sappliquent un firewall :

tout ce qui nest pas explicitement autoris est interdit ;


tout ce qui nest pas explicitement interdit est autoris.

La politique du tout interdire est lapproche recommande. Cette approche permet plus aisment la configuration dun
firewall scuritaire, mais chaque service souhait doit tre explicitement activ. Cela signifie quune bonne

J-F Challe

HEPCUT - ISIPH

144

comprhension du protocole de communication activer est ncessaire. Cette approche requiert plus de travail avant de
rendre disponible un accs Internet.
La politique du tout accepter permet une mise en uvre aise et immdiate, mais elle oblige ladministrateur anticiper
chaque type daccs concevable dsactiver. Le danger consiste ne pas anticiper un type daccs dangereux avant
quil ne soit trop tard ou ultrieurement rendre disponible un service peu sr. Dvelopper un firewall, selon cette
politique, prsente beaucoup plus de travail et de difficults et augmente considrablement le risque derreurs.

3. Rejeter ou refuser un paquet.


Le mcanisme du firewall offre un choix : soit rejeter (re ject) soit refuser (deny) les paquets. Lorsquun paquet est
rejet, il est mis de ct et un message derreur ICMP est renvoy lmetteur. Lorsquun paquet est refus, il est
simplement mis de ct sans aucune notification lmetteur.
Le refus est souvent le meilleur choix. Il y a trois raisons cela :

l'envoi dune rponse derreur augmente le trafic sur le rseau. La majorit des paquets ignors le sont parce
quils sont malveillants et non parce quils reprsentent une tentative innocente daccder un service qui ne
se trouve pas offert ;
tout paquet ayant donn lieu une rponse peut tre utilis pour une attaque par dni de service ;
toute rponse, mme un message derreur, procure un cracker potentiel de linformation utile.

4. Filtrage des paquets entrants.


Le ct par lequel entre linformation sur linterface externe est le plus intressant pour scuriser un site. Un filtre de
paquets peut tre bas sur :

l'adresse source ;
ladresse de destination ;
le port source ;
le port destination ;
lidentificateur de ltat TCP.

4.1. Filtrage dadresse source distante.


Au niveau du paquet, le seul moyen didentifier lmetteur est ladresse IP prsente dans len-tte du paquet. Cela
ouvre la porte au spoofing dadresses source l o lmetteur indique dans le champ source une adresse errone, en lieu
et place de sa propre adresse. Ladresse indique peut, tre inexistante ou tre celle de quelquun dautre. Cela peut
permettre des paquets louches de sintroduire dans le systme, usurpant lidentit de la machine vise afin dattaquer
dautres sites.
4.1.1. Spoofing dadresses source et adresses illgales.
Il existe six classes majeures dadresses source devant tre refuses sur une interface externe. Il sagit des paquets
entrants se rclamant ainsi :

J-F Challe

adresse IP du firewall. Aucun paquet entrant ne peut lgalement afficher lidentit du firewall. Puisque
ladresse source est la seule information disponible et quelle peut tre modifie, il sagit dune forme de
spoofing dtectable au niveau du filtrage de paquets ;
adresses IP prives de classe A, B et C. Les sries dadresses dans chacun des intervalles des classes A, B et C
sont rserves une utilisation au sein dun rseau local. Elles ne sont pas destines un usage sur Internet.
Comme telles, ces adresses peuvent tre utilises par nimporte quel Intranet sans quil lui soit ncessaire
dacqurir des adresses IP enregistres en bonne et due forme. Les adresses source prives sont souvent
rencontres sur les sous-rseaux locaux des fournisseurs daccs Internet en raison de systmes mal
configurs aussi bien que sur des sites ayant fait lobjet dune attaque par spoofing. Les adresses prives de
classe A se voient assigner les intervalles de 10.0.0.0 10.255.255.255. Les adresses prives de classe B se
voient assigner les intervalles de 172.16.0.0 172.31.255.255. Les adresses prives de classe C se voient
assigner les intervalles de 192.168.0.0 192.168.255.255 ;

HEPCUT - ISIPH

145

Adresses IP multicast de classe D. Les adresses IP, dans lintervalle de la classe D, sont mises part pour une
utilisation en tant quadresses destination lorsquelles participent un broadcast rseau en mode multicast.
Elle se rpartissent entre 224.0.0.0 et 239.255.255.255 ;
adresses IP rserves de classe E. Les adresses IP dans lintervalle de la classe E sont mises de ct pour une
utilisation future titre exprimental et ne sont pas assignes au public. Elles stendent de 240.0.0.0
247.255.255.255 ;
adresses dinterface loopback. Linterface loopback est une interface prive utilise par les systmes UNIX
pour les services locaux. Plutt que denvoyer le trafic local travers le pilote de linterface rseau et pour une
meilleure performance le systme dexploitation emprunte un raccourci travers linterface loopback. Par
dfinition, le trafic loopback est destin tre gnr par le systme. Il ne sort pas du rseau. Ladresse
loopback va de 127.0.0.0 127.255.255.255. Gnralement les systmes sy rfrent sous la forme 127.0.01,
localhost ou interface loopback, lo ;
adresses broadcast mal formes. Les adresses broadcast sont des adresses spciales qui sappliquent toutes
les machines sur un rseau. Ladresse source de broadcast sera soit 0.0.0.0, soit une adresse IP normale. Seuls
les clients DHCP verront des paquets broadcast entrants provenant de ladresse source 0.0.0.0. Il ne semble
pas que ladresse 0.0.0.0 soit rencontre dans dautres situations. Il ne sagit pas dune adresse point point
valable.

4.1.2. Bloquer les sites problmatiques.


Une autre faon de mettre en place un plan de filtrage dadresses source est de bloquer tous les accs une machine
slectionne ou un bloc dadresses IP. Cest de cette manire que la communaut Internet tend ragir envers les
sites problmatiques. Si un site se btit une mauvaise rputation sur Internet, les autres sites essaient de le bloquer
demble. En dautres termes, un site de mauvaise rputation se verra refus laccs aux services offerts par la machine
firewall.
4.1.3. Limiter les paquets entrants des htes slectionns.
Il se pourrait que ladministrateur ne souhaite accepter que certains genres de paquets entrants provenant uniquement de
sites externes spcifiques. Dans ces cas, les rgles du firewall dfiniront soit des adresses IP spcifiques, soit un
intervalle limit dadresses source dont les paquets seront accepts.
La premire classe de paquets entrants vient de serveurs distants rpondant aux requtes du firewall. Si certains
services, tels que les services Web ou FTP, peuvent provenir de partout, dautres services viendront de faon lgitime
uniquement du fournisseur daccs Internet ou dhtes de confiance spcialement choisis. Les exemples sont :

le service POP ;
lassignation dynamique dadresses IP ;
les rponses DNS.

La seconde classe de paquets entrants vient de clients distants accdant aux services offerts par le site mis en place. L
encore, alors que certaines connexions de services peuvent provenir de partout (Web), dautres services locaux ne
seront offerts qu un petit nombre dutilisateurs distants, de confiance. Les exemples de services locaux restreints
pourraient tre telnet, ssh, finger.

4.2. Filtrage local dadresses destination.


Filtrer les paquets en se basant sur ladresse destination est de moindre importance. La carte dinterface rseau ignore
les paquets qui ne lui sont pas adresss. Les paquets broadcast font exception car il seront retransmis tous les htes du
rseau.

4.3. Filtrage de port source distant.


Le port source des paquets entrants identifie le programme de lhte distant qui envoie le message. Les requtes et les
connexions entrantes, provenant de clients distants et allant vers les services offerts par le site scuriser, auront un port
source dans le rang des ports sans privilge. Par exemple, lhte de serveur Web sera sollicit par des ports sources
compris entre 1024 et 65535. Les rponses entrantes provenant de serveurs distants qui ont t contacts auront un port
source correspondant au service particulier appel. Lors de la connexion un site Web distant, tous les messages
entrants venant du serveur distant auront le port source 80 (le numro de port du service http).

J-F Challe

HEPCUT - ISIPH

146

4.4. Filtrage de port destination local.


Le port destination des paquets entrants identifie le programme ou le service auquel le paquet est destin. Les requtes
entrantes allant vers les services locaux auront comme port destination le numro de service assign au service
particulier appel. Un paquet entrant destin au serveur Web aura le numro de port destination 80.

4.5. Filtrage de ltat de connexion TCP.


Les rgles dacceptation des paquets TCP peuvent faire usage des indicateurs dtat de la connexion. Toutes les
connexions TCP disposent dun champ tat de connexion en raison du protocole dauthentification en trois phases. Les
paquets TCP entrants issus de clients distants auront lindicateur SYN, positionn uniquement dans le premier paquet
reu. Tous les paquets entrant aprs la premire requte de connexion, auront lindicateur ACK positionn. Les rgles
du firewall autoriseront les paquets destination des services offerts quel que soit ltat des indicateurs. Par contre, les
paquets entrants provenant de serveurs distants seront toujours des rponses la requte initiale de connexion lance par
le programme client sexcutant localement. Chaque paquet reu dun serveur distant aura lindicateur ACK
positionn. Les rgles du firewall impliqueront que tous les paquets entrants provenant de serveurs distants soient des
rponses des requtes (indicateur ACK positionn).

4.6. Sondes et balayages.


Une sonde est une tentative de connexion un port. Un balayage est un ensemble de sondes vers des ports diffrents.
Intrinsquement, les sondes et les balayages sont inoffensifs. Sur Internet, la seule faon de dcouvrir si un site offre un
service particulier est de sonder le port correspondant. Malheureusement, les sondes et les balayages deviennent de
moins en moins innocents. Ils sont davantage une phase initiale de recherche des vulnrabilits avant une attaque en
rgle.
4.6.1. Balayages gnraux de ports.
Des balayages gnraux de ports sont des sondes aveugles stendant sur un large ensemble de ports de services. Ces
balayages sont probablement gnrs par danciens outils de maintenance rseau. Ces outils sont devenus moins
frquents en raison de la disponibilit doutils plus sophistiqus.
4.6.2. Balayages cibls de ports.
Les balayages cibls de ports visent des vulnrabilits spcifiques. Les outils rcents tentent didentifier :

le matriel ;
le systme dexploitation ;
les versions de logiciels.

Les cibles sont souvent sondes en vue de la recherche des vulnrabilits spcifiques, tel un serveur de mails non
scuris. Chaque jour, les journaux des firewalls font tat de tentatives de connexions rates de toutes sortes. Il sagit
gnralement de tentatives de piratages avortes ne compromettant pas lintgrit du systme car les ports sont bloqus,
le firewall remplissant bien son office

4.7. Attaques par dni de service.


Les attaques par dni de service (Denial Of Service) consistent inonder un systme de paquets de telle sorte que la
connexion Internet sera interrompue ou srieusement dgrade, poussant les serveurs locaux leurs extrmes limites et
faisant en sorte que les requtes relles soient impossibles recevoir ou dans le pire des cas, que le systme plante
compltement.
Il est impossible de protger compltement un systme contre les attaques par dni de service car le nombre de formes
possibles dpendent uniquement de limagination du pirate. Toutefois, ces attaques empruntent habituellement une des
nombreuses formes classiques :

J-F Challe

HEPCUT - ISIPH

147

TCP ou SYN flooding ;


ping flooding ;
UDP flooding ;
Les bombes ICMP-redirect.

4.7.1. TCP et SYN flooding.


Une attaque de type TCP flooding ou SYN flooding consomme les ressources du systme jusqu ce quaucune
nouvelle connexion TCP ne soit possible. Lattaque se sert du protocole dauthentification en trois tapes
conjointement avec le spoofing de ladresse source.
Lattaquant dguise son adresse source et initie une connexion vers un des services TCP. Tout comme un client qui
tente une connexion TCP, le meneur de lattaque envoie un message SYN. Le serveur y rpond en envoyant un accus
de rception SYN-ACK. Toutefois, dans ce cas, ladresse laquelle le serveur rpond nest pas celle do provient
lattaque car il sagit dune adresse inexistante. Ltape finale de ltablissement de la connexion TCP qui est de
recevoir un ACK en rponse, naura jamais lieu. Par consquent, les ressources de connexion rseau, de taille finie,
sont absorbes. Les connexions demeurent demi-ouvertes jusqu ce que chaque tentative de connexion ait atteint le
temps limite imparti. Le pirate inonde le port de requtes de connexion plus vite que le temps dexpiration imparti pour
pouvoir librer des ressources. Si lattaque persiste, toutes les ressources seront en cours dutilisation et aucune
nouvelle requte de connexion ne pourra tre accepte. Si la cible est le port smtp, il sera impossible de recevoir du
courrier lectronique. Si le port http est vis, personne ne pourra se connecter au site Web.
Plusieurs solutions sont disponibles. Lune des plus connue est le filtrage des adresses source en bloquant les adresses
spoofes les plus communment utilises.
4.7.2. Ping flooding.
Tout message qui provoque une rponse du serveur peut tre utilis pour dgrader la connexion rseau en forant le
systme dpenser une grande partie de son temps en rponses. Le message ICMP echo-request envoy par un ping est
souvent accus dans ce cas. De plus, un vieil exploit appel ping de la mort (Ping of Death) impliquait lenvoi de
paquets ping de taille leve. Le rsultat en est que les systmes vulnrables peuvent planter. Plusieurs systmes UNIX
dont Linux sont invulnrables ce ping de la mort. Puisque historiquement, ping a t impliqu dans des attaques par
dni de service, plusieurs sites ne rpondent plus aux requtes ping extrieures.
4.7.3. UDP flooding.
Le protocole UDP est particulirement utile en tant quoutil de dni de service. Contrairement TCP, UDP est sans
tat. Les mcanismes de contrle de flux ne sont pas inclus. Il ny a pas dindicateur dtat de connexion. Les
numros de squence des datagrammes ne sont pas utiliss. Aucune information nest conserve sur la nature du
prochain paquet attendu. Il est relativement ais de faire en sorte quun systme soit si occup rpondre aux sondes
UDP quaucune bande passante ne soit laisse au trafic rseau lgitime.
Parce que, de faon inhrente, les service UDP sont moins scuriss que les services TCP, plusieurs sites dsactivent
tous les ports UDP qui ne sont pas absolument ncessaires.
4.7.4. Bombes ICMP -redirect.
Un message ICMP-redirect indique au systme cible quil doit changer ses tables de routage pour favoriser un chemin
plus court. Si le serveur excute les dmons gated et routed et honore les messages de redirection, il est possible un
pirate de tromper le systme cible de faon ce quil prenne la machine de lattaquant pour une machine du rseau local
ou une machine du fournisseur daccs Internet.
4.7.5. Autres attaques par dni de service.
La connectivit rseau nest pas la seule concerne par les attaques par dni de service. Voici quelques exemples :

un systme de fichiers peut tre satur par lenregistrement dune grande quantit :

J-F Challe

de messages dans les fichiers journaux ;


de courriers lectroniques de grande taille.

HEPCUT - ISIPH

148

Il pourrait tre judicieux de configurer les limites des ressources et de prvoir une partition spare pour les
systmes de fichiers qui croissent rapidement ;
les serveurs peuvent tre bloqus si un grand nombre de donnes leur sont envoyes et que les buffers
dbordent. Plusieurs faiblesses connues sont les buffers overflows.

5. Filtrage de paquets sortants.


Si lenvironnement est sr, le filtrage des paquets sortants nest pas aussi critique que le filtrage des paquets entrants.
Le systme ne rpondra pas des messages entrants auxquels le firewall fera opposition. Mais le filtrage symtrique est
encore plus scuris car il protge aussi les autres htes du rseau des erreurs pouvant survenir au niveau de la machine
firewall.
Le pire des scnarios serait quun pirate russisse obtenir un accs au firewall. Par raction, le filtrage de paquets
sortants fournit alors un peu plus de protection jusqu ce que le pirate obtienne un accs root et dsactive le firewall.
Le filtrage des messages sortants permet dexcuter des services sur le rseau local sans diffuser de paquets vers
Internet. Ce type de filtre est particulirement utile dans le cas o un serveur DHCP est prsent, alors les paquets ne
doivent pas tre envoys vers Internet.

5.1. Filtrage dadresse source locale.


Le filtrage des paquets sortants bas sur ladresse source est ais. Ladresse source est toujours ladresse IP de
lordinateur. Il ny a aucune raison de permettre des paquets sortants davoir une autre adresse source.

5.2. Filtrage dadresse de destination distante.


Tout comme pour les paquets entrants, ladministrateur peut permettre certains types de paquets sortants dtre
adresss uniquement des rseaux distants spcifiques ou des machines individuelles.
La premire classe de paquets sortants filtrer selon ladresse de destination sont les paquets destins des serveurs
distants qui ont t contacts par la machine firewall. Les paquets destins des serveurs Web ou des serveurs FTP
doivent thoriquement atteindre toute zone dInternet. Par contre, des services comme POP ne sont accessibles qua
travers certains serveurs o les utilisateurs ont souscrit un abonnement. Cest galement le cas des serveurs de groupes
de discussions.
La seconde classe de paquets sortants filtrer selon ladresse de destination sont les paquets destins des clients
distants qui accdent un service offert par le site en cours de scurisation. Par exemple, les rponses du serveur Web
ne seront acceptes qu la condition que le destinataire soit un site ami. Des exemples de services locaux restreindre
seraient telnet, ssh et finger. Non seulement les rgles du firewall refusent les connexions entrantes vers ces services
mais les rgles ne devraient pas davantage permettre des rponses sortantes pour ces services. Cest donc une question
de symtrie.
Certains diteurs de logiciels ont tendance forcer les machines clientes leur envoyer des informations linsu des
utilisateurs. Ladministrateur peut dans ce cas interdire la sortie de paquets vers ces destinations.

5.3. Filtrage de port source local.


Dfinir explicitement les ports qui pourront tre employs pour des connexions sortantes dpend :

des programmes clients ;


des programmes serveurs ;

Les connexions manant des programmes clients proviennent la plupart du temps dun port source sans privilge. Le
firewall doit donc imposer aux clients lemploi de ports sans privilge.
Les paquets sortants manant des programmes serveurs proviennent toujours dun port source dtermin. Les serveurs
doivent donc tre limits, par une rgle du firewall, un port dtermin. Il est par exemple exclu quun serveur Web
prsente un port source autre que 80.

J-F Challe

HEPCUT - ISIPH

149

5.4. Filtrage de port destination distant.


Les programmes clients locaux sont conus pour tre connects des serveurs rseau offrant leurs services partir de
ports spcifiques. Dans cette perspective, il sagit de limiter les clients locaux une connexion, seulement au port qui
leur est associ. Cela permet au firewall dinterdire les balayages de ports.

5.5. Filtrage de ltat des connexions TCP sortantes.


Les rgles dacceptation des paquets TCP sortants peuvent faire usage des indicateurs dtat de connexion associs aux
connexions TCP.
Les paquets TCP sortants provenant de clients locaux portent lindicateur SYN, plac dans le premier paquet envoy en
tant que partie de la procdure dauthentification en trois phases. La requte de connexion initiale ne prsente pas
lindicateur ACK. Par la suite, tous les paquets sortants ne porteront que lindicateur ACK. Les rgles du firewall
doivent autoriser les clients locaux mettre des paquets sortants soit avec lindicateur SYN, soit avec lindicateur
ACK.
Les paquets sortants provenant des serveurs locaux sont toujours des rponses la requte initiale de connexion initie
partir dun programme client distant. Chaque paquet envoy partir dun serveur local doit donc porter lindicateur
ACK. Les rgles du firewall doivent ainsi imposer, aux paquets sortants provenant des serveurs locaux, porter
lindicateur ACK.

6. Services rseau privs/publics.


Une des manires les plus aises de faciliter les intrusions est de permettre un accs extrieur aux services locaux qui
sont dsigns uniquement pour un usage local. Certains services, sils sont offerts localement, ne devraient jamais
franchir la frontire entre le rseau local et Internet. Certains de ces services ennuient le voisinage (serveur DHCP),
dautres fournissent de linformation quil serait prfrable de rserver un usage priv.
La faon la plus simple de protger un site est de ne pas offrir de service. Nanmoins si un service doit tre utilis
localement, cette rgle ne peut tre applique. Les services comme NFS, bas sur les RPC sont reconnus comme tant
malaiss scuriser au niveau du filtrage de paquets. Une manire de prserver lordinateur est de ne pas hberger de
services rseau qui ne sont pas destins un usage public sur la machine firewall. Si le service nest pas disponible,
rien ne permet un client distant de sy connecter.

7. Construction dun firewall.


Le firewall qui sera construit dans cette section est fond sur la directive par dfaut du tout refuser. Donc, tout le trafic
est bloqu par dfaut. Les services sont permis seulement par exception cette rgle.

7.1. Le programme ipchains.


Le programme dadministration de firewall ipchains cre les rgles individuelles du filtre de paquets pour les chanes
dinput et douput. Un des aspects le plus important de la dfinition dun firewall est lordre dans lequel les rgles sont
dfinies.
Les rgles du filtrage de paquets sont sauvegardes lintrieur de chanes dinput, douput ou de forward des tables du
noyau, dans le mme ordre quelles ont t dfinies. Les rgles individuelles sont insres au dbut de la chane ou
ajoutes la fin. Lordre de dfinition des rgles est celui dans lequel elles seront ajoutes aux tables du noyau et par le
fait mme, lordre dans lequel chaque rgle sera compare chaque paquet est identique.
Chaque fois quun paquet extrieur arrive linterface rseau, les champs de son en-tte sont compars chacune des
rgles de la chane dinput jusqu ce quune correspondance soit trouve. A linverse, les champs den-tte de chaque
paquet achemin linterface rseau provenant de lintrieur sont compars chacune des rgles de la chane doutput
jusqu ce quune correspondance soit trouve. Dans chaque direction, lorsquune correspondance est trouve, la
comparaison sarrte et la directive de la rgle sapplique, soit accepter, rejeter ou refuser. Si le paquet ne satisfait
aucune rgle de la chane, alors la directive par dfaut sapplique.

J-F Challe

HEPCUT - ISIPH

150

Voici le format de la commande ipchains ainsi que la signification des diffrentes options :
ipchains -A|-I [chain] [-i interface] [-p protocol] [[!]y] [-s address
[port[:port]]] [-d address [port[:port]]] j policy [-l]
Option
-A [chain]
-I [chain]
-i <interface>
-p <protocol>

-y

! y

-s <address> [<port>]

-d <address> [<port>]

-j <policy>
-l

Description
Ajoute une rgle la fin dune chane. Les chanes utilisables sont input, output et forward.
Si une chane nest pas spcifie, la rgle sapplique alors toutes les chanes.
Insre une rgle au dbut dune chane. . Les chanes utilisables sont input, output et forward.
Si une chane nest pas spcifie, la rgle sapplique alors toutes les chanes.
Spcifie linterface rseau laquelle la rgle sapplique. Si linterface nest pas spcifie, la
rgle sapplique toutes les interfaces.
Spcifie le protocole IP auquel la rgle sapplique. Si loption p nest pas employe, la rgle
sapplique tous les protocoles. Les noms de protocoles supports sont tcp, udp, icmp et all.
Les noms ou les numros des protocoles de /etc/protocols sont galement permis.
Lindicateur SYN doit tre inscrit et lindicateur ACK doit tre enlev du message TCP,
indiquant ainsi une requte pour ltablissement dune connexion. Si loption y napparat
pas, les bits indicateurs TCP ne sont pas vrifis.
Lindicateur ACK doit tre inscrit dans le message TCP, indiquant une rponse initiale une
requte de connexion ou une continuation dune connexion tablie. Si ! -y napparat pas
comme argument, les bit indicateurs TCP ne sont pas vrifis.
Spcifie ladresse source du paquet. Si une adresse source nest pas spcifie, toutes les
adresses unicast sources sont sous-entendues. Si un port ou une srie de ports est donn, la
rgle ne sapplique qu ces ports. Sans la spcification dun port, la rgle sapplique tous
les ports source. Une srie de ports est dfinie par des nombres identifiant les ports de dbut
et de fin, spars par deux-points. Si un port est inscrit, une adresse doit tre donne.
Spcifie ladresse de destination dun paquet. Si une adresse de destination nest pas
spcifie, toutes les adresses unicast de destination sont sous-entendues. Si un port ou une
srie de ports est donn, la rgle ne sapplique qu ces ports. Sans la spcification dun port,
la rgle sapplique tous les ports de destination. Une srie de ports est dfinie par des
nombres indiquant les ports de dbut et de fin, spars par deux-points. Si un port est inscrit,
une adresse doit tre donne.
Spcifie la directive dacheminement des paquets, soit ACCEPT, DENY ou REJECT. La
chane forward peut galement prendre la directive MASQ.
Ecrit un message informatif du noyau dans le journal du systme, par dfaut, chaque fois
quun message satisfait une rgle.

7.2. Initialisation du firewall.


Une firewall se construit laide dune srie de rgles constituant un filtre de paquets et dfinies par des options de la
ligne de commande de ipchains. La commande ipchains est excute lors de chaque dfinition dune rgle. Sachant
quun script de firewall peut comporter plusieurs centaines de rgles, cela dnombre les excutions de la commande
ipchains.
Lutilisation de la commande ipchains devrait toujours se faire laide dun script et non pas en ligne de commande. Il
est impratif dexcuter le script de firewall dans sa totalit car sans cela, le firewall pourrait accepter ou refuser des
paquets de manire inapproprie. Lorsque les chanes sont initialises et que la politique de tout refuser par dfaut est
applique, tous les services du rseau sont bloqus jusqu ce que laccs linterface soit explicitement ractiv. Dans
le mme ordre dide, lexcution du script de firewall doit toujours tre ralis depuis la console. Il ne faut jamais
excuter le script depuis une machine distante car le trafic distant sera bloqu.
Les rgles du firewall tant excutes dans lordre de leur apparition dans la chane, il est impratif de les ranger de la
plus spcifique la plus gnrale.
Linitialisation du firewall couvre une grande quantit de paramtres incluant :

J-F Challe

la dfinition de constantes utilises dans le script ;


la suppression des rgles existantes dans les chanes du firewall ;
ltablissement dune politique par dfaut pour les chanes dinput et douput ;

HEPCUT - ISIPH

151

le rtablissement de linterface loopback pour une opration normale du systme ;


le refus daccs aux htes spcifiques ou aux rseaux indsirables ;
la dfinition de rgles de base pour la protection contre de mauvaises adresses ;
la protection de certains services fonctionnant sur des ports sans privilge.

7.2.1. Les constantes symboliques.


Un script de firewall est plus ais lire et entretenir si des constantes symboliques sont employes pour les noms et
les adresses qui reviennent souvent.
#!/bin/bash
INTRANETADDR=192.168.1.1
INTRANETNETWORK=192.168.1.0/24
INTERNETADDR=212.68.198.221
NETMASK="255.255.255.240"
NETWORK="212.68.198.208"
LOOPBACK="127.0.0.0/8"
CLASSEA="10.0.0.0/8"
CLASSEB="172.16.0.0/12"
CLASSEC="192.168.0.0/16"
CLASSED="224.0.0.0/4"
CLASSEE="240.0.0.0/5"
BROADCASTSRC="255.255.255.255"
BROADCASTDEST="0.0.0.0"
INTRANETETH=eth1
INTERNETETH=eth0
FAIPOPSERVER="mail.brutele.be"
FAINEWSSERVER="news.brutele.be"
7.2.2. Supprimer les rgles existantes.
La premire tape de la dfinition dune srie de rgles de filtrage est la suppression des rgles existantes dans les
chanes. Si tel ntait pas le cas, chaque nouvelle rgle dfinie serait ajoute la suite des rgles dj en place. Les
paquets pourraient donc satisfaire une rgle prexistante avant datteindre le point de la chane nouvellement ajout.
La commande suivante permet de vider toutes les chanes.
ipchains F
Les chanes tant vides, le systme est dans ltat par dfaut o il accepte tout.
7.2.3. Dfinir la politique par dfaut.
Leffet secondaire de lopration consistant vider les chanes est que le systme retourne son tat par dfaut, incluant
la politique de tout accepter. Dans le cas de la construction dun firewall scuritaire, il faut tablir la politique par
dfaut du tout refuser.
ipchains P input DENY
ipchains P output REJECT
ipchains P forward REJECT
Les paquets arrivant au firewall sont refuss sans envoi de message davertissement lexpditeur alors que les paquets
sortants sont rejets avec mission dun message derreur ICMP vers lexpditeur interne. La diffrence pour
lutilisateur final rside, par exemple, dans le fait que si une personne dun site distant tente de se connecter au site Web
local, le navigateur de cette personne restera sans rponse jusqu ce que son systme affiche un message de dlai TCP
expir. Cet utilisateur nobtiendra aucune indication lui permettant de dterminer si le site ou le serveur Web existe
rellement. Par contre, si lutilisateur local tente de rejoindre un site WEB distance, le navigateur recevra un message
derreur indiquant, par exemple, que lopration nest pas permise.
A ce point, tout le trafic du rseau est bloqu.

J-F Challe

HEPCUT - ISIPH

152

7.2.4. Activer linterface loopback.


Le firewall doit activer, sans restriction, le trafic loopback. En effet, certaines fonctionnalits du systme exploitent
linterface loopback pour offrir des services. Cest, par exemple, le cas de linterface X window. Lorsque tout est
permis, les rgles sont simples. Il suffit seulement dannuler les effets de la politique du tout refuser par dfaut en
acceptant tout sur linterface loopback.
ipchains A input i lo j ACCEPT
ipchains A output i lo j ACCEPT
7.2.5. Le spoofing et les mauvaises adresses source.
Au niveau du filtrage de paquets, une des fausses adresses identifiable avec certitude est limitation de ladresse IP du
firewall. Il faut donc tablir une rgle refusant tous les paquets entrants prtendant provenir du firewall.
ipchains A input i $INTERNETETH s $INTERNETADDR j DENY -l
Il nest pas ncessaire de bloquer les paquets sortants qui sont destins au firewall. En effet, ces paquets passent
toujours par linterface loopback.
Les adresses IP rserves aux rseaux privs ne peuvent en aucun cas tre reues par le firewall. De mme, le firewall
ne doit jamais diffuser les adresses prives vers Internet. Voici une srie de rgles empchant la rception et la
distribution de ces adresses :
ipchains
ipchains
ipchains
ipchains
ipchains
ipchains
ipchains
ipchains
ipchains
ipchains
ipchains
ipchains

A
A
A
A
A
A
A
A
A
A
A
A

input i $INTERNETETH s $CLASSEA j DENY


input i $INTERNETETH d $CLASSEA j DENY
output i $INTERNETETH s $CLASSEA j DENY
output i $INTERNETETH d $CLASSEA j DENY
input i $INTERNETETH s $CLASSEB j DENY
input i $INTERNETETH d $CLASSEB j DENY
output i $INTERNETETH s $CLASSEB j DENY
output i $INTERNETETH d $CLASSEB j DENY
input i $INTERNETETH s $CLASSEC j DENY
input i $INTERNETETH d $CLASSEC j DENY
output i $INTERNETETH s $CLASSEC j DENY
output i $INTERNETETH d $CLASSEC j DENY

-l
-l

-l
-l

-l
-l

Il faut galement refuser les paquets possdant une adresse source rserve linterface loopback :
ipchains A input i $INTERNETETH s $LOOPBACK j DENY
ipchains A output i $INTERNETETH s $LOOPBACK j DENY -l
Les paquets broadcast peuvent avoir une adresse source ou une adresse destination illgale. Un paquet entrant
possdant une adresse source 255.255.255.255 est certainement illgal car ladresse source ne peut tre que 0.0.0.0.
Dans le mme ordre dide, un paquet entrant possdant une adresse destination 0.0.0.0 est certainement illgal car
ladresse destination ne peut tre que 255.255.255.255. En rsum, les paquets entrants ayant une adresse source
correspondant une adresse broadcast de destination doivent tre limins de mme que les paquets entrants ayant une
adresse de destination correspondant une adresse broadcast source. Cette inversion dans lutilisation des adresses
broadcast nest pas une erreur mais une sonde employe pour identifier les machines utilisant UNIX.
ipchains A input i $INTERNETETH s $BROADCASTDEST j DENY
ipchains A input i $INTERNETETH d $BROADCASTSRC j DENY -l
Les adresses multicast ne sont lgales qu la condition dtre une adresse de destination. Cela signifie que les paquets
possdant une adresse source de type multicast sont des attaques par spoofing.
ipchains A input i $INTERNETETH s $CLASSED j DENY l
ipchains A output i $INTERNETETH s $CLASSED j REJECT l

J-F Challe

HEPCUT - ISIPH

153

De plus, le firewall ne doit pas envoyer des paquets multicast vers Internet. La rgle suivante bloque lenvoi des
paquets multicast :
ipchains A output i $INTERNETETH d $CLASSED j REJECT l
Si la machine firewall nest pas inscrite un service broadcast, il est permis au moyen de la rgle suivante, de refuser
tous les paquets multicast entrants :
ipchains A input i $INTERNETETH d $CLASSED j REJECT l
Les adresses de la classe E sont rserves un usage exprimental et ne sont, par consquent, pas employes sur
Internet. Il faut donc refuser tous les paquets entrants prtendant provenir dun rseau de classe E.
ipchains A input i $INTERNETETH s $CLASSEE j DENY l
LInternet Assigned Numbers Authority (IANA) administre la distribution et lenregistrement des espaces dadresses IP
du monde entier. Quelques blocs dadresses sont identifis comme tant rservs lIANA. Ces adresses ne devraient
pas apparatre dans le rseau public Internet. Voici les plages dadresses rserves lIANA :
Dbut
1.0.0.0
2.0.0.0
5.0.0.0
7.0.0.0
23.0.0.0
27.0.0.0
31.0.0.0
37.0.0.0
39.0.0.0
41.0.0.0
42.0.0.0
58.0.0.0
60.0.0.0
65.0.0.0
66.0.0.0
67.0.0.0
68.0.0.0

Fin
1.255.255.255
2.255.255.255
5.255.255.255
7.255.255.255
23.255.255.255
27.255.255.255
31.255.255.255
37.255.255.255
39.255.255.255
41.255.255.255
42.255.255.255
58.255.255.255
60.255.255.255
65.255.255.255
66.255.255.255
67.255.255.255
68.255.255.255

Dbut
69.0.0.0
70.0.0.0
71.0.0.0
72.0.0.0
73.0.0.0
74.0.0.0
75.0.0.0
76.0.0.0
77.0.0.0
78.0.0.0
79.0.0.0
80.0.0.0
96.0.0.0
112.0.0.0
113.0.0.0
114.0.0.0
115.0.0.0

Fin
69.255.255.255
70.255.255.255
71.255.255.255
72.255.255.255
73.255.255.255
74.255.255.255
75.255.255.255
76.255.255.255
77.255.255.255
78.255.255.255
79.255.255.255
95.255.255.255
111.255.255.255
112.255.255.255
113.255.255.255
114.255.255.255
115.255.255.255

Dbut
116.0.0.0
117.0.0.0
118.0.0.0
119.0.0.0
120.0.0.0
121.0.0.0
122.0.0.0
123.0.0.0
124.0.0.0
125.0.0.0
126.0.0.0
217.0.0.0
218.0.0.0
219.0.0.0
220.0.0.0

Voici les rgles du firewall refusant les paquets provenant soit-disant de lIANA :
ipchains
ipchains
ipchains
ipchains
ipchains
ipchains
ipchains
ipchains
ipchains
ipchains
ipchains
ipchains
ipchains
ipchains
ipchains
ipchains
ipchains
ipchains
ipchains
ipchains

J-F Challe

A
A
A
A
A
A
A
A
A
A
A
A
A
A
A
A
A
A
A
A

input
input
input
input
input
input
input
input
input
input
input
input
input
input
input
input
input
input
input
input

i
i
i
i
i
i
i
i
i
i
i
i
i
i
i
i
i
i
i
i

$INTERNETETH
$INTERNETETH
$INTERNETETH
$INTERNETETH
$INTERNETETH
$INTERNETETH
$INTERNETETH
$INTERNETETH
$INTERNETETH
$INTERNETETH
$INTERNETETH
$INTERNETETH
$INTERNETETH
$INTERNETETH
$INTERNETETH
$INTERNETETH
$INTERNETETH
$INTERNETETH
$INTERNETETH
$INTERNETETH

s
s
s
s
s
s
s
s
s
s
s
s
s
s
s
s
s
s
s
s

1.0.0.0/8 j DENY l
2.0.0.0/8 j DENY l
5.0.0.0/8 j DENY l
7.0.0.0/8 j DENY l
23.0.0.0/8 j DENY l
27.0.0.0/8 j DENY l
31.0.0.0/8 j DENY l
37.0.0.0/8 j DENY l
39.0.0.0/8 j DENY l
41.0.0.0/8 j DENY l
42.0.0.0/8 j DENY l
58.0.0.0/8 j DENY l
60.0.0.0/8 j DENY l
65.0.0.0/8 j DENY l
66.0.0.0/8 j DENY l
67.0.0.0/8 j DENY l
68.0.0.0/8 j DENY l
69.0.0.0/8 j DENY l
70.0.0.0/8 j DENY l
71.0.0.0/8 j DENY l

Fin
116.255.255.255
117.255.255.255
118.255.255.255
119.255.255.255
120.255.255.255
121.255.255.255
122.255.255.255
123.255.255.255
124.255.255.255
125.255.255.255
126.255.255.255
217.255.255.255
218.255.255.255
219.255.255.255
223.255.255.255

HEPCUT - ISIPH

ipchains
ipchains
ipchains
ipchains
ipchains
ipchains
ipchains
ipchains
ipchains
ipchains
ipchains
ipchains
ipchains
ipchains
ipchains
ipchains
ipchains
ipchains
ipchains
ipchains
ipchains
ipchains
ipchains
ipchains
ipchains
ipchains
ipchains
ipchains
ipchains

A
A
A
A
A
A
A
A
A
A
A
A
A
A
A
A
A
A
A
A
A
A
A
A
A
A
A
A
A

154

input
input
input
input
input
input
input
input
input
input
input
input
input
input
input
input
input
input
input
input
input
input
input
input
input
input
input
input
input

i
i
i
i
i
i
i
i
i
i
i
i
i
i
i
i
i
i
i
i
i
i
i
i
i
i
i
i
i

$INTERNETETH
$INTERNETETH
$INTERNETETH
$INTERNETETH
$INTERNETETH
$INTERNETETH
$INTERNETETH
$INTERNETETH
$INTERNETETH
$INTERNETETH
$INTERNETETH
$INTERNETETH
$INTERNETETH
$INTERNETETH
$INTERNETETH
$INTERNETETH
$INTERNETETH
$INTERNETETH
$INTERNETETH
$INTERNETETH
$INTERNETETH
$INTERNETETH
$INTERNETETH
$INTERNETETH
$INTERNETETH
$INTERNETETH
$INTERNETETH
$INTERNETETH
$INTERNETETH

s
s
s
s
s
s
s
s
s
s
s
s
s
s
s
s
s
s
s
s
s
s
s
s
s
s
s
s
s

72.0.0.0/8 j DENY l
73.0.0.0/8 j DENY l
74.0.0.0/8 j DENY l
75.0.0.0/8 j DENY l
76.0.0.0/8 j DENY l
77.0.0.0/8 j DENY l
78.0.0.0/8 j DENY l
79.0.0.0/8 j DENY l
80.0.0.0/4 j DENY l
96.0.0.0/4 j DENY l
112.0.0.0/8 j DENY l
113.0.0.0/8 j DENY l
114.0.0.0/8 j DENY l
115.0.0.0/8 j DENY l
116.0.0.0/8 j DENY l
117.0.0.0/8 j DENY l
118.0.0.0/8 j DENY l
119.0.0.0/8 j DENY l
120.0.0.0/8 j DENY l
121.0.0.0/8 j DENY l
122.0.0.0/8 j DENY l
123.0.0.0/8 j DENY l
124.0.0.0/8 j DENY l
125.0.0.0/8 j DENY l
126.0.0.0/8 j DENY l
217.0.0.0/8 j DENY l
218.0.0.0/8 j DENY l
219.0.0.0/8 j DENY l
220.0.0.0/6 j DENY l

7.3. Filtrage des messages dtat et de contrle ICMP.


Les messages de contrle ICMP apparaissent la suite dun certain nombre derreurs, ils sont produits par un
programme danalyse de rseau tel que ping et traceroute. Voici les types de messages ICMP les plus courants :
Code
0
3

Nom symbolique
echo-reply
destination-unreachable

4
5

source-quench
redirect

8
11

echo-request
time-exceeded

12

parameter-problem

Description
Rponse un ping.
Message derreur gnral ; un routeur le long du trajet est incapable de transmettre
le paquet la destination suivante (utilis par traceroute).
Contrle de flux de niveau IP entre deux routeurs ou entre un routeur et un hte.
Message dacheminement renvoy lexpditeur lorsque le routeur dtermine quil
existe un chemin plus court.
Requte ping.
Message dacheminement renvoy lorsque le nombre maximal de hops est dpass
(utilis par traceroute).
Valeur non attendue se trouvant dans len-tte du paquet.

7.3.1. Messages derreur dtat et de contrle.


Les messages ICMP Source Quench sont envoys lorsquune connexion source, habituellement un routeur, expdie des
donnes la destination suivante, plus vite que celle-ci ne peut laccepter. Ce message ICMP est donc utilis comme
une forme primitive de contrle de flux. Ces messages doivent donc tre accepts par le firewall :
ipchains A input i $INTERNETETH p icmp s any/0 4 d $INTERNETADDR j ACCEPT
ipchains A output i $INTERNETETH p icmp s $INTERNETADDR 4 d any/0 j ACCEPT
Un message ICMP Parameter Problem est envoy lorsquun paquet reu contient des donnes illgales ou inattendues,
dans son en-tte. Il en est de mme, lorsque le checksum de len-tte ne correspond pas au checksum calcul par la
machine rceptrice : un message ICMP Parameter Problem est envoy. Le firewall doit donc laisser passer ce message
ICMP :

J-F Challe

HEPCUT - ISIPH

155

ipchains A input i $INTERNETETH p icmp s any/0 12 d $INTERNETADDR j ACCEPT


ipchains A output i $INTERNETETH p icmp s $INTERNETADDR 12 d any/0
j ACCEPT
Un message ICMP Destination Unreachable est un message gnral derreur que doit laisser passer le firewall si
ladministrateur accepte que la machine rponde un traceroute :
ipchains A input i $INTERNETETH p icmp s any/0 3 d $INTERNETADDR j ACCEPT
ipchains A output i $INTERNETETH p icmp s $INTERNETADDR 3 d any/0 j ACCEPT
Un message ICMP Time Exceeded indique que le temps imparti est coul ou plus spcifiquement que le nombre
maximal de hops dun paquet a t dpass. Sur les rseaux actuels, un message Time Exceeded entrant est la plupart
du temps une rponse ICMP une requte traceroute sortante :
ipchains A input i $INTERNETETH p icmp s any/0 11 d $INTERNETADDR j ACCEPT
ipchains A output i $INTERNETETH p icmp s $INTERNETADDR 11 d any/0
j ACCEPT
7.3.2. Messages de contrle ping Echo Request et Echo Reply.
Le firewall doit tre capable denvoyer des requtes ping (Echo Request) vers tous les htes distants. Cela signifie que
le firewall doit tre en mesure denvoyer des requtes Echo Request et de recevoir des Echo Reply. Voici les rgles
dacceptation du firewall :
ipchains A output i $INTERNETETH p icmp s $INTERNETADDR 8 d any/0 j ACCEPT
ipchains A input i $INTERNETETH p icmp s any/0 0 d $INTERNETADDR j ACCEPT
Les pings provenant dhtes distants doivent tre accepts la condition quil soient mis par des htes de confiance.
Voici un exemple o toutes les demandes provenant de la machine 212.68.198.209 sont acceptes par le firewall :
ipchains A input i $INTERNETETH p icmp s 212.68.198.209/32 8
d $INTERNETADDR j ACCEPT
ipchains A output i $INTERNETETH p icmp s $INTERNETADDR 0
d 212.68.198.209/32 j ACCEPT
Les attaques smurf ont utilis des paquets ping, diffusant, en continuit, des messages Echo Request aux htes du
rseau, messages porteurs dune fausse adresse IP source, soit celle de la victime. Le rsultat en est que chaque
machine du rseau bombarde constamment la machine de la victime de messages Echo Reply, engorgeant ainsi
compltement la bande passante.
Bien que la politique du tout refuser empche les attaques smurf, il est intressant de configurer le firewa ll pour quil
enregistre une attaque en cours dans le fichier des vnements. Pour enregistrer ces attaques, il faut savoir que ladresse
de destination des paquets peut tre :

ladresse broadcast de destination (0.0.0.0) ;


ladresse rseau du firewall ;
le masque rseau du firewall ;

Voici une srie de rgles mmorisant les tentatives dattaques smurf :


ipchains
ipchains
ipchains
ipchains
ipchains
ipchains

J-F Challe

A
A
A
A
A
A

input i $INTERNETETH
output i $INETNETETH
input i $INTERNETETH
output i $INETNETETH
input i $INTERNETETH
output i $INETNETETH

p
p
p
p
p
p

icmp
icmp
icmp
icmp
icmp
icmp

d
d
d
d
d
d

$BROADCASTDEST j DENY l
$BROADCASTDEST j REJECT l
$NETMASK j DENY l
$NETMASK j REJECT l
$NETWORK j DENY l
$NETWORK j REJECT l

HEPCUT - ISIPH

156

7.4. Protection des services sur les ports TCP sans privilge.
7.4.1. Interdire les connexions Open Window.
Les connexions sortantes diriges vers un gestionnaire Open Window distant devraient tre interdites. Ladministrateur
doit donc inscrire une rgle dans le firewall interdisant linitiation dune connexion vers un gestionnaire Open Window.
Cela signifie que les paquets sortants dots de lindicateur SYN doivent tre refuss.
Le gestionnaire Open Window utilise le port 2000 pour accepter les connexions. Voici la rgle bloquant linitiation de
ce type de requte :
ipchains A output i $INTERNETETH p tcp y s $INTERNETADDR d any/0 2000
j REJECT
Il nest pas ncessaire de bloquer explicitement les demandes de connexion entrantes vers le port 2000 car le systme
Linux est dpourvu de gestionnaire Open Window.
7.4.2. Interdire les connexions X Window.
Les connexions aux serveurs X Window distants devraient tre interdites. Afin dautoriser plusieurs connexions
concurrentes au serveur X W indow, les ports allant de 6000 6063 sont utiliss. Ladministrateur doit donc bloquer les
initiations de connexions vers ces ports. De mme les demandes de connexions au serveur X Window local doivent tre
refuses :
ipchains A output i $INTERNETETH p tcp y s $INTERNETADDR d any/0 6000:6063
j REJECT
ipchains A input i *INTERNETETH p tcp y d $INTERNETADDR 6000:6063
j DENY l
7.4.3. Interdire les connexions au serveur SOCKS .
Le serveur mandataire SOCKS exploite le port 1080. Ce type de service est exploit pour rendre des connexions
anonymes. Il faut donc interdire, non seulement, lutilisation du serveur SOCK local par des clients distants mais
galement lexploitation de serveurs SOCK distants depuis le firewall.
ipchains A output i $INTERNETETH p tcp y s $INTERNETADDR d any/0 1080
j REJECT l
ipchains A input i $INTERNETETH p tcp y d $INTERNETADDR 1080 j DENY -l

7.5. Protection des services sur les ports UDP sans privilge.
Contrairement au protocole TCP, le protocole UDP ne possde pas dtat de connexion. La seule possibilit offerte
ladministrateur est tout simplement de bloquer laccs UDP.
Dans la catgorie des services UDP, le protocole NFS est le principal service concern par le filtrage. Le service NFS
opre sur le port 2049. Il faut donc bloquer toutes les connexions entrantes vers le port 2049. Dans le cas o un serveur
NFS nest pas excut sur la machine firewall, la rgle suivante nest pas ncessaire :
ipchains A input i $INTERNETETH p udp d $INTERNETADDR 2049 j DENY l
Dans de rares cas, le protocole NFS est compil pour travailler au moyen du protocole TCP. Dans cette situation, il faut
bloquer les connexions entrantes et sortantes :
ipchains A input i $INTERNETETH p tcp y d $INTERNETADDR 2049 j DENY l
ipchains A output i $INTERNEETH p tcp y d any/0 2049 j DENY l

J-F Challe

HEPCUT - ISIPH

157

7.6. Activation des services Internet de base.


Deux services sont absolument requis, ils sont :

DNS ;
ident.

Le DNS effectue la traduction entre les noms dhtes et leur adresse IP associe. Le service identd, quant lui, fournit
le nom de lutilisateur, ou lID, associ une connexion. Cette traduction est couramment demande par un serveur de
courrier distant lorsquun email est expdi. Il nest pas ncessaire doffrir le service identd. Par contre pour viter des
dlais dexpiration trop longs, il faut rpondre une demande de connexion entrante dune manire ou dune autre.
7.6.1. Permettre DNS.
Le service DNS est un protocole de communication qui sappuie la fois sur UDP et sur TCP. Dans les deux cas, le
port 53 est utilis.
Les requtes dquivalence (nslookup) sont normalement faites sous UDP, que ce soit des requtes dun client vers le
serveur ou entre des serveurs. La communication UDP peut faillir si linformation renvoye est trop grande pour tre
contenue dans un paquet DNS UDP. Le serveur place alors, dans len-tte du message, un bit indicateur de donnes
tronques. Dans ce cas, le protocole permet un autre essai sous TCP. En pratique, TCP nest pas utile lors dune
requte DNS sauf dans le cas dun transfert de zones entre les serveurs primaire et secondaire.
Le rsolveur DNS incorpor au code de la bibliothque rseau peut requrir la conversion dun nom symbolique en une
adresse. Cette requte est, par exemple, envoye au serveur DNS du fournisseur daccs Internet.
En supposant que le serveur DNS du fournisseur daccs Internet soit 212.68.193.32, voici les rgles du firewall
autorisant les demandes de rsolution de noms :
ipchains A output i $INTERNETETH p udp s $INTERNETADDR 1024:65535
d 212.68.193.32 53 j ACCEPT
ipchains A input i $INTERNETETH p udp s 212.68.193.32 53
d $INTERNETADDR 1024:65535 j ACCEPT
Si la taille des informations est trop importante, il est impossible de les inclure dans un datagramme UDP. Dans ce cas,
le DNS essaye de rsoudre le problme en utilisant le protocole TCP. Voici les rgles permettant la communication
DNS en TCP :
ipchains A output i $INTERNETETH p tcp s $INTERNETADDR 1024:65535
d 212.68.193.32 53 j ACCEPT
ipchains A input i $INTERNETETH p tcp ! -y s 212.68.193.32 53
d $INTERNETADDR 1024:65535 j ACCEPT
Dans le cas des DNS, lorsquun serveur local ne possde pas linformation demande par un client, il contacte un
serveur distant et lui transfre la requte. Ce type de configuration est couramment employe afin de mettre dans la
mmoire cache du serveur de noms un certain nombre de rsolutions de noms. A la diffrence des changes entre un
client et un serveur, les changes entre les serveurs passent toujours par le port 53 dun ct comme de lautre. De plus,
les requtes dquivalence sont toujours faites au moyen du protocole UDP. Voici les rgles permettant les changes
entre les serveurs :
ipchains A output I $INTERNETETH p udp s $INTERNETADDR 53 d any/0 53
j ACCEPT
ipchains A input I $INTERNETETH p udp s any/0 53 d $INTERNETADDR 53
j ACCEPT
Si le site est constitu de plusieurs machines, il y a de fortes chances pour quun serveur DNS soit prsent. Ce serveur
doit tre joignable de manire distante afin de rsoudre les noms. Non seulement le serveur doit tre consultable par des
clients mais galement par des serveurs :

J-F Challe

HEPCUT - ISIPH

ipchains A
j ACCEPT
ipchains A
j ACCEPT
ipchains A
j ACCEPT
ipchains A
j ACCEPT

158

input i $INTERNETETH p udp s any/0 1024:65535 d $INTERNETADDR 53


ouput i $INTERNETETH p udp s $INTERNETETH 53 d any/0 1024:65535
input i $INTERNETETH p udp s any/0 53 d $INTERNETADDR 53
ouput i $INTERNETETH p udp s $INTERNETETH 53 d any/0 53

Lorsquun client distant envoie une requte au serveur DNS prsent sur la machine firewall, il se peut que les donnes
soient tronques et que le protocole TCP soit exploit. De mme, si un serveur DNS secondaire est prsent, il faut que
le transfert de zone soit possible. Pour autoriser cela, il faut que le firewall laisse passer les requtes TCP :
ipchains A input i $INTERNETETH p tcp s any/0 53 1024:65535
d $INTERNETADDR 53 j ACCEPT
ipchains A output i $INTERNETETH p tcp ! y s $INTERNETADDR 53
d any/0 1024:65535 j ACCEPT
7.6.2. Filtrer les identifications.
Le service didentification des utilisateurs identd est utilis lors de lenvoi de courrier ou lors de la publication dun
article Usenet. Quelques sites FTP sont galement configurs pour demander une identification. Pour contacter un
serveur didentification, il faut employer le port 113.
En tant que client, il ny a aucune raison dinterdire les requtes didentification sortantes :
ipchains A output $INTERNETETH p tcp s $INTERNETADDR 1024:65535 d any/0 113
j ACCEPT
ipchains A input $INTERNETETH p tcp ! y s any/0 113
d $INTERNETADDR 1024:65535 j ACCEPT
Si un serveur identd est prsent sur la machine firewall, il faut accepter les requtes entrantes sur le port 113.
ipchains A input i $INTERNETETH p tcp s any/0 1024:65535
d $INTERNETADDR 113 j ACCEPT
ipchains A output i $INTERNETETH p tcp ! y s $INTERNETADDR 113
d any/0 1024:65535 j ACCEPT

7.7. Activer des services TCP courants.


Ladministrateur dsire probablement activer un ou plusieurs services courants bass sur le protocole TCP. Voici les
services les plus couramment utiliss de nos jours sur Internet :

le courrier lectronique ;
les groupes de discussions ;
telnet ;
ssh ;
ftp ;
http ;
finger ;
whois ;
gopher ;
WAIS.

7.7.1. Le courrier lectronique.


La majorit des utilisateurs dInternet souhaitent exploiter le service du courrier lectronique. La configuration
appliquer au niveau du firewall dpend du fournisseur daccs Internet. Le courrier lectronique est envoy au travers

J-F Challe

HEPCUT - ISIPH

159

du rseau au moyen du protocole SMTP assign au port 25. La rception locale de messages seffectue communment
laide dun des trois protocoles suivants :

SMTP (port 25) ;


POP (port 110) ;
IMAP (port 143).

Lorsque du courrier sortant est relay, au travers dun serveur SMTP externe, le programme de courrier envoie tous vers
le serveur du fournisseur daccs Internet. Les deux rgles suivantes autorisent le firewall relayer le courrier au
travers de la passerelle SMPT du fournisseur daccs Internet dont ladresse est, par exemple, 212.68.193.7 :
ipchains -A output i $INTERNETETH p tcp s $INTERNETADDR 1024:65535
d 212.68.193.7 25 j ACCEPT
ipchains A input i $INTERNETETH p tcp ! y s $212.68.193.7 25
d $INTERNETADDR 1024:65535 j ACCEPT
Si la machine locale est quipe dun serveur de courrier lectronique, les clients peuvent tre configurs de manire
envoyer le courrier au serveur local plutt quau serveur du fournisseur daccs Internet. Dans ce cas, cest le serveur
local qui est charg de contacter les serveurs destinataires du courrier. Voici deux rgles permettant lenvoi du courrier
au moyen dun serveur local :
ipchains A output i $INTERNETETH p tcp s INTERNETADDR 1024:65535
d any/0 25 j ACCEPT
ipchains A input i $INTERNETETH p tcp ! y s any/0 25
d $INTERNETADDR 1024:65535 j ACCEPT
La rception du courrier peut soprer de diffrentes manires :

recevoir du courrier au moyen du serveur SMTP local ;


retirer du courrier en utilisant le serveur POP du fournisseur daccs Internet ;
retirer du courrier en utilisant le serveur IMAP du fournisseur daccs Internet.

Pour recevoir le courrier directement sur le serveur SMTP local, il faut configurer le firewall pour quil accepte les
courriers entrants provenant de tous les htes dInternet. Voici les deux rgles appliquer dans ce cas :
ipchains A input i $INTERNETETH p tcp s any/0 1024:65535
d $INTERNETADDR 25 j ACCEPT
ipchains A output i $INTERNETETH p tcp ! y s $INTERNETADDR 25
d any/0 1024:65535 j ACCEPT
Pour retirer le courrier partir du serveur POP du fournisseur daccs Internet, il faut que le firewall accepte de
contacter ce service distant sur le port 110. En supposant que ladresse IP du serveur POP du fournisseur daccs
Internet soit 212.68.193.8, voici les rgles imposant au firewall de laisser passer les paquets :
ipchains A output i $INTERNETETH p tcp s $INTERNETADDR 1024:65535
d 212.68.193.8 110 j ACCEPT
ipchains A input i $INTERNETETH p tcp ! y s 212.68.193.8 110
d $INTERNETADDR 1024:65535 j ACCEPT
Pour retirer le courrier partir du serveur IMAP du fournisseur daccs Internet, il faut que le firewall accepte de
contacter ce service distant sur le port 143. En supposant que ladresse IP du serveur POP du fournisseur daccs
Internet soit 212.68.193.8, voici les rgles imposant au firewall de laisser passer les paquets :
ipchains A output i $INTERNETETH p tcp s $INTERNETADDR 1024:65535
d 212.68.193.8 143 j ACCEPT
ipchains A input i $INTERNETETH p tcp ! y s 212.68.193.8 143
d $INTERNETADDR 1024:65535 j ACCEPT
Diffrentes combinaisons denvoi et de rception du courrier sont possibles :

J-F Challe

HEPCUT - ISIPH

160

exp dier le courrier en tant que client SMPT et le recevoir en tant que client POP ;
expdier le courrier en tant que client SMPT et le recevoir en tant que client IMAP ;
expdier le courrier en tant que client SMTP et le recevoir en tant que serveur SMTP ;
expdier le courrier en tant que serveur SMTP et le recevoir en tant que serveur SMTP ;

Sachant que le serveur SMTP porte ladresse 212.68.193.7 et que le serveur POP porte ladresse 212.68.193.8, voici la
configuration appliquer dans le cas o le courrier est expdi en tant que client SMTP et reu en tant que client POP :
ipchains A output i $INTERNETETH p tcp s $INTERNETADDR 1024:65535
d 212.68.193.7 25 j ACCEPT
ipchains A input i $INTERNETETH p tcp ! y s 212.68.193.7 25
d $INTERNETADDR 1024:65535 j ACCEPT
ipchains A ouput i $INTERNETETH p tcp s $INTERNETADDR 1024:65535
d 212.68.193.7 110 j ACCEPT
ipchains A input i $INTERNETETH p tcp ! y s 212.68.193.7 110
d $INTERNETADDR 1024:65535 j ACCEPT
Sachant que le serveur SMTP porte ladresse 212.68.193.7 et que le serveur IMAP porte ladresse 212.68.193.8, voici la
configuration appliquer dans le cas o le courrier est expdi en tant que client SMTP et reu en tant que client
IMAP :
ipchains A output i $INTERNETETH p tcp s $INTERNETADDR 1024:65535
d 212.68.193.7 25 j ACCEPT
ipchains A input i $INTERNETETH p tcp ! y s 212.68.193.7 25
d $INTERNETADDR 1024:65535 j ACCEPT
ipchains A ouput i $INTERNETETH p tcp s $INTERNETADDR 1024:65535
d 212.68.193.7 143 j ACCEPT
ipchains A input i $INTERNETETH p tcp ! y s 212.68.193.7 143
d $INTERNETADDR 1024:65535 j ACCEPT
Sachant que le serveur SMTP du fournisseur daccs Internet porte ladresse 212.68.193.7, voici la configuration
appliquer dans le cas o le courrier est expdi en tant que client SMTP et reu en tant que serveur SMTP :
ipchains A output i $INTERNETETH p tcp s $INTERNETADDR 1024:65535
d 212.68.193.7 25 j ACCEPT
ipchains A input i $INTERNETETH p tcp ! y s 212.68.193.7 25
d $INTERNETADDR 1024:65535 j ACCEPT
ipchains A input i $INTERNETETH p tcp s any/0 1024:65535 d $INTERNETADDR 25
j ACCEPT
ipchains A output i $INTERNETETH p tcp ! y s $INTERNETADDR 25
d any/0 1024:65535 j ACCEPT
Voici la configuration appliquer pour envoyer et recevoir du courrier en tant que serveur SMTP :
ipchains A output i $INTERNETETH p tcp s $INTERNETADDR 1024:65535
d any/0 25 j ACCEPT
ipchains A input i $INTERNETETH p tcp ! y s any/0 25
d $INTERNETADDR 1024:65535 j ACCEPT
ipchains A input i $INTERNETETH p tcp s any/0 1024:65535 d $INTERNETADDR 25
j ACCEPT
ipchains A output i $INTERNETETH p tcp ! y s $INTERNETADDR 25
d any/0 1024:65535 j ACCEPT
Les utilisateurs du courrier lectronique exploitent les services POP et IMAP pour retirer des messages. Si les clients
font partie dun rseau local situ derrire le firewall, aucune rgle ne doit lui tre ajoute pour autoriser ce service. Par
contre, si ladministrateur souhaite que des clients distants puissent retirer du courrier, il faut modifier la configuration
du firewall. Il est cependant important de savoir que des attaques fructueuses peuvent tre mene partir de ces
services. Dans les exemples qui suivent, tout client distant aura la possibilit de retirer du courrier partir des services
POP et SMTP bien que dans la pratique, il soit souhaitable doffrir ces services seulement un nombre limit de clients.

J-F Challe

HEPCUT - ISIPH

161

Voici la configuration du firewall pour autoriser des clients distants employer le serveur POP sur le port 110 pour
retirer du courrier :
ipchains A input i $INTERNETETH p tcp s any/0 1024:65535
d $INTERNETADDR 110 j ACCEPT
ipchains A output i $INTERNETETH p tcp ! y s $INTERNETADDR 110
d any/0 1024:65535 j ACCEPT
Dans le mme ordre dide, voici une configuration du firewall autorisant tous les clients distants retirer du courrier
partir du serveur IMAP local :
ipchains A input i $INTERNETETH p tcp s any/0 1024:65535
d $INTERNETADDR 143 j ACCEPT
ipchains A output i $INTERNETETH p tcp ! y s $INTERNETADDR 143
d any/0 1024:65535 j ACCEPT
7.7.2. Accder aux services Usenet.
Le port 119 offre laccs au service NNTP. Si ladministrateur accepte que les utilisateurs lisent des messages en
provenance du serveur de news du fournisseur daccs Internet, il faut configurer le firewall de la manire suivante en
supposant que le serveur NNTP porte ladresse 212.68.193.222 :
ipchains A output i $INTERNETETH p tcp s $INTERNETADDR 1024:65535
d 212.68.193.222 119 j ACCEPT
ipchains A input i $INTERNETETH p tcp ! y s 212.68.193.222 119
d $INTERNETADDR 1024:65535 j ACCEPT
Si un serveur NNTP existe localement, il faut que le firewall permette des clients distants de lexploiter. Voici les
deux rgles ouvrant le firewall pour cette utilisation :
ipchains A input i $INTERNETETH p tcp s any/0 1024:65535
d $INTERNETADDR 119 j ACCEPT
ipchains A output i $INTERNETETH p tcp ! y s $INTERNETADDR 119
d any/0 1024:65535 j ACCEPT
Les fournisseurs daccs Internet disposent localement de leur propre serveur NNTP. Ce serveur est en relation avec
un autre serveur NNTP de manire rendre possible lchange des messages. Ce serveur distant accepte dalimenter
automatiquement le serveur local et le serveur local peut galement alimenter le serveur distant. En supposant que le
serveur NNTP du fournisseur daccs Internet accepte les relations dgal gal avec le serveur local, voici les deux
rgles ajouter au firewall :
ipchains A output i $INTERNETETH p tcp s $INTERNETADDR 1024:65535
d 212.68.193.222 119 j ACCEPT
ipchains A input i $INTERNETETH p tcp ! y s 212.68.193.222 119
d $INTERNETADDR 104:65535 j ACCEPT
7.7.3. Le service telnet.
Durant plusieurs annes, telnet a t le moyen standard de se connecter Internet. A prsent, ce standard est vu de plus
en plus comme un moyen de communication non scuris. Le serveur telnet est actif sur le port 23.
Voici les rgles ajouter au firewall si ladministrateur accepte que des utilisateurs locaux accdent des serveurs
telnet distants :
ipchains A ouput i $INTERNETETH p tcp s $INTERNETADDR 1024:65535
d any/0 23 j ACCEPT
ipchains A input i $INTERNETETH p tcp ! y s any/0 23
d $INTERNETADDR 1024:65535 j ACCEPT

J-F Challe

HEPCUT - ISIPH

162

Si le service telnet doit tre offert lextrieur, il faut ouvrir laccs au port 23. Dans la pratique, il ne faut pas accepter
les demandes de connexion manant de nimporte o. Il est prfrable daccepter uniquement une demande en
provenance dhtes de confiance.
ipchains -A input i $INTERNETETH p tcp s any/0 1024:65535
d $INTERNETADDR 23 j ACCEPT
ipchains A output i $INTERNETETH p tcp ! y s $INTERNETADDR 23
d any/0 1024:65535 j ACCEPT
7.7.4. Le service ssh.
Le shell scuris SSH est de loin prfrable lemploi de telnet car les communications entre les machines sont
cryptes. Par dfaut, les connexions sont inities entre le port non privilgi du client et le port 22 du serveur. Durant
linitialisation de la connexion, le port du client est rassign un port privilgi compris entre 1023 et 513. Le numro
de port attribu au client est le premier port libre en partant de 1023 et en dcroissant vers le port 513.
ipchains A ouput i $INTERNETETH p tcp
d any/0 22 j ACCEPT
ipchains A input i $INTERNETETH p tcp
d $INTERNETADDR 1024:65535 j ACCEPT
ipchains A ouput i $INTERNETETH p tcp
d any/0 22 j ACCEPT
ipchains A input i $INTERNETETH p tcp
d $INTERNETADDR 513:1023 j ACCEPT

s $INTERNETADDR 1024:65535
! y s any/0 22
s $INTERNETADDR 513:1023
! y s any/0 22

Voici les rgles appliquer pour permettre aux clients distants daccder au serveur SSH local :
ipchains -A input i $INTERNETETH p tcp s any/0 1024:65535
d $INTERNETADDR 22 j ACCEPT
ipchains A output i $INTERNETETH p tcp ! y s $INTERNETADDR 22
d any/0 1024:65535 j ACCEPT
ipchains -A input i $INTERNETETH p tcp s any/0 513:1023
d $INTERNETADDR 22 j ACCEPT
ipchains A output i $INTERNETETH p tcp ! y s $INTERNETADDR 22
d any/0 513:1023 j ACCEPT
7.7.5. Le service ftp.
Le protocole FTP demeure le moyen le plus courant de transfrer des fichiers entre deux machines en rseau. Ce
protocole utilise deux ports privilgis, lun pour envoyer les commandes et lautre pour envoyer les donnes. Le port
21 est employ lors de ltablissement initial de la connexion au serveur et par la suite pour transmettre les commandes
lutilisateur. Le port 20 est utilis pour ltablissement dun canal servant au transport des donnes.
Le protocole FTP possde deux modes dchange des donnes entre le client et le serveur :

le mode normal (utilisation du port 20) ;


le mode passif (utilisation dun port non privilgi).

Le mode normal est utilis par dfaut par les clients FTP lors de la connexion un site distant. Le mode passif est un
mcanisme plus rcent qui est utilis par dfaut lors de ltablissement dune connexion au moyen dun navigateur
Internet.
Afin dautoriser les connexions des serveurs FTP distants, il faut non seulement permettre lutilisation du port 21 mais
galement du port 20. Si en plus de cela, ladministrateur autorise le mode passif, il faut accepter les connexions entre
des ports non privilgis. Dans le cas dune connexion en mode normal, cest le serveur dis tant qui rappelle le client.
Par contre, en mode normal, cest le client qui initie les connexions la fois pour les donnes et les commandes. Voici
les rgles ouvrant le firewall aussi bien en mode normal quen mode passif :

J-F Challe

HEPCUT - ISIPH

163

ipchains A output i $INTERNETETH p tcp s $INTERNETADDR 1024:65535


d any/0 21 j ACCEPT
ipchains A input i $INTERNETETH p tcp ! y s any/0 21
d $INTERNETADDR 1024:65535 j ACCEPT
ipchains A input i $INTERNETETH p tcp s any/0 20
d $INTERNETADDR 1024:65535 j ACCEPT
ipchains A output i $ INTERNETETH p tcp ! y s $INTERNETADDR 1024:65535
d any/0 20 j ACCEPT
ipchains A output i $INTERNETETH p tcp s $INTERNETADDR 1024:65535
d any/0 1024:65535 j ACCEPT
ipchains A input i $$INTERNETETH p tcp ! y s any/0 1024:65535
d $INTERNETADDR 1024:65535 j ACCEPT
La dcision doffrir les services FTP au reste du monde est toujours controverse. Bien que les sites FTP abondent sur
Internet, il existe plusieurs exploits de pirates contre la scurit de ce service. Si lobjectif consiste fournir un accs
uniquement en lecture quelques fichiers, il est prfrable den envisager la publication par lentremise dun serveur
Web. Si le serveur FTP doit permettre la mmorisation de fichiers clients, il est impratif de le refuser sous lidentit de
lutilisateur anonyme. Voici les rgles du firewall ouvrant un site FTP la fois en mode normal et en mode passif :
ipchains A input i $INTERNETETH p tcp s any/0 1024:65535
d $INTERNETADDR 21 j ACCEPT
ipchains A output i $INTERNETETH p tcp ! y s $INTERNETADDR 21
d any/0 1024:65535 j ACCEPT
ipchains A output i $INTERNETETH p tcp s $INTERNETADDR 20
d any/0 1024:65535 j ACCEPT
ipchains A input i $INTERNETETH p tcp ! y s any/0 1024:65535
d $INTERNETADDR 20 j ACCEPT
ipchains A input i $INTERNETETH p tcp s any/0 1024:65535
d $INTERNETADDR 1024:65535 j ACCEPT
ipchains A output i $INTERNETETH p tcp ! y s $INTERNETADDR 1024:65535
d any/0 1024:65535 j ACCEPT
7.7.6. Les services Web.
Les services Web sont disponibles sur le port 80. Voici les rgles permettant un accs des sites distants :
ipchains A output i $INTERNETETH p tcp s $INTERNETADDR 1024:65535
d any/0 80 j ACCEPT
ipchains A input i $INTERNETETH p tcp ! y s any/0 80
d $INTERNETADDR 1024:65535 j ACCEPT
Si un serveur Web local est disponible, il faut en permettre laccs par lintermdiaire des rgles suivantes :
ipchains A input i $INTERNETETH p tcp s any/0 1024:65535
d $INTERNETADDR 80 j ACCEPT
ipchains A output i $INTERNETETH p tcp ! y s $INTERNETADDR 80
d any/0 1024:65535 j ACCEPT
Les sites commerciaux utilisent une connexion Web scurise afin de permettre aux clients dintroduire, en toute
scurit, les donnes relatives leur carte bancaire. Ce service est offert par lintermdiaire du port 443. Voici deux
rgles autorisant les connexions des sites Web scuriss :
ipchains A output i $INTERNETETH p tcp s $INTERNETADDR 1024:65535
d any/0 443 j ACCEPT
ipchains A input i $INTERNETETH p tcp ! y s any/0 443
d $INTERNETADDR 1024:65535 j ACCEPT
Dans le cas o le site local hberge une forme de commerce lectronique, il faut permettre aux clients distants daccder
au service scuris du serveur Web. Voici deux rgles autorisant cet accs :

J-F Challe

HEPCUT - ISIPH

164

ipchains A input i $INTERNETETH p tcp s any/0 1024:65535


d $INTERNETADDR 443 j ACCEPT
ipchains A output i $INTERNETETH p tcp ! y s $INTERNETADDR 443
d any/0 1024:65535 j ACCEPT
Laccs public un serveur mandataire est trs courant. En tant que client, le navigateur doit tre configur afin
dexploiter un proxy serveur distant. A la condition que ce service soit offert sur le port 8080, voici deux rgles
autorisant laccs aux serveurs mandataires distants :
ipchains A output i $INTERNETETH p tcp s $INTERNETADDR 1024:65535
d any/0 8080 j ACCEPT
ipchains A input i $INTERNETETH p tcp ! y s any/0 8080
d $INTERNETADDR 1024:65535 j ACCEPT
Bien quil soit possible doffrir un service mandataire la communaut Internet, cela ne sera pas prsent ici pour des
raisons dthiques.
7.7.7. Le service finger.
Le service finger fournit des renseignements sur le compte de lutilisateur, incluant par exemple le nom de login, le nom
rel, etc En raison du droit la vie prive, ce genre de service nest gnralement pas offert. Nanmoins voici la
mthode utiliser pour permettre laccs des serveurs finger distants sachant quils utilisent le port 79 :
ipchains A output i $INTERNETETH p tcp s $INTERNETADDR 1024:65535
d any/0 79 j ACCEPT
ipchains A input i $INTERNETETH p tcp ! y s any/0 79
d $INTERNETADDR 1024:65535 j ACCEPT
Bien que cela soit prsent dconseill, voici les rgles permettant douvrir localement un serveur finger :
ipchains A input i $INTERNETETH p tcp s any/0 1024:65535
d $INTERNETADDR 79 j ACCEPT
ipchains A output i $INTERNETETH p tcp ! y s $INTERNETADDR 79
d any/0 1024:65535 j ACCEPT
7.7.8. Le service whois.
Comme le montre lexemple suivant, le service whois permet dobtenir des informations sur un domaine.
[root@P100 /root]# whois mit.edu
[whois.crsnic.net]
Whois Server Version 1.3
Domain names in the .com, .net, and .org domains can now be registered
with many different competing registrars. Go to http://www.internic.ne
for detailed information.
Domain Name: MIT.EDU
Registrar: NETWORK SOLUTIONS, INC.
Whois Server: whois.networksolutions.com
Referral URL: http://www.networksolutions.com
Name Server: BITSY.MIT.EDU
Name Server: STRAWB.MIT.EDU
Name Server: W20NS.MIT.EDU
Updated Date: 05-nov-2001
>>> Last update of whois database: Thu, 20 Dec 2001 05:17:22 EST <<<
The Registry database contains ONLY .COM, .NET, .ORG, .EDU domains and
Registrars.

J-F Challe

HEPCUT - ISIPH

165

Ce protocole utilise le port 43 afin de retirer les donnes souhaites. Voici un exemple de configuration du firewall
autorisant la consultation des informations offertes par les serveurs whois distants :
ipchains A output i $INTERNETETH p tcp s $INTERNETADDR 1024:65535
d any/0 43 j ACCEPT
ipchains A input i $INTERNETETH p tcp ! y s any/0 43
d $INTERNETADDR 1024:65535 j ACCEPT
7.7.9. Le service gopher.
Le service dinformation gopher est encore disponible bien que son emploi ait t totalement remplac par les moteurs
de recherche du Web. Voici les rgles donnant un accs aux services gopher sur le port 70 :
ipchains A output i $INTERNETETH p tcp s $INTERNETADDR 1024:65535
d any/0 70 j ACCEPT
ipchains A input i $INTERNETETH p tcp ! y s any/0 70
d $INTERNETADDR 1024:65535 j ACCEPT
7.7.10. Le service WAIS.
Les serveurs WAIS sont prsent connus comme des moteurs de recherche. Les navigateurs Web sont des faades
graphiques type ce genre de serveur. Sachant que le port 210 est utilis par les serveurs WAIS, voici les deux rgles
de configuration du firewall donnant accs distant ces services :
ipchains A output i $INTERNETETH p tcp s $INTERNETADDR 1024:65535
d any/0 210 j ACCEPT
ipchains A input i $INTERNETETH p tcp ! y s any/0 210
d $INTERNETADDR 1024:65535 j ACCEPT

7.8. Habiliter les services UDP courants.


Le protocole UDP est sans tat et il est par dfinition moins scuris que le protocole TCP bas sur la notion de
connexion. De ce fait, plusieurs sites conscients de la scurit interdisent ou limitent autant que possible, laccs aux
services UDP. Naturellement, les changes DNS bass sur UDP sont ncessaires, mais le serveur de noms distant peut
tre explicitement dsign dans les rgles du firewall. Voici trois services bass sur UDP :

traceroute;
DHCP (Dynamic Host Configuration Protocol) ;
NTP (Network Time Protocol).

7.8.1. Le programme traceroute.


Le programme traceroute est un service UDP qui demande aux systmes intermdiaires de gnrer des messages ICMP
Time Exceeded afin de rassembler des informations sur le nombre de sauts effectus. Ce programme demande aussi au
systme cible de retourner un message de port non trouv (Destination Unreachable), indiquant au client lextrmit de
la route.
Par dfaut, le firewall construit dans ce chapitre, bloque les paquets traceroute entrants. Donc, les rponses ICMP aux
requtes traceroute ne seront pas envoyes.
Le service traceroute peut tre configur afin de prendre nimporte quel port ou srie de ports. Il est donc malais de
bloquer tous les paquets traceroute entrants en spcifiant une srie de ports. Toutefois, ce service emploie
traditionnellement la srie de ports source compris entre 32769 et 65535, et la srie de ports destination compris entre
33434 et 35523.
Si lun des utilisateurs du systme lintention demployer le programme traceroute, il faut habiliter les ports client.
ipchains A output i $INTERNETETH p udp s $INTERNETADDR 32769:65535
d any/0 33434:35523 j ACCEPT

J-F Challe

HEPCUT - ISIPH

166

Les requtes UDP tant de par leur nature peu scurises, lacceptation des requtes traceroute doit tre limite
quelques htes de confiance.
ipchains A input i $INTERNETETH p udp s any/0 32769:65535 d $INTERNETADDR
33434:35523 j ACCEPT
7.8.2. Accder un serveur DHCP.
Bien quil soit possible de configurer un firewall lorsque des adresses IP sont attribues dynamiquement, la matire
sortant du cadre de ce cours, ne sera pas aborde. En effet, il nexiste pas de vritable site fonctionnant au moyen dune
adresse IP qui change perptuellement.
7.8.3. Accder un serveur Network Time.
Le service NTP permet laccs un ou plusieurs fournisseurs Internet dhorloge. Ce genre doutil est trs pratique pour
maintenir lhorloge interne du systme constamment jour. Seul la partie cliente sera envisage dans ce cours car peu
de sites sont connects une horloge atomique. Sachant quun serveur NTP utilise le port 123, voici les deux rgles du
firewall autorisant lexploitation dun client NTP :
ipchains A output i $INTERNETETH p udp s $INTERNETADDR 1024:65535 d
195.13.23.5 123 j ACCEPT
ipchains A input $ INTERNETETH p udp s 195.13.23.5 123 d $INTERNETADDR
1024:65535 j ACCEPT
Dans cet exemple, ladresse 195.13.23.5 est celle du serveur NTP de la Belgique.

7.9. Journaliser des paquets entrants refuss.


Tous les paquets se conformant une rgle peuvent tre placs dans un journal grce loption l de la commande
ipchains. Quelques-unes des rgles qui ont t prsentes avaient cette option de journalisation active. Le spoofing
des adresses IP en est un exemple.
Des rgles peuvent tre dfinies dans le but de crer une entre dans un journal. Les paquets intressants sont ceux qui
semblent suspects, ceux, par exemple indiquant une sorte de balayage ou de test. Tous les paquets tant refuss par
dfaut, il faut crer une rgle spcifique pour susciter une mmorisation.
Lidentit des paquets mettre dans un journal est un choix individuel. Des personnes veulent enregistrer tous les
paquets refuss. Pour dautres, lenregistrement systmatique pourrait rapidement crer un engorgement du fichier
journal. Certaines aussi se sentent laise du fait que les paquets aient t refuss et elles ne se proccupent pas de leur
nature. Dautres encore sont trs intresses par les balayages de ports ou par un certain type de paquets bien prcis.
Pour placer tous les paquets rejets dans le journal, il suffit dajouter la rgle suivante :
ipchains A input i $INTERNETETH j DENY -l
Pour certains, cette rgle produirait trop dentres au journal, ou trop dentres sans intrt. Gnralement les
administrateurs prfrent mmoriser uniquement les accs aux ports privilgis sur lesquels aucun service nest offert.

7.10. Refuser laccs aux sites problmatiques.


Si un site particulier une mauvaise rputation ou a de mauvaises habitudes, une rgle permet de lui refuser tout accs.
En supposant que le site 212.68.194.200 nait pas un comportement correct, la rgle suivante lui interdit tout accs :
ipchains I input i $INTERNETETH s 212.68.194.200/32 j DENY
Cette rgle tant la premire, tous les paquets provenant de cette adresse source seront refuss, peu importe le type de
protocole du message, de son port source ou de son port destination.
A ce mo ment, les rgles du firewall sont dfinies, la machine peut tre connecte Internet.

J-F Challe

HEPCUT - ISIPH

167

7.11. Activer laccs au rseau local.


Si la machine firewall est situe entre Internet et un rseau local, les machines du rseau local nont ni accs
linterface rseau interne de la machine firewall, ni Internet. Afin de supporter un rseau local derrire un firewall,
quelques rgles supplmentaires sont ncessaires pour permettre laccs linterface rseau interne de la machine
firewall et pour faire circuler le trafic vers Internet. Lorsque la machine firewall fonctionne de cette manire, avec au
moins deux interfaces rseau, ce systme est appel firewall bastion ou zone dmilitarise (DMZ).
Voici une paire de rgles qui permettent douvrir la communication entre la machine firewall et le rseau local :
ipchains A input i $INTRANETETH s $INTRANETNETWORK j ACCEPT
ipchains A output i $INTRANETETH d $INTRANETNETWORK j ACCEPT
Ces rgles permettent laccs de toutes les machines du rseau local la machine firewall mais pas Internet au travers
du firewall. Par dfinition, une machine firewall ne route pas le trafic dynamiquement ou automatiquement. Des rgles
supplmentaires sont donc ncessaires pour router le trafic local plus loin.
La communication entre le rseau local et Internet doit tre la fois transfre et masque. Le transfert IP est un service
du noyau permettant une machine Linux dagir comme un routeur entre deux rseaux, transfrant ainsi le trafic dun
rseau lautre.
Voici une commande inclure dans les scripts de dmarrage du systme permettant deffectuer le routage :
echo 1 > /proc/sys/net/ipv4/ip_forward
Une autre manire de rsoudre le problme consiste introduire une rgle dans le firewall de faon autoriser le
transfert et le masquage qui permet la machine firewall dagir comme un serveur mandataire. Voici cette rgle :
ipchains A forward i $INTERNETETH s $INTRANETNETWORK j MASQ

7.12. Installer le firewall.


Linstallation du firewall ncessite lex cution du script qui a t cr dans ce chapitre. Pour que les modifications
soient permanentes, il suffit de lancer la commande suivante :
/etc/rc.d/init.d/ipchains save

J-F Challe

HEPCUT - ISIPH

168

Bibliographie.
[1] Cricket Liu & Paul Albitz ; DNS and BIND ; OReilly ; Sebastopol ; 1998.
[2] Craig Hunt ; TCP/IP Network Administration ; OReilly ; Sebastopol ; 1997.
[3] Bryan Costales & Eric Allman ; Sendmail ; OReilly ; Sebastopol ; 1997.
[4] D.Brent Chapman & Elizabeth D. Zwicky ; Building Internet Firewalls ; OReilly ; Sebastopol ; 1995.
[5] Robert L. Ziegler ; Linux firewalls ; Macmillan Technical Publishing ; Indianapolis ; 2000
[6] Douglas E. Comer ; Internetworking with TCP/IP volume I principles, protocols, and architecture ; Prentice-Hall
International ; London ; 1991.
[7] Douglas E. Comer & David L. Stevens ; Internetworking with TCP/IP volume II Design, Implementation, and
internals ; Prentice-Hall International ; London ; 1991.
[8] Hal Stern, Mike Eisler & Ricardo Labiaga ; Managing NFS and NIS ; OReilly ; Sebastopol ; 2001
[9] Robert Eckstein, David Collier-Brown, Peter Kelly ; Using samba ; OReilly ; Sebastopol ; 1999
[10] Ben Laurie & Peter Laurie ; Apache : The definitive guide ; OReilly ; Sebastopol ; 1999
[11] David HM Spector ; Building Linux clusters ; OReilly ; Sebastopol ; 2000
[12] Gisle Cizault ; Ipv6 thorie et pratique ; OReilly ; Paris ; 1999
[13] Aron Hsiao ; Sams teach yourself Linux security in 24 hours ; Addison Wesley Longman ; Massachussetts ; 2001
[14] Kamran Husain & Timothy Parker ; Linux Unleashed ; Computer Publishing ; Indianapolis ; 1996
[15] Anne H. Carasik ; Linux system administration ; IDG Book Worldwide ;London ; 1999

J-F Challe