Résumé
Le logiciel libre, aujourd'hui au c÷ur de l'actualité de l'informatique, ne peut plus être ignoré des administrateurs
de réseau, en particulier dans des établissements d'enseignement ou de formation d'où sortiront les utilisateurs de
demain, du simple utilisateur à l'ingénieur système. Il incombe en eet aux responsables informatiques de mettre à
disposition des systèmes d'exploitation libres par respect du pluralisme de l'enseignement comme pour tenir compte
des évolutions à terme du monde de l'entreprise qu'ils peuvent ainsi anticiper et encourager.
Les documentations sur les divers services et systèmes sous GNU/Linux abondent, mais il manque peut être un
résumé de l'ensemble de la mise en place d'un réseau informatique libre dans le cadre d'une structure de formation.
Ce document résume l'installation d'un réseau Debian GNU/Linux complet, des serveurs aux machines clientes,
de l'achat du matériel aux derniers ajustements de l'interface graphique et des usages du multimédia. Il ne prétend
pas détailler tous les services réseau, mais servir de mémorandum et fournir des chiers de conguration pour la
plupart d'entre eux. La majeure partie des services d'Internet est présentée sous l'angle d'un réseau local : DNS,
courriel, Web, ftp... Certains services sont présentés sous forme de didacticiels progressifs : Amanda, pour les sauve-
gardes sur bande, Nut, logiciel de surveillance des onduleurs, et l'utilisation avancée du chirage de l'authentication
par ssh.
Un script permet la réplication de contenus sur toutes les machines clientes en une seule ligne de commande,
simpliant grandement les tâches d'installation et d'administration.
Si cette longue étude de cas est articielle en ce qu'elle commence par les murs d'un local vide et l'argent pour
acheter le matériel, et s'achève par un réseau entier de machines homogènes, nous espérons néanmoins qu'elle sera
utile comme aide mémoire à ceux qui désirent orir à leurs étudiants la pratique d'une informatique libérée du
carcan propriétaire qu'ils peuvent ainsi, chacun selon sa mesure, contribuer à faire reculer.
1
6 Premier serveur : les services réseau non authentiés 13
6.1 Le DNS : Bind . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
6.2 Le DHCP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
6.3 Apt-Proxy, proxy de packages Debian . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
6.4 Squid, Proxy http et ftp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
6.4.1 Squid . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
6.4.2 SquidGuard . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
6.4.3 En conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
6.5 Xntpd, serveur de temps . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
6.6 CUPS, serveur d'impression . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
2
11 Jouer avec le réseau 49
11.1 Déporter l'achage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
11.2 Déporter le son . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
11.3 Wims . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
11.4 La diusion vidéo : vlc . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
11.5 Partager un scanner . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
11.6 Un cluster de calcul . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
11.7 Quelques jeux en réseau . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52
12 Remerciements 53
3
1 L'équipement matériel
1.1 Les serveurs
Au moins deux ordinateurs serveurs vont faire fonctionner notre centre de formation :
Un petit ordinateur servant de pare-feu / routeur pour la gestion de la connexion ADSL de notre centre. Un
Pentium 75 muni de 16 ou mieux 32 Mo de mémoire vive et au moins 600 Mo de disque dur IDE sut amplement
pour du matériel able, encore en bon état de fonctionnement. On lui adjoindra deux cartes réseau, de préférence PCI
et non ISA par souci de simplicité, et un onduleur.
Les vrais serveurs seront convenablement dimensionnés tant en mémoire qu'en capacité de disque SCSI. Si le
budget le permet, on choisira deux serveurs en conguration en RAID 5, au moins pour le serveur qui va héberger les
données. Les serveurs récents sont souvent munis d'un Gigaoctet de mémoire vive, et de disques de large capacité.
Un serveur hébergera les données de chacun et les services demandant authentication : NIS (ou LDAP), NFS,
Samba, serveur SMTP, serveur POP, ainsi qu'un serveur Web et un serveur FTP. Dans notre cas, deux disques de
70 Go, un pour les formateurs, un pour les données des stagiaires, susent amplement. L'autre serveur hébergera un
certain nombre de services réseau sans authentication : DHCP, DNS, Proxy (Web et apt), impression (via CUPS et
Samba), serveur de temps, sauvegardes (Amanda et partimage).
Pour les sauvegardes, on prévoira beaucoup d'espace disque pour les images des stations. Pour les données, on
adjoindra un lecteur DAT externe qui pourra servir ainsi à d'autres usages comme l'enregistrement numérique de
productions multimédia.
Ce matériel sera placé dans un local séparé des salles de formation, fermant à clef et normalement aéré. Tous les
éléments actifs (switchs, routeurs, modems mais aussi les écrans et le commutateur écran /clavier partagé entre les
serveurs) seront ondulés au moyen d'une prise en kit fournie. Il s'agit d'une prise à l'apparence peu habituelle livrée
avec chaque onduleur du marché. Pour l'utiliser, on coupera la prise mâle d'une multiprise ordinaire dont on reliera
les ls à la prise en kit ; on peut alors brancher cette multiprise sur l'onduleur. Ceci est essentiel dès lors que :
Tout le matériel du local serveur doit être ondulé pour ne pas lui faire subir de violentes coupures de courant et
maintenir la disponibilité de fonctionnement.
S'il y a coupure de courant, le switch qui relie plusieurs ordinateurs partageant le même onduleur doit continuer
à être alimenté, sinon le contrôle par réseau ne fonctionnera plus, occasionnant la chute des serveurs esclaves qui
auraient pu continuer à fonctionner pendant une coupure courte.
La conguration du logiciel de surveillance d'onduleur Nut est décrite dans la section 8.1. De nombreux tests
aboutiront à un fonctionnement normal en cas de coupure courte ; on obtiendra une chute et remontée normale des
serveurs en cas de coupure longue et rétablissement du courant. Fréquemment, il faudra déclarer dans le BIOS des
ordinateurs le comportement à adopter en cas de retour du secteur, qui n'est souvent pas par défaut le redémarrage
pourtant requis. On doit pouvoir l'âme tranquille débrancher l'alimentation générale du secteur et observer tout
l'équipement continuer à fonctionner normalement avec un message d'alerte dans les logs de chaque serveur (et sur les
consoles ouvertes) avertissant que l'onduleur est sur batterie.
Dans la mesure du possible, compte tenu de l'évolution du matériel dont seront équipés demain par défaut les
ordinateurs, on choisira des switchs embarquant au minimum un port au Gigabit. Les usages d'applications multimédia
modernes, en particulier en vidéo, rendront bientôt un tel débit non plus confortable, mais nécessaire.
Règles élémentaires de sécurité : tous les ordinateurs du centre de formation, à commencer par les serveurs, seront
verouillés par mot de passe dans le BIOS et il ne sera pas possible d'amorcer les ordinateurs sur autre chose que
le disque dur une fois le système installé. Les cassettes DAT des sauvegardes seront rangées dans un autre local en
prévision d'une détérioration des serveurs (incendie, inondation...). La sécurité informatique comporte une limite : elle
est inexistante dès lors qu'il y a accès physique au matériel, mais on peut tout de même prendre quelques précautions.
4
bi processeur), on prévoira 1 Go de RAM. Il est faux de croire que les environnements graphiques modernes sous
GNU/Linux sont moins gourmands en ressource que les environnements propriétaires. Un système rapide, agréable à
utiliser, qui fasse fonctionner en même temps de nombreux logiciels et environnements de bureau récents requiert une
machine puissante.
Les cartes vidéo sont quelque peu diciles à choisir puisque les principaux constructeurs ne livrent plus entièrement
les spécications de leur matériel : il est donc impossible de les exploiter entièrement avec des pilotes libres. Toutefois,
le problème ne se pose qu'avec les applications 3D, principalement les jeux, encore relativement rares et peu pertinents
dans un contexte éducatif ou de formation, à l'exception notable du logiciel Celestia2 . Les cartes graphiques du
constructeur ATI, modèles Radeon jusque 9300, fonctionnent très bien, y compris en 3D, avec les pilotes libres standard
sans téléchargement de driver, compilation de modules, etc... Il n'en va pas de même des cartes de type GForce de
Nvidia. Enn pour le pur travail en 2D, les cartes du constructeur Matrox restent une référence de qualité, en particulier
pour travailler sur plusieurs écrans.
L'environnement graphique X Window est d'autant plus confortable et agréable à l'usage que la résolution de
l'écran est grande, 1280x1024 constituant un strict minimum. On appréciera de travailler en 1600x1200 avec de nom-
breuses applications ouvertes à l'écran, ce qui est normal avec un système d'exploitation de type Unix pleinement
multitâches. Aussi, des écrans CRT de grandes dimensions (19 pouces ou plus) seront préférés à des écrans TFT dans
la limite du même budget. Ceci sera encore plus vrai pour les postes des formateurs dont l'achage sera redirigé sur
vidéoprojecteur : si l'on doit montrer des manipulations en ligne de commande avec des stagiaires assis un peu loin
de l'écran, grossir considérablement la police de caractères, et donc la taille du terminal, peut rendre une résolution
1280x1024 dicilement utilisable.
5
se trouve sur le site du logiciel standard de pilotage de ce type de matériel : Gphoto7 . Un article8 du présent site expose
l'interface graphique la plus courante pour communiquer avec un appareil photo numérique sous GNU/linux et traiter
les images obtenues.
Le matériel d'acquisition vidéo numérique est le terrain ou GNU/Linux possède le plus de retard par rapport
aux ores propriétaires. Le site Funix.org9 donne des informations complètes à propos des congurations matérielles
et logicielles pour l'acquisition et le montage.
Enn, le noyau Linux 2.6 sera systématiquement préféré à la version 2.4 dès qu'on se proposera de travailler le
multimédia, d'utiliser des périphériques USB ou Firewire, de toucher à la gestion avancée de l'énergie (ACPI)... Cet
article10 expose en détail la procédure de compilation d'un noyau 2.6 avec toutes les options et pilotes.
6
pour le serveur devant héberger les données et les comptes :
sda1 : /boot : 15 Mo 13
sda2 : Swap : 1,2 Go pour 1 Go de Ram.
sda3 : / : 5 Go (si l'on prévoit vraiment l'installation de très nombreux logiciels)
sda4 : /home : le reste du disque
sdb1 : /data : le second disque du serveur, que l'on pourra aecter à autant de partages réseau que de besoin pour
le stockage de données, exportées ou non sur le réseau.
Le second serveur n'héberge pas à proprement parler de données mais plutôt des sauvegardes (on y place donc le
lecteur DAT), ainsi que divers spools de proxy et d'impression.
7
Le gestionnaire d'amorçage (lilo ou GRUB) doit toujours être installé dans le MBR (master boot record) du
disque principal. L'installer ailleurs, sur une partition du disque ou sur une disquette, est le meilleur moyen
d'avoir des problèmes par la suite.
Dans le cas de machines en double amorçage avec un système d'exploitation MS-Windows, toujours commencer
par installer ce dernier et installer GNU/Linux ensuite.
La conguration de Debian s'achève par la conguration du serveur SMTP qui permet au système de prévenir
son administrateur de tel ou tel problème en lui envoyant un mail. Root n'a aucune raison de lire, et encore
moins de rédiger, du courrier. On redirigera donc tout le courrier de toutes les machines vers un utilisateur du
réseau, typiquement le compte de la personne en train de lire ce document :-). Ceci se corrige en éditant le chier
/etc/aliases pour placer un alias ainsi : root : yves@mp-soa.net (où cette adresse est celle de l'administrateur
du réseau), puis en mettant a jour la base d'alias au moyen de la commande newaliases et en relançant le serveur
SMTP (dans le cas de Postx, régénérer la base d'alias au moyen de la commande postmap /etc/aliases ). On
vériera au moyen de la commande echo coucou|mail root que l'utilisateur yves reçoit bien les messages
de root sur son compte, sur l'ordinateur qui centralise les messages du domaine (voir plus loin, section 7.1.3).
Le serveur SMTP exim, choix par défaut de Debian, convient bien pour une machine qui ne fait qu'envoyer les
mails du système vers un compte du réseau. Pour le serveur SMTP principal, qui doit traiter tout le courrier des
utilisateurs, on préférera Postx dont la conguration est détaillée dans la section 7.1.
#Source principale
deb ftp://ftp.fr.debian.org/debian sid main contrib
8
#Ndiswrapper Debian, pour de nombreuses cartes wifi d'ordinateurs portables
deb http://ndiswrapper.sourceforge.net/debian ./
9
2. Un simple shell pour taper des commandes, en particulier redémarrer le service réseau dont on vient de modier
la conguration (/etc/init.d/nom_du_service start|stop|restart ).
3. Le contenu d'un chier de log qui consigne l'activité du système en temps réel (/var/log/syslog ) ou l'activité plus
spécique d'un service (par exemple /var/spool/squid/access.log ) et par là ce que signale le service réseau lors
de son redémarrage et pendant son fonctionnement (commande tail -f <nom du chier de logs>).
4. La documentation de ce qu'on est en train de faire.
Quelqu'un cherchant de l'aide sur les newsgroups ou les listes de diusion se voit souvent répondre : que disent
les logs ? , et ensuite RTFM25 ou man. Avoir donc la doc et les logs présents à l'écran permet de gagner du temps et
surtout de l'autonomie.
10
Note importante Les services réseau présentés dans ce document ne sont pas considérés comme ouverts sur
Internet mais réservés à un usage interne ; aucune translation de port n'est active par défaut dans la conguration de
rewall proposée. On ne redirigera surtout aucun port vers le serveur hébergeant les données des utilisateurs, même
pour le courrier ou le Web. Pour ouvrir certains services au monde extérieur, on se renseignera sur la notion de DMZ
où l'on placera un serveur dédié.
Une installation minimale de Debian stable avec le kernel linux 2.4 sura pour le routeur ; un partitionnement très
simple conviendra puisqu'il n'y aura ni compte ni donnée sur cet ordinateur.
11
Les logs de Netlter sont fastidieux et guère passionnants à lire. Le logiciel fwlogwatch, disponible dans Debian,
permet entre autres d'auditer les logs du Firewall et propose des rapports au format HTML29 ; il dépasse le cadre
de cet article.
Nous pouvons maintenant ouvrir la connexion ADSL ; elle se paramètre avec la commande pppoecong, les chiers
de conguration se trouvant dans le repertoire /etc/ppp. La ligne est ouverte avec pon dsl-provider , fermée par
po et une option à la conguration permet de la rendre persistante, ce qui est recommandé.
Ce script30 permet de tester basiquement la ligne et de la remonter, on pourra le placer en crontab pour l'éxécuter
tous les quarts d'heure.
12
Bien évidemment, on se sera soigneusement renseigné sur la sécurité du service réseau que l'on met ainsi à disposition
de manière à ne pas se le faire pirater ! La même procédure pourra ainsi être utilisée pour tester la sécurité du serveur
SMTP Postx lorsque nous procéderons à sa conguration (section 7.1).
13
// add entries for other zones below here
zone "mp-soa.net" in {
type master;
file "db.mp-soa";
allow-transfer {192.168.28.1;};
};
zone "28.168.192.in-addr.arpa" in {
type master;
file "db.28.168.192";
allow-transfer {192.168.28.1;};
};
La section allow-transfer interdit à toute autre machine que 192.168.28.1 de faire un transfert de zone qui révé-
lerait une bonne part de la structure de notre réseau, tout en déclarant une seconde machine comme DNS secondaire.
Nous avons déclaré deux chiers dans /var/cache/bind qu'il va falloir créer et renseigner :
db.mp-soa43 qui contient les machines de la zone mp-soa.net : tous les ordinateurs de notre réseau.
db.28.168.19244 : la zone inversée ou reverse, associant des adresses à des noms. Cette zone est indispensable au
fonctionnement normal du DNS et par là de la majeure partie des services réseau. En particulier, le montage
NFS de la section suivante ne peut se faire que si la requête sur le reverse de la machine cliente qui opère le
montage réussit. Il en va de même pour nombres d'autres services (FTP, SMTP...) qui ne fonctionneront pas
normalement sans cette zone inversée.
Le DNS HOWTO mentionné ci dessus permet de comprendre la signication du caractère @ en début de chier,
ainsi que la présence de points qui terminent les noms de machines dans le chier de reverse, alors qu'il n'en va pas de
même dans la zone droite .
Lorsque les chiers seront remplis correctement, on redémarrera bind en observant soigneusement les modications
du chier /var/log/syslog : toute erreur apparaît très clairement avec le nom du chier et le numéro de la ligne qui
contient un bug. Bind indique explicitement que les zones sont chargées et qu'il est prêt à répondre aux requêtes
lorsque tout est correct. Pour rajouter, enlever ou modier des machines du DNS, on incrémentera le serial number
après modication du chier, puis on rechargera la zone au moyen de la commande ndc reload <nom de la zone>. Il
est en eet absurde de redémarrer bind si on a simplement modié une zone, ce redémarrage vidant le cache mémoire
de bind qui contient toutes les requêtes DNS déjà eectuées sur Internet. Elles seront donc refaites, occasionnant trac
réseau, délai d'attente pour les utilisateurs, etc...
On pourra dans la suite de ce document ajouter un alias portant le nom de chaque service du réseau dès que celui ci
fonctionne. Par exemple, lorsque la messagerie sera en place, il sera élégant de rajouter deux entrées de type smtp IN
CNAME abraracourcix et pop IN CNAME abraracourcix , comme chez le fournisseur d'accès :), ce qui simplie
la vie des utilisateurs et surtout permet de déplacer un service d'une machine à l'autre sans que rien ne change sur le
reste du réseau. C'est un plaisir de voir ces alias répondre au ping dès que la zone est rechargée.
Le serveur DNS secondaire, ou esclave, sera conguré très simplement ainsi (chier /etc/bind/named.conf auquel
on enlèvera les éventuels forwarders) :
zone "mp-soa.net" in {
type slave;
file "slave/db.mp-soa";
masters {192.168.28.2; };
};
zone "28.168.192.in-addr.arpa" in {
type slave;
file "slave/db.28.168.192";
masters {192.168.28.2; };
};
Au redémarrage de l'esclave, le chier de zone arrive depuis le maître dans le répertoire /var/cache/bind/slave. Des
tests avec nslookup (ou mieux dig ) vérieront que tout notre DNS est bien correct. A la n de ce document, chaque
machine du réseau sera jointe par son nom, en particulier les machines clientes.
On donnera à chaque machine, y compris les serveurs, cette conguration dès l'installation (chier /etc/resolv.conf ) :
43 http ://logiciels-libres-cndp.ac-versailles.fr/debianinstall/chiers/db.mp-soa
44 http ://logiciels-libres-cndp.ac-versailles.fr/debianinstall/chiers/db.28.168.192
14
search mp-soa.net
nameserver 192.168.28.2
nameserver 192.168.28.1
6.2 Le DHCP
Packages requis : dhcp
Le Dynamic Host Conguration Protocol distribue automatiquement des adresses ip, ou plus exactement une
conguration réseau complète avec DNS et passerelle, à des machines dont la conguration est automatique. Service
extrêmement commode, DHCP évite de déclarer sur chaque machine une conguration qui peut changer : si l'adresse
du serveur DNS change, il sut de modier un chier sur un serveur plutôt que devoir passer sur toutes les machines
qui peuvent être très éloignées les unes des autres, voire dicilement accessibles. La conguration de dhcpd est très
simple, ceci sut amplement :
authoritative;
# Importante durée des baux
default-lease-time 259200;
max-lease-time 2592000;
# Nom de domaine, qui complète le DNS (directive search de /etc/resolv.conf
option domain-name "mp-soa.net";
# Passerelle
option routers 192.168.28.254;
option domain-name-servers 192.168.28.2,192.168.28.1;
# Plage d'adresses distribuées par le serveur,
# ne pas empiéter sur les adresses fixes du DNS
subnet 192.168.28.0 netmask 255.255.255.0 {
range 192.168.28.80 192.168.28.150;
}
Le protocole DHCP ne prévoyant pas de bail d'adresses illimité dans le temps (selon la rfc213245 ), les adresses
des machines risquent donc de changer de manière inopinée, or nous avons déclaré des adresses xes pour les stations
clientes, de manière à les retrouver facilement avec ssh et à distribuer des chiers de manière automatisée sur tout ou
partie d'entre elles. La solution, si on ne souhaite pas renseigner fastidieusement chaque adresse sur chaque station, est
de déclarer les machines selon l'adresse matérielle (MAC) de leur carte réseau dans la conguration du serveur DHCP
de cette manière :
15
L'autre solution consiste en un proxy de packages. Ainsi, comme avec tout proxy, seule la première machine qui
installe un package donné provoque un téléchargement sur Internet, le proxy fournissant lui même ensuite ce dont il
dipose déjà aux autres machines qui le demandent. Ainsi, on verra les ordinateurs télécharger l'ensemble de la suite
Open Oce.org en quelques secondes, le débit étant de 100 Mbits... Le logiciel permettant de faire cela s'appelle
apt-proxy, il est disponible sous forme de package installable par apt-get. Notons que les packages stockés dans le proxy
n'ont absolument pas besoin d'être installés sur la machine qui le fait tourner, ce même proxy pouvant héberger des
packages de diérentes versions de Debian. Soyons donc élégants et installons tout de suite ce proxy, qui sera déni
comme source Debian pour toute machine que l'on installera par la suite.
Sans surprise, le chier /etc/apt-proxy/apt-proxy.conf contient la conguration d'apt-proxy. Deux options impor-
tantes :
La variable APT_PROXY_CACHE détermine le répertoire de stockage des packages, pour nous /var/spool/apt-
proxy en raison de la partition réservée pour /var/spool. Ce répertoire, crée à la main, a besoin des permissions
suivantes :
drwxr-xr-x 8 aptproxy root 4096 Mar 9 13:53 /var/spool/apt-proxy
La variable WGET="wget passive-ftp", est essentielle puisque nous nous trouvons derrière un rewall ; aucun
téléchargement par ftp n'est possible sans ce classique mode passif.
On dénit ensuite des backends, ou serveurs, où notre proxy s'alimentera automatiquement selon les requêtes que les
machines vont lui soumettre :
add_backend /debian/ \
$APT_PROXY_CACHE/debian/ \
http://ftp.fr.debian.org/debian/ \
+ftp.fr.debian.org::debian/
add_backend /marillat/ \
$APT_PROXY_CACHE/marillat/ \
ftp://ftp.nerim.net/debian-marillat/
add_backend /agnula/ \
$APT_PROXY_CACHE/agnula/ \
http://apt.agnula.org/demudi/
Il est très important, dans les versions 1 d'apt-proxy, de déclarer un backend sur une seule ligne. Par souci de clarté,
les divers composants d'un backend sont ici mis sur plusieurs lignes terminées par un \ qui, selon la syntaxe Unix,
indique que la ligne suivante est en fait la continuité de la première. Si cette syntaxe n'est pas respectée, le backend
ne fonctionnera pas et le proxy non plus.
Dans ses versions 2, la syntaxe de ce chier, qui s'appelle apt-proxy-v2.conf est devenue considérablement plus
claire. Les backends se déclarent maintenant de la manière suivante :
[debian]
backends =
http://ftp.fr.debian.org/debian
[marillat]
backends =
ftp://ftp.nerim.net/debian-marillat/
En version 1, apt-proxy est un service d'inetd lancé à la demande, en version 2 il fonctionne de manière autonome.
Mais les deux cas, la syntaxe des sources Debian sur les clients est la même, dans le chier /etc/apt/sources.list :
16
On pourra être amené à utiliser l'une ou l'autre de ces versions dans la mesure où la version 1 est présente en
woody, et la version 2 en sid. Si, pour une raison ou une autre, on souhaite se servir d'une station de travail allumée
en permanence comme proxy de packages, apt-get installera la version 2.
La gestion de l'occupation disque se fait de manière très transparente, apt-proxy s'occupant seul de nettoyer les
packages obsolètes (seul semble inuer le paramètre spéciant le nombre de versions concurrentes à conserver). Un
maximum de deux Go d'espace disque sut pour de très nombreux packages sur les machines clientes.
L'utilitaire, apt-proxy-import permet de copier dans le cache du proxy l'ensemble des packages déjà téléchargés par
la même machine auparavant avec apt-get, ce qui peut représenter une taille considérable. Il faut initialiser le proxy
avant cette importation avec un simple apt-get update, le chier sources.list pointant bien évidemment maintenant sur
le proxy.
Restent à installer quelques logiciels sur une station pour observer notre proxy initialiser son cache et se remplir,
en indiquant ce qui se passe dans son chier de logs /var/log/apt-proxy.log. On y verra bien sûr tous les problèmes de
conguration éventuels qui expliqueront pourquoi quelque chose ne marche pas.
6.4.1 Squid
Un proxy http et ftp sert à économiser la bande passante et à uidier la consultation du Web ; il devrait être
installé systématiquement, même avec une bande passante importante. D'autre part, ce proxy permet de ltrer, on
pourra aussi dire censurer, un certain nombre de contenus jugés indésirables selon tel ou tel critère. Comme nous
l'avons dit à propos de la fermeture de certains ports en sortie du rewall, il ne peut être pertinent de procéder à une
telle censure sur un réseau, en particulier dans un établissement scolaire, que dans le cadre d'une charte des usages
dont les utilisateurs ont pris connaissance.
Squid48 constitue le standard quasiment absolu en matière de cache proxy. Il est livré avec un chier de conguration
qui le fait fonctionner de manière tout à fait satisfaisante ; il est déconseillé de toucher à ce chier (clairement
autodocumenté) sans réellement comprendre ce que l'on fait. Les risques d'altérer voire casser le disque dur du serveur
sont réels si l'on modie inconsidérément certaines options.
Il est bon de savoir que toute modication de la conguration de Squid demande, comme tout autre service,
redémarrage, mais Squid peut être particulièrement long à s'arrêter (quelques minutes dans le pire des cas). Ceci est
normal , ne doit pas donner lieu à inquiétude et permet d'aller consommer une boisson en attendant :).
Il y a simplement deux options à modier :
Dans la section ACLs (access control list), placer en haut de la liste une règle autorisant le réseau local à utiliser
le proxy :
acl localnet src 192.168.28.0/255.255.255.0
http_access allow localnet
L'espace disque occupé est déclaré de la manière suivante :
cache_dir ufs /var/spool/squid/cache 1500 16 256
Seul le premier chire est à modier, il précise ici une taille de 1,5 Go d'occupation disque dans /var/spool/squid
(le défaut est de 100 Mo). Les deux autres chires sont relatifs à l'arborescence des sous répertoires du cache,
les valeurs par défaut convenant complètement.
Un proxy possède trois modes de fonctionnement : le mode standard, sans conguration additionnelle particulière,
le mode transparent qui est une règle de rewall redirigeant tous les accès sur un port vers un autre port, rendant
superu de déclarer le proxy dans les navigateurs mais le rendant ainsi incontournable, et le mode authentié qui
impose aux utilisateurs de saisir leurs nom et mot de passe pour utiliser squid, permettant ainsi de consigner tous les
accès dans des journaux. Ces deux derniers modes sont exclusifs l'un de l'autre : un proxy est soit transparent, soit
authentié.
47 http ://slis.ac-grenoble.fr/
48 http ://www.squid-cache.org/
17
1. Le mode standard : Il sut de déclarer dans un navigateur que le proxy utilisé est proxy.mp-soa.net sur le
port 3128 et le chier /var/spool/squid/logs/access.log indiquera toutes les requêtes http et ftp traitées.
2. Le proxy transparent : solution confortable puisqu'aucun paramétrage n'est requis sur les stations clientes. Il
sut de faire en sorte, dans le câblage du réseau, que le routeur qui redirige vers Squid soit incontournable pour
qu'il soit matériellement impossible d'éviter le proxy et son éventuel ltrage49 .
La conguration d'un Squid transparent :
http_port 8080
httpd_accel_host virtual
httpd_accel_port 80
httpd_accel_with_proxy on
httpd_accel_uses_host_header on
Et la conguration du rewall :
$IPTABLES -t nat -A PREROUTING -i eth0 -s ! 192.168.28.2 -p tcp --dport 80
\ -j DNAT --to 192.168.28.2:8080
$IPTABLES -t nat -A POSTROUTING -o eth0 -s 192.168.28.0/24 -d 192.168.28.2
\-j SNAT --to 192.168.28.254
$IPTABLES -A FORWARD -s 192.168.28.0/24 -d 192.168.28.2 -p tcp
\ --dport 8080 -j ACCEPT
Le réseau local a ici pour adresse 192.168.28.0/24, le Squid tournant sur 192.168.28.2 et le routeur / Firewall
ayant l'adresse 192.168.28.254.
3. Le proxy authentié : la solution la plus lourde, qui impose à chaque utilisateur une nouvelle saisie de son nom
et de son mot de passe, déjà saisis à l'ouverture de session, pour chaque utilisation du proxy, donc d'internet,
et à chaque lancement d'un navigateur. Cette solution est très discutable d'un point de vue juridique car elle
consigne toutes les traces et tous les accès de tout le monde de manière extrêmement précise et surtout nomi-
nale. Pour bien faire les choses, on branchera Squid sur le serveur d'authentication de cette manière (ici LDAP) :
18
6.4.2 SquidGuard
SquidGuard est un plugin pour Squid, qui permet de ltrer des URLs de manière extrêmement puissante à partir
de bases de données que l'on trouve facilement sur Internet, constituant autant de politiques de censure établies selon
des critères toujours discutables. L'Éducation Nationale préconise les bases de données de l'Université de Toulouse50 ,
qui sont aussi utilisées par Slis 51 .
La conguration de Squid doit être modiée pour indiquer la présence d'un programme de redirection. Comme
précédemment avec l'authentication LDAP, on anera le nombre de process redirecteurs lancés simultanément en
fonction du nombre de clients sur le réseau de manière à ne pas trop surcharger le serveur :
redirect_program /usr/bin/squidGuard -c /etc/squid/squidGuard.conf
redirect_children 50
Nous proposons une conguration on ne peut plus simple de SquidGuard, qui permet un ltrage très ecace d'un
type de données omniprésent sur le Web et dont les gens acceptent souvent avec plaisir de se passer : la publicité.
Outre les a priori légèrement publiphobes qui animent ce type de démarche :-), ltrer la publicité représente encore
une économie certaine de bande passante et se justie complètement en milieu scolaire.
Notre chier de conguration est disponible en téléchargement52 ainsi que les expressions régulières53 permettant
le ltrage de publicités. Pour activer ce ltrage, on placera le chier regexps dans le répertoire /var/squidGuard/db
auquel on donnera les permissions suivantes :
50 http ://cri.univ-tlse1.fr/documentations/cache/squidguard.html
51 http ://slis.ac-grenoble.fr/
52 http ://logiciels-libres-cndp.ac-versailles.fr/debianinstall/chiers/squiddGuard.conf
53 http ://logiciels-libres-cndp.ac-versailles.fr/debianinstall/chiers/regexps
19
drwxrwx--- 4 root proxy 4096 Oct 2 2003 /var/squidGuard
On redirigera enn les requêtes ltrées vers une image quelconque disponible sur un serveur Web installé sur le
réseau.
Le site ociel54 de SquidGuard détaille de manière poussée et progressive, à la manière d'un didacticiel, la con-
guration de ltrages extrêmement complexes selon les heures, les utilisateurs, les machines, etc etc...
Les paramètre authenticate_children redirect-chidren demandent ajustement en fonction du nombre de clients
susceptibles de faire des requetes simultanées et selon les capacités du serveur. Tous ces paramètres seront anés à
l'usage, une conguration réellement optimisée de Squid permettant une économie substantielle de bande passante.
6.4.3 En conclusion
En imposant un ltrage tellement draconien et une surveillance nominale de tous les instants, on peut réellement
arriver à dissuader les gens d'utiliser ce fabuleux outil qu'est Internet. Cette possibilité existe et comble peut être
certains egos, avec de jolis graphiques générés sans eort pour parfaire cette activité de surveillance . Chacun étant
maître de ce qu'il fait sur un réseau dont il est responsable, insistons au moins sur l'existence d'une législation qui
encadre ce qui ressemble fort à une dérive à forte connotation totalitaire...
20
Les clients pourront venir s'accrocher sur le serveur CUPS au moyen des utilitaires variés de conguration des
imprimantes tels qu'ils existent aujourd'hui dans Gnome ou KDE. On veillera à ce que les chiers temporaires soient
bien eacés du spool après traitement des tâches d'impression pour ne pas encombrer le disque, mais CUPS gère en
principe cela très bien.
21
Soit le serveur est ouvert sur Internet. Un serveur SMTP mal conguré, qu'on appelle relai ouvert, va servir très
rapidement pour spammer, de la part de nuisibles qui recherchent activement aux quatre coins d'internet ce type
de service . Il faut être bien conscient que c'est l'administrateur de ce serveur qui sera tenu pour responsable
de la dizaine de milliers de messages acheminés, pourtant à son insu, en quelques instants par un inconnu ayant
utilisé le Postx pour répandre ses nuisances. Il importe donc, par défaut, de sécuriser le plus possible un serveur
SMTP.
Dans tous les cas de gure, root ne doit pas faire de courrier pour des raisons de sécurité. La procédure pour
rediriger ses messages gure dans les conseils généraux d'installation d'un système d'exploitation (section 2.3).
22
Il ne se passe pas du tout la même chose depuis la machine arrakis qui se trouve à l'intérieur du réseau :
Nous avons dans les deux cas tapé exactement les mêmes commandes, ce qui prouve deux choses :
1. Par défaut, Postx livré avec Debian est sécurisé et interdit de relayer quoi que ce soit depuis l'extérieur dans la
mesure où seule une machine locale est autorisée à poster hors de notre domaine (on vériera que n'importe qui
peut poster à destination d'un de nos utilisateurs locaux).
2. La ligne mynetworks contenant uniquement notre adresse de loopback, les machines du réseau local sur lequel le
serveur dispose d'une adresse ip sont considérées comme faisant implicitement partie de mynetworks puisqu'une
machine du LAN a le droit de poster. Ceci est pratique si notre serveur se trouve sur un sous réseau en adressage
privé (ici 192.168.28.0/24). Cependant, si notre routeur est serveur SMTP, comme il dispose d'une adresse ip
publique sur le réseau de notre fournisseur d'accès, nous relayons donc toute la classe d'adresses dans laquelle
nous avons obtenu une adresse à la connexion. On interdira alors toute autre machine à utiliser le serveur avec
cette ligne :
mynetworks_style = host
Cette ligne permet de jeter à la connexion les machines sans DNS inverse (voir section 6.1) de même que ce
qui vient des domaines dénis dans le chier /etc/postx/access dont voici un petit exemple :
aol.com REJECT
hotmail.com REJECT
msn.com REJECT 550 MSN c'est MAL
cloudyweather.net DISCARD
emailisfun.com DISCARD
std-up.com DISCARD
23
L'action REJECT provoquera un bounce (renvoi à l'expéditeur par rebondissement) avec un message d'erreur plus
explicite éventuel (ici pour les utilisateurs de MSN), tandis que l'action DISCARD fera partir le message dans le trou
noir sans qu'il en reste la moindre trace ailleurs que dans les logs du serveur.
Ce chier complété, on reconstruira la table access.db au moyen de la commande postmap /etc/postx/access et on
fera relire cette base à Postx par la commande postx reload. Ce simple script57 permet de discarder simplement
un nouveau domaine que l'on considère comme ne produisant que du spam et dont on ne veut absolument plus lire
aucun message ni en informer l'expéditeur.
smtpd_sender_restrictions = reject_non_fqdn_sender,
reject_unknown_sender_domain, reject_maps_rbl
Nous nous occupons ici du champ From : du mail, qui permet de rejeter les expéditeurs présentant des noms de
domaines incomplets ou inconnus, ou encore inscrits dans les listes noires RBL58 . On évitera de multiplier ce type de
listes noires, en particulier la DUL qui cherche de manière un peu vaine voire stupide à stopper les messages émanant
directement d'abonnés de fournisseurs d'accès ne passant pas par les serveurs SMTP de ceux ci.
smtpd_helo_required = yes
Impose la commande SMTP HELO pour initier une session.
disable_vrfy_command = yes
Inactive la commande vrfy permettant de vérier qu'un utilisateur existe. Il est superu de faire la même chose
pour les commandes expn (vérication de l'existence de listes) qui ne sont pas implémentées dans Postx.
mailbox_command = /usr/bin/procmail
Il est toujours pertinent de prévoir l'utilisation de procmail, par exemple pour Spamassassin.
Il manque la réécriture de l'adresse de certains expéditeurs dans le cas ou notre domaine est strictement local, ou si
nous avons besoin de transformer yves@mp-soa.net en yves.potin@ac-versailles.fr . C'est la fonction du chier
/etc/postx/canonical à déclarer ainsi dans le main.cf :
canonical_maps = hash:/etc/postfix/canonical
Ce chier contient ce type d'entrées :
yves yves.potin@ac-versailles.fr
On reconstruira la base de données avec postmap /etc/postx/canonical et on fera relire cette base au serveur
par la commande habituelle postx reload .
24
IN NS andromede
IN MX 10 abraracourcix
localhost IN A 127.0.0.1
Dès que la zone est actualisée dans bind, la commande dig mx mp-soa.net renvoie enn quelque chose de satisfaisant :
;; ANSWER SECTION:
mp-soa.net. 86400 IN MX 10 abraracourcix.mp-soa.net.
Important : Une entrée MX ne doit jamais pointer sur une entrée CNAME, c'est à dire un alias, mais toujours
sur une entrée A. Ce n'est pas le cas, par contre, d'entrées comme smtp, pop, imap, alias qui simplient et stabilisent
la conguration des logiciels clients.
En incrémentant le numéro de série de la zone et en la rechargeant dans Bind, nous aurons l'agréable surprise de
voir le répertoire /var/mail du serveur se remplir de chiers au nom du login des utilisateurs vers lesquels nous faisons
des tests. Mais ces utilisateurs ne peuvent toujours pas aller chercher les messages en attente....
Recevoir des messages
Un serveur SMTP sert à transporter des messages sur un réseau, y compris internet. A ce titre, il assure deux
fonctions :
1. Envoyer un message à un MX distant
2. Jouer à son tour le rôle de MX et accepter des messages en les plaçant là où les utilisateurs peuvent venir les
chercher.
Mais en aucun cas le serveur SMTP n'est là pour servir de boite à lettres aux utilisateurs : son rôle se limite à faire
le facteur. La boîte à lettres est assurée par un serveur pop, dans notre cas le classique qpopper. Ce service, installé
par apt-get, ne demande pas de conguration particulière en raison du caractère extrêmement déterminé du protocole
pop. Il s'agit généralement d'un service d'inetd, sauf charge particulière, qui se met à fonctionner immédiatement dès
qu'un client l'interroge et s'authentie. Mais il nous faut mettre en place un vrai serveur d'authentication, c'est la
fonction majeure du serveur que nous sommes en train de congurer.
7.2 NIS
Packages requis : Nis (le même package pour le serveur comme les clients), portmapper.
Les services principaux de notre second serveur vont permettre l'authentication et le partage de répertoires sur le
réseau. Nous utilisons le couple NIS / NFS, standard on ne peut plus classique même si les administrateurs de réseau
familiers des environnements Microsoft ° r n'en ont guère entendu parler.
NIS et NFS reposent sur le portmapper, démon qui leur attribue dynamiquement un numéro de port car ils
n'écoutent pas sur un port dédié. Son installation est automatique par le jeu des dépendances de NIS et NFS. La
commande rpcinfo permet d'obtenir les informations concernant les services du portmapper disponibles.
Network Information Service est un service d'annuaire, aussi appelé yellow pages, développé à l'origine par Sun
Microsystems ; c'est le standard historique dans le monde des stations de travail Unix. Aujourd'hui, il a tendance à
être supplanté de plus en plus par LDAP, mais demeure relativement simple et léger à mettre en place et remplit
parfaitement sa tâche d'authentication dans le cadre d'une petite structure qui, avec relativement peu d'utilisateurs,
n'a pas besoin de brancher sur un annuaire des applications complexes. Si l'authentication se fait à travers plusieurs
applications (clients Unix, Samba, un logiciel de publication de type spip, un serveur de mail, etc etc...), on considérera
LDAP avec plus d'intérêt mais nos besoins excèdent ici très peu la synchronisation d'un chier de mots de passe Unix
avec une application réseau d'authentication pour l'ouverture de session sur les machines clientes.
Un serveur NIS maître est relativement simple à congurer si l'on suit bien rigoureusement la procédure indiquée
dans le NIS HOWTO Debian60 dont nous donnons une traduction française. Pour mémoire :
1. Déclarer dans /etc/hosts le FQDN du serveur de cette manière :
192.168.28.6 abraracourcix.mp-soa.net abraracourcix
2. Placer le nom du domaine NIS dans /etc/defaultdomain (pour nous mp-soa.net).
3. Déclarer le serveur comme maître (master) dans /etc/default/nis
4. Déclarer le couple netmask/network dans /etc/ypserv.securenets
60 http ://logiciels-libres-cndp.ac-versailles.fr/debianinstall/nis.debian.howto.fr
25
5. Préciser dans /var/yp/Makele que nous fonctionnons en shadow passwords61 en dé-commentant les lignes
appropriées :
MERGE_PASSWD=true
MERGE_GROUP=true
Consulter le HOWTO à propos des diérentes options, de sécurité en particulier.
6. Démarrer nis : /etc/init.d/nis start
7. Initialiser le serveur : /usr/lib/yp/ypinit -m
Après l'ajout d'un utilisateur, la commande make (invoquée dans le répertoire /var/yp où se trouve le Makele )
permet de compiler la base de comptes et permettre à l'utilisateur de s'authentier sur une station congurée comme
cliente NIS 62 .
On pourra vérier le fonctionnement du serveur NIS (ici abraracourcix) depuis un ordinateur quelconque de cette
manière :
7.3 Samba
Packages requis : samba (nombreuses dépendances et outils conseillés).
Par hypothèse, nous exposons ici l'installation d'un réseau complet de machines clientes sous environnement Unix.
Il n'est donc pas question d'envisager le cas de clients Microsoft Windows ° r , même dans un contexte de double
amorçage des stations où deux systèmes dexploitation seraient présents.
La documentation sur Samba, qui permet à un serveur Unix d'émuler le protocole SMB d'ouverture de session,
de partage de chiers et d'imprimantes, et ainsi de se faire passer pour un serveur MS-Windows ° r NT/2000 est très
abondante sur Internet. D'autre part, le logiciel libre SambaEdu364 développé par et pour l'Éducation Nationale sans
compétence Unix particulière de disposer d'un serveur Samba pour gérer ses clients MS-Windows ° r.
7.4 NFS
Packages requis : nfs-kernel-server (support du serveur NFS compilé dans le kernel, sinon nfs-user-server). Le
package nfs-common, indispensable, sera installé par dépendances.
Network File System partage des répertoires sur un réseau. Il est très facile à congurer, on peut mettre en service
des failles de sécurité béantes en quelques instants avec ce protocole. Il est donc recommandé de se documenter
soigneusement à son sujet, à commencer par le NFS HOWTO65 (en français). NFS n'est de toute manière pas un
61 les mots de passe contenus dans le chier /etc/password posent un gros problème : ce chier est lisible par tout le monde même si les
mots de passe sont cryptés. La solution, assez ancienne, consiste donc à placer le mot de passe dans un chier lisible uniquement par root,
/etc/shadow. Quasiment toutes les distributions modernes fonctionnent ainsi.
62 la section 9.2 montrera que cette conguration est tout à fait triviale par rapport à un client LDAP
63 http ://www.freenix.fr/unix/linux/HOWTO/NIS-HOWTO.html
64 http ://www.crdp.ac-caen.fr/se3/
65 http ://www.freenix.fr/unix/linux/HOWTO/NFS-HOWTO.html
26
protocole sécurisé, il suppose un minimum de conance entre les utilisateurs qui accèdent aux données partagées.
N'importe qui pouvant être root sur une machine Unix peut opérer le montage NFS si cette machine y est autorisée
(par son adresse ip), puis prendre l'uid de n'importe quel utilisateur et ainsi s'approprier toutes ses données si /home
est exporté via NFS. Ceci, dans un centre de formation où ne viennent que des utilisateurs passagers, ne pose pas de
problème majeur. Il en ira de même dans un établissement où les utilisateurs pouvant être root sous GNU/Linux sur
leur portable sont encore relativement rares (comme dans un collège). On observe de vastes sites où les risques sont
potentiellement plus importants, comme des universités, recourir à NFS pour le home des utilisateurs, l'administrateur
réseau étant conscient de ce risque.
Précisons tout de même qu'une installation de NFS où l'on prend les précautions indiquées dans ce document et
surtout dans le HOWTO NFS ne met absolument pas en péril la sécurité du serveur lui même, mais, répétons le, la
condentialité des données des utilisateurs.
L'exportation classique de /home permettra à chacun de retrouver l'intégralité de ses données, son courrier, les
préférences de ses logiciels, etc etc... à l'identique quelque soit l'ordinateur utilisé. Ceci est particulièrement bien adapté
au contexte de l'Éducation Nationale où les utilisateurs sont par défaut mobiles et ne possèdent pas un poste de travail
dédié : si un utilisateur bouge une icône sur son bureau de quelques centimètres, il la retrouvera à cette nouvelle
position sur un autre ordinateur, ceci n'ayant rien à voir avec des prols errants . Cette déportation d'un répertoire
est tout à fait transparente pour l'utilisateur, qui ne se rend pas compte que ses données ne se trouvent pas sur la
machine locale.
La conguration de NFS est très simple. On commencera par dénir ce que nous exportons dans le chier
/etc/exports :
On autorisera ensuite les machines du réseau local à opérer le montage dans la conguration des tcp wrappers :
Le montage se fait avec la comande mount abraracourcix :/data/stagiaires /mnt sur une machine cliente ; la com-
mande showmount, sur le serveur cette fois, achant la liste des machines ayant réalisé des montages. La section 9.2
consacrée au paramétrage des stations expliquera quelle ligne rajouter dans /etc/fstab pour automatiser le montage
du répertoire personnel importé au boot.
7.5.1 Apache
L'intérêt d'un serveur Web couplé à un serveur FTP accroché à la base de comptes du serveur est évident. L'ins-
tallation d'Apache, PHP et MySQL pour mettre en place des sites dynamiques est documentée un peu partout, nous
y renvoyons 66 . Insistons simplement sur quelques fonctionnalités confortables pour les utilisateurs.
66 backport de PHP4 pour Woody : deb http ://packages.dotdeb.org/ ./ . Packet yaz (support z39.50 pour PHP), juste
pour les bibliothèques, le paquet deb est disponible sur http ://perso.dotdeb.org/misc/php4-yaz_4.3.8-8.dotdeb.1_i386.deb deb
http ://www.indexdata.dk/debian indexdata/woody released
27
On placera dans /etc/skel un répertoire public_html avec les permissions 755 et on donnera aux répertoires person-
nels eux mêmes les permissions 711, de manière à ce que ce public_html puisse être consulté par tout le monde avec un
navigateur Web à l'intérieur du réseau. Chacun peut ainsi déposer des pages Web ou des documents aisés à consulter,
en particulier si l'on forme à la réalisation de contenus pour le Web. Apache intègre dans sa conguration par défaut
le répertoire /public_html comme chemin du répertoire des utilisateurs. On consultera simplement ce répertoire à
l'adresse http ://serveurweb.domaine/utilisateur, non seulement pour voir les pages de chacun mais également en
tant que moyen simple d'accéder à un chier partagé (cours, devoir, corrigé...).
7.5.2 ProFTPd
Nous présentons le protocole FTP dans le contexte un peu particulier d'un serveur auquel les utilisateurs accèdent
de toute manière en écriture par le biais de leur compte personnel en ouvrant une session. L'intérêt est de pouvoir
montrer, voire apprendre ce protocole comme un des modes les plus courants de mise en ligne de contenus sur un
serveur distant, que l'on retrouve ensuite sur une machine qui ne porte pas forcément le même nom par la magie des
alias DNS.
Avant de bien connaître ce protocole qui donne accès en écriture sur le disque, on prendra garde à :
ne pas ouvrir le FTP sur le routeur, évidemment, mais à laisser ce serveur FTP en usage privé à l'intérieur du
réseau
ne pas permettre l'usage du FTP anonyme, dont l'accès est désactivé par défaut dans la version Debian de
Proftpd (il sut de décommenter les lignes ad-hoc du chier de conguration).
ne pas utiliser wu-ftpd, souvent proposé comme serveur FTP par défaut. Proftpd est un logiciel très sécurisé
au vu de son nombre quasiment nul d'alertes de sécurité depuis plusieurs années.
Pour un usage très ponctuel, on en fera un service d'inetd plutôt que de le laisser tourner en permanence (option
claire du chier de conguration).
Le serveur Proftpd est un logiciel très évolué, qui peut intégrer sa propre base d'utilisateurs ainsi inconnus du système
lui même. Il propose un chroot très simple à mettre en place. Le principe du chroot est de modier la racine du système
de chiers de manière à emprisonner l'utilisateur dans une cage qui l'empêche de se promener librement dans
le reste du disque. Si seuls les formateurs appartiennent au groupe du même nom, le chroot se met en place ainsi :
On pourra vérier avec un client ftp que chaque utilisateur n'appartenant pas au groupe des formateurs se retrouve
dans le public_html de son répertoire personnel sans pouvoir remonter au dessus.
28
ces serveurs esclaves tomberont les premiers, avant le maître, en cas de baisse critique de l'alimentation, le maître
attendant la chute des esclaves avant de s'éteindre. . La richesse fonctionnelle de Nut en fait un des logiciels les plus
puissants pour ce type d'usage.
On respectera deux démarches de bon sens lors de l'installation d'onduleurs et de leur surveillance :
1. Tout le matériel actif doit être ondulé, en particulier les switchs qui relient les serveurs partageant le même
onduleur. Comme l'esclave surveille l'onduleur du maître par réseau, cette surveillance marchera moins bien lors
d'une panne si le switch n'est pas ondulé :). Si l'esclave surveille le maître en l'appelant par son nom et non par
son adresse, on veillera à la disponibilité du service DNS en cas de coupure, et donc faire tourner celui ci sur le
serveur maître.
2. Dans la conguration du logiciel de surveillance, on laissera les batteries de l'onduleur se vider jusqu'à une charge
critique avant de faire tomber le serveur, au lieu de le faire à la moindre coupure. La fonction même d'un onduleur
est d'assurer une continuité de service en cas de coupure relativement brève.
29
# deny everybody else
ACCESS deny all all
4. Dans le chier de conguration du client, upsmon.conf, on renseignera correctement cette ligne :
MONITOR myups@localhost 1 password master
5. On s'assurera de la présence éventuelle d'un chier /etc/default/nut, où déclarer le démarrage du client et du
serveur. On peut passer très longtemps à essayer de démarrer le service s'il est déclaré o dans ce chier. Ceci
concerne surtout les versions ultérieures de nut.
Puis on obtiendra au moyen de la commande upsc des informations sur l'état de l'onduleur, qui est ici à 100 % de
sa charge et dont les batteries datent du 14 Septembre 2002 :
La commande upsc myups@andromede renverra les informations ci dessus et les logs d'andromede montreront
l'adresse ip du client en train d'entrer dans le daemon.
30
Des congurations plus évoluées sont documentées, en particulier la déclaration d'utilisateurs de l'onduleur, systé-
matiquement utilisés dans les dernières versions de nut.
Les chiers de conguration de nut v0.4569 et de nut v.2.070 sont joints à cet article.
Deux commandes simples permettent de vérier que backup peut faire fonctionner le lecteur DAT : mt -f /dev/st0
rewind et mt -f /dev/st0 eject .
Nous allons mettre en place une sauvegarde incrémentale hebdomadaire qui tourne sur 4 bandes, nous orant
une antériorité d'un mois ; nous l'appellerons cong, et la placerons sur le premier serveur où nous avons réservé une
partition pour /var/spool. Nous sauvegarderons les données présentes sur deux machines du réseau, le serveur de
69 http ://logiciels-libres-cndp.ac-versailles.fr/debianinstall/chiers/nut-0.45
70 http ://logiciels-libres-cndp.ac-versailles.fr/debianinstall/chiers/nut-2.0
71 Ce n'est pas un hasard si une des solutions propriétaires les plus connues de sauvegarde s'appelle time navigator.
31
chiers (pour les données des utilisateurs) et la machine du bureau (pour la gestion du centre de formation), tous les
Vendredis soirs.
Les chiers dénissant la sauvegarde se trouvent dans /etc/amanda/cong (où le répertoire cong désigne le nom
de notre sauvegarde, que nous allons utiliser en permanence). Créons dans /etc/amanda un répertoire cong à coté
de celui qui a été crée à l'installation, dont les permissions sont les suivantes :
Copions dans ce répertoire le contenu du répertoire DailySet1, conguration de sauvegarde par défaut :
amanda.conf, la quasi totalité de la conguration de la sauvegarde
disklist, la liste des disques des machines à sauvegarder.
le chier /etc/amanda/cong/amanda.conf , clairement autodocumenté en anglais, dénit notre sauvegarde :
il faut en renseigner bien rigoureusement chaque ligne. Nous indiquerons à chaque fois qu'un certain nombre de
répertoires sont à créer manuellement ; il sera judicieux de créer ces répertoires au moment où on les déclare dans le
chier de manière à ne pas les oublier par la suite.
Clair de soi.
A ajuster selon la puissance du serveur et la bande passante du réseau en tenant compte de son occupation à
l'heure où les sauvegardes sont réalisées, d'où l'intérêt de les faire la nuit en utilisant la totalité des 100 Mbits permis
par le switch.
L'incrémentalité de la sauvegarde, à aner à l'usage selon le volume de données sauvegardées et la capacité des
bandes.
Tout ce qui parle de tape changer concerne un système de robot qui change automatiquement les bandes, qui
peuvent être plusieurs pour une même sauvegarde. Ce sont des systèmes très haut de gamme, nous n'avons qu'un bête
lecteur DAT SCSI.
Le périphérique de sauvegarde, il est essentiel de ne pas rembobiner la bande. Le périphérique /dev/st0 ne convient
donc pas.
Le type de bande utilisée, tel que nous le dénirons ci dessous (type HP-DDS-4).
32
Le nom que nous donnerons à nos bandes, qui s'appelleront impérativement cong01, cong02, etc...
Le répertoire du disque dur que nous utiliserons comme zone de stockage temporaire pendant la sauvegarde, avant
l'écriture proprement dite sur la bande. Deux lignes plus bas, on remarque que plusieurs disques de ce type peuvent
être dénis.
La quantité d'espace disque utilisable pour ce répertoire qui n'est pas nécessairement une partition, on peut le
partager avec d'autres spools. Ce répertoire devra être crée à la main avec les permissions suivantes :
indexdir "/data/amanda/config/index"
On créera ensuite, dans ce répertoire, un sous répertoire qui portera le nom de notre sauvegarde (cong ). L'ar-
borescence de ce sous répertoire sera, elle, créée automatiquement lors de la première sauvegarde, avec un message
d'avertissement lors de la vérication de la conguration (commande amcheck ).
Cette base de données est essentielle au fonctionnement d'Amanda, puisqu'elle contient l'index des chiers qui
ont été sauvegardés et la bande où ils se trouvent. C'est la raison pour laquelle il ne faut jamais sauvegarder un
disque sur lui même, de manière à préserver cette base de données en cas de crash disque. La documentation
indique toutefois une procédure de restauration, indiquée comme particulièrement chaude :), même en ce cas (cf.
/usr/share/doc/packages/amanda-common/RESTORE.gz ).
Vient ensuite une longue liste de dénitions de types de bandes magnétiques, il est fort probable que cette liste ne
comprendra pas celles qui ont été achetées avec le lecteur DAT :). La commande tapetype, au traitement particulièrement
long, permet de générer une description de bande pour Amanda. On trouve facilement avec Google une dénition des
caractéristiques de nos bandes fournie par d'autres utilisateurs. Le rapport reçu par mail à l'issue de la première
sauvegarde permettra de vérier la conformité de la dénition des bandes dans Amanda avec leur capacité réelle.
Voici une entrée pour les bandes de notre lecteur DAT trouvée en quelques instants sur Internet :
Vient enn la dénition proprement dite de la sauvegarde que nous allons réaliser. L'auto documentation du
chier expose les diérentes options avec un nombre conséquent d'exemples. Nous allons dénir un nouveau type de
sauvegarde que nous appellerons hebdo :
33
Nous compressons le mieux possible puisque nous disposons du temps pour le faire (il y a peu de stagiaires ou
d'élèves la nuit :) ) ; l'option index précise que nous voulons que la liste des chiers sauvegardés soit indexée. Enn
la priorité est dénie comme haute, elle pourrait être mise à low ou medium par rapport à d'autres disques
que nous sauvegarderions en même temps, mais avec un autre type de sauvegarde car ces disques seraient jugés plus
importants. La diérence est que plus une sauvegarde est importante, plus elle sera prioritaire dans l'occupation de
l'espace disque temporaire, ce qui est très utile en mode dégradé, lorsque le lecteur n'est pas disponible (vraisembla-
blement parce qu'on a oublié de changer la bande) et que tout va rester sur le disque en attendant un dump dénitif
(commande amush ).
Le chier /etc/amanda/cong/disklist contient la liste des disques72 que nous désirons sauvegarder, le chier
documente lui même abondamment le type de partitions prises en charge, y compris vfat. La syntaxe est simple : on
indique sur une ligne le nom de la machine, la partition à sauvegarder et le type de sauvegarde tel que déni en dernier
dans le chier amanda.conf. Pour nous :
C'est tout ! :)
Les chiers de conguration peuvent être consultés à cette adresse73 .
Il faut cependant que chaque machine, serveur comme cliente, soit autorisée à communiquer avec les autres pendant
la sauvegarde mais également pendant la restauration. Ces autorisations sont dénies dans les chiers .amanda-
hosts situés dans le répertoire personnel de l'utilisateur backup (/var/backups) sur chaque machine. La syntaxe de ces
chiers peut donner lieu à un certain énervement :), et requiert de bien comprendre qui accède à quelle machine, en
tant que root ou en tant que backup (rappellons que root seul peut restaurer mais ne doit pas sauvegarder).
Sur le serveur de sauvegarde andromede, cette conguration est requise si nous sauvegardons les machines abrara-
courcix et ash, puisque backup réalise la sauvegarde et root assure la restauration :
localhost backup
abraracourcix.mp-soa.net root
abraracourcix.mp-soa.net backup
ash.mp-soa.net root
ash.mp-soa.net backup
localhost backup
andromede.mp-soa.net backup
34
andromede:~$ amcheck config
Amanda Tape Server Host Check
-----------------------------
Holding disk /data/backup: 2963940 KB disk space available, that's plenty
NOTE: skipping tape-writable test
Tape config01 label ok
Server check took 8.637 seconds
Tous les problèmes seront indiqués très clairement : bande absente, non valide, machine indisponible ou avec laquelle
il est impossible de communiquer, etc etc... La documentation du package amanda-common contient une FAQ qui
détaille les problèmes les plus courants (en particulier une entrée d'inetd.conf incorrecte ou un chier .amandahosts
mal renseigné). Les logiciels composant Amanda créent des chiers temporaires portant leurs noms dans /tmp, ils
apportent une aide majeure pour debugguer.
Lorsque tout est correct, il sut de lancer une sauvegarde de test avec la commande amdump cong . On voit le
système rendre tout de suite la main, les démons amandad se lancer sur les machines clientes et appeler les utilitaires
de backup, de compression et d'envoi par réseau de la sauvegarde. Sur le serveur, le répertoire /var/spool/backup
se remplit de chiers temporaires qui grossisent en taille, puis vont être écrits sur la bande. Lorsque tout est ni,
l'utilisateur déni dans la sauvegarde reçoit un mail qui l'informe du déroulement des opérations et des statistiques de
la sauvegarde, en particulier les pourcentages d'occupation des bandes et les taux de compression. Le message précise
en premier lieu le nom de la prochaine bande qu'attend Amanda.
La documentation d'amrecover précise comment le lancer, il vaut mieux lui préciser, en plus du nom de la sauve-
garde, comment s'appellent le serveur, le serveur de bandes et le périphérique DAT :
Le prompt amrecover> ore un certain nombre de commandes listées par help. L'équivalent des classiques pwd, ls
et cd nous permettent de nous déplacer et de localiser le chier que nous cherchons de cette manière :
35
amrecover> pwd
/home
amrecover> cd formateurs
/home/formateurs
amrecover> ls
2005-03-18 .
2005-03-18 galantine.sxi
2005-03-18 savNT/
2005-03-18 softs/
Nous retrouvons l'arborescence familière de notre système de chiers, galantine.sxi est bien présent. Nous allons
l'ajouter, pour extraction de la bande et restauration sur le disque :
Il est alors possible de parcourir encore le système de chiers, voire d'en changer, et d'ajouter avec add d'autres
contenus à restaurer. La commande extract permet de commencer à restaurer :
amrecover> extract
La ou les bandes nécessaires sont indiquées clairement, il faudra les introduire successivement dans le lecteur. La
restauration démarre, elle n'est pas spécialement rapide car le DAT va devoir relire les bandes. Cela peut prendre
largement plus d'une demi heure pour une restauration importante.
Amanda propose d'autres utilitaires, par exemple amrmtape qui eace tout le contenu d'une bande de la base de
données ; toutes ces commandes sont trouvées par complétion sur les lettres am, tout simplement. Leur documentation,
très simple, brève et intelligible, est en anglais.
Mentionnons la commande amush : elle poursuit une sauvegarde inachevée car la bande requise n'était pas dans
le lecteur, surement parce qu'on avait oublié de la changer. L'administrateur aura été prévenu par mail de cet échec.
L'appel d'amush vide le répertoire de stockage temporaire en le passant sur la bande, puis un mail est envoyé à
l'administrateur.
36
observera que Debian ne présente pas de problème d'altération et de dégradation avec le temps, outre qu'il n'y a pas de
virus. Partimage sera donc pertinent pour sauvegarder un OS propriétaire qui cohabiterait avec Debian GNU/Linux,
comme si on faisait une photo à un instant t d'un état sain de ces systèmes fragiles, peu adaptés au fonctionnement
multi utilisateurs, qui demandent des droits exorbitants pour faire fonctionner des logiciels triviaux ou se servir d'un
périphérique aussi commun qu'un scanner ou une imprimante, et qui se dégradent avec le temps.
Le problème de Partimage est que ses diverses versions communiquent mal entre elles, en particulier la version
woody sur nos serveurs et la version plus récente en Sarge ou mieux Sid. Le chirement SSL des données n'est pas
implémenté, ou pas de la même manière, et le client partimage de sid, au mieux refuse de communiquer avec le serveur
en woody, au pire le fait planter. Il est particulièrement lourd (en raison de très nombreuses librairies de développement
à installer) et surtout pas forcément possible de compiler pour le serveur la dernière version disponible à partir des
sources. La solution la plus simple, certes peu élégante, consiste à installer partimaged (le package serveur) sur un
ordinateur en sid et de copier le binaire /usr/sbin/partimaged sur l'ordinateur qui sera serveur partimage à la place
du binaire original.
D'autre part, le démarrage de partimaged pose problème puisqu'il semble qu'il sauvegarde les images qu'il reçoit
du réseau non pas dans le répertoire spécié dans son chier de conguration mais à l'endroit du système où on l'a
invoqué depuis la ligne de commande. Il vaut mieux donc le lancer à la main dans le répertoire où sont stockées les
images des disques.
Pour récapituler :
1. Installer le package partimage-server sur le serveur (woody) et un client (sid).
2. Copier le binaire /usr/sbin/partimaged de la station sur le serveur
3. Créer sur le serveur un répertoire pour les images des disques (par exemple /data/images )
4. Indiquer sur le serveur, dans le chier /etc/partimaged/partimagedusers (qui n'existe peut être pas), le nom de
l'utilisateur qui va envoyer les images depuis les clients (pour nous root ). Cet utilisateur devra disposer du droit
d'écrire dans le répertoire qu'on vient de créer.
5. Se placer dans ce répertoire de sauvegarde, lancer le démon au moyen de la commande /usr/sbin/partimaged -d.
Vérier qu'il tourne au moyen de la commande ps aux |grep partimage.
6. Sur une station, sous root, lancer le client avec la commande partimage qui appelle l'interface ci dessous, et
tester l'envoi d'une sauvegarde sur le serveur. De nombreuses options sont disponibles, la principale étant la
compression de l'image. Le meilleur choix pour un rapport optimal temps / occupation disque est gzip. L'image
doit arriver progressivement dans le bon répertoire sur le serveur à la vitesse du réseau
7. Tester une restauration, en lançant l'utilitaire partimage sur le client et en se laissant guider par l'interface très
intuitive. L'image de la machine asterix s'appelle asterix.000, on vériera le nom du chier sur le serveur en cas
de doute.
Sur un réseau switché à 100 Mbits, la sauvegarde comme la restauration d'une partition d'environ 3 Go compressée
avec gzip demande très approximativement une vingtaine de minutes.
Notons enn qu'existent des CDs bootables qui intègrent un client partimage permettant de faire une sauvegarde
complète de la machine en réseau mais également sur le disque local.
37
8.4 Webmin, administration simpliée et création de comptes
Packages requis : webmin, libnet-ssleay-perl pour l'authentication SSL, plus un package par service réseau à
intégrer en tant que module ( apt-cache search webmin ). La dernière version contenant l'intégralité du logiciel et
tous les modules est disponible sur le site ociel74 , elle ne dispense pas de l'installation des librairies Perl SSL.
L'installation de la version complète est très simple : on détarre l'archive téléchargée dans un répertoire, typiquement
usr/local/, puis le script setup.sh s'occupe de détecter lui même le système Unix installé (une énorme variété d'entre
eux sont supportés, pas seulement les diverses versions de GNU/Linux) ; il pose ensuite un certain nombre de questions
très claires comme son activation au boot ou le login et password de son administrateur. On accède à l'interface de
webmin au moyen d'un navigateur quelconque à l'URL https ://nom-de-machine :10000
Note importante : nous nous inscrivons absolument contre l'opinion qui voudrait que webmin puisse
constituer une sorte d'interface graphique à l'administration d'un serveur, qui dispenserait d'une cer-
taine maîtrise de l'administration système et réseau. Cliquer partout dans un navigateur en espérant obtenir
des résultats satisfaisants alors qu'on ne connaît quasiment rien au logiciel serveur qu'on est en train de massacrer
conduira au mieux à des dysfonctionnements sérieux, au pire à la réinstallation complète du serveur.
Les avantages de webmin sont tout de même indéniables, spéciquement pour un centre de formation où des droits
sont à déléguer à des formateurs qui disposent de compétences limitées dans l'administration Unix. Webmin permet
en eet de
Créer ses propres utilisateurs seulement pour certains modules : on permettra à certains formateurs de créer des
comptes pour leurs stagiaires.
Synchroniser très simplement les utilisateurs Unix et les éventuels utilisateurs Samba (ajout automatique d'une
entrée dans le chier /etc/samba/smbpasswd, eacement du répertoire de prol lorsque le compte est supprimé...).
Créer et supprimer des utilisateurs par lots au moyen de chiers batch, extrêmement pratique pour les utilisateurs
occasionnels d'un centre de formation : en quelques secondes, on eace les utilisateurs de la veille qui ont modié
leur répertoire personnel pour régénérer ces mêmes comptes le matin... On trouvera à cette adresse75 un batch
de création de 13 comptes et un autre batch permettant de les eacer.
Nous plaçons volontairement tous les utilisateurs dans le groupe primaire users et non dans un groupe à leur nom
pour simplier le paramétrage des droits sur les périphériques des stations de travail, en particulier la carte son.
74 http ://www.webmin.com/
75 http ://logiciels-libres-cndp.ac-versailles.fr/debianinstall/chiers/webmin/
38
9 L'installation de la première station de travail
Nous pouvons nalement passer au c÷ur du problème, l'installation de stations de travail sous système d'exploita-
tion libre.
Un serveur doit être tout à fait transparent pour l'utilisateur qui n'en entend même jamais parler. Par contre, une
pénétration ecace du logiciel libre dans les pratiques les plus courantes des gens passe nécessairement par l'ordinateur
que l'on utilise au quotidien. La mise en place de systèmes d'exploitation libres sur ces machines clientes montrera une
alternative complète aux environnements propriétaires (et pas seulement à quelques logiciels dont la bureautique),
outre un fonctionnement en réseau bien supérieur à ce que connaissent les administrateurs de parcs entiers de machines
dans les établissements scolaires :
Strict respect de la loi en matière de piratage de logiciels, exigé en tout premier lieu des enseignants dont le
premier devoir est de se montrer exemplaires
Systèmes stables dans la durée qui ne se dégradent pas au cours d'installations et de désintallations multiples de
logiciels
Absence de virus
Impossibilité pour un utilisateur d'installer des logiciels souvent indésirables, que ces utilisateurs soient des
formateurs ou des stagiaires, des élèves ou leurs professeurs
L'environnement complet de l'utilisateur le suit partout : il retrouve son courrier à l'identique sur n'importe
39
quelle machine avec toutes ses données, les préférences qu'il a dénies pour ses logiciels, etc...
Système conçu depuis le départ pour des utilisateurs multiples, pas de droits exorbitants pour utiliser telle ou
telle fonctionnalité (composant matériel, logiciel, etc...)
Installation et mise à jour extrêmement simple de centaines de logiciels et du système lui même à travers Internet
Pas de gestion, quasiment impossible à faire en pratique, des licences installées
Possibilité de s'insérer et de participer, à la mesure de chacun, aux communautés de développement de ce que
l'on utilise, à commencer par la demande de fonctionnalités et le rapport de bugs
Gratuité.
40
9.2 Un kernel linux pour machines multimédia
Il est souhaitable d'installer une version récente du kernel linux, si possible optimisée pour la machine et le matériel
qu'elle est appellée à faire fonctionner. Compiler un kernel soi même n'est pas absolument nécessaire, mais cela fait
partie des choses qu'il est bon de savoir faire soi même.
Ce document77 expose dans le détail la procédure de compilation d'un kernel 2.6 optimisé temps réel pour le
multimédia, en particulier pour la Musique Assistée par Ordinateur. La compilation avec les outils Debian procure un
package installable sur d'autres machines (en tenant compte de l'hétérogénéité du parc), qu'on pourra diuser sur le
réseau au moyen du script exposé en section 10.3 et installer en une seule ligne de commande sur chaque ordinateur.
Pour NIS, debconf demande à l'installation quel est le nom du domaine nis et prévient que la machine a besoin
de davantage de conguration. Les détails sont expliqués dans le chier README.Debian, mais il sut de rajouter
+ : : : : : : en bas du chier /etc/passwd et + : : : en bas de /etc/group pour que la machine soit cliente NIS.
Bien entendu, de nombreuses options à propos de ces deux lignes sont documentées.
Il sut de faire le montage NFS à la main et de redémarrer NIS pour vérier qu'un utilisateur crée sur le serveur peut
s'authentier sur la machine et disposer de ses chiers. On vériera bien entendu que tout fonctionne normalement
au boot de la machine ; un problème fréquent est de voir le montage NFS ne pas se faire à cause d'un délai trop
important : cela provient très probablement d'un reverse DNS mal conguré. Ce problème est extrêmement
fréquent et classique.
On pourra se référer à la section 2.5, logiciels complémentaires , pour aner l'installation basique à laquelle
nous venons de procéder avant de passer à l'installation des composants d'une véritable station de travail.
passwd: compat
group: compat
shadow: compat
par :
/etc/pam.d/login
Attention, pam constitue le mécanisme d'authentication sous linux. Il n'y a rien à redémarrer après une
modication dans pam, il devient donc impossible de s'authentier sur la machine après une mauvaise manipulation.
77 http ://logiciels-libres-cndp.ac-versailles.fr/article.php3 ?id_article=180
78 http ://www.crdp.ac-caen.fr/se3/
41
Il est très vivement conseillé d'ouvrir aux moins deux consoles root de manière à être certain de pouvoir conserver
la main sur la station et replacer les chiers originaux dont on aura fait une sauvegarde (si on a installé nscd, il peut
être nécessaire de le redémarrer).
Voici le contenu correct de ce chier :
Un listing des chiers dans /etc/pam.d montre qu'il y a un chier par service d'authentication, on copiera donc
le chier login dans le chier xdm (ou kdm, etc..) pour que l'ouverture de session en mode graphique puisse se faire.
42
Faut-il émuler une souris à 3 boutons ?
Pour une souris deux Répondre oui pour que la fonction coller sous X Window (usage normal et quasi exclusif
du bouton central), soit obtenue par une pression simultanée des deux boutons.
Veuillez choisir une méthode de sélection des caractéristiques de votre écran
Cette question indique le niveau de complexité des questions qui seront posées par la suite. Le choix le plus per-
tinent sauf conguration vraiment exotique et connaissance poussée du matériel demeure, pour nous, Medium
.
Veuillez choisir le meilleur mode supporté par votre écran
La fréquence est le paramètre le plus important, ce choix ne concerne pas encore les résolutions qui seront
achées. Pour un 17 pouces standard on peut normalement choisir 1280x1024 @ 60Hz voire au dela. Il faudra
probablement repasser dans le chier de conguration pour aner ces valeurs à l'aide de la documentation de
l'écran 79 .
Modes vidéo utilisés par le serveur X :
Indiquer la résolution maximale supportée par le moniteur, puis les résolutions inférieures désirées. Pour nous,
1280x1024, 1024x768, 800x600.
Veuillez choisir la profondeur de couleur par défaut (en bits)
24 bits si la carte vidéo dispose d'assez de mémoire
Modules du serveur XFree86 qui seront chargés par défaut :
Cocher tous les modules. Le plus important concerne le module DRI pour la 3D, si la carte vidéo le supporte. On
pourra toujours commenter cette ligne dans le chier par la suite, ainsi que sa toute dernière section qui dénit
les paramètres du DRI.
Faut-il mettre une section Files de référence dans la conguration ?
Faut-il mettre une section DRI de référence dans la conguration ?
Répondre Oui.
Le message d'erreur le plus fréquent si X ne démarre pas est no screens found , qui ne signie pas qu'aucun écran
n'est trouvé, mais que le système ne parvient pas à demander à la carte vidéo d'envoyer un mode (une résolution)
qui soit acceptée par l'écran. Auquel cas on reprendra la conguration du serveur X (dpkg-recongure xserver-xfree86 )
pour rentrer de nouvelles valeurs.
On ajustera au besoin les paramètres de fréquence de l'écran en éditant le chier /etc/X11/XF86Cong-4 à l'aide
de la documentation du moniteur qui précise toujours les bons paramètres, par exemple de cette manière 80 :
Section "Monitor"
Identifier "Generic Monitor"
HorizSync 30-72
VertRefresh 50-120
Option "DPMS"
EndSection
Un problème récurrent concerne certaines polices de caractères, dans xterm en particulier : elles sont tellement laides
qu'elles en sont illisibles. Cela provient des polices par défaut qui ne sont pas optimisées pour une locale européenne. On
y remédiera par l'installation de trois packages trouvés par apt-cache search transcoded : xfonts-base-transcoded, xfonts-
75dpi-transcoded et xfonts-100dpi-transcoded. Si la police de l'utilisateur est toujours aussi laide après redémarrage du
serveur X, on supprimera le chier .Xressources qui se trouve dans son répertoire personnel.
Enn, il sera possible d'agrémenter l'écran de login graphique en installant celui de KDE (KDM) ou celui de
Gnome (GDM) avec apt-get. Nous recommandons KDM qui se paramètre plus aisément depuis les préférences de
KDE, sans toucher à aucun chier de conguration, et qui présente les avantages de trouver automatiquement tous
les gestionnaires de fenêtres installés et de permettre à tout le monde d'éteindre l'ordinateur sans ouvrir de session.
Le choix et l'apparence de ce gestionnaire de connexion sont importants car ils donnent à la salle informatique son
look tel que le percevront les visiteurs avant d'utiliser les machines.
On peut forcer la taille des polices dans les paramètres passés au lancement de X par le gestionnaire de connexion.
Le chier impliqué s'appelle Xservers, son emplacement dépend de Xdm, GDM ou KDM. Pour KDM, il s'agit de
/etc/kde3/kdm/Xservers, la ligne est :
On rajoutera -dpi 100 pour forcer cette taille si le défaut ne convient pas, par exemple pour une résolution un peu
élevée. Cet ajustement a parfois tendance à harmoniser les polices, leur taille et leur apparence dans l'ensemble de X.
79 si l'on donne absolument n'importe quoi comme valeur à ces paramètres il est possible de sérieusement détériorer l'écran.
80 l'option DPMS permet l'économie d'énergie
43
D'autre part, l'option -nolisten tcp explique que dans Debian, il soit par défaut impossible de déporter son achage
sur le réseau, puisque X n'écoute pas sur celui ci. Si l'on veut permettre cela, ce qui est une faille de sécurité potentielle,
il faudra retirer cette option.
Vient ensuite l'installation des environnements de bureau Gnome et KDE, qui peuvent être appelés par leur nom
avec apt-get install et provoquent le téléchargement de quelques centaines de Mo de logiciels. Il est préférable de les
installer complètement à l'aide de leurs méta packages pour orir aux utilisateurs le plus large choix logiciel possible,
ce que permet la taille des disques durs modernes. Pour cette raison, il semble également inutile de choisir entre l'un ou
l'autre, il est préférable d'installer les deux car, outre le plus grand choix, les librairies des deux environnements seront
de toute manière nécessaires pour faire tourner tous les logiciels. Les dépendances des meta packages installeront
de nombreux composants nécessaires pour des usages très variés, comme hotplug, sane, LATEX, Gimp, un système
d'impression, etc...
9.5 Les droits sur les périphériques : carte son, webcam, etc...
Si les utilisateurs appartiennent tous au même groupe primaire sur le serveur, ces groupes se retrouvent localement
dans NIS. Ainsi, pour que tous les utilisateurs puissent avoir du son, il sut de placer les bons périphériques dans le
groupe users , à savoir /dev/audio0, /dev/mixer0 et /dev/dsp0 81 .
La carte son demeure probablement toujours muette, même pour root. Le package alsa-utils (avec un kernel 2.6)
intègre alsamixer : sous root, dans une console, il permet d'aecter un volume aux diérentes sorties de la carte et
surtout dé-muter les pistes (touche M) puisque tout est muet par défaut dans Alsa.
On placera d'autres périphériques dans le même groupe, comme /dev/video0 pour une webcam ou le groupe déni
dans le script /etc/hotplug/usb/libgphoto2 (par défaut video ) pour faire fonctionner un appareil photo numérique USB.
44
3. Comme nous allons déployer un script d'installation, il faudra tout de même exécuter ce script sur chaque
machine, mais nous contrôlerons alors tout le réseau depuis une station unique sans authentication, puisqu'il
sura de s'authentier une seule fois sur le réseau en ouvrant sa session de travail le matin.
4. Cette procédure pourra être réutilisée pour mettre à jour les machines ou répliquer certains chiers (paramétrage
de l'imprimante, logiciel installé à part, etc...).
Le système prévient que la machine à laquelle nous tentons d'accéder est inconnue, souhaitons nous continuer ?
En lui répondant oui, l'identité chirée de la machine, fournie par son démon sshd, sera stockée dans le chier
/.ssh/known_hosts et la question ne nous sera plus posée (c'est le sens du Warning suivant). Par contre si
jamais cette identité numérique change, nous en serons prévenus car cela signiera que la machine n'est plus la même,
ce qui est extrêmement suspect. Répondons oui :
Et nous sommes loggués sur la machine distante avec notre mot de passe validé par NIS. Nous voulons renforcer
cette authentication et faire en sorte, en même temps, de ne s'authentier qu'une seule fois sur une seule machine
quel que soit le nombre de connexions que nous pouvons opérer ensuite jusqu'à la fermeture de notre session. Plus
clairement, pouvoir se logguer sur toutes les machines du réseau, en tant que root, sans mot de passe, de manière
sécurisée.
La première chose à faire est d'utiliser un agent ssh qui va mémoriser notre authentication et chirer les données
transférées sur le réseau. Pour générer cette clef, on procède de cette manière :
Ssh-keygen va générer notre clef, l'option -t dsa génère un chirement fort compatible avec ssh version 2 qu'il
est impératif d'utiliser pour des raisons de sécurité. La machine génère la paire de clefs (publique et privée), et nous
demande dans quel chier sauvegarder cela :
Nous ne changeons pas le choix par défaut qui est de placer cela dans le chier id_dsa, dans le répertoire .ssh du
répertoire personnel. Validons, voici le moment le plus important.
C'est un goure de sécurité que de créer une passphrase vide ! C'est donc le moment de saisir une
passphrase la plus longue et complexe possible, avec autant qu'on le souhaite d'espaces et de caractères spéciaux, puis
valider. Cette chaîne de caractères nous servira par la suite quotidiennement pour administrer l'ensemble du réseau, il
importe donc de choisir quelque chose d'à la fois non trivial à deviner mais que l'on soit certain de retenir.
45
Et nous pouvons vérier le contenu du répertoire .ssh de notre répertoire personnel :
prof@hyperion:~$ ls -al .ssh
total 20
drwx------ 2 prof users 4096 2005-03-31 11:09 .
drwxr-xr-x 14 prof users 4096 2005-03-22 17:12 ..
-rw------- 1 prof users 744 2005-03-31 11:09 id_dsa
-rw-r--r-- 1 prof users 603 2005-03-31 11:09 id_dsa.pub
-rw-r--r-- 1 prof users 224 2005-03-18 12:53 known_hosts
Testons de suite cette clef, nous allons transformer notre clef publique en clef autorisée sur la machine distante.
Pour ce faire, il sut de copier un chier :
prof@hyperion:~$ cd .ssh
prof@hyperion:~/.ssh$ cp id_dsa.pub authorized_keys
prof@hyperion:~/.ssh$ ls -al
total 24
drwx------ 2 prof users 4096 2005-03-31 11:33 .
drwxr-xr-x 14 prof users 4096 2005-03-22 17:12 ..
-rw-r--r-- 1 prof users 603 2005-03-31 11:33 authorized_keys
-rw------- 1 prof users 744 2005-03-31 11:09 id_dsa
-rw-r--r-- 1 prof users 603 2005-03-31 11:09 id_dsa.pub
-rw-r--r-- 1 prof users 458 2005-03-31 11:15 known_hosts
Il se trouve maintenant un chier authorized_keys dans notre dossier personnel et donc, grâce au montage NFS,
sur l'ensemble du réseau (ce ne sera pas le cas pour le root de chaque machine).
prof@hyperion:~/.ssh$ ssh weatherwax
Enter passphrase for key '/home/prof/.ssh/id\_dsa':
La même machine que précédemment ne nous demande plus de mot de passe, mais notre passphrase. Il sut de la
rentrer pour s'authentier sur la machine. Nous avons introduit un niveau de sécurité supérieur à celui du simple mot
de passe, mais il nous est toujours demandé une authentication. Utilisons donc un agent ssh . Délogguons nous de
la machine distante et introduisons toutes les variables d'environnement dans l'agent :
prof@hyperion:~/.ssh$ eval `ssh-agent`
Agent pid 3523
Voila qui est fait82 . Nous pouvons maintenant nous authentier auprès de cet agent ssh :
prof@hyperion:~/.ssh$ ssh-add
Enter passphrase for /home/prof/.ssh/id_dsa:
Identity added: /home/prof/.ssh/id_dsa (/home/prof/.ssh/id_dsa)
prof@hyperion:~/.ssh$
Et s'ensuit une agréable surprise :
prof@hyperion:~/.ssh$ ssh weatherwax
Linux weatherwax 2.6.10 #1 Tue Jan 18 15:51:30 CET 2005 i686 GNU/Linux
46
prof@hyperion:~$ rsync -avzR .ssh/authorized\_keys root@weatherwax:~
Password:
building file list ... done
.ssh/
.ssh/authorized\_keys
Il ne nous reste plus qu'à rentrer en root sur la machine distante sans mot de passe :
La contrainte est de reproduire cette copie de chier / répertoire dans /root sur chaque machine du réseau. D'autre
part, si plusieurs administrateurs procèdent à cette manipulation, on veillera à ne pas écraser la clef du collègue en
copiant brutalement le chier, mais en y insérant notre clef à la suite de la sienne en éditant le chier.
Sur notre station de travail, il sut maintenant de rajouter une ligne dans le chier .xinitrc (ou .xsession ), qui
contient le fameux eval `ssh-agent` et de s'authentier auprès de l'agent avec ssh-add dans le premier terminal
graphique ouvert au début de notre session de travail sous X, c'est la toute première chose à faire le matin en se
logguant :). On constatera ainsi que cela fonctionne pour les autres xterms ouverts par la suite, et qu'on a plus ainsi
qu'à saisir une seule fois sa passphrase en début de journée pour administrer toutes les machines. Le revers de la
médaille consiste bien entendu à bloquer son écran dès qu'on s'éloigne de l'ordinateur pour empêcher quiconque de
passer root à notre place sur toutes les machines qui connaissent notre clef.
Le lecteur attentif et exigeant aura remarqué qu'il est impossible de passer de machine en machine en conservant
l'agent, il faut toujours se delogguer puis se relogguer pour que cela fonctionne. De manière à se promener sur le
réseau en emportant son agent avec soi, il sut de déclarer cette ligne dans /etc/ssh/ssh_cong (attention, chier de
conguration du client, ssh_cong, et non du serveur, sshd_cong ) :
ForwardAgent yes
Les paramètres concernent ici le serveur DNS du réseau, en particulier le répertoire où se trouvent les chiers de
zone et le nom du chier lui même.
84 http ://logiciels-libres-cndp.ac-versailles.fr/article.php3 ?id_article=21
85 http ://logiciels-libres-cndp.ac-versailles.fr/debianinstall/chiers/rsync_mediapole
86 Ce script a été écrit par Serge Sauton que nous tenons à remercier particulièrement.
47
#Paramètres machine locale
REP_COPIE="/tmp"
COPIE_DNS="db.mp-soa"
IP_LOCALE="192.168.28.7"
\#contiendra l'adresse IP de la machine source
Le répertoire de la copie locale du chier de zone et l'adresse ip de la machine source où nous nous trouvons, qui
sera exclue de la liste des cibles.
On dispose de deux groupes de machines, par exemple pour deux salles ; on précise le début et la n de chaque
plage d'adresses ip de ces deux groupes, Packard et Zenith . La contrainte est que ces postes soient situés sur
de telles plages et disposent évidemment d'une adresse xe.
On pourra éditer cette liste de manière à rajouter ou exclure certains ordinateurs de la liste proposée, dans un
premier temps les serveurs et les imprimantes constituent un choix évident des noms à exclure.
#C'est clair :)
OPTION_RSYNC="-e ssh -avzR"
48
dpkg --get-selections > packages.sel
2. Copier le chier packages.sel (le nom n'a aucune importance) sur les machines cibles avec le script.
3. Déclarer, sur ces machines, la liste des packages devant être installés :
dpkg --set-selections < packages.sel
4. Procéder à un dist-upgrade de cette manière :
apt-get --yes dselect-upgrade
(par sécurité, on passera deux fois cette commande).
Et voila ! :)
Mais comme les machines cibles sont par hypothèse brutes d'installation , on doit les intégrer au réseau
(conguration cliente de NIS et NFS), paramétrer leur carte son, régler éventuellement la locale, etc..., le plus simple
est de mettre l'ensemble des taches à exécuter dans un script qu'on déploiera sur le réseau avec la procédure que nous
connaissons maintenant.
Voici un script de ce type87 . Attention, il ajoute des lignes dans des chiers du système et n'est à utiliser qu'une
seule fois en l'état.
11.3 Wims
WWW Interactive Mathemactics server est un serveur d'applications pédagogiques fonctionnant dans une interface
web en mode client / serveur, le client consiste donc en un simple navigateur et un paquet Debian existe pour
l'installation du serveur. Une base conséquente d'exercices est disponible, à laquelle on peut contribuer.
Wims s'interface sur un certain nombre de logiciels scientiques pour le calcul, le tracé, le rendu, etc... : pari-
GP, Gnuplot, Octave, LATEXet bien d'autres, tous présentés ici même. Une section spéciale88 de ce site est consacrée
entièrement à Wims.
87 http ://logiciels-libres-cndp.ac-versailles.fr/debianinstall/chiers/installpc.sh
88 http ://logiciels-libres-cndp.ac-versailles.fr/rubrique.php3 ?id_rubrique=24
49
11.4 La diusion vidéo : vlc
VideoLAN89 constitue un vaste projet de diusion vidéo sur réseau. Le client vlc sait lire nombre de codecs vidéo
et des DVDs, mais il est également capable de diuser un lm en broadcast sur un réseau local, ce qui permet d'égayer
sensiblement nos salles multimédia :).
Un certain nombre d'adresses sont réservées pour ce type d'usage que vlc sait exploiter : Fichier -> Ouvrir un
chier (avancé), après avoir choisi un chier cliquer sur le bouton ux de sortie dans l'onglet réseau , une
fenêtre s'ouvre avec le bouton paramètres . Cliquer sur le bouton UDP , entrer une de ces adresses spéciales,
comprises entre 224.0.0.0 et 239.255.255.255, par exemple 224.42.42.42. Il sut alors de valider pour voir le switch se
mettre à clignoter de manière assez intensive :).
On accède au lm depuis une machine quelconque en ouvrant simplement un ux réseau (menu chier ) et en
indiquant l'adresse de broadcast sur laquelle le lm est diusé.
Vlc intègre des paramètres indispensables, par exemple la possibilité de diuser sur un mur d'écrans :). Ouvrir les
préférences (menu paramètres ), puis Vidéo - Filters - Image Wall pour dénir le nombre de rangées et de colonnes
d'écrans.
Ces manipulations sont décrites sur le site de vlc, en particulier la procédure de diusion sur le réseau local90
(format PDF, en anglais).
# saned.conf
localhost
luna
hyperion
mercure
neptune
Et sur ces machines autorisées, on indiquera tout simplement la ou les machines faisant fonction de serveur de
scanner dans le chier /etc/sane.d/net.conf :
# This is the net config file. Each line names a host to attach to.
mars.mp-soa.net
luna.mp-soa.net
Le démon saned se mettra en fonction en tant que service d'inetd dès son appel, si cette ligne gure dans
/etc/inetd.conf :
Et on aura le plaisir d'avoir le choix du scanner à utiliser au lancement de xsane sur n'importe quelle machine :
89 http ://www.videolan.org/
90 http ://www.videolan.org/doc/misc/VLC Streaming.pdf
50
Il faudra tout de même encore se déplacer pour mettre le document à numériser dans le scanner :).
51
11.7 Quelques jeux en réseau
Devant un réseau sous Linux, on se demandera probablement tout de suite s'il est possible de jouer à Quake :). La
réponse est oui, mais on trouve un certain nombre de jeux que les mordus de l'informatique connaissent depuis belle
lurette, à commencer par Civilisation. Ce jeu légendaire est activement développé dans une version libre qui permet d'y
jouer en réseau, cela s'appelle Freeciv, fonctionne en mode client / serveur sur un réseau local mais aussi sur Internet
et s'installe tout aussi simplement que le reste avec apt-get.
D'autres jeux en réseau sont disponibles : échecs, Monopoly ° r , bataille navale... c'est le cas de nombre de ceux
fournis avec Gnome et KDE. Mentionnons encore quelque chose de simple et rapide à prendre en main ; il n'y a pas de
3D ni d'armes sophistiquées (quoique...) mais l'intérêt ludique demeure majeur pour tous les âges : le célèbre XBlast93 .
Enn, un des jeux les plus amusants demeure le réseau lui même :). On ne manquera pas de l'indiquer à chaque
utilisateur lors de son login, en plaçant cette simple phrase dans le chier /etc/motd de chaque machine :
Yves.potin@crdp.ac-versailles.fr
93 http ://xblast.sourceforge.net/
52
12 Remerciements
Je tiens particulièrement à remercier pour leur aide :
Stéphane Marzlo, qui m'a appris ce que sont Internet et le logiciel libre
Stéphane Marchau, qui m'a appris comment faire marcher un réseau
L'école ouverte de l'Internet et l'AFUL, pour leur motivation et leur aide au moment de véritablement démarrer,
en 1998.
Fabrice Lemoine et Éric Mercier pour la relecture de ce document
53