Table des matières 17 Concernant le document 17.1 Période de rédaction 17.2 Historique . . . . . . 17.3 Traduction . . . . . . 17.4 Mises à jour . . . . . 17.5 Validité des solutions 17.6 Mise en application .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
267 267 267 268 268 268 268
18 Mentions légales 18.1 Informations de copyright . . . . . . . . . . 18.2 Concernant le domaine «etablissement.org» 18.3 Marques citées dans ce document . . . . . . 18.4 Scripts fournis dans le document . . . . . . 18.5 GNU Free Documentation License . . . . . 18.6 GNU General Public License . . . . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
269 269 269 271 271 272 279
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
11
. . . . . .
Avant-propos Le projet décrit dans ce dossier était à l’origine destiné à être présenté au Lycée Saint-André de Colmar, en fin d’année 1999. Malheureusement, un certain nombre de raisons m’en ont dissuadé. Le projet, qui était présenté dans un document de 30 pages à l’origine, a été étoffé pendant l’année scolaire écoulée, afin de constituer mon dossier pour l’option Informatique au Baccalauréat. Les épreuves étant terminées ou presque, et encouragé par les retours que j’ai eu, je cherche des personnes intéressées pour maintenir ce projet. L’enthousiasme soulevé par ce dossier chez les professeurs qui l’ont lu, chez diverses personnes qui ont en eu connaissance m’a surpris. Je pense, à plus forte raison aujourd’hui, que nombre de professeurs ou d’établissement pourraient être intéressés par un document décrivant, étape par étape, la mise en place d’une salle info à destination exclusive des élèves (ne concerne pas les cours). Le but n’est pas la réutilisation de vieilles machines avec affichage déporté, un nombre conséquent de documents traitent déja du sujet. Il s’agit ici de proposer un accès Internet, assortis de différents services. Pour cela, il faut choisir un environnement (Debian), une «archictecture», et un certain nombre de services que l’on peut mettre en place dans le cadre de ce projet. On peut donc fournir les fichiers de configurations complets, et une sorte de manuel «stepby-step». Les configurations rassemblées dans ce document devraient, en théorie, fonctionner. Toutesfois, certaines restent vraiment théoriques, car je n’ai pas pu les tester toutes. Enfin, ce document présente le déroulement de l’installation tel que je l’imagine, avec les moyens (notamment l’accès Internet – câble), dont je pouvais disposer ici. Quelques modifications sont à faire à ce niveau là, plus différentes corrections (fautes de frappe, et autres, au bout de 1 an, je ne les vois plus, je connais le document par coeur). Tout n’est pas optimal, ce n’est pas la prétention. La maintenance de ce document va consister à le garder à jour par rapport à la distribution Debian d’une part, à corriger les configurations, et éventuellement à changer de format (passage en SGML). Mais je n’exclue pas une réécriture complète, ce qui serait plus ou moins le cas pour un passage vers un autre format. Julien BLACHE
12
1 Architecture 1.1
Description
Le but essentiel de ce projet est de fournir, pour un prix moindre et une qualité supérieure, une mini salle informatique à destination des élèves. Ceci dans le but de permettre à ces élèves de faire des recherches, taper des documents, ou autres choses, sans mettre en danger la stabilité des salles informatiques existantes. De ce fait, en cas de problèmes, ils se pénalisent euxmêmes et n’entravent pas le travail d’autres élèves, comme cela a pu être le cas au Lycée SaintAndré, par exemple. Dans cette optique, ces machines permettront l’accès à Internet dans son ensemble, ainsi que l’utilisation de divers outils logiciels et matériels. L’accès à Internet sera complet. Cela veut dire, bien entendu, un accès rapide et illimité au Web, mais aussi une adresse e-mail par personne et la possibilité de participer aux forums de discussions Usenet. J’entends également ne filtrer aucun protocole, de sorte que les passionnés d’informatique désireux d’ouvrir une session à distance sur leur machine puissent le faire. Ceci est actuellement impossible avec le réseau en place dans les divers établissement français. Par ailleurs, les élèves auront la possibilité d’héberger une page personnelle sur le serveur Web du projet. Les outils logiciels accessibles aux élèves seront des outils de bureautique, semblables à Microsoft Office, des outils permettant la manipulation d’images ou encore des outils pédagogiques permettant par exemple la visualisation de molécules dans l’espace. Cette liste est loin d’être exhaustive tant la logithèque disponible est vaste. Les outils matériels à disposition consisteront en deux imprimantes, une imprimante laser pour l’impression rapide de textes, et une imprimante jet d’encre couleur pour tout ce qui requiert une impression colorée.
1.2
Répartition des machines
Il est prévu plusieurs serveurs couvrant des besoins spécifiques, tels que le mail, le Web, etc. . . Une machine sera donc dédiée à l’hébergement des différents serveurs. Pour permettre l’accès à Internet des machines, il leur faut une adresse IP chacune. Ces adresses coûtent cher. Nous utiliserons donc la translation d’adresses, qui permet à plusieurs machines d’accéder au monde extérieur tout en n’utilisant qu’une seule adresse. Nous filtrerons également l’accès à certains types de sites Web. Ce sera là l’emploi d’une deuxième machine. Enfin, il faut des postes clients. J’en prévois cinq, cela me paraît suffisant, mais il est toutefois possible d’en mettre plus.
13
1
Architecture
Au total, nous utiliserons donc sept machines, dont les configurations matérielles diffèrent selon leur emploi.
1.3
Configuration matérielle
Les machines, telles que proposées ici, devraient tenir deux ou trois ans. Au-delà, il sera souhaitable de les remplacer, tant au niveau de la vitesse d’exécution qu’au niveau de la fiabilité.
1.3.1
Configuration du serveur
Cette machine supportera plusieurs logiciels serveurs, gourmands en ressources, ainsi que les répertoires personnels des élèves. La configuration est adaptée en conséquence. – Processeur de type Pentium III ou Athlon cadencé à au moins 600 MHz – 256 Mo de SDRAM sont un minimum – Lecteur CD-ROM IDE ou SCSI – Lecteur de disquettes 3”1/2, 1.44 Mo – Carte graphique compatible VESA 2.0 – Écran : au minimum 15” – Carte réseau 100 BaseT Fast-Ethernet connecteur RJ45 – Carte d’interface avec la liaison Internet : celle-ci peut être une carte réseau, cela dépend de la liaison – On peut prévoir une carte réseau permettant de relier le serveur au réseau de l’établissement dans un but d’interopérabilité – Carte SCSI Ultra2 : la carte Tekram DC-390U2W est un bon choix – 4 disques durs Ultra2 SCSI d’une capacité minimum de 9 Go chacun – Un dispositif de sauvegarde SCSI avec un jeu de cartouches, capable de sauvegarder plus de 25 Go de données – Carte son complètement optionnelle (si la machine est pourvue d’une carte son, il serait peut-être souhaitable de la retirer) – Clavier français (ou adapté à la langue) – Souris 3 boutons1 sur port PS/2 ou série Les disques durs seront répartis comme suit : un disque pour le système, un pour le spool2 de news, un pour le spool de mail et enfin un dernier disque pour les répertoires personnels des élèves. L’interface SCSI permet de soulager le processeur, laissant ainsi plus de puissance disponible pour les autres applications. Le dispositif de sauvegarde permet la sauvegarde du système pour parer à tout problème éventuel. L’une des cartes réseau servira à connecter le serveur au réseau local afin d’être directement joignable par les autres machines. 1
Le troisième bouton est utilisé pour le copier/coller. Une souris possédant une roulette, par exemple les souris Microsoft, convient parfaitement. La roulette est tout à fait utilisable, et vraiment pratique. 2 Spool : espace de stockage temporaire. Dans le cas d’un spool de news, le serveur stockera les messages dans ce spool pendant un certains temps pour permettre la consultation, puis les effacera.
14
1
1.3.2
Architecture
Configuration du serveur d’accès
Cette machine permettra aux postes clients d’accéder à Internet grâce à la translation d’adresses. Toutes les données allant ou venant des postes clients passent par cette machine. Elle servira également de poste d’administration. – Processeur de type Pentium III ou Athlon cadencé à au moins 600 MHz – 256 Mo de SDRAM sont un minimum – Lecteur CD-ROM IDE – Lecteur de disquettes 3”1/2, 1.44 Mo – Carte graphique PCI ou AGP dotée de quelques Mo de mémoire – Écran : au minimum 15” – Carte réseau 100 BaseT Fast-Ethernet connecteur RJ45 – Carte d’interface avec la liaison Internet : celle-ci peut-être une carte réseau, cela dépend de la liaison – Deux ports parallèles sont nécessaires pour connecter les imprimantes – Disque dur de quelques Go – Carte son optionnelle – Clavier français (ou adapté à la langue) – Souris 3 boutons sur port PS/2 ou série La quantité élevée de mémoire est rendue nécessaire par l’emploi de la machine qui voit transiter toutes les informations et utilise donc une mémoire conséquente.
1.3.3
Configuration des postes clients
Les cinq postes clients ont tous la même configuration. – Processeur de type Pentium III ou Athlon cadencé à au moins 600 MHz – 128 Mo de SDRAM – Lecteur CD-ROM IDE – Lecteur de disquettes 3”1/2, 1.44 Mo – Carte graphique PCI ou AGP dotée de quelques Mo de mémoire – Écran : au minimum 15” – Carte réseau 100 BaseT Fast-Ethernet connecteur RJ45 – Disque dur de quelques Go – Carte son – Clavier français – Souris 3 boutons sur port PS/2 ou série Cette configuration est relativement standard et peut être acquise pour un prix raisonnable.
1.3.4
Note à propos du matériel
Pour des raisons de disponibilité des pilotes de périphériques, on sera vigilant sur les marques et modèles de périphériques employés. En particulier, les cartes vidéos de marque ATI ou Matrox sont majoritairement supportées, de même pour les cartes réseau 3COM, les cartes compatibles NE2000 (PCI ou ISA) et les cartes Intel, enfin il en va de même pour les cartes son de marque Creative (SoundBlaster). Les marques citées ne sont que des exemples, et
15
1
Architecture
il faut souligner que de nouveaux pilotes sont disponibles quasiment chaque semaine. De plus en plus de matériel est supporté chaque mois. Il en va de même pour les imprimantes, dont certaines ne seront jamais utilisables sous Linux, c’est le cas des imprimantes supportant la norme WinPrinter.
1.4
Réseau interne
Le réseau interne sur lequel sont reliées les sept machines sera un réseau Fast-Ethernet capable de débits allant jusqu’à 100 Mbits/s. Un réseau performant permettra l’échange rapide d’informations entre les machines.
1.4.1
Fournitures
Il faudra donc prévoir un hub3 capable d’accueillir les sept machines. Peu importe la marque du hub, il doit supporter la norme Fast-Ethernet. Sept cordons seront nécessaires pour relier les machines au hub. On utilisera des cordons droits munis de connecteurs RJ45, fabriqués en utilisant un câble de type STP-5 ou STP-64 , ou UTP-5.
1.5
Connexion à Internet
La connexion, pour des raisons de débit, doit être indépendante de celle de l’établissement, généralement très lente. En effet, les différents serveurs installés demandent une bande passante conséquente et deux adresses IP fixes. Ces conditions ne peuvent être remplies par la connexion offerte à l’établissement.
1.5.1 Débit Le serveur demande un débit d’au moins 128 Kbps afin de travailler dans de bonnes conditions. Je reviendrais sur la raison de ce besoin de débit plus loin dans ce dossier. Les postes clients doivent pouvoir compter sur au moins 64 Kbps de débit pour être utilisés dans de bonnes conditions de rapidité. Cela porte à 384 Kbps la bande passante à fournir aux cinq machines. Au total, la liaison doit fournir un débit de 512 Kbps. Il est difficile de faire fonctionner les différents services avec un débit plus faible.
1.5.2 Adresses IP Nous avons besoin de deux adresses IP routables5 et fixes6 afin de connecter le serveur et le serveur d’accès. 3
«hub» ou concentrateur : dispositif permettant de relier ensemble plusieurs machines disposant de cartes réseau. Câble 4 paires torsadées blindé. Les indices 5 et 6 renvoient à la qualité du blindage. 5 Cela signifie que ces deux adresses IP doivent être publiques. 6 Ces adresses nous sont allouées de manière permanente. 4
16
1
1.5.3
Architecture
Nommage des machines
Les machines, pour être plus facilement accessibles, doivent posséder un nom. Il est de la forme «machine.domaine.tld», et nécessite le dépôt d’un nom de domaine. Ce nom de domaine peut être acquis à moindre frais auprès de GANDI7 pour la somme d’environ 90 FF/an. Le domaine se trouvera dans le TLD8 «org». Dans la suite de ce document, j’utiliserais un domaine fictif «etablissement.org». Ce dépôt de domaine contrevient aux directives ministérielles (Bulletin Officiel de l’Éducation Nationale n◦ 35 du 24 Septembre 1998) qui préconisent l’utilisation d’un sous-domaine de la forme «etablissement.academie.fr». Il me semble simplement inutile de subir un nom aussi long, alors que l’achat d’un domaine est maintenant possible pour une somme minime. Par ailleurs, nous avons besoin d’avoir le contrôle total de nos serveurs DNS9 . Nous devrons donc mettre en place deux serveurs DNS, un primaire et un secondaire. C’est pour cette raison que deux machines seront pourvues d’une adresse routable chacune, c’est aussi une des raisons qui imposent l’usage d’adresses IP fixes.
1.5.4 Fournitures On fera le nécessaire afin de connecter les deux machines sur la liaison Internet. Ne connaissant pas le type de liaison exploitable dans les différents établissements, je laisse ceci à la discrétion de l’administrateur.
1.6
Autre matériel
1.6.1 Imprimantes Il est primordiale de donner la possibilité aux élèves d’imprimer leurs documents. Cela pose toutefois quelques problèmes. On ne peut en effet pas être sûr que ces imprimantes seront utilisées à bon escient. C’est un risque à prendre. Deux imprimantes seront à disposition. Une imprimante laser permettra l’impression rapide de textes, une imprimante jet d’encre couleur permettra l’impression d’illustrations, par exemple. Les imprimantes seront reliées sur le serveur d’accès qui fera donc office de serveur d’impression. Cela peut nécessiter la pose d’un deuxième port parallèle sur cette machine.
7
http://www.gandi.net Top Level Domain : c’est le domaine de premier niveau. Cela peut être com, org, net, fr, uk, etc. . . 9 Domain Name Server (ou System) : ces serveurs permettent d’établir la correspondance entre un nom canonique «machine.etablissement.org» et une adresse IP. 8
17
2 Choix du système d’exploitation et logithèque 2.1
Système d’exploitation
Nous avons besoin d’un système d’exploitation robuste et véloce, gérant les utilisateurs et leurs spécificités, pour un prix le meilleur possible. Il doit également disposer de capacités serveur. Voyons donc ce qui est à notre disposition dans ce domaine.
2.1.1
MS-Windows 9x
Nous le connaissons tous, de près ou de loin. Il est relativement rapide mais essouffle vite la machine par une mauvaise gestion des ressources. Au niveau de la gestion des utilisateurs et de leurs droits, elle est simplement inexistante. Tout le monde peut tout faire sur la machine. Du point de vue de la robustesse, nous avons tous un jour vu «planter» une machine sous MS-Windows 9x. Les fonctionnalités serveur sont quasi-inexistantes sous ce système d’exploitation. Son prix est tout de même élevé, il va de environ 800 FF lorsqu’il est livré avec la machine à près de 1500 FF au détail. Ce n’est donc pas le candidat idéal.
2.1.2
MS-Windows NT
Se déclinant en version «Server» et «WorkStation», il dispose d’une gestion des utilisateurs relativement exploitable. Elle est toutefois rendue très pénible par l’interface peu ergonomique. Il est robuste mais lourd, nécessitant une grosse configuration pour fonctionner correctement. Bien qu’étant la version évoluée orientée réseau de MS-Windows, les plantages ne sont pas absents. Tout le monde n’a peut être pas eu l’occasion de travailler sur une machine équipée en MS-Windows NT, mais j’ai été témoin et victime de plusieurs «plantages» assez importants. Les fonctionnalités serveur existent, mais ces solutions sont onéreuses. Le prix de MS-Windows NT est très élevé, celui de la version «Server» dépend en outre du nombre d’utilisateurs. Là non plus, ce n’est pas à proprement parler le candidat idéal.
18
2
2.1.3
Choix du système d’exploitation et logithèque
Que reste-t-il ?
Il reste le système UNIX. Un Unix commercial coûte plusieurs milliers de Francs français, ce qui est hors budget pour nous. La solution réside donc dans les Unix libres, tels Linux, FreeBSD, NetBSD, . . . Nous utiliserons Linux, non pas par effet de mode, mais parce qu’il convient à la situation. Nous pourrions également utiliser FreeBSD, mais il est inutile de compliquer la tâche de l’administrateur, alors qu’ici Linux donnera pleine et entière satisfaction. Ce choix est motivé par les fonctionnalités disponibles et le prix de l’environnement. En effet, quasiment tous les logiciels sont disponibles gratuitement, mais ils sont surtout libres. Ce qui signifie que l’on peut les modifier à notre guise pour combler nos besoins. Linux n’est pas gratuit, il est libre. C’est-à-dire que l’on a le droit de le vendre. On trouve dans le commerce plusieurs «versions», appelées «distributions». Elles fournissent chacune un système Unix basé sur Linux, complet et fonctionnel, avec une procédure d’installation. Il faut donc choisir une distribution avant de continuer. 2.1.3.1 Un peu d’histoire Linux est né en 1991 en Finlande, sous les doigts de Linus TORVALDS, un étudiant de l’Université d’Helsinki. Fatigué de la lourdeur et des limitations de MS-DOS, abasourdit par le prix des Unix commerciaux et passionné par Minix, système UNIX minimal développé par Andrew TANENBAUM , professeur d’une célèbre Université américaine, il décide de se consacrer à l’écriture d’un système d’exploitation se conformant aux normes POSIX1 . En 1991, il publie la version 0.02 du kernel2 Linux. Dès lors, des dizaines de programmeurs vont se mettre au travail un peu partout dans le monde. La plupart sont des universitaires ou de très grands programmeurs renommés ; à l’époque, l’accès à Internet n’était pas aussi courant qu’aujourd’hui. Mais Linux n’est qu’un kernel, le noyau du système d’exploitation. Il faut des outils, les outils standards que l’on trouve sur tous les Unix commerciaux. Richard M . STALLMAN, programmeur hors-pair faisant partie de l’AI Lab du MIT3 , que l’idée de devoir travailler avec des outils logiciels qu’il ne peut modifier à sa guise agace fortement, lance en 1984 le projet GNU4 ; le but est de créer un clone d’UNIX. Le kernel du projet GNU, nommé «The HURD», bâti sur une structure plus proche de celle de Minix que de celle de Linux5 , n’est à ce jour toujours pas utilisable pour l’utilisateur lambda. En revanche, les outils traditionnels d’UNIX sont, eux, utilisables depuis longtemps. Devant le retard du HURD et le développement phénoménal de Linux, la FSF6 décide de prendre Linux sous son aile. Dès lors, on parle de GNU/Linux. GNU est l’ensemble des outils qui constitue le système d’exploitation autour du noyau Linux. 1
Normes définissant un système UNIX. kernel : noyau. Ici, il s’agit du noyau d’un système d’exploitation, c’est-à-dire le code qui «parle» directement au matériel et fournit une interface avec celui-ci aux autres programmes. 3 Le laboratoire d’intelligence artificielle du Massachusetts Institute of Technology. 4 GNU’s Not UNIX : «GNU n’est pas UNIX». 5 Minix est basé sur un micro-noyau, tandis que Linux se base sur un noyau monolithique. 6 Free Software Foundation : fondation pour le Logiciel Libre. 2
19
2
Choix du système d’exploitation et logithèque
Linux, aujourd’hui en version 2.4, a valu à Linus TORVALDS l’obtention du titre de «Docteur honoraire de l’Université d’Helsinki» à seulement 29 ans, en 1999. La performance est d’autant plus appréciable qu’il n’a jamais eu en main les normes POSIX, vendues très cher en ce tempslà. Ce succès phénoménal, libre et gratuit vient du fait que Linus a diffusé les sources de son kernel sous licence GPL7 , licence qui autorise et incite fortement à lire et modifier le code source. A l’époque, l’installation de Linux était réservée à l’élite, car aucun programme d’installation n’existait. On voit alors apparaître des distributions, telles Yggdrasil, SLS, Slackware, Caldera, RedHat, SuSE, . . . Elles proposent non seulement un programme d’installation, mais aussi toute une collection de logiciels prêts à l’installation. Ces logiciels sont précompilés et compressés, ce sont les «packages8 ». Grâce au système de paquetages, l’utilisateur est assuré d’avoir un système cohérent et fiable.
2.1.3.2
La distribution choisie : Debian GNU/Linux
La distribution Debian, plus que toutes les autres, est considérée comme la distribution GNU/Linux. Débuté en 1993 par Ian MURDOCK et sa compagne Debra (d’où le nom «Debian»), ce projet utilise le système de paquetages le plus complet et le plus puissant, assurant une parfaite cohérence du système en toutes circonstances. Le mode de développement de Debian est particulièrement singulier. N’importe qui peut devenir développeur officiel, ou presque. Le projet Debian compte aujourd’hui près de 600 développeurs qui ont précompilé plus de 5000 logiciels, assurant à la distribution une logithèque abondamment fournie. Chaque développeur est responsable des logiciels qu’il compile pour Debian et certifie qu’ils ne poseront pas de problèmes et s’intégreront de manière cohérente dans le système. La philosophie de Debian tranche nettement de celle des autres distributions. Le but n’est en effet pas de sortir une nouvelle version tous les mois, encore moins de faire de l’argent. Le but est de proposer aux administrateurs, utilisateurs de Linux, passionnés d’informatique et autres, un système complet, cohérent et stable, composé uniquement de logiciels libres et ne dépendant d’aucun logiciel propriétaire. C’est pour cela qu’un logiciel libre aura toujours la priorité sur son équivalent non-libre. La distribution elle-même est divisée en quatre sections : – main : cette section constitue en fait la distribution Debian. Elle est composée entièrement de logiciels libres ; son contenu doit permettre à lui seul d’installer un système polyvalent et pleinement fonctionnel ; – non-free : cette section contient tous les logiciels non-libres distribués avec Debian ; – contrib : cette section contient tous les logiciels libres dépendant de logiciels non-libres ou d’éléments extérieurs à la distribution, et non distribués suite à des problèmes de licence ; 7 8
GNU General Public License : Licence Publique Générale. La licence par excellence du projet GNU. Aussi appelés «paquetages», ils contiennent les logiciels sous forme de binaires (par opposition aux code source qui se présente sous forme de fichiers texte), permettant l’installation et la désinstallation rapide et propre d’un logiciel.
20
2
Choix du système d’exploitation et logithèque
– non-US : cette section contient tous les logiciels, libres ou non, dont l’exportation hors des États-Unis d’Amérique est contrôlée, notamment par les lois cryptographiques. Elle est elle-même divisée en 3 sections (main, non-free, contrib). Le rythme de publication est d’environ une version par an, voire moins. Aucune date de sortie n’est annoncée à l’avance, la version sort quand elle est prête, et pas avant. Actuellement, la version stable de Debian GNU/Linux est la version 2.2r3 «Potato». Elle occupe 3 CD, et peut se trouver dans le commerce pour une centaine de Francs français. L’installation peut se faire via CD-ROM, FTP ou NFS, ce qui permet de faire des installations via Internet. Ikarios9 propose toutes les distributions Linux existantes pour un prix modique, voilà donc un moyen simple de se procurer une distribution à moindre coût.
2.2
La logithèque
Il existe beaucoup d’outils logiciels libres couvrant tous les domaines. La liste faite ici n’est de loin pas exhaustive et présente rapidement quelques logiciels. Des captures d’écran de certains des logiciels listés ici sont visibles à la section 14, en page 249. Les adresses des sites Web concernant les différents logiciels sont à la section 15.26, en page 262.
2.2.1
GNOME, l’environnement graphique
GNOME est l’environnement graphique du projet GNU. C’est un environnement extrêmement puissant et somptueux. Par défaut, il utilise le gestionnaire Enlightenment, mais l’utilisateur a la possibilité de changer le gestionnaire utilisé, au profit de quelque chose de plus léger. 2.2.1.1 Gestionnaires de fenêtres Le gestionnaire de fenêtres10 est un programme dont la tâche est de gérer les fenêtres affichées par l’interface graphique. GNOME supporte plusieurs gestionnaires différents. Parmi ceux-ci, citons AfterStep, WindowMaker, Sawfish, Fvwm et d’autres encore. Enlightenment est le gestionnaire livré en standard avec GNOME. On peut installer tous ces gestionnaires sur les machines ; le choix d’utiliser l’un d’entre eux revient à l’utilisateur.
2.2.2
Netscape, le navigateur Internet
La firme Netscape a effectué un portage sous divers Unices de son navigateur. Il a bien entendu été porté sous Linux. Malgré la qualité du logiciel, il vaut mieux éviter l’utilisation de Java lors de la navigation, sous peine de voir le navigateur se figer ou se fermer tout simplement. 9 10
http://www.ikarios.com «Window Manager» en anglais.
21
2
Choix du système d’exploitation et logithèque
Il ressemble comme deux gouttes d’eau à la version MS-Windows, comme vous pouvez le constater sur la capture en annexe.
2.2.3
Mozilla, le prochain Netscape
Mozilla est destiné à être la base du prochain navigateur Netscape, Netscape 6. Il est pour l’instant en développement, mais une pré-version sort régulièrement. Ces pré-versions sont tout à fait utilisables, bien que Mozilla ne soit pas encore optimisé. On regrette pour l’instant une certaine lenteur à afficher des pages très chargées.
2.2.4
Logiciels de transfert de fichiers
2.2.4.1 ProFTPd ProFTPd est un serveur FTP. Installé sur le serveur, il permettra de proposer le téléchargement de fichiers, et autorisera chaque utilisateur à accéder à distance à ses fichiers dans son répertoire personnel.
2.2.4.2 GFTP GFTP est un client FTP graphique, puissant mais malheureusement instable.
2.2.4.3 IglooFTP IglooFTP est un client FTP shareware, disposant de nombreuses fonctionnalités. L’auteur accorde des licences gratuites aux établissements d’enseignement sur simple demande. Ce n’est pas un logiciel libre.
2.2.4.4 NcFTP NcFTP est un client FTP en mode texte, très puissant, rapide et stable.
2.2.5
Squid, le proxy HTTP
Squid sera installé sur le serveur d’accès, afin d’économiser un peu de bande passante. Son rôle est de récupérer et de conserver dans un cache les sites consultés par les machines clientes. Certaines pages ne sont pas conservées en cache, afin de respecter la vie privée et la confidentialité, telles les pages consultées par protocole sécurisé (HTTPS). Par ailleurs, Squid gère une liste noire qui permet d’interdire l’accès à certains sites. Il existe plusieurs listes noires disponibles librement, recensant des sites à la moralité douteuse, qu’il n’est pas souhaitable de laisser accessibles dans un environnement scolaire. Ceci restant à l’appréciation de l’administrateur du site et/ou de sa hiérarchie.
22
2
2.2.6
Choix du système d’exploitation et logithèque
Bind, le serveur DNS
Bind est le serveur DNS traditionnel d’Internet. Son but est de répondre aux requêtes des machines clients en leur renvoyant un nom de machine, une adresse IP ou d’autres renseignements à propos d’un domaine, selon la requête. Le serveur DNS contrôle aussi notre domaine «etablissement.org» ; c’est ce serveur et lui seul qui a l’autorité pour notre zone, c’est à dire que les autres serveurs DNS du monde entier viendront lui soumettre des requêtes si besoin est.
2.2.7
Samba, interopérabilité avec l’environnement MS-Windows
Le logiciel Samba permet le partage de ressources entre plusieurs machines sous différents environnement logiciels. Dans la plupart des cas, il s’agit de permettre le partage d’un disque dur entre un serveur sous environnement UNIX et un poste client sous environnement MSWindows. L’idée est ici de permettre l’accès aux répertoires personnels depuis un poste MS-Windows du réseau pré-existant dans l’établissement.
2.2.8 2.2.8.1
Logiciels de communication Pour le mail
2.2.8.1.1 Sendmail, le serveur SMTP Sendmail est le serveur SMTP11 par excellence des systèmes UNIX. Certains lui reprochent sa difficulté de configuration et lui préfèrent d’autres serveurs plus faciles à configurer. Malgré cela, tous reconnaissent que Sendmail est le serveur SMTP le plus robuste, car activement développé depuis de longues années. 2.2.8.1.2 Qpopper, le serveur POP3 Qpopper est un serveur POP312 libre. Le service POP3 permet à l’utilisateur final de récupérer ses mails sur le serveur. 2.2.8.1.3 Netscape Netscape Communicator intègre Netscape Messenger, un logiciel permettant de lire/envoyer des e-mails. Il fonctionne tout à fait comme la version MS-Windows, avec les mêmes limitations, à savoir qu’il est limité à un seul compte POP. 2.2.8.1.4 Mozilla Mozilla intègre, tout comme Netscape, un client mail. Ce client est capable de gérer plusieurs comptes POP. 2.2.8.1.5 Balsa Balsa est un client mail graphique qui s’intègre dans l’environnement GNOME. Son design rappelle les logiciels les plus connus comme Outlook ou Netscape Messenger. 2.2.8.1.6 Gnus Gnus est un client mail et news très puissant qui s’exécute avec l’éditeur de texte Emacs, dans sa version GNU Emacs ou XEmacs. Emacs intègre en effet un interpréteur du langage LISP qui permet d’exécuter des logiciels tels que Gnus. 11 12
Simple Mail Transfer Protocol : protocole simple pour le transfert du courrier. Post Office Protocole : littéralement, «protocole bureau de poste», son but est de permettre aux destinataires de récupérer leur courrier.
23
2
Choix du système d’exploitation et logithèque
2.2.8.1.7 Mutt Mutt est un puissant client mail en mode texte. Il intègre toutes les fonctions que l’on peut attendre d’un client mail évolué. 2.2.8.2
Pour les news
2.2.8.2.1 INN, le serveur de news InterNet News est le serveur de news par excellence. Robuste et complet, il est la base de Usenet depuis de longues années, et est toujours activement développé. 2.2.8.2.2 Netscape Netscape Messenger propose également la lecture des groupes de discussions, dans la même interface que celle utilisée pour le mail. 2.2.8.2.3 Mozilla L’interface utilisée pour la lecture du mail est également destinée à la lecture des news, à l’image de Netscape Messenger. 2.2.8.2.4 Pan Pan est un client news graphique s’intégrant dans l’environnement GNOME. On retrouve là aussi un graphisme rappelant les logiciels les plus connus, facilitant la prise en main. 2.2.8.2.5 Gnus Gnus gère les news et les mails de la même manière, en transformant les mails reçus en une sorte de groupe de discussion local. Il regorge de fonctionnalités, notamment la capacité de traiter un forum Web comme s’il s’agissait d’un groupe de discussion Usenet classique. 2.2.8.2.6 Slrn Slrn est un client news en mode texte, extrêmement puissant à l’image de Gnus. Il ne sait en revanche traiter que les groupes de discussion classiques.
2.2.9 2.2.9.1
Suite bureautique StarOffice/OpenOffice, la suite bureatique selon Sun
Sun a racheté la suite bureautique StarOffice et la propose en libre téléchargement. Cette suite est équivalente à Microsoft Office, remplissant les mêmes fonctions. Elle intègre un traitement de texte, un tableur, une base de données, un outil de dessin, un outil de présentation, un éditeur HTML, entre autres. Cette suite est très complète, compatible avec la suite Microsoft Office, mais très gourmande en mémoire. Cependant, sur les configurations énoncées plus avant, elle fonctionne sans problèmes. Sun a annoncé, durant la rédaction de ce dossier, le placement sous licence libre13 de Sta13
Plus exactement, Sun a placé sous double licence GNU General Public License (GNU Lesser General Public License pour les bibliothèques partagées et certains autres composants) et Sun Industry Standard Source License une version retravaillée de StarOffice. Plus précisément, tous les éléments dont Sun ne détient pas les droits de licence ont été retirés et remplacés par un équivalent appartenant à Sun ; à cela s’ajoute une opération de commentaire du code source (traduction de l’allemand vers l’anglais), afin que la Communauté des Développeurs Libres puissent modifier plus aisément OpenOffice.
24
2
Choix du système d’exploitation et logithèque
rOffice. Cela a donné naissance à OpenOffice14 , le 13 Octobre 2000. 2.2.9.2 Gnumeric, le tableur selon GNOME Gnumeric est un tableur équivalent à Microsoft Excel, développé par le projet GNOME. Il est actuellement utilisable, bien que développé activement. 2.2.9.3 AbiWord AbiWord est un clone libre de Microsoft Word. Bien qu’il n’en ait pas toutes les fonctionnalités, il est parfaitement utilisable et est capable de produire des documents tout à fait exploitables.
2.2.10 2.2.10.1
Éditeurs de texte Emacs
Emacs, ou XEmacs, version plus orientée sur l’interface graphique, est un éditeur de texte très puissant, complètement personnalisable, capable de coloration syntaxique, ou encore capable d’exécuter des programmes, tels Gnus. Il est essentiellement orienté vers la programmation, ce qui explique certaines fonctions présentes dans sa barre d’outils. 2.2.10.2
Vi
L’éditeur traditionnel du monde UNIX, il se décline dans plusieurs versions. Vim, pour la version console et gVim pour une version intégrant une interface graphique, sont les versions les plus à jour actuellement.
2.2.11
LATEX, le processeur de texte
LATEX est un jeu de macros pour le processeur de document TEX, c’est à dire qu’il s’occupe de la mise en forme en fonction du style défini pour le document. Un document TEX se présente comme un fichier texte normal, dans lequel se glissent des balises qui indiquent aux macros comment elles doivent traiter ce texte, et donc commandent l’apparence du document obtenu au final. Il y a deux solutions pour écrire un document en utilisant TEX : – utiliser un éditeur de texte comme Emacs, qui proposent un mode TEX, c’est-à-dire la coloration syntaxique des balises et quelques fonctions qui rendent l’écriture plus facile – utiliser LYX, un programme que l’on peut assimiler à un traitement de texte, mis à part que ce que l’on voit à l’écran n’est pas tout à fait ce que l’on obtiendra au final. L’écriture d’un document est simplifiée de cette manière, permettant aux débutants de se familiariser avec TEX avant de peut-être apprendre à se servir pleinement des fonctionnalités du langage 14
http://www.openoffice.org
25
2
Choix du système d’exploitation et logithèque
Ce document a été réalisé grâce à LYX et LATEX. Ce langage est très pratique pour des cours de chimie ou de physique, plus généralement pour tous les documents qui nécessitent l’emploi d’expressions mathématiques. Il est nécessaire d’installer un visualisateur PostScript, tel que GhostView, ainsi qu’un visualisateur DVI, tel que Xdvi ; en effet, les documents sont au format DVI ou PostScript en sortie du processeur LATEX. Par ailleurs, l’installation d’utilitaires tels jpeg2ps n’est pas inutile, pour inclure une illustration dans un document, dans ce cas précis.
2.2.12
Logiciels pédagogiques
Les logiciels répertoriés ici le sont à titre indicatif. Libre à l’administrateur du site de les installer ou non. 2.2.12.1
wget
Wget est un logiciel d’aspiration de sites Web, c’est à dire qu’il va récupérer toutes les pages qui composent un site, afin que celui-ci soit disponible localement. Cela permet par exemple de faire un miroir temporaire d’un gros site sur le serveur local, afin d’économiser de la bande passante. Il existe une interface graphique pour wget, Gwget. 2.2.12.2
TiLP
TiLP permet le transfert de fichiers entre un ordinateur sous Linux ou MS-Windows et une calculatrice graphique Texas Instrument. Ce logiciel peut être très utile aux élèves pour transférer sur leur calculatrice des petits programmes qui leur simplifient certains calculs, je pense que cela peut être très intéressant. Son système de plugins permet d’étendre ses fonctionnalités. 2.2.12.3
Bluefish
Bluefish est un éditeur HTML permettant de réaliser facilement des documents HTML. 2.2.12.4
Screem
Screem est un éditeur HTML très complet et très puissant, disposant également d’une gestion de projet efficace. 2.2.12.5
xsky
Xsky propose une carte du ciel.
26
2 2.2.12.6
Choix du système d’exploitation et logithèque
RasMol
RasMol est un logiciel permettant de visualiser des molécules en 3 dimensions, à partir de fichiers téléchargeables librement sur Internet. Le logiciel a été modifié pour accepter un affichage en 65 536 couleurs ; la disponibilité du code source induite par le Logiciel Libre s’est avérée utile dans le cas de ce logiciel. 2.2.12.7
Xephem
Un logiciel d’astronomie surpuissant. Les dernières versions sont proprement étonnantes de par la qualité de la réalisation. 2.2.12.8
Lum
Un logiciel d’optique. 2.2.12.9
Mek
Un logiciel éducatif en français qui propose de voir le programme de mécanique du lycée et du premier cycle universitaire. 2.2.12.10
Xem
Permet de tracer en quelques instants des courbes de dosages acides/bases. 2.2.12.11
MuPAD
Un logiciel de calcul formel 2.2.12.12
SciLab
Un paquetage mathématiques proposant de très nombreuses fonctionnalités, notamment le traçage. Un support de cours est disponible sur le site de l’École Ouverte de l’Internet pour ces deux derniers logiciels. 2.2.12.13
GNUPlot
Un logiciel de traçage de courbes. 2.2.12.14
Dia
Dia est un éditeur de diagrammes. 2.2.12.15
BWBasic
Un interpréteur du langage BASIC.
27
2 2.2.12.16
Choix du système d’exploitation et logithèque
DrGeo
Un logiciel de découverte/exploration de la géométrie. 2.2.12.17
The GIMP
Le célèbre logiciel de retouche d’images. 2.2.12.18
Moonlight Creator
Un logiciel de modélisation en 3 dimensions. 2.2.12.19
Blender
Un logiciel permettant de créer des animations en 3 dimensions. Ces deux derniers logiciels sont d’un maniement complexe, comme tous les logiciels proposant ces fonctionnalités.
28
3 Description des services proposés Outre l’accès à Internet, ce projet proposera aux élèves plusieurs autres services, plus ou moins essentiels pour pouvoir tirer pleinement parti d’Internet.
3.1
Une adresse e-mail pour tous
Internet ne servirait à rien sans l’e-mail. Chaque personne possédant un login sur les machines se verra attribuer une adresse du type «[email protected]». Cette boîte aux lettres sera toutefois limitée à 30 Mo, ceci afin de répartir les ressources, notamment l’espace disque.
3.2
Un Web pour tous
Internet est surtout connu pour le Web. Qu’à cela ne tienne, pourquoi ne pas proposer un petit espace aux personnes le désirant ? Beaucoup apprécieront ce petit espace d’expression, qu’ils soient élèves ou professeurs. Cela permettra aussi d’héberger le site de l’établissement, moyennant un peu de configuration. L’accès à cet espace se fera par l’adresse http ://eleves.etablissement.org/~login/, ou http ://profs.etablissement.org/~login/. Cet espace est partie intégrante du répertoire personnel de chaque utilisateur. Les documents à publier sur le Web sont à placer dans le répertoire1 ~/public_html/.
3.3
Les news pour tous
Les groupes de news2 sont des espaces privilégiés pour discuter d’un sujet précis. Nous installerons un serveur de news transportant plusieurs hiérarchies, correspondant aux langues enseignées dans l’établissement. Les élèves désirant perfectionner leurs langues vivantes pourront alors discuter des sujets les intéressant dans l’une ou l’autre de ces langues. La célèbre hiérarchie alt.*, symbole de l’anarchisme technologique, ne peut plus, quant à elle, être propagée en milieu scolaire après un sérieux incident ayant entraîné de lourdes conséquences judiciaires en Janvier 19973 . Elle ne le sera donc pas. Son trafic gigantesque4 ne le permettrait pas, d’ailleurs, pas plus que son contenu, en grande partie pornographique et/ou illégal. 1
Le tildé (~) symbolise le répertoire personnel d’un utilisateur. Aussi appelés «newsgroups», ou, plus français, groupes de discussion. 3 Diffusion d’images à caractère pédophile. La hiérarchie étant alors propagée par toutes les universités françaises, l’affaire a fait grand bruit, entraînant un boycott préventif. 4 Actuellement, le trafic journalier approche les 11 Go et est en augmentation constante. 2
29
3
3.4
Description des services proposés
Autres services
Tout, ou presque, est faisable. Partant de là, tout dépend de l’administrateur du site, de sa connaissance du système et de son temps libre.
30
4 Descriptions et explications techniques de certains services 4.1
DNS
Le Domain Name Service («service nom de domaine») est une des composantes logicielles les plus importantes d’Internet et des réseaux IP en général. Son but est de vous renseigner à propos d’un hôte et/ou d’un domaine. Ces renseignements servent à l’établissement de la communication entre votre machine et la machine distante et à l’acheminement de votre courrier électronique notamment. Le DNS a été créé pour une raison très simple. Lorsque seules quelques dizaines ou centaines de machines étaient capables de dialoguer au moyen d’ARPANET ou du naissant Internet, chaque machine possédait un fichier hosts (comprenez /etc/hosts) qui contenait les correspondances noms ↔ adresses réseau de chaque machine. Ce fichier était mis à jour régulièrement à partir d’un site FTP central. Seulement, avec le temps, ce fichier a considérablement grossi, rendant sa présence sur chaque machine pénible. Il a donc été décidé de centraliser toutes ces informations sur un certain nombre de machines dédiées. Ce sont les root-servers ([a m].root-servers.net). Pour faciliter la gestion de chaque zone (comprenez chaque nom de domaine, un nom de domaine étant une zone), la base de données qui gère les noms de domaines contient les adresses réseau d’un certain nombre de machines (généralement deux) qui sont les serveurs DNS de cette zone. Parmi ces machines, il y a un serveur maître et des serveurs esclaves. Les esclaves allant chercher sur le serveur maître le fichier contenant les informations de la zone, partageant ainsi les mêmes informations. Les root-servers sont également les esclaves du serveur maître de chaque zone, des esclaves particuliers cependant, puisqu’ils sont les serveurs centraux. Ainsi, lorsque vous voulez accéder à un site Web, par exemple, vous allez envoyer une requête à votre serveur DNS. Celui-ci va consulter son cache, puis, s’il ne connaît pas l’hôte, ira demander à l’un des root-servers quels sont les serveurs DNS qui ont l’autorité sur la zone dont fait partie la machine distante. Une fois qu’il aura cette information, il lancera une requête vers l’un des serveurs DNS de la zone qui lui retournera l’adresse réseau de la machine distante. Votre navigateur reçoit ensuite l’information qu’il attendait, c’est-à-dire cette même adresse réseau, puis va tenter d’établir une connexion avec la machine distante, afin d’afficher le document que vous avez demandé. Tout ceci se passe en quelques dixièmes de seconde, mais nécessite quelques heures de travail de la part des différents administrateurs en charge des différentes machines utilisées. L’organisation du DNS est hiérarchique, et peut-être résumée sous forme d’arbre. Le point de départ de cet arbre est le «.». Puis viennent les différents Top-Level Domains (TLD, ou domaines de premier niveau), tels ORG, NET, EDU, COM. Viennent ensuite ce que nous appe-
31
4
Descriptions et explications techniques de certains services
lons les domaines. Ensuite les sous-domaines, etc. . . à l’infini. Il est aussi possible de déléguer la gestion DNS d’un sous-domaine à une machine particulière, complexifiant encore un peu plus l’arbre que nous évoquions tout à l’heure. Mais qu’est-ce que «.» ? Et bien c’est simplement le commencement de tout. C’est à dire que, prenons fremen.etablissement.org comme exemple, un nom de machine s’écrit sous la forme fremen.etablissement.org., et non pas fremen.etablissement.org comme nous avons l’habitude de l’écrire lorsque nous donnons une URL à notre navigateur Web. Les noms de domaines se lisent donc de la droite vers la gauche afin de simplifier et de rendre plus rapide la résolution de noms.
4.2
Usenet
De part la forme des messages, on pourrait dans un premier temps comparer Usenet à un simple service de listes de diffusion. Mais ce n’en est pas un. Usenet permet de mener une discussion par le biais de messages textuels, tout autour du monde et quelque soit l’heure. Les messages sont archivés durant une certaine période (généralement quatorze jours), puis sont effacés du serveur. Usenet n’est pas centralisé sur une ou deux machines, mais est composé de centaines de milliers de machines, interconnectées par des lignes téléphoniques, par des lignes spécialisées à très haut débit, par le biais de simples accès Internet grand public ou encore au moyen d’un avion et de bande perforée (si ce n’est plus utilisé à l’heure où vous lisez ce document, sachez que cela se faisait encore il n’y pas si longtemps). De ce fait, le système est très tolérant aux pannes et très flexible. Usenet est organisé autour de plusieurs hiérarchies, parmi lesquelles on peut citer alt.*, fr.*, le «Big8»1 , ru.*, fx.*, et des dizaines d’autres. Dans ces hiérarchies se dégagent plusieurs catégories, puis des sous-catégories, et enfin des groupes. On peut, là encore, résumer une hiérarchie par un arbre. Les hiérarchies sont réparties principalement par langues, mais aussi par sujet. Les groupes sont eux répartis par sujets. Lorsque vous postez un article sur un de ces groupes, celui-ci est enregistré par le serveur, puis transmis au serveur voisin, puis à un autre, et à plusieurs dizaines de milliers d’autres. Ce que vous écrivez de chez vous à un instant X sera disponible sur un serveur à l’autre bout du monde à un instant Y, le temps séparant ces deux instants variant de quelques millisecondes à quelques minutes. Le Logiciel Libre est très lié à Usenet, car c’est un formidable moyen pour les développeurs et utilisateurs de communiquer entre eux, permettant un échange rapide d’informations. C’est aussi un moyen sûr pour trouver rapidement des réponses à presque n’importe quel problème, ou pour simplement passer un bon moment.
1
La hiérarchie internationale, composée en réalité de huit hiérarchies : comp.*, news.*, rec.*, soc.*, misc.*, sci.*, talk.*, humanities.*
32
5 Mise en place matérielle 5.1
Liaison
Je ne couvrirais pas cette partie, ne sachant pas quel type de liaison sera retenu par l’établissement. Toutefois, ce projet se base sur une liaison fixe haut débit, disposant d’au moins deux adresses IP fixes. En effet, les solutions d’accès Internet déployées dans les établissements scolaires sont généralement de simples routeurs Numéris, coûteux, lents et complètement obsolètes. Comparativement, un accès par technologie câble ou xDSL revient beaucoup moins cher pour une qualité et un débit nettement supérieurs. Sur le territoire français, l’offre Netissimo 2 de France Télécom est un excellent choix qui conviendra très bien. Certains fournisseurs, tel que Nerim1 par exemple, fournissent des adresses IP fixes pour un prix très raisonnable. L’offre Netissimo 1 peut également s’avérer suffisante. Dans le cas d’une ligne ADSL, la topologie du réseau sera toutefois différente de celle présentée ci-dessous. L’utilisation d’un routeur/modem ADSL est une solution envisageable.
5.2
Réseau
L’architecture du réseau est relativement simple ; le serveur et le serveur d’accès sont reliés directement à Internet. Les cinq machines clientes sont reliés au réseau par le biais du serveur d’accès, grâce à un simple hub Fast-Ethernet (100 Mb/s). Sur ce même hub viendront se connecter le serveur et le serveur d’accès, permettant le partage des répertoires utilisateurs et l’accès à Internet. Les deux serveurs disposent chacun d’une adresse IP publique fixe. Les clients, quant à eux, disposent chacun d’une adresse fixe, mais privée et non routable (si vous disposez de suffisamment d’adresses publiques pour en assigner également aux postes clients, n’hésitez pas). Éclairons tout ceci par le schéma de la figure 5.1. Basons-nous sur une connexion de type Ligne Spécialisée, ou câble, sur lesquelles l’on se connecte au moyen d’équipements réseau Ethernet (10 Mb/s ou 100 Mb/s). 1
http://www.nerim.net
33
5
Mise en place matérielle
F IG . 5.1 – Architecture du réseau
34
5
5.3 5.3.1
Mise en place matérielle
Machines Serveur
Le serveur sera mis à l’abris, si possible dans un placard. Le clavier, la souris et l’écran ne sont nécessaires que pour l’installation et peuvent être retirés par la suite, afin d’éviter tout incident. Il devra toutefois être accessible pour permettre l’échange des cartouches de sauvegarde. En effet, le plus gros risque pour une machine quelle qu’elle soit réside dans son accès physique, et non dans son accès par le réseau, contrairement à ce que les médias nous font croire.
5.3.2
Serveur d’accès
Il doit rester accessible, car il servira à l’administration du site. Le clavier peut être enlevé lorsque la machine n’est pas utilisée, afin de limiter les risques.
5.3.3
Clients
Accessibles par tous, ils disposent en permanence de leurs claviers, souris et écrans.
5.4
Disponibilité des machines
Les machines seront allumées en permanence. Il n’y a en effet pas de risques de «plantages», et il est inutile de perdre du temps à allumer et éteindre les 5 machines clients tous les jours, alors que le matériel est aujourd’hui prévu pour cet usage. Les deux serveurs, quant à eux, ne peuvent être arrêtés. En effet, ils accueillent des services essentiels qu’on ne peut interrompre. Il convient de protéger électriquement les deux serveurs au moyen de deux onduleurs. Une durée de 20 minutes devrait être suffisante pour garantir la continuité de l’alimentation. On veillera à entretenir ces deux onduleurs en les déchargeant régulièrement. Il est également possible de brancher sur l’onduleur du serveur d’accès, par exemple, les équipements de liaison, tels le premier hub et un éventuel équipement fourni par le prestataire de liaison. Il est fortement conseillé d’utiliser un logiciel de surveillance de l’onduleur, qui permet d’arrêter proprement les machines lorsque les batteries de l’onduleur dépassent un seuil critique2 .
2
APC et Merlin Gerin ont notamment fait un gros efforts sur ce plan depuis quelques mois.
35
6 Installation du système Debian GNU/Linux Je ne vais pas décrire ici l’intégralité de la longue procédure d’installation du système Debian GNU/Linux. L’installation est rendue particulièrement longue par la sélection des paquetages logiciels à installer. En effet, Debian propose plus de 5000 paquetages, parmi lesquels il faudra sélectionner ceux que nous voulons utiliser, en prenant garde aux problèmes de conflits et de dépendances. Heureusement, l’utilitaire de sélection des paquetages prend garde à ces problèmes de dépendances et de conflits, et vous proposera immédiatement de résoudre le problème dès qu’il survient. Petit bémol, le système d’installation est pour le moment uniquement disponible en anglais. L’installation peut se faire au moyen d’une connexion Internet (FTP, HTTP), à partir d’un disque local où résident les fichiers, à partir d’un volume monté par NFS, ou, bien entendu, par le biais des 3 CD-ROM d’installation de Debian GNU/Linux «Potato». Je préciserai, dans les sections qui suivent, quels sont les paquetages importants que nous avons besoin d’installer. Je ne détaille pas les paquetages de base d’un système UNIX, la liste serait trop longue. Une documentation détaillée, claire, précise et normalement disponible en Français est fournie avec la distribution Debian GNU/Linux ; elle se trouve sur les CD-ROM d’installation ainsi que sur les serveurs FTP et HTTP du projet. Je vous conseille de récupérer et d’imprimer cette précieuse documentation.
6.1
Serveur
Le serveur sera dépourvu d’interface graphique, celle-ci étant une aberration consommatrice de ressources dans ces conditions. Nous n’installerons donc que les différents serveurs et utilitaires dont nous aurons besoin, et rien de plus. Bien que nous n’installions pas d’interface graphique, certains programmes dépendent de la xlib6g ; installez le paquetage et rien de plus. La liste n’est pas exhaustive ; elle ne comporte que les logiciels indispensables pour mettre en place les différents services. Un certain nombre d’autres outils doivent être installés afin d’avoir un système UNIX utilisable. – sendmail : notre serveur SMTP – bind : notre serveur DNS – dnsutils : une panoplie d’outils permettant d’interroger les serveurs DNS – inn2 : le serveur de news INN, dans sa version 2.2.2 – apache : le serveur web Apache – qpopper : notre serveur POP3
36
6
Installation du système Debian GNU/Linux
– proftpd : notre serveur FTP – samba : permet le partage de ressources avec l’environnement MS-Windows – nfs-common et nfs-kernel-server : le serveur NFS et les fichiers communs aux clients et au serveur – nis : le serveur NIS, permettant le partage d’informations à propos des comptes utilisateurs – quota : utilitaires pour la gestion des quotas d’espace disque – ntp : permet de garder la machine à l’heure – libgd-perl : utilisé par innreport et MRTG pour générer les graphiques – snmpd : permet la surveillance de diverses informations sur l’état du réseau et des hôtes – snmp : les utilitaires permettant de lancer des requêtes SNMP1 – mrtg2 : permet de surveiller la charge sur un réseau, et produit des graphiques avec les informations recueillies – sudo : permet d’accorder les droits de l’administrateur3 au coup par coup à certains utilisateurs – ssh : permet d’accéder à la machine à distance, de manière sécurisée – screen : multiplexeur de terminaux, permet l’affichage de 10 terminaux virtuels sur un terminal physique – telnet : nous n’installons que le client telnet, pas le serveur, pour des raisons de sécurité – les outils de développement standards : make, gcc, libc6-dev, etc. . . – les éditeurs et manipulateurs de texte : vim, Emacs, sed, awk, . . . – les afficheurs de texte : less, more Lors de l’installation, il est nécessaire de partitionner, formater et monter les différents disques durs. Le premier disque comportera une partition de quelques dizaines de Mo (20 ou 30 Mo sont suffisants) en début de disque, que l’on montera sous /boot, ainsi qu’une partition de swap4 de 128 Mo, et une troisième partition, montée sous /. Le deuxième disque sera une seule et même partition, montée sous /home. Le troisième disque sera une seule et même partition, montée sous /var/spool/mail. Le quatrième disque sera une seule et même partition, montée sous /var/spool/news. Contrairement aux autres, il faudra le formater manuellement durant l’installation, en utilisant la commande mke2fs -T news qui formatera la partition avec des options spéciales, correspondant à l’usage particulier d’un spool de news. Remarquez que vous devez monter la partition correspondant à / avant de monter les autres partitions. Lors de la configuration de la zone horaire, veillez à entrer l’heure GMT, et choisissez la zone GMT, ceci afin de ne pas souffrir du changement d’heure. Rappel (pour la France) : – été ←→ GMT + 2 heures – hiver ←→ GMT + 1 heure Ne créez pas de nouvel utilisateur lorsque cela vous est demandé. Nous travaillerons en root tant que le service NIS n’aura pas été configuré. 1
Simple Network Management Protocol : protocole simple de gestion du réseau. Multi Router Traffic Grapher. 3 Administrateur dont le login est «root», par tradition. 4 Mémoire virtuelle. 2
37
6
6.2
Installation du système Debian GNU/Linux
Serveur d’accès
Là aussi, nous n’installons pas d’interface graphique. La console est amplement suffisante, et il est possible de se connecter à distance sur la machine (besoin de plusieurs terminaux, par exemple). – sendmail : notre serveur SMTP – squid : le proxy HTTP – squidguard : un redirecteur pour Squid qui permet d’effectuer un filtrage – bind : notre serveur DNS – dnsutils : une panoplie d’outils permettant d’interroger les serveurs DNS – nfs-common : les fichiers communs aux clients et au serveur – nis : le client NIS, permettant le partage d’informations à propos des comptes utilisateurs – ntp : permet de garder la machine à l’heure – snmpd : permet la surveillance de diverses informations sur l’état du réseau et des hôtes – sudo : permet d’accorder les droits de l’administrateur au coup par coup à certains utilisateurs – ssh : permet d’accéder à la machine à distance, de manière sécurisée – telnet : nous n’installons que le client telnet, pas le serveur, pour des raisons de sécurité – ipchains : utilitaire de configuration du firewalling/masquerading pour Linux v2.2 – apsfilter : les filtres permettant l’utilisation des imprimantes. Divers utilitaires sont nécessaires, tels a2ps, html2ps, . . . L’utilisation de magicfilter peut s’avérer nécessaire si les imprimantes ne sont pas reconnues par apsfilter. – gs : GhostScript permet l’impression des documents PostScript. Il est utilisé par apsfilter et magicfilter. – les outils de développement standards : make, gcc, libc6-dev, etc. . . – les éditeurs et manipulateurs de texte : vim, Emacs, sed, awk, . . . – les afficheurs de texte : less, more Ici, nous créerons une partition de swap de 128 Mo en début de disque, puis une petite partition (20 ou 30 Mo suffisent) que nous montons sous /boot, et le reste du disque sera une seule et même partition montée sous /. Remarquez qu’il faut monter la partition destinée à / avant de monter celle destinée à /boot. Ici aussi, veillez à configurer la machine en heure GMT dans la zone horaire GMT. Lors de l’installation, le programme d’installation vous demande si vous souhaitez créer un autre utilisateur. Ne créez pas d’utilisateur, rappelez-vous que nous utilisons un serveur NIS et que nous montons un volume NFS pour les répertoires personnels, bien que seul l’administrateur ne soit appelé à se servir de cette machine. Ceci pour lui permettre d’accéder à son répertoire personnel, comme s’il utilisait une des machines clientes. Il vous faudra sélectionner les modules ip_masq_ftp, ip_masq_cuseeme, ip_masq_irc, ip_masq_raudio lors de l’installation.
6.3 Machines clientes – sendmail : notre serveur SMTP – nfs-common : les fichiers communs aux clients et au serveur – nis : le client NIS, permettant le partage d’informations à propos des comptes utilisateurs
38
6
Installation du système Debian GNU/Linux
– sudo : permet d’accorder les droits de l’administrateur au coup par coup à certains utilisateurs – ssh : permet d’accéder à la machine à distance, de manière sécurisée – snmpd : permet la surveillance de diverses informations sur l’état du réseau et des hôtes – telnet : nous n’installons que le client telnet, pas le serveur, pour des raisons de sécurité – l’interface graphique X-Window : le serveur X5 idoine, ainsi que l’environnement graphique GNOME et les différents gestionnaires de fenêtres cités plus haut. – les logiciels cités dans la section 2.2 (page 21) et concernant les postes clients – les outils de développement standards : make, gcc, libc6-dev, etc. . . – les éditeurs de texte : vim, Emacs, sed, awk, . . . – les afficheurs de texte : less, more Ici, nous créerons une partition de swap de 128 Mo en début de disque, puis une petite partition (20 ou 30 Mo suffisent) que nous montons sous /boot, et le reste du disque sera une seule et même partition montée sous /. Là aussi, vous devez monter la partition correspondant à / avant de monter les autres partitions. Lors de la configuration de la zone horaire, entrez l’heure courante, et sélectionnez la zone horaire «Europe/Paris» (pour la France). En d’autres termes, les machines clientes seront réglées à l’heure légale. Lors du changement d’heure, veillez à ce qu’il se soit effectué correctement ! Lors de l’installation, le programme d’installation vous demande si vous voulez créer un autre utilisateur. Ne créez pas d’utilisateur, rappelez-vous que nous utilisons un serveur NIS et que nous montons un volume NFS pour les répertoires personnels.
6.3.1
Réplication des machines clientes
L’installation de Debian GNU/Linux est quelque peu longue lorsque l’on choisit de sélectionner soi-même les paquetages à installer. Installer cinq machines (ou plus) avec exactement les mêmes paquetages est une chose fastidieuse et éprouvante, pour l’avoir fait. L’utilitaire de gestion des paquetages, dpkg, permet de répliquer l’installation d’une machine assez facilement. Détaillons la marche à suivre : – Installez la première machine cliente. Lors de la sélection des paquetages, choisissez l’option «advanced». Repérez bien cette étape. – Configurez entièrement la machine. Si vous avez oublié des logiciels, installez-les. Dressez une liste des fichiers de configuration que vous avez modifiés. – Il s’agit maintenant de récupérer la liste des paquetages installés et de la mettre dans un fichier, pour pouvoir l’exploiter par la suite. Exécutez la commande : dpkg --get-selections > pkg-client.txt – Transférez le fichier pkg-client.txt sur une disquette (de préférence contenant un système de fichier ext2, c’est à dire formatée en ext2). – Débutez l’installation de la prochaine machine cliente, puis, à l’écran vous informant que dselect va être lancé, basculez sur le shell (console 2, Alt + F2), montez la disquette contenant le fichier pkg-client.txt (dans /instmnt par exemple). 5
Le serveur dépend du type de carte installée sur la machine. La liste des cartes supportées est incluse dans le descriptif du paquetage.
39
6
Installation du système Debian GNU/Linux
– Exécutez la commande : dpkg --set-selections < /instmnt/pkg-client.txt – Démontez la disquette, revenez sur la procédure d’installation (console 1, Alt + F1), puis continuez. – Arrivé dans dselect, aller dans la rubrique «Select» : tous les paquetages installés sur la première machine doivent être sélectionnés. – Sortez, choisissez «Install». Vous venez de gagner approximativement une heure. Il ne vous reste plus qu’à configurer la machine à l’image de la précédente, moyennant les informations propres à la machine (adresse IP, nom, etc. . .).
6.4
Shadow passwords et MD5
Sur toutes les machines, nous activerons les shadow passwords et le MD5.
6.5
Note à propos des logiciels
Les logiciels présentés dans la section 2.2.12 (page 26) ainsi que StarOffice/OpenOffice ou IglooFTP, ne sont pas tous disponibles sous forme de paquetages Debian. De ce fait, l’administrateur devra installer ces logiciels à partir de leur code source ou de leur distribution binaire. Le plus généralement, cela se fait en 6 étapes, grâce aux outils GNU : – récupération de l’archive contenant les sources – décompression de l’archive – lancement du script configure – compilation – installation – suppression des sources Toutefois, si vous désirez un paquetage Debian pour l’un ou l’autre de ces logiciels, vous pouvez me contacter, je ferai mon possible pour «debianiser» ledit logiciel, si l’auteur n’y voit pas d’objections, et que cela n’est pas déjà fait. Vous pouvez également solliciter n’importe quel Développeur Debian de votre connaissance, qui, s’il en a le temps et l’envie, fera son possible. Vous pouvez également construire vous-même un paquetage en suivant les documentations idoines.
40
7 root, le super-utilisateur Sur un système multi-utilisateurs, chaque utilisateur a des droits spécifiques. Il ne peut agir que sur certaines parties du système, ceci afin de ne pas compromettre le travail des autres utilisateurs. Il est donc nécessaire pour assurer l’administration du système d’avoir recours à un utilisateur ayant absolument tous les droits. Sous MS-Windows NT, cet utilisateur est nommé «Administrateur» (dans la version française). Sur les systèmes UNIX, ce super-utilisateur est nommé par tradition «root». «root» en anglais signifie «racine». On comprend dès lors mieux l’origine du nom donné à cet utilisateur. En effet, le root est à la base de la vie du système. Sans lui, rien ne me marche.
7.1
Les opérations réservées
De ce fait, seul le root est autorisé à effectuer certaines opérations. Il est par exemple le seul à pouvoir arrêter ou démarrer certains programmes, à pouvoir modifier certains fichiers, etc. . . Si vous vouliez redémarrer un daemon1 arrêté pour une cause quelconque, vous devriez vous logguer2 en tant que root puis exécuter la commande adéquate. Idem si vous vouliez modifier la configuration de sendmail, de proFTPd ou encore de Squid. Bien évidemment, le root est seul à pouvoir ajouter ou supprimer des utilisateurs.
7.2
Sécurité
Étant donné l’importance de cet utilisateur, il y a quelques précautions à prendre pour éviter tout problème.
7.2.1
Ne pas travailler en root
Lors de l’installation des machines, nous devrons travailler un certain temps en tant que root. C’est un moment exceptionnel dans la vie d’un système, qui ne se produit qu’une seule et unique fois. Il ne faut pas que cela devienne une habitude. En effet, en tant que root, vous pouvez tout faire, y compris effacer complètement et irrémédiablement le système. Vous devez être vigilant par rapport aux programmes ou scripts que vous exécutez en tant que root. Il est conseillé d’éviter l’exécution de programme dont on a 1
Disk And Extensions MONitor : sont appelés daemons les programmes serveurs, tels sendmail, INN, proFTPd, ou encore les programmes qui veillent à la vie du système, tel syslog qui permet de consigner dans un journal les évènements. 2 Ouvrir une session (to log in).
41
7
root, le super-utilisateur
des raisons de douter de leur provenance. Il est également fortement conseillé de lire un script avant de l’exécuter afin de savoir ce qu’il va faire. Imaginez un simple script Bash3 contenant la commande «rm -rf /»4 , ou tout autre dérivée. Eh bien, vous y êtes, le système est intégralement effacé.
7.2.2
Répertoire personnel
Le répertoire personnel de root est /root. Il est local à chaque machine et ne peut ni ne doit être partagé. En effet, si le répertoire personnel d’un utilisateur n’est pas accessible, celui-ci ne peut pas ouvrir de session sur la machine. Il serait embêtant que root ne puisse travailler parce que son répertoire ne peut être accédé à cause d’un montage NFS indisponible.
7.2.3
Contourner les problèmes de droits
Il y a plusieurs moyens permettant de s’approprier les droits du root pour une période temporaire. Il y en a trois principaux : 7.2.3.1 L’utilitaire su Il permet d’ouvrir une session root pendant une session d’utilisateur normal. Le mot de passe du root est alors demandé, puis la session démarre si celui-ci est correct. On quitte la session par la commande «exit», comme pour une session normale. Il peut être invoqué avec différentes options : – su : ouvre une session root en conservant l’environnement de l’utilisateur courant – su - : ouvre une session root et charge l’environnement du root à la place de l’environnement de l’utilisateur. Celui-ci sera restauré lorsque l’on sortira de la session – su - : ouvre une session en tant que , en chargeant l’environnement de l’utilisateur. Le mot de passe de est requis. On remarquera que le root n’a pas besoin de connaître le mot de passe d’un utilisateur pour ouvrir une session sous cet utilisateur au moyen de su. L’inconvénient de su est qu’il requiert la connaissance du mot de passe de l’utilisateur, ce qui est embêtant dans le cas de root. 7.2.3.2 L’utilitaire sudo Il permet à certains utilisateurs de lancer une commande en tant que root. Seuls les utilisateurs répertoriés par le root dans le fichier de configuration de sudo (/etc/sudoers) ont le droit d’invoquer cette commande. Si un autre utilisateur essayait de se servir de sudo sans être enregistré, le root recevrait un mail l’informant de cette tentative d’utilisation frauduleuse. Il permet à peu près les mêmes choses que su, permettant en plus de spécifier un certains nombres de commandes que l’utilisateur peut lancer. – sudo : demande le mot de passe de l’utilisateur, puis lance – sudo -u : demande le mot de passe de l’utilisateur, puis lance en tant que 3
Bash est un shell standard sous UNIX qui peut interpréter des fichiers exécutables comprenant des commandes reconnues par le shell. 4 rm -rf / : effacer récursivement sans message d’avertissement le répertoire /.
42
7
root, le super-utilisateur
– sudo -s : lance le shell spécifié par la variable d’environnement $SHELL, ici en tant que root. Les options sont bien sûr combinables. Vous trouverez plus de détails à propos de ces options dans les pages de man5 concernant su, sudo et sudoers. 7.2.3.3 Le bit setUID Le bit setUID est un moyen simple de donner la possibilité à tous les utilisateurs de lancer un programme donné en tant que root. Il suffit de positionner le bit setUID du programme en question par la commande : chmod +s Le programme sera alors exécuté avec les droits de root.
7.2.4
Permissions spéciales
Il se peut que certains programmes nécessitent des permissions spéciales sur certains fichiers pour fonctionner convenablement. Il s’agit en particulier des fichiers se trouvant dans /dev et qui permettent la communication entre les programmes et le matériel. TiLP, notamment, nécessite un accès en lecture et écriture aux ports série et parallèle de la machine (c’est-à-dire aux fichiers /dev/ttyS* et /dev/lp*) pour fonctionner correctement. Il y a deux possibilités pour accorder ces droits : – positionner le bit setUID sur le fichier exécutable du programme (ce qui ne fonctionne plus avec les programmes utilisant la bibliothèque graphique GTK+) – accorder à l’utilisateur les droits sur les ressources concernées (ce qui peut ne pas être suffisant) La deuxième solution est tout aussi facilement applicable, car il vous suffit de faire en sorte que vos utilisateurs soient membres des groupes possédant les droits sur les ressources concernées. Pour les ports série et parallèle, les groupes dialout et lp sont concernés. Les membres de ces groupes ont les droits en lecture et écriture sur les ports série et parallèle, par conséquent n’importe quel membre de ces groupes aura les mêmes droits. Avant d’accorder des droits supplémentaires à vos utilisateurs, assurez-vous qu’ils ne peuvent rien faire de dangereux en profitant de ces droits.
7.2.5
Lecteurs de disquettes et de CD-ROM
Par défaut, seul root peut accéder aux lecteurs de disquettes et de CD-ROM. Pour qu’un utilisateur non-privilégié puisse accéder à ces ressources, il convient de modifier les options du lecteur dans le fichier /etc/fstab. La ligne : /dev/fd0 5
/floppy
auto
defaults,user,noauto
0
0
Système de documentation en ligne (MANuel) des systèmes UNIX, appelé par «man sudo» ou «man 8 sudo». Plus de détails dans la page de man de man (disponible par «man man»).
43
7
root, le super-utilisateur
permet à chaque utilisateur (paramètre user) de monter le lecteur de disquettes (/dev/fd0) dans le répertoire /floppy en tapant simplement mount /dev/fd0.
7.3 7.3.1
Confidentialité Mot de passe du root
Il doit bien entendu rester secret et connu d’une seule et unique personne. Vous ne devez le communiquer à personne, et le changer régulièrement. C’est absolument nécessaire pour assurer une bonne sécurité du système.
7.3.2
Données utilisateurs
Le root ayant tous les droits, il peut à sa guise agir sur tous les fichiers présents sur le système, même si vous n’accordez les droits sur vos fichiers qu’à vous et vous seul. Par conséquent, les utilisateurs de sudo peuvent également visionner et modifier n’importe quel fichier. Il convient donc de bien choisir les personnes que vous enregistrerez comme utilisateurs de sudo. Lors de la première utilisation de sudo, chaque utilisateur voit apparaître à l’écran une note concernant la confidentialité des données. Puis, il doit confirmé qu’il a bien lu cette note et qu’il est conscient de ses responsabilités. Je vous conseille fortement de restreindre les commandes accessibles aux «sudoers»6 . Maintenant, il peut utiliser sudo. À bon ou mauvais escient. Ne vous fâchez jamais avec l’un de vos «sudoers», vous ne pouvez pas prévoir sa réaction.
6
Utilisateurs enregistrés de sudo.
44
8 Configuration du serveur 8.1
Compilation du noyau
Le noyau générique fourni avec la distribution Debian contient un certain nombre de pilotes de périphériques qui nous sont inutiles. Cela entraîne une consommation de mémoire plus importante, et des performances moindres, dans une certaine mesure. Nous allons donc compiler un noyau sur mesure pour notre machine. Commencez par récupérer les sources du dernier noyau 2.2.x (le kernel 2.4.x est supporté également par Debian 2.2r3) sur ftp.fr.kernel.org, par exemple. Placez l’archive dans le répertoire /usr/src. Vérifiez qu’il n’y a pas de répertoire nommé «linux», s’il y en a un, renommez-le. Maintenant, décompressez l’archive contenant les sources du noyau. Un nouveau répertoire «linux» est apparu, celui-ci contient les sources du noyau. Allez dans ce répertoire, et lancez la commande (le paquetage libncurses-dev doit être installé) : make menuconfig Après la compilation de quelques fichiers, une interface graphique apparaît. Nous allons maintenant configurer le noyau Linux. En dehors des composants requis pour la bonne marche de la machine, veillez plus particulièrement aux options suivantes : – utilisation des pilotes expérimentaux – optimisation pour la famille de processeurs utilisée par la machine – utilisation des modules noyau – nous mettons les pilotes des différentes cartes Ethernet dans le noyau et non pas en module – le pilote de la carte SCSI utilisée doit être dans le noyau, pas en module – le support pour les «UNIX98 PTYs» ; nous laissons la valeur par défaut (256) – dans la section «systèmes de fichiers», nous incluons dans le noyau le support pour le système «/proc» ainsi que celui pour le système «/dev/pts», sans oublier d’inclure le support pour le «deuxième système de fichiers étendu (ext2fs)». Nous activons également le support pour les quotas – dans la même section, nous plaçons en modules les supports pour les systèmes de fichiers FAT, VFAT, MSDOS, UMSDOS, ISO9660 – dans la section «systèmes de fichiers réseau», nous plaçons en modules les supports pour le système de fichiers NFS, le serveur NFS et le système de fichiers SMB – dans la section «kernel hacking», activez l’option «Magic SysRQ key». Cette option permet de communiquer avec le noyau lors d’un plantage sévère de la machine afin d’effectuer les opérations de dernière minute (synchronisation des partitions montées, etc. . .) avant de redémarrer la machine. Lisez la documentation concernant cette fonctionnalité dans le fichier Documentation/sysrq.txt.
45
8
Configuration du serveur
Maintenant, sauvegardez la configuration et quittez l’interface. Puis compilez et installez le noyau. Configurez LILO de manière à pouvoir démarrer sur l’un ou l’autre des deux noyaux présents, c’est-à-dire le noyau d’origine et celui que nous venons de compiler. Le fichier de configuration de LILO doit ressembler à celui-ci : # /etc/lilo.conf - See: ‘lilo(8)’ and ‘lilo.conf(5)’, # --------------‘install-mbr(8)’, ‘/usr/share/doc/lilo/’, # and ‘/usr/share/doc/mbr/’. # # # # # # # # #
+---------------------------------------------------------------+ | !! Reminder !! | | | | Don’t forget to run ‘lilo’ after you make changes to this | | conffile, ‘/boot/bootmess.txt’, or install a new kernel. The | | computer will most likely fail to boot if a kernel-image | | post-install script or you don’t remember to run ‘lilo’. | | | +---------------------------------------------------------------+
# Specifies the boot device. This is where Lilo installs its boot # block. It can be either a partition, or the raw device, in which # case it installs in the MBR, and will overwrite the current MBR. # boot=/dev/sda # Specifies the device that should be mounted as root. (‘/’) # root=/dev/sda5 # # # # # # # #
Enable map compaction: Tries to merge read requests for adjacent sectors into a single read request. This drastically reduces load time and keeps the map smaller. Using ‘compact’ is especially recommended when booting from a floppy disk. It is disabled here by default because it doesn’t always work. compact
# Installs the specified file as the new boot sector # install=/boot/boot.b # Specifies the location of the map file # map=/boot/map
46
8
# # # # # # # # # # # # # # # # # #
Configuration du serveur
You can set a password here, and uncomment the ‘restricted’ lines in the image definitions below to make it so that a password must be typed to boot anything but a default configuration. If a command line is given, other than one specified by an ‘append’ statement in ‘lilo.conf’, the password will be required, but a standard default boot will not require one. This will, for instance, prevent anyone with access to the console from booting with something like ‘Linux init=/bin/sh’, and thus becoming ‘root’ without proper authorization. Note that if you really need this type of security, you will likely also want to use ‘install-mbr’ to reconfigure the MBR program, as well as set up your BIOS to disallow booting from removable disk or CD-ROM, then put a password on getting into the BIOS configuration as well. Please RTFM ‘install-mbr(8)’. password=tatercounter2000
# Specifies the number of deciseconds (0.1 seconds) LILO should # wait before booting the first image. # delay=100 # laissons-nous 10 secondes pour choisir le noyau # # # # # # # # # # # #
You can put a customized boot message up if you like. If you use ‘prompt’, and this computer may need to reboot unattended, you must specify a ‘timeout’, or it will sit there forever waiting for a keypress. ‘single-key’ goes with the ‘alias’ lines in the ‘image’ configurations below. eg: You can press ‘1’ to boot ‘Linux’, ‘2’ to boot ‘LinuxOLD’, if you uncomment the ‘alias’. message=/boot/bootmess.txt prompt single-key delay=100 timeout=100
# Specifies the VGA text mode at boot time. (normal, extended, ask, ) # # vga=ask # vga=9 # vga=normal
47
8 # # # # #
Configuration du serveur
Kernel command line options that apply to all installed images go here. See: The ‘boot-prompt-HOWTO’ and ‘kernel-parameters.txt’ in the Linux kernel ‘Documentation’ directory. append=""
# Boot up Linux by default. # default=Linux image=/boot/vmlinuz-2.2.16 label=Linux read-only # restricted # alias=1
If you have another OS on this machine to boot, you can uncomment the following lines, changing the device name on the ‘other’ line to where your other OS’ partition is. other=/dev/hda4 label=HURD restricted alias=3
Ce fichier est le fichier livré avec Debian GNU/Linux. Seuls les paragraphes concernant les deux noyaux ont été modifiés. Ici, le nouveau noyau sera démarré par défaut. L’ancien noyau est accessible sous le nom «linux-orig». Pour y accéder, appuyez sur la touche «tabulation» lors du prompt «LILO : » ; vous verrez apparaître la liste des noyaux disponibles. Sélectionnez le noyau à démarrer et appuyez sur «Entrée». Lancez /sbin/lilo de manière à mettre à jour le secteur de boot de la machine. Si tout se passe bien, vous pouvez essayer de redémarrer la machine. Si LILO vous dit que votre noyau est trop gros, soit vous avez inclus beaucoup trop de choses dedans, auquel cas vous pouvez le reconfigurer et faire la chasse aux options inutiles, soit vous pouvez utiliser «make bzImage» pour le compiler. Si la machine redémarre sans problèmes, bravo, sinon recommencez, vous avez certainement oublié quelque chose. Une fois la machine redémarrée avec son nouveau noyau, et si tout se passe bien, sauvegar-
48
8
Configuration du serveur
dez le fichier /usr/src/linux/.config (notez le «.», ce qui signifie que c’est un fichier caché) dans le répertoire personnel de root (/root), sous un nom évocateur. Vous pourrez charger ce fichier pour configurer le prochain kernel, ce qui vous évitera de devoir saisir à nouveau la configuration. Je ne peux pas décrire ici toute la configuration du noyau, car je ne sais pas quel est le matériel présent. Beaucoup d’options en dépendent. N’hésitez pas à consulter la documentation, tel le kernel-HOWTO.
8.2
Interfaces réseau
Nous avons ici trois interfaces réseau, dont seulement une est configurée. Nous nous arrangerons pour obtenir ce schéma (du moins, je me base sur ceci) : – eth0 ←→ Internet – eth1 ←→ réseau local – eth2 ←→ intranet de l’établissement La première interface, eth0, a été configurée durant l’installation, elle est donc théoriquement en état de marche. Configurons maintenant les deux autres. La configuration des interfaces est contenue dans le fichier /etc/network/interfaces. Éditez-le à l’aide de votre éditeur favori. Vous devez arriver à quelque chose comme cela : # /etc/network/interfaces -- configuration file for ifup(8), ifdown(8) # The loopback interface iface lo inet loopback # The first network card - this entry was # created during the Debian installation iface eth0 inet static address xxx.xxx.xxx.xxx netmask xxx.xxx.xxx.xxx hostname fremen.etablissement.org # ici, la machine s’appelle "fremen" # # # #
Ici, l’interface eth0, configurée avec une IP statique (static). Remplacez xxx.xxx.xxx.xxx par l’adresse IP assignée à la machine puis remplacez xxx.xxx.xxx.xxx par le masque de réseau adéquat.
Ici, l’interface eth2, configurée avec une IP statique (static). Si l’intranet de l’établissement utilise le protocole DHCP voyez avec l’administrateur la possibilité d’obtenir une IP fixe pour cette machine. Remplacez xxx.xxx.xxx.xxx par l’IP fournie par l’administrateur. Remplacez xxx.xxx.xxx.xxx par le masque de réseau fourni par l’admisnitrateur. Si le site utilise la classe 10.x.x.x, changez les adresses du réseau local ; utilisez par exemple 192.168.1.1 (classe privée) pour eth1.
Sauvegardez le fichier, quittez votre éditeur et nous allons maintenant démarrer les différentes interfaces. Un script de démarrage est chargé de cela ; nous l’utilisons comme ceci : /etc/init.d/networking restart Le script va initialiser les différentes interfaces. Si tout se passe bien, l’utilitaire ifconfig doit vous donner quelque chose de ce genre : eth0
Et ce, pour chaque interface, certaines données variant.
8.3 Bind, serveur DNS Avant de continuer, nous devons permettre au monde de joindre nos machines et de nous adresser du courrier. Pour ce faire, nous devons configurer notre serveur DNS primaire.
50
8
Configuration du serveur
Lors du dépôt du domaine, vous indiquerez comme serveur DNS nos deux serveurs, ou, plus exactement, leurs adresses IP. Bind étant installé, il ne reste plus qu’à éditer les différents fichiers de configuration et à démarrer le daemon. Pour l’instant, commençons par arrêter Bind : /etc/init.d/bind stop Attaquons-nous maintenant à la configuration.
8.3.1
Note importante
Tout au long de ce dossier, j’utilise comme exemple le domaine «etablissement.org». Ce domaine existe et est utilisé. S URTOUT, NE LANCEZ PAS LE SERVEUR DNS AVEC CE DOMAINE DANS LES FICHIERS DE CONFIGURATION ! Remplacez IMPÉRATIVEMENT «etablissement.org» par le nom de domaine qui vous appartient. Je décline toute responsabilité quant à la gêne que pourraient subir les détenteurs du domaine «etablissement.org» en cas d’utilisation «telle quelle» des fichiers de configuration fournis ici.
8.3.2
/etc/bind/named.conf
C’est le fichier de configuration de Bind. Il doit ressembler à ceci : // // // // // //
This is the primary configuration file for the BIND DNS server named. Please read /usr/share/doc/bind/README.Debian for information on the structure of BIND configuration files in Debian for BIND versions 8.2.1 and later, *BEFORE* you customize this configuration file.
If there is a firewall between you and nameservers you want to talk to, you might need to uncomment the query-source directive below. Previous versions of BIND always asked questions using port 53, but BIND 8.1 and later use an unprivileged port by default.
// query-source address * port 53; // If your ISP provided one or more IP addresses for stable // nameservers, you probably want to use them as forwarders. // Uncomment the following block, and insert the addresses replacing
51
8
Configuration du serveur
// the all-0’s placeholder. // forwarders { // 0.0.0.0; // }; }; // reduce log verbosity on issues outside our control logging { category lame-servers { null; }; category cname { null; }; }; // prime the server with knowledge of the root servers zone "." { type hint; file "/etc/bind/db.root"; }; // be authoritative for the localhost forward and reverse zones, and for // broadcast zones as per RFC 1912 zone "localhost" { type master; file "/etc/bind/db.local"; }; zone "127.in-addr.arpa" { type master; file "/etc/bind/db.127"; }; zone "0.in-addr.arpa" { type master; file "/etc/bind/db.0"; }; zone "255.in-addr.arpa" { type master; file "/etc/bind/db.255"; }; // add entries for other zones below here
52
8
Configuration du serveur
// notre zone "etablissement.org" zone "etablissement.org" { type master; file "/var/cache/bind/masters/etablissement.org"; };
// pour permettre la résolution inverse zone "xxx.xxx.xxx.in-addr.arpa" { type master; file "/var/cache/bind/masters/xxx.xxx.xxx"; }; // remplacez xxx.xxx.xxx par l’inverse de l’adresse IP // exemple : // * nos adresses IP sont 213.166.193.178 et 213.166.193.179 // dans ce cas, xxx.xxx.xxx.xxx = 193.166.213
8.3.3
/var/cache/bind/masters/xxx.xxx.xxx
Ce fichier contient les informations permettant de retrouver le nom canonique d’un hôte à partir de son adresse IP. Il se présente comme suit : @
IN
SOA
ns1.etablissement.org. hostmaster.etablissement.org. ( 200006031 ; n◦ de série -> date (aaaammjj)+ n◦ 8H ; refresh 2H ; retry 1W ; expire 1D) ; TTL minimum NS NS
Le numéro de série est composé de la date du jour au format AAAAMMJJ et d’un chiffre de 1 à 9, permettant d’identifier la version des enregistrements. Notez qu’il ne peut y avoir que 9 versions par jour. Au-delà, vous devrez attendre le lendemain. Remarquez également que «fremen», «ns1», «ftp», «www» , «mail» et «news» sont en fait la même machine. Idem, «sardaukar» et «ns2» sont la même machine. Les noms «fremen» et «sardaukar» sont à remplacer par les noms que vous avez décidé de donner à vos deux machines. Remplacez «xxx.xxx.xxx.xxx» par l’adresse IP de «fremen». Utilisez l’utilitaire ifconfig pour avoir, comme tout à l’heure, le résumé des différentes interfaces. Prenez l’adresse de l’interface eth0. Remplacez maintenant «yyy.yyy.yyy.yyy» par l’adresse qui nous est allouée et que nous allouerons tout à l’heure à notre autre machine («sardaukar»). L’entrée «hostmaster.etablissement.org» est à lire comme étant «[email protected]». C’est l’adresse e-mail du responsable des serveurs DNS pour la zone. Cette adresse doit exister.
8.3.4
/var/cache/bind/masters/etablissement.org
Ce fichier contient les informations permettant de retrouver l’adresse IP d’un hôte à partir de son nom canonique. Il se présente comme suit : @
IN
SOA
ns1.etablissement.org. hostmaster.etablissement.org. ( 200006031 ; n◦ de série -> date (aaaammjj)+ n◦ 8H ; refresh 2H ; retry 1W ; expire 1D) ; TTL minimum NS NS
Les remarques faites précédemment s’appliquent ici aussi. Remplacez «xxx.xxx.xxx.xxx» par l’adresse IP de «fremen» et «yyy.yyy.yyy.yyy» par l’adresse IP que nous allouerons au deuxième serveur. Le champ TXT comprend un texte de quelques mots. Vous pouvez y mettre ce que vous voulez, par exemple le nom de l’établissement.
8.3.5
Maintenance
Notre serveur DNS sert de cache pour nos machines clientes. Pour ce faire, le serveur a besoin d’avoir une liste à jour des serveurs DNS principaux1 . Cette liste est contenue dans le fichier /etc/bind/db.root. Cette liste peut être amenée à changer, pour une raison quelconque, il faut donc la mettre à jour régulièrement. Voici un script-shell qui s’occupe de cette mise à jour : #!/bin/sh # /usr/local/bin/update-dns # Mise à jour du fichier /etc/bind/db.root. # Lancé par cron une fois par semaine. cd /etc/bind echo -e "\n*** Lancement de dig ***\n" dig . ns @ e.root-servers.net > db.root.new 2>&1 chown root.root db.root.new chmod 444 db.root.new rm -f db.root.old echo -e "\n*** Copie du nouveau fichier ***\n" 1
Ce sont les «root-servers».
55
8
Configuration du serveur
mv db.root db.root.old mv db.root.new db.root echo -e "\n*** Redémarrage de Bind ***\n" ndc restart echo -e "\n*** Mise à jour terminée ***\n" date
Enregistrez ceci dans un fichier /usr/local/bin/update-dns, et rendez ce fichier exécutable. Lancez le script une première fois. Maintenant, nous lancerons ce script une fois par semaine, pour maintenir un fichier à jour. Nous utilisons le programme cron, dont la tâche est de lancer à un moment défini une action définie. Éditons la crontab de root (notez que cron va lancer l’éditeur défini dans la variable d’environnement $EDITOR) : crontab -e Nous y ajoutons la ligne suivante : 45 18 1 * *
/usr/local/bin/update-dns
Enregistrez le fichier, quittez l’éditeur. Cron s’occupe maintenant de tout.
8.3.6
Redémarrage de Bind
Nous pouvons maintenant redémarrer Bind : /etc/init.d/bind start Si jamais le serveur ne démarrait pas, examinez les logs dans le fichier /var/log/messages. Bind y indique les erreurs détectées et l’emplacement de ces erreurs. Trouvez le problème et corrigez-le, puis tentez de redémarrer le serveur.
8.3.7
/etc/resolv.conf
Ce fichier est utilisé par le mécanisme de résolution des noms de domaine. Il contient les informations nécessaires pour que les différents logiciels mènent à bien leur mission. Il se présente comme cela :
Ce fichier indique aux agents chargés de la résolution des noms de domaine les différents moyen à leur disposition pour arriver à leur fin et l’ordre de préférence. Il se présente comme cela : # # # # #
/etc/nsswitch.conf Example configuration of GNU Name Service Switch functionality. If you have the ‘glibc-doc’ and ‘info’ packages installed, try: ‘info libc "Name Service Switch"’ for information about this file.
passwd: group: shadow:
compat compat compat
hosts: networks:
files dns files
protocols: services: ethers: rpc:
db db db db
netgroup:
nis
8.3.9
files files files files
/etc/host.conf
Ce fichier indique aux routines en charge de la résolution de noms l’ordre d’utilisation des différents moyens disponibles pour la résolution des noms. Il se présente comme ceci : order hosts,bind multi on
8.3.10
/etc/hosts
Ce fichier contient les adresses IP et noms canoniques de différentes machines. De nos jours, il n’est plus utilisé que pour renseigner le nom attribué à la machine. Il se présente sous cette forme : # The following lines are desirable for IPv6 capable hosts # (added automatically by netbase upgrade) ::1
Notre serveur SMTP principal sera chargé de la réception et de l’envoi de tous les mails, sans exception. Nous le configurerons de façon qu’il rejette une partie du spam, grâce à quelques listes noires renommées. Commençons par arrêter sendmail : /etc/init.d/sendmail stop
8.4.1
/etc/mail/sendmail.cf
Ce fichier peut être généré de plusieurs façons. La plus répandue est l’utilisation du kit M4 fourni avec sendmail. Une façon tout aussi efficace, mais plus longue, est d’écrire directement ce fichier à la main. D’aucuns avancent que personne ne peut se prétendre administrateur de systèmes UNIX tant qu’il n’a pas écrit un sendmail.cf à la main. D’autres prétendent que faire ceci plus d’une fois rend fou. Voilà pour les anecdotes, passons à la confection d’un sendmail.mc sur lequel nous lancerons le processeur M4. Rendez-vous dans le répertoire /usr/share/sendmail/sendmail.cf. Ouvrez votre éditeur préféré sur un fichier nommé sendmail.mc. Voici le fichier que nous utiliserons : include(‘./m4/cf.m4’)dnl dnl dnl Définition de certains éléments spécifiques au système dnl (emplacement de certains fichiers, ...) dnl OSTYPE(‘debian’)dnl dnl dnl Nous définissons certains emplacements dnl FEATURE(‘use_cw_file’,‘/etc/mail/local-host-names’)dnl FEATURE(‘use_ct_file’,‘/etc/mail/sendmail.ct’)dnl FEATURE(‘mailertable’,‘hash -o /etc/mail/mailertable’)dnl FEATURE(‘domaintable’,‘hash -o /etc/mail/domaintable’)dnl FEATURE(‘genericstable’,‘hash -o /etc/mail/genericstable’)dnl FEATURE(‘virtusertable’,‘hash -o /etc/mail/virtusertable’)dnl
58
8
Configuration du serveur
FEATURE(‘access_db’,‘hash -o /etc/mail/access’)dnl define(‘STATUS_FILE’, ‘/etc/mail/trusted-users’)dnl define(‘LOCAL_MAILER_PATH’, ‘/usr/bin/procmail’)dnl define(‘confCW_FILE’,‘/etc/mail/local-host-names’)dnl define(‘confCT_FILE’,‘/etc/mail/sendmail.ct’)dnl define(‘confSTATUS_FILE’, ‘/etc/mail/statistics’)dnl dnl dnl Nous rajoutons toujours le domaine en fin d’adresse dnl (ex.: To: root devient To: [email protected]) dnl FEATURE(‘always_add_domain’)dnl dnl dnl Nous définissons les mailer (protocoles) à utiliser dnl Ainsi que l’utilisation de procmail dnl FEATURE(‘local_procmail’)dnl MAILER(‘local’)dnl MAILER(‘smtp’)dnl MAILER(‘procmail’)dnl dnl dnl Permet de rediriger une adresse en "adresse.REDIRECT" dnl FEATURE(‘redirect’)dnl dnl dnl Protection anti-spam dnl FEATURE(‘dnsbl’,‘blackholes.mail-abuse.org’, ‘ Mail from $&{client_addr} rejected; see http://mail-abuse.org/cgi-bin/look’)d FEATURE(‘dnsbl’,‘dialups.mail-abuse.org’, ‘ Mail from dial-up rejected; see http://mail-abuse.org/dul/enduser.htm’)dnl FEATURE(‘no_default_msa’)dnl FEATURE(‘rbl’)dnl dnl dnl Permet de bloquer l’arrivée de courrier pour certains utilisateurs dnl FEATURE(‘blacklist_recipients’)dnl dnl dnl Taille maximum d’un message, en octets. Ici, 10 Mo. dnl define(‘confMAX_MESSAGE_SIZE’,‘10485760’)dnl dnl define(‘confAUTO_REBUILD’)dnl dnl dnl Message affiché lors de la connexion dnl
59
8
Configuration du serveur
define(‘confSMTP_LOGIN_MSG’, ‘fremen.etablissement.org Sendmail 8.9.3 Have a nice day !’)dnl dnl dnl Les durées après lesquelles les messages d’erreur sont envoyés dnl define(‘confTO_QUEUEWARN’,‘12h’)dnl define(‘confTO_QUEUEWARN_NORMAL’,‘12h’)dnl define(‘confTO_QUEUEWARN_URGENT’,‘12h’)dnl define(‘confTO_QUEUEWARN_NONURGENT’,‘12h’)dnl dnl dnl Nous interdisont certaines commandes, et nous plaçons dnl des avertissements de sécurité dans certains cas dnl define(‘confPRIVACY_FLAGS’, ‘‘authwarnings,novrfy,noexpn,noetrn’’)dnl dnl dnl Emplacement du fichier .forward dnl define(‘confFORWARD_PATH’, ‘$z/.forward.$w:$z/.forward+$h:$z/.forward’)dnl dnl dnl La personne qui doit recevoir les messages d’erreurs dnl define(‘confCOPY_ERRORS_TO’, ‘postmaster’)dnl dnl dnl Nombre maximum de destinataires pour un mail dnl define(‘confMAX_RCPTS_PER_MESSAGE’, ‘20’)dnl dnl dnl Nous masquons les noms de machines dnl MASQUERADE_AS(etablissement.org)dnl MASQUERADE_DOMAIN(*.etablissement.org)dnl FEATURE(‘masquerade_entire_domain’)dnl dnl dnl Nous relayons les machines listées dans /etc/mail/access dnl FEATURE(‘relay_hosts_only’)dnl
Compilez le fichier avec la commande : m4 sendmail.mc > /etc/mail/sendmail.cf Pour ce faire, vous aurez besoin de deux fichiers : no_default_msa.m4 et dnsbl.m4. Ces fichiers sont présents sur le CD-ROM joint à ce dossier. Copiez-les dans le sous-répertoire feature. Ces fichiers ne sont normalement pas nécessaires pour une version de sendmail supérieure ou égale à 8.10.x.
60
8
Configuration du serveur
Puis sauvegardez le fichier /etc/mail/sendmail.cf et copiez le nouveau fichier sendmail.cf dans /etc/mail.
8.4.2
/etc/mail/access
Ce fichier contient des renseignements sur les droits d’accès de certains sites. On peut autoriser le relayage, rejeter les connexions, par exemple. La syntaxe est très simple :
###
Où peut être un nom de machine (ex. mail.blabla.org), un domaine (ex. blabla.org), une adresse particulière (ex. [email protected]) ou simplement un login (ex. facheux@). Et peut être REJECT, OK, RELAY, DISCARD. Enfin, ### est un code d’erreur standard (ex. 550) et un message en anglais (ex. “No spammers allowed here. Go away.”). Voici celui que nous utiliserons ici : *.etablissement.org RELAY Nous devons compiler ces fichiers, de manière que sendmail puisse y accéder plus vite. Nous utilisons la commande : makemap hash /etc/mail/access.db < /etc/mail/access
8.4.3
/etc/mail/aliases
Ce fichier contient les alias utilisé par sendmail. Par défaut, plusieurs adresses («postmaster», «usenet», «mailer-daemon», par exemple) sont des alias de root. Root est la plupart du temps un alias vers un compte utilisé par l’administrateur. Car, rappelons-le, il ne faut pas travailler en tant que root, du moins, le moins possible. Ce fichier est déjà présent et contient plusieurs valeurs qu’il ne faut pas modifier. Rajoutez seulement ce qui diffère. Voici à quoi il ressemble : # # # # # # # # # #
@(#)aliases
8.2 (Berkeley) 3/5/94
Aliases in this file will NOT be expanded in the header from Mail, but WILL be visible over networks or from /bin/mail. >>>>>>>>>> >> NOTE >> >>>>>>>>>>
The program "newaliases" must be run after this file is updated for any changes to show through to sendmail.
61
8
Configuration du serveur
# Basic system aliases -- these MUST be present. MAILER-DAEMON: postmaster postmaster: root # General redirections for pseudo accounts. bin: root daemon: root games: root ingres: root nobody: root system: root toor: root uucp: root # Well-known aliases. manager: root dumper: root operator: root abuse: root newsmaster: root news: root usenet: root webmaster: root ftpmaster: root hostmaster: root # trap decode to catch security attacks decode: root root:
Remplacez par votre login, puis enregistrez le fichier et lancez la commande : newaliases Sendmail va relire le fichier /etc/mail/aliases et en tiendra désormais compte.
8.4.4
/etc/mail/domaintable
Ce fichier ne nous sert pas. Nous allons créer un fichier vide, puis le compiler : touch /etc/mail/domaintable makemap hash /etc/mail/domaintable.db < /etc/mail/domaintable
62
8
8.4.5
Configuration du serveur
/etc/mail/genericstable
Là encore, nous ne nous servons pas de ce fichier. Nous créons donc un fichier vide et le compilons : touch /etc/mail/genericstable makemap hash /etc/mail/genericstable.db < /etc/mail/genericstable
8.4.6
/etc/mail/local-host-names
Ce fichier contient les différents noms sous lesquels la machine est connue. Sendmail se sert de ce fichier pour savoir si il doit accepter ou pas un mail. Il se présente comme ceci : etablissement.org fremen.etablissement.org ns1.etablissement.org ftp.etablissement.org www.etablissement.org news.etablissement.org mail.etablissement.org Ce fichier ne se compile pas, sendmail y accède directement.
8.4.7
/etc/mail/mailertable
Nous ne nous servons pas de ce fichier sur cette machine, nous allons donc créer un fichier vide puis le compiler : touch/etc/mail/mailertable makemap hash /etc/mail/mailertable.db < /etc/mail/mailertable
8.4.8
/etc/mail/relay-domains
Nous n’utilisons pas ce fichier. Nous créons donc un fichier vide. touch /etc/mail/relay-domains
8.4.9
/etc/mail/sendmail.ct
Ce fichier contient les logins des utilisateurs considérés comme ne présentant pas de risques de sécurité. On peut donc leur faire confiance, et sendmail ne générera pas de message d’avertissement dans les en-têtes du message si l’utilisateur mentionne une adresse différente de celle que nous lui fournissons comme origine de son mail. Le fichier se présente comme une simple liste d’utilisateurs, nous y mettons bien entendu root : root
63
8
8.4.10
Configuration du serveur
/etc/mail/service.switch
Ce fichier indique à Sendmail de quels moyens il dispose pour se renseigner sur un utilisateur, un nom de machine ou sur ses aliases : # /etc/mail/service.switch # # This is the format that sendmail expects (no colon after the service) # passwd files hosts files dns aliases files Ce fichier ne se compile pas.
8.4.11
/etc/mail/virtusertable
Nous n’utilisons pas ce fichier, nous allons donc créer un fichier vide et le compiler : touch /etc/mail/virtusertable makemap hash /etc/mail/virtusertable.db < /etc/mail/virtusertable
8.4.12
Redémarrage de sendmail
Nous redémarrons maintenant sendmail : /etc/init.d/sendmail start Si sendmail ne redémarre pas, il y a une erreur quelque part. Il devrait vous indiquer l’erreur. Vérifiez que tout va bien en vous connectant sur le port 25 (SMTP) de la machine : telnet localhost 25 Si tout va bien, sendmail vous accueille, sinon, le message «Connection refused.» apparaît. Vous mettez fin à la connexion avec sendmail par la commande «quit».
8.5
Qpopper, le serveur POP3
Le serveur POP3 ne requiert pas de configuration particulière.
8.6
NIS
Lors de l’installation du paquetage NIS, il vous est demandé d’entrer le domaine NIS. Saisissez «etablissement.org». Commencez par arrêter le serveur NIS : /etc/init.d/nis stop
64
8
8.6.1
Configuration du serveur
/etc/hosts
Nous devons modifier le contenu du fichier /etc/hosts, afin que celui-ci contienne toutes les autres machines. Nous arrivons à ceci : # The following lines are desirable for IPv6 capable hosts # (added automatically by netbase upgrade) ::1 fe00::0 ff00::0 ff02::1 ff02::2 ff02::3
Si vous avez utilisé la classe d’adresses 192.168.x.x, remplacez les adresses par les valeurs idoines.
8.6.2
/etc/defaultdomain
Nous allons configurer le nom du domaine NIS dans ce fichier. Nous obtenons ceci : etablissement.org
8.6.3
/etc/init.d/nis
Nous devons indiquer au programme qu’il est un serveur maître. Nous allons éditer le script de démarrage : #!/bin/sh # # /etc/init.d/nis Start NIS (formerly YP) daemons. # #
65
8
Configuration du serveur
# Set to "false", "slave" or "master". NISSERVER=master NET="/usr/sbin" test -f $NET/ypbind -a -f /etc/defaultdomain || exit 0 [...]
8.6.4
/etc/ypserv.securenets
Ce fichier permet au serveur NIS d’accepter ou de refuser la connexion selon l’origine de la requête. Cela évite que n’importe qui ait accès aux données du serveur. Voici notre fichier : # # securenets This file defines the access rights to your NIS server # for NIS clients. This file contains netmask/network # pairs. A clients IP address needs to match with at least # one of those. # # One can use the word "host" instead of a netmask of # 255.255.255.255. Only IP addresses are allowed in this # file, not hostnames. # # Always allow access for localhost 255.0.0.0 127.0.0.0 # This line gives access to everybody. PLEASE ADJUST! # 0.0.0.0 0.0.0.0 # Nous n’autorisons que notre réseau local 255.255.255.0 10.1.0.0
8.6.5
/etc/ypserv.conf
Nous modifions légèrement le fichier pour n’autoriser l’accès qu’aux machines de notre réseau local : # # ypserv.conf # # # # #
In this file you can set certain options for the NIS server, and you can deny or restrict access to certain maps based on the originating host. See ypserv.conf(5) for a description of the syntax.
66
8
Configuration du serveur
# The following, when uncommented, will give you shadow like passwords. # Note that it will not work if you have slave NIS servers in your # network that do not run the same server as you. # # # # #
Host
: Map
: Security
: Passwd_mangle
* * *
: passwd.byname : passwd.byuid : *
: port : port : none
: yes : yes
# This is the default - restrict access to the shadow password file, # allow access to all others. 10.1.0.0/255.255.255.0 : shadow.byname : port 10.1.0.0/255.255.255.0 : passwd.adjunct.byname : port 10.1.0.0/255.255.255.0 : * : none
Là encore, si vous utilisez la classe 192.168.x.x, remplacez les adresses IP par les valeurs adéquates.
8.6.6
/etc/nsswitch.conf
Nous n’avons pas de modifications à apporter à ce fichier.
8.6.7
/var/yp/Makefile
Nous devons adapter ce Makefile2 pour tenir compte des shadow passwords. C’est une toute petite modification. Éditez le fichier et recherchez la ligne commençant par «all : ». La ligne se présente comme ceci :
Nous terminons la configuration du serveur en lançant : /usr/lib/yp/ypinit -m
8.6.9
Démarrage du serveur NIS
Nous pouvons maintenant redémarrer le serveur NIS : /etc/init.d/nis start Si le serveur ne démarre pas correctement, cherchez l’erreur ; le programme devrait vous dire où elle se situe.
8.7
Création d’un utilisateur
Vous pouvez maintenant créer un utilisateur qui soit soit votre utilisateur personnel, soit un utilisateur dédié à l’administration. Cela vous évitera de travailler en tant que root jusqu’à la fin de la configuration.
8.7.1
Mis à jour des maps NIS
Le serveur NIS n’utilise pas directement les fichiers /etc/passwd, /etc/group et /etc/shadow, mais des copies de ceux-ci, compilés à la manière de sendmail, de façon à rendre l’accès aux données qu’ils renferment plus rapide. À chaque modification de ces fichiers sur le serveur, que ce soit grâce aux utilitaires classiques ou à la main, vous devez régénérer ces fichiers. Pour ce faire, rendez-vous dans le répertoire /var/yp et lancez : make Rien de plus, rien de moins. Pour être certain que les maps soient à jour, nous allons mettre une entrée dans la crontab de root ; éditez la crontab comme précédemment, puis rajoutez : 15 23 * * *
cd /var/yp && make
Comme tout à l’heure, enregistrez et quittez votre éditeur. Tous les jours à 23h15, cron lancera pour nous la génération des maps NIS.
8.8
Quotas disque
Comme toujours, nous commençons par arrêter le gestionnaire des quotas : /etc/init.d/quota stop La manipulation des quotas est réservée à root. Seul lui peut utiliser les utilitaires destinés à la maintenance des quotas.
68
8
8.8.1
Configuration du serveur
/etc/fstab
Ce fichier contient les informations relatives à chaque partition montée ou susceptible d’être montée sur le système. Cela inclue certaines options, dont l’utilisation des quotas. Notre fichier doit ressembler à ceci : # /etc/fstab: static file system information. # # /dev/sda5 / ext2 defaults,errors=remount-ro 0 1 /dev/sda6 none swap sw 0 0 proc /proc proc defaults 0 0 /dev/sdb1 /home ext2 defaults,usrquota 0 2 /dev/sdc1 /var/spool/mail ext2 defaults,usrquota 0 2 /dev/sdd1 /var/spool/news ext2 defaults 0 2 # Uncomment the following entry if you use a 2.2.x or newer kernel for # UNIX98-style pty handling none /dev/pts devpts gid=5,mode=620 0 0 /dev/fd0 /floppy auto defaults,user,noauto 0 0 /dev/cdrom /cdrom iso9660 defaults,ro,user,noauto 0 0 /dev/sda1 /boot ext2 rw 0 2 On remarque la mention «usrquota» dans les options. Ceci pour indiquer au système qu’il doit tenir compte des quotas sur cette partition.
8.8.2
quota.user et quota.group
Ces fichiers contiennent les enregistrements des quotas : la limite pour chaque utilisateur, la consommation actuelle, etc. . . Ils doivent appartenir à root et lui seul doit pouvoir les lire et y écrire. Root doit les créer à la racine de chaque partition sur laquelle nous désirons appliquer les quotas : touch touch chmod chmod touch touch chmod chmod
Nous allons maintenant demander au système d’activer la gestion des quotas disque sur toutes les partitions comportant l’option «usrquota» dans le fichier /etc/fstab : /etc/init.d/quota start
69
8
8.8.4
Configuration du serveur
Attribution des quotas
Les quotas sont définis pour chaque utilisateur. Pour simplifier la maintenance, l’utilisation d’un utilisateur «prototype» a été rendue possible. Créons donc un utilisateur ayant pour login «eleve», et qui nous servira de prototype pour les quotas : adduser eleve Rentrez les informations demandées, et poursuivons. Nous lançons la commande «quotacheck -avug» pour synchroniser les fichiers quota.user et quota.group avec la situation actuelle des partitions. Maintenant, nous éditons les quotas de l’utilisateur «eleve» : edquota -u eleve L’éditeur Vi est lancé, ou tout autre éditeur spécifié dans la variable $EDITOR. Nous obtenons ceci : Quotas for user eleve: /dev/sdb1: blocks in use: inodes in use: /dev/sdc1: blocks in use: inodes in use:
0, 0, 0, 0,
limits limits limits limits
(soft (soft (soft (soft
= = = =
0, 0, 0, 0,
hard hard hard hard
= = = =
0) 0) 0) 0)
L’utilisateur ne consomme pas d’espace disque pour l’instant, puisque nous venons de le créer. Il y a deux types de limites : – limite douce (soft limit) : c’est une frontière à partir de laquelle l’utilisateur reçoit un message lui signifiant qu’il a dépassé sa limite – limite dure (hard limit) : c’est la limite absolue pour l’utilisateur. Il ne peut pas la dépasser. Notez que les limites sont exprimées en nombre de blocs, un bloc occupant 1024 octets, soit 1 Ko. Le nombre d’inodes correspond au nombre de fichiers que l’utilisateur peut créer ; en réalité, il est supérieur à 0 dès que l’utilisateur est créé, car quelques fichiers sont copiés dans son répertoire personnel. Nous avons décidé d’octroyer un espace disque de 100 Mo maximum à chaque utilisateur, ainsi qu’une boîte aux lettres de 30 Mo. Nous traduisons cela par : Quotas for user eleve: /dev/sdb1: blocks in use: 0, limits (soft = 102400, hard = 112640) inodes in use: 0, limits (soft = 110000, hard = 120000) /dev/sdc1: blocks in use: 0, limits (soft = 30720, hard = 35840) inodes in use: 0, limits (soft = 10, hard = 15)
70
8
Configuration du serveur
Ici, nous avons donc la configuration suivante pour l’espace disque : – répertoire personnel : limite douce à 100 Mo, limite dure à 110 Mo – boîte aux lettres : limite douce à 30 Mo, limite dure à 35 Mo Et nous avons ceci pour le nombre d’inodes utilisables : – répertoire personnel : limite douce à 110 000 inodes, limite dure à 120 000 inodes, soit respectivement 110 000 et 120 000 fichiers. La limite dure ne sera jamais atteinte ici, car le nombre d’inodes est supérieur au nombre maximum de blocs. – boîte aux lettres : limite douce à 10 inodes, limite dure à 15 inodes, soit respectivement 10 et 15 fichiers. Ici aussi, aucune des deux limites ne sera jamais atteinte ; en effet, il n’y a qu’un fichier appartenant à l’utilisateur dans ce répertoire. Maintenant que nous avons terminé, sauvegardez le fichier et quittez votre éditeur. L’utilitaire edquota va mettre à jour les fichiers quota.user et quota.group de chacune des partitions.
8.8.5
Maintenance
Pour plus de sécurité, nous lancerons périodiquement l’utilitaire quotacheck, comme précédemment. Nous utilisons là encore cron. Éditez la crontab de root : crontab -e Puis rajoutez la ligne : 15 23 * * 7
/sbin/quotacheck -avug
Sauvegardez, quittez votre éditeur, cron s’occupe maintenant de tout.
8.9
NFS
Nous allons maintenant exporter les répertoires personnels en utilisant le Network FileSysComme à l’accoutumée, nous commençons par arrêter le service :
Le contenu de ce fichier indique quels répertoires doivent être exportés, qui peut y avoir accès, dans quelles conditions. Nous utiliserons ceci : # /etc/exports: the access control list for filesystems which may be exported # to NFS clients. See exports(5). /home
10.1.0.0/255.255.255.0(secure,rw,root\_squash)
Explications : 3
Système de fichiers réseau. Il permet d’exporter des fichiers au travers d’un réseau.
71
8
Configuration du serveur
– /home : nous exportons le répertoire /home, qui contient les répertoires personnels – 10.1.0.0/255.255.255.0 : nous autorisons notre réseau local, et uniquement celui-ci à accéder à ce montage NFS – (secure,rw,root_squash) : nous demandons au serveur d’utiliser un port compris entre 0 et 1024, nous autorisons la lecture et l’écriture, nous interdisons au root de la machine cliente d’agir sur les fichiers
8.9.2
Un peu de sécurité
8.9.2.1 /etc/hosts.deny Ce fichier permet de restreindre l’accès à certains services pour certains hôtes. Nous interdisons à tous les hôtes de contacter portmap : # /etc/hosts.deny: list of hosts that are _not_ allowed to access the system. # See the manual pages hosts_access(5), hosts_options(5) # and /usr/doc/netbase/portmapper.txt.gz # # Example: ALL: some.host.name, .some.domain # ALL EXCEPT in.fingerd: other.host.name, .other.domain # # If you’re going to protect the portmapper use the name "portmap" for the # daemon name. Remember that you can only use the keyword "ALL" and IP # addresses (NOT host or domain names) for the portmapper. See portmap(8) # and /usr/doc/netbase/portmapper.txt.gz for further information. # # The PARANOID wildcard matches any host whose name does not match its # address. ALL: PARANOID portmap: ALL 8.9.2.2 /etc/hosts.allow Ce fichier permet d’autoriser l’accès à certains services pour certains hôtes. Nous autorisons notre réseau local à accéder à portmap : # /etc/hosts.allow: list of hosts that are allowed to access the system. # See the manual pages hosts_access(5), hosts_options(5) # and /usr/doc/netbase/portmapper.txt.gz # # Example: ALL: LOCAL @some_netgroup # ALL: .foobar.edu EXCEPT terminalserver.foobar.edu # # If you’re going to protect the portmapper use the name "portmap" for the
72
8
Configuration du serveur
# daemon name. Remember that you can only use the keyword "ALL" and IP # addresses (NOT host or domain names) for the portmapper. See portmap(8) # and /usr/doc/netbase/portmapper.txt.gz for further information. # portmap: 10.1.0.0/255.255.255.0
8.9.3
Redémarrage du service NFS
Nous pouvons maintenant redémarrer le serveur NFS : /etc/init.d/nfs-common start /etc/init.d/nfs-kernel-server start
8.10
Samba
Nous utiliserons Samba en-dehors de inetd («standalone daemon»). Nous arrêtons Samba : /etc/init.d/samba stop
8.10.1
/etc/samba/smb.conf
C’est le fichier de configuration central de Samba. Nous utiliserons celui-ci afin d’exporter les répertoires personnels : ; ; /etc/samba/smb.conf ; ; Sample configuration file for the Samba suite for Debian GNU/Linux ; ; Please see the manual page for smb.conf for detailed description of ; every parameter. ; [global] ; Samba n’agit QUE sur l’interface reliée à l’intranet interfaces = yyy.yyy.yyy.yyy/zzz.zzz.zzz.zzz ; Remplacez yyy.yyy.yyy.yyy par l’adresse de la carte eth2 ; Remplacez zzz.zzz.zzz.zzz par le masque de sous-réseau bind interfaces only = true ; "security = user" is always a good idea. This will require a Unix account
73
8 ;
Configuration du serveur
in this server for every user accessing the server. security = user
; Change this for the workgroup your Samba server will part of workgroup = WORKGROUP ; Remplacez "WORKGROUP" par le nom de votre groupe de travail server string = %h server (Samba %v) ; If you want Samba to log though syslog only then set the following ; parameter to ’yes’. Please note that logging through syslog in ; Samba is still experimental. syslog only = no ; We want Samba to log a minimum amount of information to syslog. Everything ; should go to /var/log/{smb,nmb} instead. If you want to log through ; syslog you should set the following parameter to something higher. syslog = 0; ; This socket options really speed up Samba under Linux, according to my ; own tests. socket options = IPTOS_LOWDELAY TCP_NODELAY SO_SNDBUF=4096 SO_RCVBUF=4096 ; Passwords are encrypted by default. This way the latest Windows 95 and NT ; clients can connect to the Samba server with no problems. encrypt passwords = yes ; It’s always a good idea to use a WINS server. If you want this server ; to be the WINS server for your network change the following parameter ; to "yes". Otherwise leave it as "no" and specify your WINS server ; below (note: only one Samba server can be the WINS server). ; Read BROWSING.txt for more details. wins support = no ; If this server is not the WINS server then specify who is it and uncomment ; next line. wins server = xxx.xxx.xxx.xxx ; Remplacez xxx.xxx.xxx.xxx par l’adresse du serveur WINS ; Demandez cette adresse à l’administrateur de l’établissement ; Please read BROWSING.txt and set the next four parameters according ; to your network setup. There is no valid default so they are commented ; out. ; os level = 0 ; domain master = no
74
8 ; ;
Configuration du serveur
local master = no preferred master = no
; What naming service and in what order should we use to resolve host names ; to IP addresses name resolve order = lmhosts host wins bcast ; This will prevent nmbd to search for NetBIOS names through DNS. dns proxy = no ; Name mangling options preserve case = yes short preserve case = yes ; This boolean parameter controlls whether Samba attempts to sync. the Unix ; password with the SMB password when the encrypted SMB password in the ; /etc/samba/smbpasswd file is changed. unix password sync = false
; For Unix password sync. to work on a Debian GNU/Linux system, the following ; parameters must be set (thanks to Augustin Luton ; for sending the correct chat script for ; the passwd program in Debian Potato). passwd program = /usr/bin/passwd %u passwd chat = *Enter\snew\sUNIX\spassword:* %n\n *Retype\snew\sUNIX\spasswor ; The following parameter is useful only if you have the linpopup package ; installed. The samba maintainer and the linpopup maintainer are ; working to ease installation and configuration of linpopup and samba. ; message command = /bin/sh -c ’/usr/bin/linpopup "%f" "%m" %s; rm %s’ &
; The default maximum log file size is 5 MBytes. That’s too big so this ; next parameter sets it to 1 MByte. Currently, Samba rotates log ; files (/var/log/{smb,nmb} in Debian) when these files reach 1000 KBytes ; A better solution would be to have Samba rotate the log file upon ; reception of a signal, but for now on, we have to live with this. max log size = 1000
[homes] comment = Home Directories browseable = no ; By default, the home directories are exported read only. Change next
75
8 ;
Configuration du serveur
parameter to "no" if you want to be able to write to them. read only = no
; File creation mask is set to 0700 for security reasons. If you want to ; create files with group=rw permissions, set next parameter to 0775. create mask = 0700 ; Directory creation mask is set to 0700 for security reasons. If you want to ; create dirs. with group=rw permissions, set next parameter to 0775. directory mask = 0700 ; Un fichier journal sera créé pour les répertoires personnels log file = /var/log/samba-homes.log.%m
8.10.2
Redémarrage de Samba
Nous redémarrons maintenant Samba : /etc/init.d/samba start
8.10.3
Utilisation
Chaque utilisateur doit définir un mot de passe pour sa connexion. Samba gère en effet une liste de mots de passe différente de celle du système. Le mot de passe est défini par la commande : smbpasswd Chaque utilisateur accède à son compte à partir d’une machine MS-Windows par l’adresse : \\\\ Un mot de passe est alors demandé. Où est le nom de partage du serveur, et est le login de la personne sur les machines clientes.
8.11
INN, le serveur de news
Comme d’habitude, nous commençons par arrêter le service INN : /etc/init.d/inn2 stop
8.11.1
Particularité : l’utilisateur news
Durant toute la configuration de INN, vous DEVEZ agir en tant qu’utilisateur news. Ceci pour préserver les droits des fichiers de configuration qui doivent appartenir à l’utilisateur news. Commencez par définir un mot de passe pour l’utilisateur, vous devez être root :
76
8
Configuration du serveur
passwd news Rentrez deux fois de suite le mot de passe. Ouvrez une session en tant que news, et nous commençons.
8.11.2
/var/spool/news
En tant que root, vérifiez les droits du répertoire /var/spool/news. Ce répertoire doit appartenir à l’utilisateur et au groupe «news». Si ce n’est pas le cas, corrigez les droits comme ceci : chown news.news /var/spool/news
8.11.3
/etc/news/inn.conf
C’est le fichier de configuration du daemon innd. Nous utiliserons ceci : ## $Revision: 1.24.2.2 $ ## inn.conf -- inn configuration data ## Format: ## : ## ## See the inn.conf(5) man page for a full description of each ## of these options ## ## Blank values are allowed for certain parameters ## --------------------------------# All parameters must exist # organization: Lycee xxxX (Posts don’t reflect the views of the Lycee # ci-dessus, une petite notice en anglais signifiant que le contenu # du message ne reflète pas l’opinion du lycée. server: pathhost: fremen.etablissement.org moderatormailer: domain: etablissement.org fromhost: fremen.etablissement.org pathalias: complaints: [email protected] # ################################################### # Vous n’avez plus rien à modifier à partir d’ici # ################################################### # mta: /usr/sbin/sendmail -oi %s mailcmd: /usr/lib/news/bin/innmail checkincludedtext: false
activedport: 1119 nnrpperlauth: false # # # These options are unlikely to need changing in most situations chaninacttime: 600 chanretrytime: 300 pauseretrytime: 300 nntplinklog: false nntpactsync: 200 badiocount: 5 blockbackoff: 120 # # --------------------------------# Changing these options can have an effect on the way articles are # stored and may require recreating the spool and/or database files # wireformat: false xrefslave: false nnrpdposthost: nnrpdpostport: 119 spoolfirst: false writelinks: true storageapi: false articlemmap: false overviewmmap: true bindaddress: all sourceaddress: any port: 119 # ## Keywords-in-overview options ## Enabling this without stopping innd and deleting the existing overview ## database and adding will probably confuse a lot of things. You must ## have compiled this support in too. # keywords: false keylimit: 512 keyartlimit: 100000 keymaxwords: 250 # # Other options innflags: -L doinnwatch: true innwatchsleeptime: 600 pgpverify: true
79
8
Configuration du serveur
controlfailnotice: false logcycles: 3 innwatchpauseload: 1500 innwatchhiload: 2000 innwatchloload: 1000 innwatchspoolspace: 8000 innwatchbatchspace: 800 innwatchlibspace: 25000 innwatchspoolnodes: 200 docnfsstat: false # # --------------------------------# Paths to various aspects of the news system # pathnews: /usr/lib/news pathbin: /usr/lib/news/bin pathfilter: /usr/lib/news/bin/filter pathcontrol: /usr/lib/news/bin/control pathdb: /var/lib/news pathetc: /etc/news pathrun: /var/run/news pathlog: /var/log/news pathhttp: /var/log/news pathtmp: /var/tmp pathspool: /var/spool/news patharticles: /var/spool/news/articles pathoverview: /var/spool/news/overview pathoutgoing: /var/spool/news/outgoing pathincoming: /var/spool/news/incoming patharchive: /var/spool/news/archive pathuniover: /var/spool/news/uniover overviewname: .overview # # --------------------------------# N’oubliez pas de remplacer le nom de domaine et les noms de machines par votre domaine et vos noms de machines.
8.11.4
/etc/news/hosts.nntp
Ce fichier contient les adresses IP des machines qui nous fournissent des articles via le protocole NNTP. Chez moi, ce fichier est le suivant : localhost :
80
8
Configuration du serveur
62.4.16.158 : La ligne «localhost :» est requise dans tous les cas. La ligne «62.4.16.158 :» correspond à la machine analynn.codeine.org qui m’alimente en articles. Vous remplacerez donc «62.4.16.158» par l’adresse IP de la machine qui vous fournira les articles. Nous verrons plus tard où trouver des fournisseurs.
8.11.5
/etc/news/nnrp.access
Ce fichier contient les permissions d’accès pour les lecteurs. INN 2.2.2 ne permet pas l’utilisation du fichier /etc/passwd comme source des mots de passe NNRP4 . De ce fait, l’accès en écriture au serveur sera réservé à notre réseau local, et éventuellement à l’intranet de l’établissement. Voici le fichier que nous utiliserons : ## $Revision: 1.3.2.1 $ ## nnrp.access - access file for on-campus NNTP sites ## Format: ## :::: ## : ## Connecting host must be found in this file; the last match found is ## used, so put defaults first. ## Wildcard name or IP address ## R to read; P to post ## Username for authentication before posting ## Password, for same reason ## Newsgroup patterns that can be read or not read ## A second file to scan in the same format as this ## To disable posting put a space in the and fields, since ## there is no way for client to enter one. ## ## Default is no access, no way to authentication, and no groups. *::::!* ## Foo, Incorporated, hosts have no password, can read anything. #*.foo.com:Read Post:::* ## Bar, Incorporated have a separate access file that they maintain # *.bar.com:/news/etc/customers/access.bar.com stdin:Read Post:::* ## Nous permettons l’accès à la machine locale 4
News Network Reader Protocol : protocole de lecture/écriture réservé aux lecteurs, contrairement au protocole NNTP utilisé pour l’acheminement des articles entre serveurs.
81
8
Configuration du serveur
localhost:Read Post:::* 127.0.0.1:Read Post:::* ## Nous permettons l’accès en lecture/écriture à notre réseau local ## Tous les groupes, pas de mot de passe 10.1.0.*:Read Post:::* ## Si vous voulez permettre l’accès au serveur en lecture/écriture ## pour l’intranet de l’établissement, remplacez xxx.xxx.* par la ## valeur adéquate et décommentez la ligne #xxx.xxx.*:Read Post:::* ## Un exemple d’accès restreint aux groupes #*.foo.com:Read:::* ## Un exemple d’accès lecture/écriture à certains groupes #*.bar.com:Read Post:::fr.* ## Un exemple d’accès avec login + mot de passe #*.foobar.com:Read Post:login:password:* Si vous n’avez pas utilisé les adresses IP 10.1.0.* pour le réseau local, remplacez par les valeurs réelles. Si vous définissez des mots de passe dans ce fichier, faites en sorte qu’il ne soit lisible que par l’utilisateur news.
8.11.6
/etc/news/newsfeeds
Ce fichier renseigne INN sur ses différents fournisseurs5 : ce que chacun lui fournit, ce qu’il doit fournir à chacun, comment reconnaître les articles venant de tel ou tel, etc. . . Voici un exemple, tiré de ma configuration : ME\ :*,!junk,!control*,!local*,!test,!foo:: crosspost:*:Tc,Ap,WR:/usr/lib/news/bin/crosspost overview!:*:Tc,WO:/usr/lib/news/bin/overchan innfeed!:!*,:Tc,Wnm*,S30000:/usr/lib/news/bin/startinnfeed codeine.org/codeine.org\ :!*,fx,fx.*,fr.*,cybercable.discussions\ 5
On parle de «feeds», car ils «nourrissent» le serveur en articles.
82
8
Configuration du serveur
:Tm:innfeed! La ligne commençant6 par «ME\» concerne notre propre machine. La ligne commençant par «crosspost :» est un pseudo-feed permettant de gérer les crossposts7 , celle commençant par «overview ! :» permet de gérer l’overview8 . La ligne commençant par «innfeed ! :» permet l’envoi des articles vers les serveurs avec qui nous sommes liés. La dernière ligne concerne le feed avec codeine.org ; on reconnaît les articles en provenance de codeine.org par la chaîne «codeine.org» présente dans le champ «Path :» d’un article. J’envoie vers codeine.org tout ce qui m’arrive d’autres serveurs et qui n’est pas encore passé par codeine.org, ainsi que ce qui est posté depuis mon serveur, mais seulement sur certains groupes. Enfin, innfeed est appelé ; il va contacter le serveur de codeine.org et lui envoyer les articles par le biais du protocole NNTP9 .
8.11.7
/etc/news/moderators
Ce fichier permet à INN de savoir à quelle adresse il doit envoyer les articles postés dans un groupe modéré. Les articles postés dans ces groupes sont soumis à l’approbation d’une ou plusieurs personnes et, ensuite seulement, s’ils sont approuvés, ils sont postés dans le groupe. Le fichier /etc/news/moderators se présente comme ceci : ## ## ## ## ## ## ## ##
$Revision: 1.2.4.1 $ Mailing addresses for moderators. Format: : First match found is used. Shell-style newsgroup pattern or specific newsgroup Mail address, "%s" becomes newgroup name with dots changed to dashes.
Un backslash (\) dans une ligne signifie que celle-ci se poursuit après le prochain retour à la ligne. Un article posté sur plusieurs groupes à la fois est dit «crossposté». 8 Sorte de sommaire répertoriant les articles disponibles dans un groupe donné. 9 News Network Transfer Protocol, ce protocole sert à propager les articles en temps réel entre les différents serveurs tout autour de la planète. 7
83
8
Configuration du serveur
Si vous souhaitez rajouter une adresse de modération pour une hiérarchie particulière, vous devez la rajouter avant la dernière entrée, car INN utilise la première adresse qui correspond au groupe.
8.11.8
/etc/news/control.ctl
Grâce à ce fichier, vous pouvez faire en sorte que INN créé lui-même les nouveaux groupes à réception du message de contrôle. Le fichier se présente sous cette forme : ## FR (French Language) # *PGP* See comment at top of file. ## checkgroups:*:fr.*:drop ## newgroup:*:fr.*:drop ## rmgroup:*:fr.*:drop checkgroups:[email protected]:fr.*\ :[email protected]=mail newgroup:[email protected]:fr.*\ :[email protected]=mail rmgroup:[email protected]:fr.*\ :[email protected]=mail Recherchez la hiérarchie désirée, puis décommentez et modifiez les lignes nécessaires. N’oubliez pas d’ajouter la clé publique PGP de la hiérarchie dans la collection de clés de l’utilisateur news (vous pouvez le faire par la commande pgp -ka ).
8.11.9
/etc/news/expire.ctl
Ce fichier permet de configurer la durée de conservation des articles pour un groupe, une hiérarchie, ou pour l’ensemble. Voici un exemple : ## ## ## ## ## ## ## ## ## ## ## ## ## ##
$Revision: 1.1.1.1 $ expire.ctl - expire control file Format: /remember/::::: First line gives history retention; other lines specify expiration for newsgroups. Must have a "*:A:..." line which is the default. wildmat-style patterns for the newsgroups Pick one of M U A -- modifies pattern to be only moderated, unmoderated, or all groups Mininum number of days to keep article Default number of days to keep the article Flush article after this many days , , and can be floating-point numbers or the
84
8 ## ##
word "never." see expire.8
Configuration du serveur
Times are based on when received unless -p is used;
## If article expires before 14 days, we still remember it for 14 days in ## case we get offered it again. Depending on what you use for the innd ## -c flag and how paranoid you are about old news, you might want to ## make this 28, 30, etc. /remember/:14 # Nous expirons control.cancel au bout d’une journée control.cancel:A:1:1:1 # Nous expirons fr.test au bout de deux jours fr.test:A:2:2:2
8.11.10
/etc/news/incoming.conf
Ce fichier contient les noms de machines, adresses IP et autres options relatives à nos fournisseurs d’articles. En voici un exemple, ici le feed avec codeine.org (VB) : ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ##
$Revision: 1.3.4.2 $ incoming.conf - names and addresses that feed us news This file consists of three types of entries: key/value, peer and group. Comments are taken from the hash character ‘‘#’’ to the end of the line. Blank lines are ignored. Key/value entries are a keyword immediatly followed by a colon, at least one blank and a value. For example: max-connections: 10 A legal key contains nor blanks, nor colon, nor ‘‘#’’. There are 5 different type of values: integers, booleans, and strings. Integers are as to be expected. A boolean value is either ‘‘true’’ or ‘‘false’’ (case is significant). A string value is any other sequence of characters. If the string needs to contain whitespace, then it must be quoted with double quotes. Peer entries look like: peer { # body }
The word ‘‘peer’’ is required. is a label for this peer. It is any string valid as a key. The body of a peer entry contains some number of key/value entries. Group entries look like: group { # body } The word ‘‘group’’ is required. The ‘‘’’ is any string valid as a key. The body of a group entry contains any number of the three types of entries. So key/value pairs can be defined inside a group, and peers can be nested inside a group, and other groups can be nested inside a group. Key/value entries that are defined outside of all peer and group entries are said to be at ‘‘global scope’’. Global key/value entries act as defaults for peers. When innd looks for a specific value in a peer entry (for example, the maximum number of connections to allow), if the value is not defined in the peer entry, then the enclosing groups are examined for the entry (starting at the closest enclosing group). If there are no enclosing groups, or the enclosing groups don’t define the key/value, then the value at global scope is used. A small example could be: # Global value applied to all peers that have no value # of their own. max-connections: 5 # A peer definition. peer uunet { hostname: usenet1.uu.net } peer vixie { hostname: gw.home.vix.com max-connections: 10 # override global value. } # A group of two peers who can open more connections than normal group fast-sites { max-connections: 15
# Another peer. The ‘‘max-connections’’ value from the # ‘‘fast-sites’’ group scope is used. peer data.ramona.vix.com { hostname: data.ramona.vix.com } peer bb.home.vix.com { hostname: bb.home.vix.com max-connections: 20 # he can really cook. } } Given the above configuration file, the defined peers would have the following values for the ‘‘max-connections’’ key. uunet vixie data.ramona.vix.com bb.home.vix.com
5 10 15 20
Height keys are allowed: hostname: This key is mandatory in a peer block. The value is a string representing a list of hostnames separated by a comma. A hostname is the host’s FQDN, or the dotted quad ip-address of the peer. streaming: This key requires a boolean value. It defines whether streaming commands are allowed from this peer. (default=true) max-connections: This key requires positive integer value. It defines the maximum number of connections allowed. A value of zero specifies an unlimited number of maximum connections (‘‘unlimited’’ or ‘‘none’’ can be used as synonym). (default=0) password: This key requires a string value. It is used if you wish to require a peer to supply a password. (default=no password) patterns: This key requires a string value. It is a list of newsfeeds(5)-style list of newsgroups which are to be accepted from this host.
(default="*") email: This key requires a string value. Reserved for future use. (default=empty) comment: This key requires a string value. Reserved for future use. (default=empty) skip: This key requires a boolean value. Setting this entry causes this peer to be skipped. Reserved for future use. (default=false) noresendid: This key requires a boolean value. It defines whether innd should send "431 RESENDID" (stream mode) or "436 Retry later" (non-stream mode) responses if a message is offered that is already received from another peer. This can be useful for peers that resend messages right away, as innfeed does. (default=false)
streaming: max-connections:
true 8
# streaming allowed by default # per feed
peer ME { hostname: }
"localhost, 127.0.0.1"
peer VB { hostname: }
"annalynn.codeine.org, 212.208.8.55"
8.11.11
/etc/news/innfeed.conf
C’est le fichier de configuration de innfeed. Nous inscrivons ici nos différents feeds ainsi que leurs adresses IP. Innfeed consulte ce fichier lorsqu’il doit contacter les autres serveurs pour leur envoyer des articles. Ici encore, un exemple avec le feed de codeine.org : # # # # # #
$Revision: 1.1 $ Sample innfeed config file. See the comment block at the end for a fuller description of the format, and innfeed.conf(5) for a description of the entries.
88
8
Configuration du serveur
## ## Global values. Not specific to any peer. These are optional, but if ## used will override the compiled in values. ## pid-file: debug-level: use-mmap: log-file: stdio-fdmax:
innfeed.pid 0 false innfeed.log 0
# relative to pathrun
# relative to pathlog
## Uncomment the next line to include the contents ## of ‘‘testfile’’ at this point. #$INCLUDE testfile backlog-directory: backlog-rotate-period: backlog-ckpt-period: backlog-newfile-period:
## ## Defaults for all peers. These must all exist at ## global scope. Any of them can be redefined ## inside a peer or group definition. ## article-timeout: response-timeout: initial-connections:
Blank lines are ignored. Exerything after a ’#’ is ignored too. Format is: key : value See innfeed.conf(5) for a description of necessary & useful keys. Unknown keys and their values are ignored. Values may be a integer, floating-point, c-style single-quoted characters, boolean, and strings. If a string value contains whitespace, or embedded quotes, or the comment character (‘‘#’’), then the whole string must be quoted with double quotes. Inside the quotes, you may use the standard c-escape sequence (\t,\n,\r,\f,\v,\",\’). Examples: eg-string: "New\tConfig\tfile\n" eg-long-string: "A long string that goes over multiple lines. The newline is kept in the string except when quoted with a backslash \ as here." eg-simple-string: A-no-quote-string eg-integer: 10 eg-boolean: true eg-char: ’a’ eg-ctrl-g: ’\007’
8.11.12
/etc/news/innreport.conf
Innreport est lancé toutes les nuits par cron. Il examine les logs d’INN et vous fait parvenir un rapport détaillé des activités du serveur pendant la journée écoulée. Il génère également des pages HTML agrémentées de graphiques, résumant l’activité du serveur. Voici le début du long fichier de configuration :
91
8
Configuration du serveur
########################################################## # Configuration file for innreport (3.0.0 and more). # # Sample file for INN. # Tested with INN 1.8current, 1.7 and 1.5.1. # # (c) 1997, 1998 by Fabien Tassin # version 2.1.9_7 ########################################################## # Default parameters section default { libpath "/usr/lib/news"; logpath "/var/log/news"; unknown true; # want unknown entries. max_unknown 50; # max unknown entries to display. casesensitive true; module "innreport_inn"; # ${libpath}/${module}.pm unwanted_log "unwanted.log"; # ${logpath}/${unwanted_log} text true; html true; graph true; # need ’html’ archive true; # use false to keep only the latest HTML report. index "index.html"; # name of the HTML index file. html_dir "/var/www/news/stats"; # default to pathhttp in inn.conf img_dir "pics"; # images will go to ${html_dir}/${img_dir} cycle none; # use a number or ’none’. separator "."; # use a valid filename character. title "Daily Usenet report for news.y.z"; footer "Contact: \ [email protected]"; html_body "BGCOLOR=\"#FFFFFF\" TEXT=\"#000000\""; # html_header_file "header.html"; # ${html_dir}/${html_header_file} # html_footer_file "footer.html"; # ${html_dir}/${html_footer_file} graph_width 550; # graph width (in pixels) transparent true; # graph background transparent ? graph_fg "#000000"; # graph foreground color. graph_bg "#FFFFFF"; # graph background color. };
8.11.13 /etc/news/motd.news Le texte contenu dans ce fichier est affiché sur demande du lecteur de news. Il n’est pas obligatoire d’y mettre quelque chose.
92
8
8.11.14
Configuration du serveur
/var/lib/news/active
Ce fichier contient les noms des différents groupes présents sur le serveur, ainsi que le numéro de l’article le plus vieux et celui de l’article le plus récent. Vous ne devez pas éditer ce fichier à la main. Nous ferons le nécessaire pour l’initialiser tout à l’heure.
8.11.15
/var/lib/news/history
Ce fichier est généré par INN lui-même. Nous n’avons pas à nous en occuper.
8.11.16
/var/lib/news/newsgroups
Ce fichier contient les descriptions des différents groupes présents sur le serveur. Nous l’initialiserons en même temps que le fichier active.
8.11.17
Vérification de la configuration
Avant de redémarrer INN, nous allons vérifier la configuration grâce à inncheck : inncheck -a -v -pedantic Vous devriez obtenir quelque chose comme ça :
Looking at /var/lib/news/active... Looking at /etc/news/control.ctl... Looking at /etc/news/expire.ctl... Looking at /etc/news/incoming.conf... Looking at /etc/news/inn.conf... /etc/news/inn.conf:16: modmailer has bad address Looking at /etc/news/moderators... Looking at /etc/news/newsfeeds... ME, crosspost, overview!, innfeed!, codeine.org, /etc/news/newsfeeds:0: warning you accept all incoming article distributions done. Looking at /etc/news/nnrp.access... Looking at /etc/news/nntpsend.ctl... Looking at /etc/news/overview.fmt... Looking at /etc/news/passwd.nntp...
Malgré les quelques erreurs, tout est bon. Nous pouvons redémarrer INN. Si vous obtenez d’autres erreurs que celles-ci, faites en sorte de les corriger.
93
8
8.11.18
Configuration du serveur
Redémarrage de INN
Nous allons donc redémarrer INN : /etc/init.d/inn2 start Si le résultat de inncheck ne présentait aucune erreur grave, INN devrait démarrer sans problèmes.
8.11.19
CleanFeed, la lutte anti-spam
CleanFeed est un logiciel de filtrage qui analyse chaque article arrivant sur le serveur. Il permet d’éviter les articles en HTML, les fichiers attachés, et une partie du spam. Le spam consiste en des messages publicitaires non sollicités. Cela pose plusieurs problèmes : – gêne des contributeurs des différents forums – augmentation du trafic – consommation inutile de ressources Je vous conseille fortement d’installer CleanFeed. Vous pouvez vous le procurer à l’adresses suivante : http://www.exit109.com/~jeremy/news/cleanfeed.html 8.11.19.1
Installation
Copiez le fichier filter_innd.pl dans le répertoire /usr/lib/news/bin/filter. 8.11.19.2
Configuration
CleanFeed utilise le fichier /etc/news/cleanfeed.conf. Le voici : # Cleanfeed configuration file
sub local_config { ### !! WARNING !! YOU CAN & MUST SET ONLY ONE OF THE FOLLOWING: $inn = 1; # set $inn = 1 for INN $highwind = 0; # set $highwind = 1 for Cyclone/Typhoon/Breeze $nntprelay = 0; # set $nntprelay = 1 for NNTPRelay %config_local = ( # # # # #
Settings in %config_local will OVERRIDE any defaults in Cleanfeed. Any setting here will blindly replace one with the same name in %config. No sanity checks are done.
94
8
Configuration du serveur
# Be careful! # # On/off settings should be set to 1 for on, 0 for off ### Setting aggressive to 0 disables all content-based filters ’aggressive’ => 1, ### Active file ’active_file’ => "/var/lib/news/active", ######################################################### ### MD5-based EMP filter settings ### Do the MD5 checks? You probably shouldn’t turn this off, ### but if you’re running Hippo also you might want to anyway, ### and far be it from me to stop you. ’do_md5’ => 1, ### Start rejecting after the MD5 filter sees this many copies ’md5maxmultiposts’ => 5, ### Keep history of this many MD5 article checksums ’MD5History’ => 11000, ### Time to keep MD5 EMP ids with no hits, in hours ’MD5maxlife’ => 24, ### Use "fuzzy" MD5 check by "imploding" message bodies ### before hashing? ’fuzzy_md5’ => 0, ### Don’t do fuzzy-check if the body is more than this many lines ’fuzzy_max_length’ => 700, ### Should the MD5 filter skip articles with References? ### Possibly a major performance difference. ’md5_skips_followups’ => 1, ### Maximum number of MD5 EMP ids to ever keep ’MD5HistSize’ => 7000,
### Do the Posting-Host/Lines EMP checks? ### keep this on. ’do_phl’ => 1,
You really want to
### Do the From/Subject/Lines EMP checks? ### the lowest hit rate these days. ’do_fsl’ => 1,
This is the one with
### Start rejecting after the header filter sees this many copies. ### More prone to false positives than MD5 so set this higher ’maxmultiposts’ => 20, ### Keep history of this many header-EMP checks ’ArticleHistory’ => 7000, ### Time to keep EMP ids with no hits, in hours ’EMPmaxlife’ => 24, ### Maximum number of EMP ids to ever keep ’EMPHistSize’ => 1500,
######################################################### ### Excessive Crosspost settings ### Maximum number of newsgroups allowed in a crosspost ### Articles are rejected if posted such that followups ### will be to more than this many groups ’maxgroups’ => 5, ### Restrict crossposts in low_xpost_groups (below) to this many ’low_xpost_maxgroups’ => 6, ### ’tjfmaxgroups’ has been removed
######################################################### ### Misplaced Binaries Filter ### Block binaries in non-binary newsgroups? ’block_binaries’ => 1, ### Max number of binary-encoded lines before considering ### an article a "binary" ’max_encoded_lines’ => 20,
96
8
Configuration du serveur
### Allow binaries in all moderated groups? ### (Requires an active file) ’binaries_in_mod_groups’ => 1,
######################################################### ### HTML, etc. ### Block MIME-encapsulated HTML? ### (not regular HTML or multipart/alternative) ’block_mime_html’ => 1, ### Block HTML and multipart/alternative? ’block_html’ => 0,
######################################################### ### Cancel Message Filtering ### Block cancels of already-rejected articles? ’block_late_cancels’ => 0, ### Time to keep rejected message-ids for cancel rejection ### in hours ’MIDmaxlife’ => 1,
######################################################### ### Other filters you may want to shut off for some reason ### Do the scoring filter? ’do_scoring_filter’ => 1, ### Do the message-id filter on NNTP CHECK command (INN only)? ’do_mid_filter’ => 0, ### Do the spam-bot-signature checks? ’do_bot_checks’ => 1,
Leave this on.
### Do the excessive Supersedes filter? ’do_supersedes_filter’ => 1, ### Apply bad_cancel_paths to Supersedes also? ’check_supersedes_path’ => 1,
97
Really.
8
Configuration du serveur
### Drop all sendsys, senduuname, and version control messages? ’drop_useless_controls’ => 1, ### Drop all ihave and sendme control messages? ’drop_ihave_sendme’ => 1, ### Drop any control message also containing a Supersedes header? ’drop_control_with_supersedes’ => 1,
######################################################### ### Hash-Trimming ### Trim hashes every N cycles through the filter ’trimcycles’ => 500, ### Don’t bother trimming hashes until they’re this big ’EMPstarttrimming’ => 500,
######################################################### ### Logging ### Verbose rejection reasons in news.notice/logfile? ’verbose’ => 1, ### Set the following to log the message ID’s ### of all articles processed. ### Doesn’t work for INN (uses news.notice instead). ’logfile’ => undef, ’reportfile’ => undef, ### Should the above log, if used, log accepts as well as rejects? ’log_accepts’ => 0, ### Rotate the log (if used) at this size ’max_log_size’ => 10000000, ### Crude stats for tuning purposes (see documentation) ’statfile’ => undef,
######################################################### ### Timing Information
98
8
Configuration du serveur
### Generate timing information? ’timer_info’ => 1, ### Interval over which to average timing information, ### in seconds. ’timer_interval’ => 300,
### Batch files for debugging written to this directory ’debug_batch_directory’ => undef, ### Batch files will be rotated when they exceed this size ’debug_batch_size’ => 100000, ); %config_append = ( # # # # # # # #
Used to append to the end of the default regexps. Settings here will be added to the defaults, with a | between the default string and the one provided here. See the default settings in the Cleanfeed code. Allowed in this section:
### binaries allowed if groups match # ’bin_allowed’ => undef, ### reject crossposts if any groups match # ’poison_groups’ => undef, ### HTML allowed if groups match (only if block_html is on) # ’html_allowed’ => undef, ### md5 EMP check not done if groups match # ’md5exclude’ => undef, ### no checks done if groups match
99
8 #
Configuration du serveur
’allexclude’ => undef,
### restrict crossposts in these groups to low_xpost_maxgroups # ’low_xpost_groups’ => undef, ### used to build domain names for URL matching # ’badguys’ => undef, ### matched against domain names in URLs # ’baddomainpat’ => undef, ### regexps to exempt from NNTP-Posting-Host EMP filter # ’exempt’ => undef, ### regexps to exempt from excessive supersedes filter # ’supersedes_exempt’ => undef, ### Reject cancels (and possibly supersedes) with these path elements # ’bad_cancel_paths’ => undef, ### refuse articles with these in the message-id (INN only) # ’refuse_messageids’ => undef, ); } 1; 8.11.19.3
Activation du filtre
Toujours en tant qu’utilisateur news, lancez les commandes suivantes : ctlinnd ctlinnd ctlinnd ctlinnd
pause ’cleanfeed’ perl y reload all ’activation~cleanfeed’ go ’cleanfeed’
Sachez que le programme ctlinnd se trouve dans /usr/lib/news/bin. Je vous recommande d’ajouter ce chemin à la variable $PATH de l’utilisateur news. Maintenant, le filtrage est activé. Innreport vous fera part des statistiques relatives à CleanFeed dans son rapport quotidien.
8.11.20
Constitution des fichiers active et newsgroups
Nous allons utiliser une liste des groupes au format checkgroups. Cette liste est formatée de manière à être traitée par le programme docheckgroups.
100
8
Configuration du serveur
Commencez par récupérer la liste. Pour la hiérarchie fr.*, cette liste est postée tous les quinze jours sur le forum fr.usenet.forums.annonces, avec pour titre «[ANNONCE] Liste des groupes fr.* au format checkgroups». Enregistrez dans un fichier nommé «checkgroups» les lignes comprises entre /usr/local/news/bin/control/docheckgroups < maj-active Le fichier maj-active contient un certain nombre de lignes qui vont permettre de mettre à jour votre fichier active. Puis, il contient les descriptions des groupes que vous devez ajouter dans le fichier /var/lib/news/newsgroups. Sauvegardez votre fichier active courant : cp /var/lib/news/active /var/lib/news/active.save Lancez la mise à jour : sh ./maj-active Forcez INN à recharger ses fichiers de configuration : ctlinnd reload all ’checkgroups’ Relancez INN : ctlinnd go ’checkgroups’ Pour les checkgroups des hiérarchies autres que fr.*, renseignez-vous dans le groupe fr.usenet.divers. Vous trouverez toujours quelqu’un pour vous aiguiller.
8.11.21
Trouver un feed
Maintenant, il vous faut trouver quelqu’un qui accepte de vous envoyer des articles via le protocole NNTP, et donc en utilisant innfeed. Vous pouvez vous reporter à la documentation de Stéphane MARCHAU, intitulée «[DOC] Ou trouver un approvisionnement pour fr.* ?», qui est postée tous les quinze jours sur fr.usenet.distribution. Vous pouvez également tenter de solliciter codeine.org présenté dans les exemples, ainsi que moi-même. Vous pouvez également tenter votre chance auprès des grands fournisseurs tels que free.fr. Avant de demander un feed, assurez-vous que la liaison entre votre machine et celle du fournisseur est de bonne qualité.
101
8
8.12
Configuration du serveur
Apache, le serveur HTTP
Nous commençons comme pour les autres services par arrêter le daemon Apache : /etc/init.d/apache stop La configuration d’Apache se fait grâce à trois fichiers principaux.
8.12.1
/etc/apache/httpd.conf
C’est le fichier principal dans la configuration d’Apache. Nous utiliserons celui-ci : # This is the main server configuration file. # See URL http://www.apache.org/ for instructions. # Do NOT simply read the instructions in here without understanding # what they do, if you are unsure consult the online docs. You have been # warned. # Originally by Rob McCool # # # # # #
Shared Object Module Loading: To be able to use the functionality of a module which was built as a shared object you have to place corresponding ‘LoadModule’ lines at this location so the directives contained in it are actually available _before_ they are used. Example:
# ServerType is either inetd, or standalone. ServerType standalone # If you are running from inetd, go to "ServerAdmin". # Port: The port the standalone listens to. For ports < 1023, you will # need httpd to be run as root initially. Port 80 # HostnameLookups: Log the names of clients or just their IP numbers # e.g. www.apache.org (on) or 204.62.129.132 (off) # The default is off because it’d be overall better for the net if people # had to knowingly turn this feature on. HostnameLookups off
102
8
Configuration du serveur
# If you wish httpd to run as a different user or group, you must run # httpd as root initially and it will switch. # User/Group: The name (or #number) of the user/group to run httpd as. # On SCO (ODT 3) use User nouser and Group nogroup # On HPUX you may not be able to use shared memory as nobody, and the # suggested workaround is to create a user www and use that user. User www-data Group www-data # ServerAdmin: Your address, where problems with the server should be # e-mailed. ServerAdmin [email protected] # # # # #
ServerRoot: The directory the server’s config, error, and log files are kept in. NOTE! If you intend to place this on a NFS (or otherwise network) mounted filesystem then please read the LockFile documentation, you will save yourself a lot of trouble.
ServerRoot /etc/apache # # # #
BindAddress: You can support virtual hosts with this option. This option is used to tell the server which IP address to listen to. It can either contain "*", an IP address, or a fully qualified Internet domain name. See also the VirtualHost directive.
#BindAddress *
# The Debian package of Apache loads every feature as shared modules. # Please keep this LoadModule: line here, it is needed for installation. # LoadModule vhost_alias_module /usr/lib/apache/1.3/mod_vhost_alias.so # LoadModule env_module /usr/lib/apache/1.3/mod_env.so LoadModule config_log_module /usr/lib/apache/1.3/mod_log_config.so # LoadModule mime_magic_module /usr/lib/apache/1.3/mod_mime_magic.so LoadModule mime_module /usr/lib/apache/1.3/mod_mime.so LoadModule negotiation_module /usr/lib/apache/1.3/mod_negotiation.so LoadModule status_module /usr/lib/apache/1.3/mod_status.so # LoadModule info_module /usr/lib/apache/1.3/mod_info.so # LoadModule includes_module /usr/lib/apache/1.3/mod_include.so LoadModule autoindex_module /usr/lib/apache/1.3/mod_autoindex.so LoadModule dir_module /usr/lib/apache/1.3/mod_dir.so LoadModule cgi_module /usr/lib/apache/1.3/mod_cgi.so
103
8
Configuration du serveur
# LoadModule asis_module /usr/lib/apache/1.3/mod_asis.so # LoadModule imap_module /usr/lib/apache/1.3/mod_imap.so # LoadModule action_module /usr/lib/apache/1.3/mod_actions.so # LoadModule speling_module /usr/lib/apache/1.3/mod_speling.so LoadModule userdir_module /usr/lib/apache/1.3/mod_userdir.so LoadModule alias_module /usr/lib/apache/1.3/mod_alias.so LoadModule rewrite_module /usr/lib/apache/1.3/mod_rewrite.so LoadModule access_module /usr/lib/apache/1.3/mod_access.so LoadModule auth_module /usr/lib/apache/1.3/mod_auth.so # LoadModule anon_auth_module /usr/lib/apache/1.3/mod_auth_anon.so # LoadModule dbm_auth_module /usr/lib/apache/1.3/mod_auth_dbm.so # LoadModule db_auth_module /usr/lib/apache/1.3/mod_auth_db.so # LoadModule proxy_module /usr/lib/apache/1.3/libproxy.so # LoadModule digest_module /usr/lib/apache/1.3/mod_digest.so # LoadModule cern_meta_module /usr/lib/apache/1.3/mod_cern_meta.so LoadModule expires_module /usr/lib/apache/1.3/mod_expires.so # LoadModule headers_module /usr/lib/apache/1.3/mod_headers.so # LoadModule usertrack_module /usr/lib/apache/1.3/mod_usertrack.so LoadModule unique_id_module /usr/lib/apache/1.3/mod_unique_id.so LoadModule setenvif_module /usr/lib/apache/1.3/mod_setenvif.so # LoadModule sys_auth_module /usr/lib/apache/1.3/mod_auth_sys.so # LoadModule put_module /usr/lib/apache/1.3/mod_put.so # LoadModule throttle_module /usr/lib/apache/1.3/mod_throttle.so # LoadModule allowdev_module /usr/lib/apache/1.3/mod_allowdev.so # LoadModule auth_mysql_module /usr/lib/apache/1.3/mod_auth_mysql.so # LoadModule pgsql_auth_module /usr/lib/apache/1.3/mod_auth_pgsql.so # LoadModule eaccess_module /usr/lib/apache/1.3/mod_eaccess.so # LoadModule roaming_module /usr/lib/apache/1.3/mod_roaming.so ExtendedStatus on # ErrorLog: The location of the error log file. If this does not start # with /, ServerRoot is prepended to it. ErrorLog /var/log/apache/error.log # LogLevel: Control the number of messages logged to the error_log. # Possible values include: debug, info, notice, warn, error, crit, # alert, emerg. LogLevel warn # The following directives define some format nicknames for use with # a CustomLog directive (see below).
# The location of the access logfile (Common Logfile Format). # If this does not start with /, ServerRoot is prepended to it. CustomLog /var/log/apache/access.log common # If you would like to have an agent and referer logfile uncomment the # following directives. CustomLog /var/log/apache/referer.log referer CustomLog /var/log/apache/agent.log agent # If you prefer a single logfile with access, agent and referer # information (Combined Logfile Format) you can use the # following directive. #CustomLog /var/log/apache/access.log combined # PidFile: The file the server should log its pid to PidFile /var/run/apache.pid # # # # # # #
ScoreBoardFile: File used to store internal server process information. Not all architectures require this. But if yours does (you’ll know because this file is created when you run Apache) then you *must* ensure that no two invocations of Apache share the same scoreboard file. ScoreBoardFile logs/apache_runtime_status
# The LockFile directive sets the path to the lockfile used when Apache # is compiled with either USE_FCNTL_SERIALIZED_ACCEPT or # USE_FLOCK_SERIALIZED_ACCEPT. This directive should normally be left at # its default value. The main reason for changing it is if the logs # directory is NFS mounted, since the lockfile MUST BE STORED ON A LOCAL # DISK. The PID of the main server process is automatically appended to # the filename. # LockFile /var/run/apache.lock # ServerName allows you to set a host name which is sent back to
105
8 # # # # # #
Configuration du serveur
clients for your server if it’s different than the one the program would get (i.e. use "www" instead of the host’s real name). Note: You cannot just invent host names and hope they work. The name you define here must be a valid DNS name for your host. If you don’t understand this, ask your network administrator.
ServerName www.etablissement.org # UseCanonicalName: (new for 1.3) With this setting turned on, whenever # Apache needs to construct a self-referencing URL (a url that refers back # to the server the response is coming from) it will use ServerName and # Port to form a "canonical" name. With this setting off, Apache will # use the hostname:port that the client supplied, when possible. This # also affects SERVER_NAME and SERVER_PORT in CGIs. UseCanonicalName on # # # # #
CacheNegotiatedDocs: By default, Apache sends Pragma: no-cache with each document that was negotiated on the basis of content. This asks proxy servers not to cache the document. Uncommenting the following line disables this behavior, and proxies will be allowed to cache the documents.
#CacheNegotiatedDocs # Timeout: The number of seconds before receives and sends time out Timeout 300 # KeepAlive: Whether or not to allow persistent connections (more than # one request per connection). Set to "Off" to deactivate. KeepAlive On # MaxKeepAliveRequests: The maximum number of requests to allow # during a persistent connection. Set to 0 to allow an unlimited amount. # We reccomend you leave this number high, for maximum performance. MaxKeepAliveRequests 100 # KeepAliveTimeout: Number of seconds to wait for the next request KeepAliveTimeout 15 # Server-pool size regulation.
Rather than making you guess how many
106
8
Configuration du serveur
# # # # #
server processes you need, Apache dynamically adapts to the load it sees --- that is, it tries to maintain enough server processes to handle the current load, plus a few spare servers to handle transient load spikes (e.g., multiple simultaneous requests from a single Netscape browser).
# # # #
It does this by periodically checking how many servers are waiting for a request. If there are fewer than MinSpareServers, it creates a new spare. If there are more than MaxSpareServers, some of the spares die off. These values are probably OK for most sites ---
MinSpareServers 5 MaxSpareServers 10 # Number of servers to start --- should be a reasonable ballpark figure. StartServers 5 # # # # #
Limit on total number of servers running, i.e., limit on the number of clients who can simultaneously connect --- if this limit is ever reached, clients will be LOCKED OUT, so it should NOT BE SET TOO LOW. It is intended mainly as a brake to keep a runaway server from taking Unix with it as it spirals down...
MaxClients 150 # MaxRequestsPerChild: the number of requests each child process is # allowed to process before the child dies. # The child will exit so as to avoid problems after prolonged use when # Apache (and maybe the libraries it uses) leak. On most systems, this # isn’t really needed, but a few (such as Solaris) do have notable leaks # in the libraries. MaxRequestsPerChild 30
# Listen: Allows you to bind Apache to specific IP addresses and/or # ports, in addition to the default. See also the VirtualHost command #Listen 3000 #Listen 12.34.56.78:80 # VirtualHost: Allows the daemon to respond to requests for more than one # server address, if your server machine is configured to accept IP packets # for multiple addresses. This can be accomplished with the ifconfig
107
8
Configuration du serveur
# alias flag, or through kernel patches like VIF. # Any httpd.conf or srm.conf directive may go into a VirtualHost command. # See also the BindAddress entry. # # Un exemple de serveur virtuel # #ServerAdmin [email protected] #DocumentRoot /var/www/autre-serveur #ServerName autre-serveur.etablissement.org #ErrorLog /var/log/apache/autre-serveur-error.log #TransferLog /var/log/apache/autre-serveur-access.log # # Serveurs virtuels sur l’interface externe. Remplacer # xxx.xxx.xxx.xxx par l’adresse IP de l’interface externe NameVirtualHost xxx.xxx.xxx.xxx # Serveur virtuel principal : www.etablissement.org ServerAdmin [email protected] DocumentRoot /var/www/etablissement ServerName www.etablissement.org ServerAlias etablissement.org UserDir disabled ErrorLog /var/log/apache/www-error.log TransferLog /var/log/apache/www-access.log # Serveur virtuel : pages web élèves ServerAdmin [email protected] DocumentRoot /var/www/eleves ServerName eleves.etablissement.org UserDir disabled root UserDir enabled /home/eleves/*/public_html ErrorLog /var/log/apache/eleves-error.log TransferLog /var/log/apache/eleves-access.log # Serveur virtuel : pages web professeurs
Ce fichier définit la manière dont Apache doit répondre aux requêtes. On y définit notamment où seront cherchées les pages personnelles, ainsi que les pages d’erreur personnalisées, par exemple. Ici l’emplacement des pages personnelles est défini pour chaque serveur virtuel, dans le fichier httpd.conf, car j’ai décidé de séparer l’accès aux espaces Web des professeurs et des élèves. Cela nous obligera à séparer les répertoires personnels des professeurs et des élèves, nous en reparlerons plus tard. Par contre, nous interdisons au root d’avoir une page personnelle, pour des raisons de sécurité. Nous utiliserons celui-ci ; les pages d’erreur ne sont pas personnalisées : # With this document, you define the name space that users see of your # http server. This file also defines server settings which affect # how requests are serviced, and how results should be formatted. # See the tutorials at http://www.apache.org/ for # more information. # Originally by Rob McCool; Adapted for Apache
# DocumentRoot: The directory out of which you will serve your # documents. By default, all requests are taken from this directory, but # symbolic links and aliases may be used to point to other locations. DocumentRoot /var/www # UserDir: The name of the directory which is appended onto a user’s home # directory if a ~user request is recieved. UserDir disabled root # DirectoryIndex: Name of the file or files to use as a pre-written HTML # directory index. Separate multiple entries with spaces.
109
8
Configuration du serveur
DirectoryIndex index.html # FancyIndexing is whether you want fancy directory indexing or standard FancyIndexing on # AddIcon tells the server which icon to show for different files or # filename extensions AddIconByEncoding (CMP,/icons/compressed.gif) x-compress x-gzip AddIconByType AddIconByType AddIconByType AddIconByType
# DefaultIcon is which icon to show for files which do not have an icon # explicitly set. DefaultIcon /icons/unknown.gif
110
8
Configuration du serveur
# AddDescription allows you to place a short description after a file in # server-generated indexes. # Format: AddDescription "description" filename # # # # # # # #
ReadmeName is the name of the README file the server will look for by default. Format: ReadmeName name The server will first look for name.html, include it if found, and it will then look for name and include it as plaintext if found. HeaderName is the name of a file which should be prepended to directory indexes.
ReadmeName README HeaderName HEADER # IndexIgnore is a set of filenames which directory indexing should # ignore # Format: IndexIgnore name1 name2... IndexIgnore .??* *~ *# HEADER HEADER.html README README.html RCS CVS # AccessFileName: The name of the file to look for in each directory # for access control information. AccessFileName .htaccess # DefaultType is the default MIME type for documents which the server # cannot find the type of from filename extensions. DefaultType text/plain # AddEncoding allows you to have certain browsers (Mosaic/X 2.1+) # uncompress information on the fly. Note: Not all browsers support # this. AddEncoding x-compress Z AddEncoding x-gzip gz # # # # # #
AddLanguage allows you to specify the language of a document. You can then use content negotiation to give a browser a file in a language it can understand. Note that the suffix does not have to be the same as the language keyword --- those with documents in Polish (whose net-standard language code is pl) may wish to use "AddLanguage pl .po" to avoid the ambiguity with the common suffix for perl scripts.
# LanguagePriority allows you to give precedence to some languages # in case of a tie during content negotiation. # Just list the languages in decreasing order of preference. LanguagePriority fr en de # # # #
Redirect allows you to tell clients about documents which used to exist in your server’s namespace, but do not anymore. This allows you to tell the clients where to look for the relocated document. Format: Redirect fakename url
# Aliases: Add here as many aliases as you need (with no limit). The # format is # Alias fakename realname # Note that if you include a trailing / on fakename then the server will # require it to be present in the URL. So "/icons" isn’t aliased in this # example. Alias /icons/ /usr/share/apache/icons/ # ScriptAlias: This controls which directories contain server scripts. # Format: ScriptAlias fakename realname ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/ # If you want to use server side includes, or CGI outside # ScriptAliased directories, uncomment the following lines. # AddType allows you to tweak mime.types without actually editing it, # or to make certain files to be certain types.
112
8
Configuration du serveur
# Format: AddType type/subtype ext1 # For example, the PHP3 module (a separate Debian package) # will typically use: #AddType application/x-httpd-php3 .phtml #AddType application/x-httpd-php3-source .phps # # # #
AddHandler allows you to map certain file extensions to "handlers", actions unrelated to filetype. These can be either built into the server or added with the Action command (see below) Format: AddHandler action-name ext1
# To use CGI scripts: #AddHandler cgi-script .cgi # To use server-parsed HTML files #AddType text/html .shtml #AddHandler server-parsed .shtml # Uncomment the following line to enable Apache’s send-asis HTTP file # feature #AddHandler send-as-is asis # If you wish to use server-parsed imagemap files, use #AddHandler imap-file map # To enable type maps, you might want to use #AddHandler type-map var # # # # #
Action lets you define media types that will execute a script whenever a matching file is called. This eliminates the need for repeated URL pathnames for oft-used CGI file processors. Format: Action media/type /cgi-script/location Format: Action handler-name /cgi-script/location
# Customizable error response (Apache style) # these come in three flavors # # Ici sont définies les pages d’erreur personnalisées # # 1) plain text #ErrorDocument 500 "The server made a boo boo. # n.b. the (") marks it as text, it does not get output # # 2) local redirects
113
8
Configuration du serveur
#ErrorDocument 404 /missing.html # to redirect to local url /missing.html #ErrorDocument 404 /cgi-bin/missing_handler.pl # n.b. can redirect to a script or a document using server-side-includes. # # 3) external redirects #ErrorDocument 402 http://some.other_server.com/subscription_info.html # # mod_mime_magic allows the server to use various hints from the file # itself to determine its type. #MimeMagicFile conf/magic # # # # # #
The following directives disable keepalives and HTTP header flushes. The first directive disables it for Netscape 2.x and browsers which spoof it. There are known problems with these. The second directive is for Microsoft Internet Explorer 4.0b2 which has a broken HTTP/1.1 implementation and does not properly support keepalive when it is used on 301 or 302 (redirect) responses.
BrowserMatch "Mozilla/2" nokeepalive BrowserMatch "MSIE 4\.0b2;" nokeepalive downgrade-1.0 force-response-1.0 # The following directive disables HTTP/1.1 responses to browsers which # are in violation of the HTTP/1.0 spec by not being able to grok a # basic 1.1 response. BrowserMatch "RealPlayer 4\.0" force-response-1.0 BrowserMatch "Java/1\.0" force-response-1.0 BrowserMatch "JDK/1\.0" force-response-1.0 Alias /doc/ /usr/doc/ ## The above line is for Debian Policy 3.0.1 (FHS), which specifies ## that /doc is /usr/share/doc. Packages should symlink to share/doc. ## -- apacheconfig
8.12.3
/etc/apache/access.conf
Ce fichier définit les droits sur les différents répertoires. Il permet notamment d’interdire l’accès à certains répertoires pour une certaines catégories de personnes. En voici un exemple : # access.conf: Global access configuration # Online docs at http://www.apache.org/ # This file defines server settings which affect which types of
114
8
Configuration du serveur
# services are allowed, and in what circumstances. # Each directory to which Apache has access, can be configured with # respect to which services and features are allowed and/or disabled # in that directory (and its subdirectories). # Originally by Rob McCool # This should be changed to whatever you set DocumentRoot to. # This may also be "None", "All", or any combination of "Indexes", # "Includes", "FollowSymLinks", "ExecCGI", or "MultiViews". # Note that "MultiViews" must be named *explicitly* --- "Options All" # doesn’t give it to you (or at least, not yet). Options Indexes FollowSymLinks MultiViews # This controls which options the .htaccess files in directories can # override. Can also be "All", or any combination of "Options", # "FileInfo", "AuthConfig", and "Limit" AllowOverride None # Controls who can get stuff from this server. order allow,deny allow from all # /usr/lib/cgi-bin should be changed to whatever your ScriptAliased # CGI directory exists, if you have that configured. AllowOverride None Options ExecCGI FollowSymLinks # Allow server status reports, with the URL of # http://servername/server-status # Change the ".your_domain.com" to match your domain to enable.
115
8
Configuration du serveur
SetHandler server-status order deny,allow deny from all allow from localhost # Allow server info reports, with the URL of # http://servername/server-info # Change the ".your_domain.com" to match your domain to enable. SetHandler server-info order deny,allow deny from all allow from localhost # Debian Policy assumes /usr/doc is "/doc/", at least from # the localhost. Options Indexes FollowSymLinks AllowOverride None order deny,allow deny from all allow from localhost # # # # #
This sets the viewable location of the mod_throttle status display.
# # # # #
Do not allow users to browse foreign files using symlinks in their private webspace public_html. Note: This should be changed if you modify the UserDir-Option. We would really like to use LocationMatch but the Option we want is ignored with that directive.
SetHandler throttle-info
Options Indexes SymLinksIfOwnerMatch
116
8
Configuration du serveur
AllowOverride None # Do not allow retrieval of the override files, a standard security # measure. order allow,deny deny from all # You may place any other directories or locations you wish to have # access information for after this one.
8.12.4
Négociation de contenu
La négociation de contenu permet au serveur Web de proposer plusieurs variantes d’un document lors de la consultation du site. De cette façon, vous pouvez proposer un documents dans différents formats (les images, par exemple) ou dans différentes langues. Nous nous servirons ici de la négociation de contenu pour proposer différentes langues. L’activation la négociation de contenu, dans notre cas, se fait dans deux fichiers. Dans le fichier srm.conf, tout d’abord, par les directives : AddLanguage AddLanguage AddLanguage AddLanguage AddLanguage AddLanguage AddLanguage AddLanguage AddLanguage AddLanguage AddLanguage
en fr de da it es br ja dk pl kr
.en .fr .de .da .it .es .br .ja .dk .pl .kr
LanguagePriority fr en de Nous définissons ici les suffixes correspondant aux différentes langues, ainsi que la priorité des différentes langues ; nous mettons le Français par défaut, puis l’Anglais et enfin l’Allemand. Dans le fichier httpd.conf, nous rajoutons l’option MultiViews pour le répertoire /var/www : Options Indexes FollowSymLinks MultiViews L’utilisation de la négociation de contenu est très simple : pour chaque page HTML, il y aura une page appelée page.html.fr et une page appelée page.html.en, par exemple. Lors d’une requête
117
8
Configuration du serveur
portant sur page.html, Apache enverra soit page.html.fr, soit page.html.en, suivant la configuration du navigateur ayant effectué la requête. Celui-ci envoie en effet au serveur une liste des langues qu’il accepte. Le serveur Web décide alors quelle page il doit envoyer, selon la disponibilité et la priorité des langues. Bien sûr, il n’est pas obligatoire de mettre en place une version anglaise ou allemande d’un site. Si seule une page est disponible, Apache la retournera au navigateur, tout simplement. Il serait judicieux, en cas d’utilisation de la négociation de contenu, de rajouter une note en bas de la page principale du site, disant quelque chose comme :
This site uses the language content negociation to brought you the most suitable page. Available languages are French and English, French being the default. If you’re reading the French version and don’t speak French, please configure your browser so that it asks the English version to the server. Ce site utilise la négociation de contenu pour vous offrir une page traduite dans votre langue, si cela est possible. Les langues disponibles sont le Français et l’Anglais, le Français étant le choix par défaut. Si vous lisez la version Anglaise et que vous ne parlez pas Anglais, configurez votre navigateur de manière qu’il demande la version Française au serveur.
Adaptez selon vos besoins les textes ci-dessus.
8.12.5
Serveurs virtuels
Nous avons défini, dans le fichier /etc/apache/httpd.conf, trois serveurs virtuels. Passonsles en revue. 8.12.5.1
www.etablissement.org
Du fait des deux autres serveurs virtuels, il faut créer une entrée VirtualHost pour le serveur principal. Ce serveur ne propose pas de pages personnelles. C’est précisément pour ces pages personnelles que nous avons créé les deux autres serveurs virtuels. Les documents accessibles par ce serveur se trouvent dans /var/www/etablissement. Ce serveur est accessible par les adresses http ://www.etablissement.org/ et http ://etablissement.org/. 8.12.5.2
eleves.etablissement.org
La tâche de ce serveur virtuel est de servir les pages personnelles des élèves. Elles sont accessibles par l’URL http ://eleves.etablissement.org/~login/. Une requête à l’adresse http ://eleves.etablissement.org/ présentera les documents présents dans /var/www/eleves. Il serait bon d’y mettre une page d’index.
118
8 8.12.5.3
Configuration du serveur
profs.etablissement.org
Ce serveur a pour but de fournir les pages personnelles des professeurs. Elles sont accessibles par l’URL http ://profs.etablissement.org/~login/. Une requête à l’adresse http ://profs.etablissement.org/ présentera les documents présents dans /var/www/profs. Il serait là aussi bon d’y mettre une page d’index. On remarquera que les pages personnelles des élèves ne sont pas disponibles via le serveur profs.etablissement.org et vice-versa, ni par le serveur www.etablissement.org (ou etablissement.org).
8.12.6
Redémarrage d’Apache
Apache est maintenant prêt à redémarrer. Nous le redémarrons grâce au script de démarrage de la machine : /etc/init.d/apache start Apache doit maintenant répondre aux requêtes arrivant sur le port 80 de la machine. Tentez de vous connecter sur www.etablissement.org (n’oubliez pas de remplacer par votre nom de domaine). Vous devriez voir une page vous informant que l’installation d’Apache a réussi.
8.13
ProFTPd, le serveur FTP
Nous commençons par arrêter le serveur : /etc/init.d/proftpd stop ProFTPd n’utilise qu’un seul et unique fichier de configuration.
8.13.1
/etc/proftpd.conf
C’est le fichier de configuration de ProFTPd. Voici celui que nous utiliserons : # # # #
This is a basic ProFTPD configuration file. Rename it to ’proftpd.conf’ for actual use. It establishes a single server and a single anonymous login. It assumes that you have a user/group "nobody" and "ftp" for normal operation and anon.
# Port 21 is the standard FTP port. Port 21 # Umask 022 is a good standard umask to prevent new dirs and files # from being group and world writable. Umask 022 # Set the user and group that the server normally runs at. User root Group root
# A basic anonymous configuration, no upload directories. User
ftp
Group UserAlias
nogroup anonymous
RequireValidShell
ftp off
## # Limit the maximum number of anonymous logins MaxClients 10 # We want ’welcome.msg’ displayed at login, and ’.message’ displayed # in each newly chdired directory. DisplayLogin welcome.msg DisplayFirstChdir .message ShowSymlinks
on
# Limit WRITE everywhere in the anonymous chroot
120
8
Configuration du serveur
DenyAll ## # # # DenyAll # # # AllowAll # #
De cette manière, chaque utilisateur peut accéder à son répertoire personnel, en utilisant son login et son mot de passe. Par ailleurs, un accès anonyme est autorisé dans le répertoire /home/ftp.
8.13.2
Redémarrage de ProFTPd
Nous pouvons maintenant redémarrer ProFTPd : /etc/init.d/proftpd start
8.14
Remarque concernant Apache et ProFTPd
Afin de permettre la maintenance du site Web et de l’espace FTP anoyme, je vous conseille de changer les propriétaires des répertoires /var/www et /home/ftp, de même pour leurs sousrépertoires.
8.15
NTP, synchronisation de l’heure
Afin que le serveur soit toujours à l’heure, nous installons le daemon NTPD. Le protocole NTP10 permet de synchroniser une machine sur une autre, reliée, elle, à une horloge atomique. Lors de l’installation du paquetage ntp, vous devrez spécifier un serveur NTP. Vous trouverez une liste des serveurs français à l’adresse http://www.cru.fr/NTP/serveurs\protect\ T1\textunderscorefrancais.html. Pour ne pas encombrer les serveurs primaires, utilisez s’il vous plaît un serveur secondaire, comme ntp.loria.fr, par exemple. 10
Network Time Protocol.
121
8
8.16
Configuration du serveur
SNMPD, surveillance réseau
Pour pouvoir utiliser MRTG, nous avons besoin d’un serveur SNMP sur chaque machine que nous désirons surveiller. Le serveur SNMP est fourni par le paquetage snmpd. Voici son fichier de configuration, qui se nomme /etc/snmp/snmpd.conf :
############################################################################### # # EXAMPLE.conf: # An example configuration file for configuring the ucd-snmp snmpd agent. # ############################################################################### # # This file is intended to only be an example. If, however, you want # to use it, it should be placed in /etc/snmp/snmpd.conf. # When the snmpd agent starts up, this is where it will look for it. # # All lines beginning with a ’#’ are comments and are intended for you # to read. All other lines are configuration commands for the agent. # # PLEASE: read the snmpd.conf(5) manual page as well! #
By far, the most common question I get about the agent is "why won’t it work?", when really it should be "how do I configure the agent to allow me to access it?"
# # # #
The following lines change the access permissions of the agent so that the COMMUNITY string provides read-only access to your entire NETWORK (EG: 10.10.10.0/24), and read/write access to only the localhost (127.0.0.1, not its real ipaddress).
By default, the agent responds to the "public" community for read only access, if run out of the box without any configuration file in place. The following examples show you other ways of configuring the agent so that you can change the community names, and give yourself write access as well.
# For more information, read the FAQ as well as the snmpd.conf(5)
122
8
Configuration du serveur
# manual page. #### # First, map the community name (COMMUNITY) into a security name # (local and mynetwork, depending on where the request is coming # from): rocommunity mrtg # sec.name source #com2sec paranoid default #com2sec readonly default #com2sec readwrite default com2sec readonly default mrtg
community public public private
#### # Second, map the security names into group names: # group group group group group group group group group
#### # Third, create a view for us to let the groups have rights to: # incl/excl subtree mask view all included .1 80 view system included .iso.org.dod.internet.mgmt.mib-2.system #### # Finally, grant the 2 groups access to the 1 view with different # write permissions: # context access MyROSystem "" access MyROGroup "" access MyRWGroup ""
############################################################################### # System contact information # # It is also possible to set the sysContact and sysLocation system # variables through the snmpd.conf file: syslocation Ville (Pays) syscontact Responsable # Example output of snmpwalk: # % snmpwalk -v 1 localhost public system # system.sysDescr.0 = "Debian GNU/Linux" # system.sysObjectID.0 = OID: enterprises.ucdavis.ucdSnmpAgent.sunos4 # system.sysUpTime.0 = Timeticks: (595637548) 68 days, 22:32:55 # system.sysContact.0 = "Root " # system.sysName.0 = "name" # system.sysLocation.0 = "Right here, right now." # system.sysServices.0 = 72
############################################################################### # Process checks. # # The following are examples of how to use the agent to check for # processes running on the host. The syntax looks something like: # # proc NAME [MAX=0] [MIN=0] # # NAME: the name of the process to check for. It must match # exactly (ie, http will not find httpd processes). # MAX: the maximum number allowed to be running. Defaults to 0. # MIN: the minimum number to be running. Defaults to 0. # # #
Examples:
124
8
Configuration du serveur
# Make sure mountd is running #proc mountd # Make sure there are no more than 4 ntalkds running, but 0 is ok too. #proc ntalkd 4 # Make sure at least one sendmail, but less than or equal to 10 are running. proc sendmail 10 1 # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
A snmpwalk of the process mib tree would look something like this:
% snmpwalk -v 1 localhost public .1.3.6.1.4.1.2021.2 enterprises.ucdavis.procTable.prEntry.prIndex.1 = 1 enterprises.ucdavis.procTable.prEntry.prIndex.2 = 2 enterprises.ucdavis.procTable.prEntry.prIndex.3 = 3 enterprises.ucdavis.procTable.prEntry.prNames.1 = "mountd" enterprises.ucdavis.procTable.prEntry.prNames.2 = "ntalkd" enterprises.ucdavis.procTable.prEntry.prNames.3 = "sendmail" enterprises.ucdavis.procTable.prEntry.prMin.1 = 0 enterprises.ucdavis.procTable.prEntry.prMin.2 = 0 enterprises.ucdavis.procTable.prEntry.prMin.3 = 1 enterprises.ucdavis.procTable.prEntry.prMax.1 = 0 enterprises.ucdavis.procTable.prEntry.prMax.2 = 4 enterprises.ucdavis.procTable.prEntry.prMax.3 = 10 enterprises.ucdavis.procTable.prEntry.prCount.1 = 0 enterprises.ucdavis.procTable.prEntry.prCount.2 = 0 enterprises.ucdavis.procTable.prEntry.prCount.3 = 1 enterprises.ucdavis.procTable.prEntry.prErrorFlag.1 = 1 enterprises.ucdavis.procTable.prEntry.prErrorFlag.2 = 0 enterprises.ucdavis.procTable.prEntry.prErrorFlag.3 = 0 enterprises.ucdavis.procTable.prEntry.prErrMessage.1 = "No mountd process run enterprises.ucdavis.procTable.prEntry.prErrMessage.2 = "" enterprises.ucdavis.procTable.prEntry.prErrMessage.3 = "" enterprises.ucdavis.procTable.prEntry.prErrFix.1 = 0 enterprises.ucdavis.procTable.prEntry.prErrFix.2 = 0 enterprises.ucdavis.procTable.prEntry.prErrFix.3 = 0 Note that the errorFlag for mountd is set to 1 because one is not running (in this case an rpc.mountd is, but thats not good enough), and the ErrMessage tells you what’s wrong. The configuration imposed in the snmpd.conf file is also shown. Special Case: When the min and max numbers are both 0, it assumes you want a max of infinity and a min of 1.
You can also have programs run by the agent that return a single line of output and an exit code. Here are two examples. exec NAME PROGRAM [ARGS ...] NAME: PROGRAM: ARGS:
A generic name. The program to run. Include the path! optional arguments to be passed to the program
# a simple hello world #exec echotest /bin/echo hello world # Run a shell script containing: # # #!/bin/sh # echo hello world # echo hi there # exit 35 # # Note: this has been specifically commented out to prevent # accidental security holes due to someone else on your system writing # a /tmp/shtest before you do. Uncomment to use it. # #exec shelltest /bin/sh /tmp/shtest # # # # # # # # # #
############################################################################### # disk checks # # The agent can check the amount of available disk space, and make # sure it is above a set limit. # disk PATH [MIN=100000] # # PATH: mount path to the disk in question. # MIN: Disks with space below this value will have the Mib’s errorFlag set. # Default value = 100000. # Check the / partition and make sure it contains at least 10 megs. disk / 10000 # # # # # # # # # # #
If the 1 minute load average is above this limit at query time, the errorFlag will be set. Similar, but for 5 min average. Similar, but for 15 min average.
############################################################################### # Extensible sections. # # This alleviates the multiple line output problem found in the # previous executable mib by placing each mib in its own mib table: # Run a shell script containing: # # #!/bin/sh
Now the Output has grown to two lines, and we can see the ’hi there.’ output as the second line from our shell script.
# # # # #
Other ideas:
Note: this has been specifically commented out to prevent accidental security holes due to someone else on your system writing a /tmp/shtest before you do. Uncomment to use it. exec .1.3.6.1.4.1.2021.50 shelltest /bin/sh /tmp/shtest
Note that you must alter the mib.txt file to be correct if you want the .50.* outputs above to change to reasonable text descriptions.
Usage: pass MIBOID EXEC-COMMAND This will pass total control of the mib underneath the MIBOID portion of the mib to the EXEC-COMMAND. Note:
You’ll have to change the path of the passtest script to your
129
8
Configuration du serveur
# source directory or install it in the given location. # # Example: (see the script for details) # (commented out here since it requires that you place the # script in the right location. (its not installed by default)) # pass .1.3.6.1.4.1.2021.255 /bin/sh /usr/local/passtest # # # # # # # # # # # # # # #
% snmpwalk -v 1 localhost public .1.3.6.1.4.1.2021.255 enterprises.ucdavis.255.1 = "life the universe and everything" enterprises.ucdavis.255.2.1 = 42 enterprises.ucdavis.255.2.2 = OID: 42.42.42 enterprises.ucdavis.255.3 = Timeticks: (363136200) 42 days, 0:42:42 enterprises.ucdavis.255.4 = IpAddress: 127.0.0.1 enterprises.ucdavis.255.5 = 42 enterprises.ucdavis.255.6 = Gauge: 42 % snmpget -v 1 localhost public .1.3.6.1.4.1.2021.255.5 enterprises.ucdavis.255.5 = 42 % snmpset -v 1 localhost public .1.3.6.1.4.1.2021.255.1 s "New string" enterprises.ucdavis.255.1 = "New string"
# For specific usage information, see the man/snmpd.conf.5 manual page # as well as the local/passtest script used in the above example. Remplacez «Ville (Pays)» par les données appropriées, ainsi que le nom et l’adresse email du responsable. Vous pouvez maintenant relancer le serveur SNMP : /etc/init.d/snmpd stop /etc/init.d/snmpd start Vous remarquerez que nous n’utilisons pas l’option «restart» du script d’init de snmpd. En effet, son utilisation entraîne l’affichage de plusieurs messages d’erreur non justifiés.
8.17
MRTG, statistiques réseau
MRTG est lancé automatiquement par cron toutes les cinq minutes, et lance une requête SNMP vers chaque machine indiquée dans son fichier de configuration. Il met ensuite à jour les graphiques concernant chaque machine, ainsi que les pages HTML qui comportent ces graphiques. Voici son fichier de configuration, /etc/mrtg.cfg :
130
8
Configuration du serveur
###################################################################### # Multi Router Traffic Grapher -- Sample Configuration File ###################################################################### # This file is for use with mrtg-2.5.4c # Global configuration WorkDir: /var/www/etablissement/mrtg WriteExpires: Yes Title[^]: Traffic Analysis for Kilo[_]: 1024 Options[_]: growright PageTop[^]:
# client4.etablissement.org # ------------------------Title[client4]: client4.etablissement.org PageTop[client4]: client4.etablissement.org -Publicly available workstation (PC) Target[client4]: 2:mrtg@client4 Directory[client4]: client5 MaxBytes[client4]: 10485760 Timezone[client4]: Paris # client5.etablissement.org # ------------------------Title[client5]: client5.etablissement.org PageTop[client5]: client5.etablissement.org -Publicly available workstation (PC) Target[client5]: 2:mrtg@client5 Directory[client5]: client5 MaxBytes[client5]: 10485760 Timezone[client5]: Paris Vous pouvez changer les noms de machines, mais veillez à changer toutes les occurences ! Vous devrez aussi adapter l’option MaxBytes de chaque paragraphe, en fonction des possibilités des équipements réseau. Rappels : 1 byte = 1 octet, 1 octet = 8 bits (les capacités des équipements réseau sont exprimées en bits/s). La valeur donnée dans le fichier de configuration ci-dessus correspond à 100 Mbps. Il serait bon de vérifier l’affectation des interfaces réseau au niveau de snmpd. En effet, la ligne Target[client5]: 2:mrtg@client5 Indique à mrtg qu’il doit demander les statistiques concernant l’interface connue par snmpd sous le numéro 2, c’est-à-dire eth0 dans le cas de cette machine (l’interface 1 est le loopback (127.0.0.1) référencé lo0 et propre à chaque machine. Il n’y a aucun intérêt à surveiller cette interface). La vérification se fait de marnière simple. Prenons un exemple sur une machine possédant deux interfaces réseau : julien@arrakis:~$ snmpwalk localhost mrtg interfaces | grep eth interfaces.ifTable.ifEntry.ifDescr.2 = eth0 interfaces.ifTable.ifEntry.ifDescr.3 = eth1 interfaces.ifTable.ifEntry.ifType.2 = ethernetCsmacd(6) interfaces.ifTable.ifEntry.ifType.3 = ethernetCsmacd(6) Ici, l’interface eth0 est connue comme numéro 1 et l’interface eth1 comme numéro 2 par snmpd.
133
8
Configuration du serveur
Enfin, notez qu’il vaut mieux commenter les entrées correspondant aux hôtes qui ne sont pas encore en état de marche. Sans cela, cron vous fera parvenir un mail toutes les cinq minutes vous informant que telle machine ou telle autre était injoignable. Les statistiques pour l’interface interne de fremen seront dans le répertoire /var/www/mrtg/fremenint/, ou sur http ://www.etablissement.org/mrtg/fremen-int/.
8.18
Sauvegarde des données
Nous allons sauvegarder les données toutes les nuits en semaine, et tôt le dimanche matin le week-end, afin de ne pas perdre trop de données en cas de problème. Nous sauvegarderons les répertoires suivants : – le spool de mail : /var/spool/mail – les répertoires personnels : /home – le répertoire de configuration du système : /etc – les sites Web de l’établissement : /var/www ATTENTION : l’espace FTP anonyme sera également sauvegardé ! Deux problèmes se posent à nous : – l’installation du périphérique de sauvegarde – les fichiers ne doivent pas évoluer pendant la sauvegarde La résolution du premier problème est laissée à la discrétion de l’administrateur. La solution dépendant du matériel utilisée, je ne peux que difficilement en parler ici. Le deuxième problème peut se résoudre facilement à l’aide d’un petit script shell, tel que celui-ci : #! /bin/sh echo -e "\n *** Arret des services ***\n" date echo -e "\n" /etc/init.d/sendmail stop /etc/init.d/proftpd stop echo -e "\n *** Demarrage de la sauvegarde *** \n" tar -cvf /dev/ \ /etc /home /var/spool/mail /var/www echo -e "\n *** Sauvegarde terminee *** \n" echo -e "*** Redemarrage des services ***\n" /etc/init.d/sendmail start /etc/init.d/proftpd start
134
8
Configuration du serveur
echo -e "\n *** Procedure de sauvegarde terminée ***" date echo -e "\n" Enregistrez ceci dans un fichier /usr/local/bin/sauvegarde.sh, et rendez le fichier exécutable. Dans le fichier ci-dessus, remplacez «/dev/
» par la référence au fichier symbolique de /dev correspondant à votre périphérique de sauvegarde. Comme vous pouvez le voir, nous arrêtons Sendmail et ProFTPd avant de commencer la sauvegarde, ceci afin d’éviter que les fichiers se trouvant respectivement dans /var/spool/mail et /home ainsi que /var/www ne soient modifiés avant la fin de la sauvegarde. Nous allons encore une fois nous servir de cron pour lancer notre sauvegarde. Éditez la crontab de root et ajoutez la ligne : 5 22 * * 1-5,7
/usr/local/bin/sauvegarde.sh
Cron lancera le script de sauvegarde les lundis, mardis, mercredis, jeudis, vendredis, ainsi que les dimanches à 22h05 (en fait, 00h05 en heure française en été, et 23h05 en hiver). Si l’administrateur peut avoir un accès physique à la machine le week-end, il peut faire en sorte que les sauvegardes se fassent de la même manière le samedi soir. Prévoyez donc 6 ou 7 bandes de sauvegarde, selon que vous pouvez ou non accéder à la machine durant le week-end. Et, surtout, n’oubliez pas de changer les bandes et de les étiqueter !
8.18.1
Restauration des données
Au cas où il arriverait le moindre problème vous obligeant à restaurer une sauvegarde, voici la marche à suivre : – remédier au problème ayant causé cette situation (défaillance d’un disque, orage, etc. . .) – réinstaller un système sur la machine, comportant les mêmes logiciels que précédemment – configurer le lecteur de bandes – prendre votre sauvegarde la plus récente ET dans le meilleur état (cela ne vas pas toujours de pair) – lancer la restauration grâce à la commande : tar -xvzf /dev/
/ Les répertoires sauvegardés seront alors restaurés. Notez que vous pouvez également ne restaurer qu’un seul de ces répertoires. Pour plus de détails, consultez la documentation de GNU Tar.
135
9 Configuration du serveur d’accès 9.1
Compilation du noyau
Comme pour le serveur, nous avons besoin de certaines fonctionnalités qui ne sont pas incluses dans le noyau standard. Commencez par récupérer les sources du dernier noyau 2.2.x (le kernel 2.4.x est supporté par Debian 2.2r3, mais la configuration du masquerading plus loin dans ce document n’est valable que pour un kernel 2.2.x) sur ftp.fr.kernel.org, par exemple. Placez l’archive dans le répertoire /usr/src. Vérifiez qu’il n’y a pas de répertoire nommé «linux», s’il y en a un, renommez-le. Maintenant, décompressez l’archive contenant les sources du noyau. Un nouveau répertoire «linux» est apparu, celui-ci contient les sources du noyau. Allez dans ce répertoire, et lancez la commande (le paquetage libncurses-dev doit être installé) : make menuconfig Après la compilation de quelques fichiers, une interface graphique apparaît. Nous allons maintenant configurer le noyau Linux. En dehors des composants requis pour la bonne marche de la machine, veillez plus particulièrement aux options suivantes : – utilisation des pilotes expérimentaux – optimisation pour la famille de processeurs utilisée par la machine – utilisation des modules noyau – nous mettons les pilotes des différentes cartes Ethernet dans le noyau et non pas en module – dans les options réseau, nous activons la fonctionnalité «IP : firewalling» – le support pour les «UNIX98 PTYs» ; nous laissons la valeur par défaut (256) – dans la section «systèmes de fichiers», nous incluons dans le noyau le support pour le système «/proc» ainsi que celui pour le système «/dev/pts», sans oublier d’inclure le support pour le «deuxième système de fichiers étendu (ext2fs)». – dans la même section, nous plaçons en modules les supports pour les systèmes de fichiers FAT, VFAT, MSDOS, UMSDOS, ISO9660 – dans la section «systèmes de fichiers réseau», nous plaçons en module le support pour le système de fichiers NFS – dans la section «kernel hacking», activez l’option «Magic SysRQ key». Cette option permet de communiquer avec le noyau lors d’un plantage sévère de la machine afin d’effectuer les opérations de dernière minute (synchronisation des partitions montées, etc. . .) avant de redémarrer la machine. Lisez la documentation concernant cette fonctionnalité dans le fichier Documentation/sysrq.txt. Maintenant, sauvegardez la configuration et quittez l’interface. Puis compilez et installez le noyau. Configurez LILO de manière à pouvoir démarrer sur l’un ou l’autre des deux noyaux
136
9
Configuration du serveur d’accès
présents, c’est-à-dire le noyau d’origine et celui que nous venons de compiler. Le fichier de configuration de LILO doit ressembler à celui-ci : # /etc/lilo.conf - See: ‘lilo(8)’ and ‘lilo.conf(5)’, # --------------‘install-mbr(8)’, ‘/usr/share/doc/lilo/’, # and ‘/usr/share/doc/mbr/’. # # # # # # # # #
+---------------------------------------------------------------+ | !! Reminder !! | | | | Don’t forget to run ‘lilo’ after you make changes to this | | conffile, ‘/boot/bootmess.txt’, or install a new kernel. The | | computer will most likely fail to boot if a kernel-image | | post-install script or you don’t remember to run ‘lilo’. | | | +---------------------------------------------------------------+
# Specifies the boot device. This is where Lilo installs its boot # block. It can be either a partition, or the raw device, in which # case it installs in the MBR, and will overwrite the current MBR. # boot=/dev/hda # Specifies the device that should be mounted as root. (‘/’) # root=/dev/hda5 # # # # # # # #
Enable map compaction: Tries to merge read requests for adjacent sectors into a single read request. This drastically reduces load time and keeps the map smaller. Using ‘compact’ is especially recommended when booting from a floppy disk. It is disabled here by default because it doesn’t always work. compact
# Installs the specified file as the new boot sector # install=/boot/boot.b # Specifies the location of the map file # map=/boot/map # You can set a password here, and uncomment the ‘restricted’ lines
137
9 # # # # # # # # # # # # # # # # #
Configuration du serveur d’accès
in the image definitions below to make it so that a password must be typed to boot anything but a default configuration. If a command line is given, other than one specified by an ‘append’ statement in ‘lilo.conf’, the password will be required, but a standard default boot will not require one.
This will, for instance, prevent anyone with access to the console from booting with something like ‘Linux init=/bin/sh’, and thus becoming ‘root’ without proper authorization. Note that if you really need this type of security, you will likely also want to use ‘install-mbr’ to reconfigure the MBR program, as well as set up your BIOS to disallow booting from removable disk or CD-ROM, then put a password on getting into the BIOS configuration as well. Please RTFM ‘install-mbr(8)’. password=tatercounter2000
# Specifies the number of deciseconds (0.1 seconds) LILO should # wait before booting the first image. # delay=100 # laissons-nous 10 secondes pour choisir le noyau # # # # # # # # # # # #
You can put a customized boot message up if you like. If you use ‘prompt’, and this computer may need to reboot unattended, you must specify a ‘timeout’, or it will sit there forever waiting for a keypress. ‘single-key’ goes with the ‘alias’ lines in the ‘image’ configurations below. eg: You can press ‘1’ to boot ‘Linux’, ‘2’ to boot ‘LinuxOLD’, if you uncomment the ‘alias’. message=/boot/bootmess.txt prompt single-key delay=100 timeout=100
# Specifies the VGA text mode at boot time. (normal, extended, ask, ) # # vga=ask # vga=9 # vga=normal # Kernel command line options that apply to all installed images go
138
9
Configuration du serveur d’accès
# here. See: The ‘boot-prompt-HOWO’ and ‘kernel-parameters.txt’ in # the Linux kernel ‘Documentation’ directory. # # append="" # Boot up Linux by default. # default=Linux image=/boot/vmlinuz-2.2.16 label=Linux read-only # restricted # alias=1
If you have another OS on this machine to boot, you can uncomment the following lines, changing the device name on the ‘other’ line to where your other OS’ partition is. other=/dev/hda4 label=HURD restricted alias=3
Ce fichier est le fichier livré avec Debian GNU/Linux. Seuls les paragraphes concernant les deux noyaux ont été modifiés. Ici, le nouveau noyau sera démarré par défaut. L’ancien noyau est accessible sous le nom «linux-orig». Pour y accéder, appuyez sur la touche «tabulation» lors du prompt «LILO : » ; vous verrez apparaître la liste des noyaux disponibles. Sélectionnez le noyau à démarrer et appuyez sur «Entrée». Lancez /sbin/lilo de manière à mettre à jour le secteur de boot de la machine. Si tout se passe bien, vous pouvez essayer de redémarrer la machine. Si LILO vous dit que votre noyau est trop gros, soit vous avez inclus beaucoup trop de choses dedans, auquel cas vous pouvez le reconfigurer et faire la chasse aux options inutiles, soit vous pouvez utiliser «make bzImage» pour le compiler. Si la machine redémarre sans problèmes, bravo, sinon recommencez, vous avez certainement oublié quelque chose. Une fois la machine redémarrée avec son nouveau noyau, et si tout se passe bien, sauvegardez le fichier /usr/src/linux/.config (notez le «.», ce qui signifie que c’est un fichier caché) dans
139
9
Configuration du serveur d’accès
le répertoire personnel de root (/root), sous un nom évocateur. Vous pourrez charger ce fichier pour configurer le prochain kernel, ce qui vous évitera de devoir saisir à nouveau la configuration.
9.2
Interfaces réseau
Nous avons ici deux interfaces réseau, dont seulement une est configurée. Nous nous arrangerons pour obtenir ce schéma (du moins, je me base sur ceci) : – eth0 ←→ Internet – eth1 ←→ réseau local La première interface, eth0, a été configurée durant l’installation, elle est donc théoriquement en état de marche. Nous allons configurer notre deuxième interface, eth1. La configuration des interfaces est contenue dans le fichier /etc/network/interfaces. Éditez-le à l’aide de votre éditeur favoris. Vous devez arriver à quelque chose comme cela : # /etc/network/interfaces -- configuration file for ifup(8), ifdown(8) # The loopback interface iface lo inet loopback # The first network card - this entry was # created during the Debian installation iface eth0 inet static address xxx.xxx.xxx.xxx netmask xxx.xxx.xxx.xxx hostname sardaukar.etablissement.org # ici, la machine s’appelle "sardaukar" # # # #
Ici, l’interface eth0, configurée avec une IP statique (static). Remplacez xxx.xxx.xxx.xxx par l’adresse IP assignée à la machine puis remplacez xxx.xxx.xxx.xxx par le masque de réseau adéquat.
iface eth1 inet static address 10.1.0.2 netmask 255.255.255.0 hostname sardaukar.etablissement.org # Ici, l’interface eth1, configurée avec une IP statique (static) # Si le site utilise la classe 10.x.x.x, changez les adresses
140
9
Configuration du serveur d’accès
# du réseau local ; utilisez par exemple 192.168.1.2 (classe privée) # pour eth1. Sauvegardez le fichier, quittez votre éditeur et nous allons maintenant démarrer les différentes interfaces. Un script de démarrage est chargé de cela ; nous l’utilisons comme ceci : /etc/init.d/networking restart Le script va initialiser les différentes interfaces. Si tout se passe bien, l’utilitaire ifconfig doit vous donner quelque chose de ce genre : eth0
Et ce, pour chacune de nos deux interfaces, les données propres à chaque interface variant.
9.3
Bind, serveur DNS
Nous allons configurer un deuxième serveur DNS pour notre zone. Pourquoi ? Tout simplement parce qu’en cas de panne du premier serveur (serveur primaire), nous serions bien embêtés de ne pas en avoir un autre. Cela va aussi permettre de répartir la charge sur les deux serveurs. En plus des serveurs primaire et secondaire, il serait bien d’avoir un serveur tertiaire, hébergé par un site ami, juste «au cas où». Mais ce n’est pas indispensable. Nous arrêtons le serveur : /etc/init.d/bind stop
9.3.1
/etc/bind/named.conf
Dans le cas d’un serveur secondaire, le fichier de configuration va différer très légèrement. Le serveur ne sera plus configuré en tant que maître («master») mais en tant qu’esclave («slave») : // // // // // //
This is the primary configuration file for the BIND DNS server named. Please read /usr/share/doc/bind/README.Debian for information on the structure of BIND configuration files in Debian for BIND versions 8.2.1 and later, *BEFORE* you customize this configuration file.
If there is a firewall between you and nameservers you want to talk to, you might need to uncomment the query-source directive below. Previous versions of BIND always asked questions using port 53, but BIND 8.1 and later use an unprivileged port by default.
// query-source address * port 53; // // // //
If your ISP provided one or more IP addresses for stable nameservers, you probably want to use them as forwarders. Uncomment the following block, and insert the addresses replacing the all-0’s placeholder.
// forwarders { // 0.0.0.0; // }; }; // reduce log verbosity on issues outside our control logging { category lame-servers { null; }; category cname { null; }; }; // prime the server with knowledge of the root servers zone "." { type hint; file "/etc/bind/db.root"; }; // be authoritative for the localhost forward and reverse zones, and for // broadcast zones as per RFC 1912 zone "localhost" { type master; file "/etc/bind/db.local"; }; zone "127.in-addr.arpa" { type master; file "/etc/bind/db.127"; };
142
9
Configuration du serveur d’accès
zone "0.in-addr.arpa" { type master; file "/etc/bind/db.0"; }; zone "255.in-addr.arpa" { type master; file "/etc/bind/db.255"; }; // add entries for other zones below here
// notre zone "etablissement.org" zone "etablissement.org" { type slave; file "/var/cache/bind/masters/etablissement.org"; masters { yyy.yyy.yyy.yyy; }; };
// pour permettre la résolution inverse zone "xxx.xxx.xxx.in-addr.arpa" { type slave; file "/var/cache/bind/masters/xxx.xxx.xxx"; masters { yyy.yyy.yyy.yyy; }; }; // // // // // // //
remplacez xxx.xxx.xxx par l’inverse de l’adresse IP exemple : * nos adresses IP sont 213.166.193.178 et 213.166.193.179 dans ce cas, xxx.xxx.xxx.xxx = 193.166.213 Remplacez yyy.yyy.yyy.yyy par l’adresse IP du serveur primaire Ici, le serveur primaire est "fremen"
Dans le cas d’un serveur secondaire, nous n’avons pas besoin de nous préoccuper des fichiers de zones comme précédemment. Le serveur les constituera lui-même à partir du serveur primaire.
143
9
9.3.2
Configuration du serveur d’accès
Maintenance
Comme pour notre serveur primaire, ce serveur peut servir de cache pour nos machines clientes. Il faut donc là aussi mettre à jour régulièrement la liste des serveurs DNS principaux. Nous utilisons le même script qu’à la section 8.3.5 (page 55). Vous devez lancer le script une première fois avant de lancer le serveur. Il faut maintenir ce fichier à jour, nous allons donc lancer ce script périodiquement, grâce à cron. Éditez la crontab de root, puis ajoutez-y la ligne : 45 18 1 * *
/usr/local/bin/update-dns
Sauvegardez le fichier et quittez votre éditeur, cron s’occupe de tout.
9.3.3
Redémarrage de Bind
Nous pouvons maintenant redémarrer Bind : /etc/init.d/bind start Si le serveur ne démarre pas, examinez les logs ; Bind y consigne les erreurs et l’emplacement où elles ont été commises. Trouvez-les et corrigez-les, puis essayer de relancer le daemon.
9.3.4
/etc/resolv.conf
Ce fichier est utilisé par les routines de résolution de noms pour mener à bien leur mission. Il se présente comme ceci : domain etablissement.org search etablissement.org nameserver 127.0.0.1
9.3.5
/etc/nsswitch.conf
Ce fichier indique aux routines de résolution de noms les différents moyens à leur disposition, et l’ordre dans lequel elles doivent essayer ces différents moyens. Nous utiliserons ceci : # # # # #
/etc/nsswitch.conf Example configuration of GNU Name Service Switch functionality. If you have the ‘glibc-doc’ and ‘info’ packages installed, try: ‘info libc "Name Service Switch"’ for information about this file.
passwd: group: shadow:
compat compat compat
hosts:
files dns
144
9 networks:
files
protocols: services: ethers: rpc:
db db db db
netgroup:
nis
9.3.6
Configuration du serveur d’accès
files files files files
/etc/host.conf
Ce fichier sert également aux routines de résolution de noms pour déterminer quel système de résolution elles doivent utiliser. Il se présente comme ceci : order hosts,bind multi on
9.3.7
/etc/hosts
Ce fichier contient les adresses IP et les noms canoniques de différentes machines. Il n’est plus utilisé que par certains programmes, ou dans des cas bien précis. Voici celui de notre machine : # The following lines are desirable for IPv6 capable hosts # (added automatically by netbase upgrade) ::1 fe00::0 ff00::0 ff02::1 ff02::2 ff02::3
Ici, Sendmail sera utilisé comme serveur entrant secondaire1 . C’est-à-dire qu’il acceptera le courrier entrant et le renverra aussitôt à notre serveur principal, que nous avons configuré tout à l’heure. Nous commençons par arrêter le serveur : /etc/init.d/sendmail stop 1
Ou MX secondaire, MX signifiant «Mail eXchanger» (échangeur de courrier).
145
9
9.4.1
Configuration du serveur d’accès
/etc/mail/sendmail.cf
Nous utilisons ici aussi le kit M4 fourni avec Sendmail. Rendez-vous donc dans le répertoire /usr/share/sendmail/sendmail.cf, puis ouvrez un fichier nommé sendmail.mc. Nous utiliserons cette configuration :
include(‘./m4/cf.m4’)dnl dnl dnl Définition de certains éléments spécifiques au système dnl (emplacement de certains fichiers, ...) dnl OSTYPE(‘debian’)dnl dnl dnl Nous définissons certains emplacements dnl FEATURE(‘use_cw_file’,‘/etc/mail/local-host-names’)dnl FEATURE(‘use_ct_file’,‘/etc/mail/sendmail.ct’)dnl FEATURE(‘mailertable’,‘hash -o /etc/mail/mailertable’)dnl FEATURE(‘domaintable’,‘hash -o /etc/mail/domaintable’)dnl FEATURE(‘genericstable’,‘hash -o /etc/mail/genericstable’)dnl FEATURE(‘virtusertable’,‘hash -o /etc/mail/virtusertable’)dnl FEATURE(‘access_db’,‘hash -o /etc/mail/access’)dnl define(‘STATUS_FILE’, ‘/etc/mail/trusted-users’)dnl define(‘LOCAL_MAILER_PATH’, ‘/usr/bin/procmail’)dnl define(‘confCW_FILE’,‘/etc/mail/local-host-names’)dnl define(‘confCT_FILE’,‘/etc/mail/sendmail.ct’)dnl define(‘confSTATUS_FILE’, ‘/etc/mail/statistics’)dnl dnl dnl Nous rajoutons toujours le domaine en fin d’adresse dnl (ex.: To: root devient To: [email protected]) dnl FEATURE(‘always_add_domain’)dnl dnl dnl Nous définissons les mailer (protocoles) à utiliser dnl Ainsi que l’utilisation de procmail dnl FEATURE(‘local_procmail’)dnl MAILER(‘local’)dnl MAILER(‘smtp’)dnl MAILER(‘procmail’)dnl dnl dnl Permet de rediriger une adresse en "adresse.REDIRECT" dnl FEATURE(‘redirect’)dnl
146
9
Configuration du serveur d’accès
dnl dnl Protection anti-spam dnl FEATURE(‘dnsbl’,‘blackholes.mail-abuse.org’, ‘ Mail from $&{client_addr} rejected; see http://mail-abuse.org/cgi-bin/look’)d FEATURE(‘dnsbl’,‘dialups.mail-abuse.org’, ‘ Mail from dial-up rejected; see http://mail-abuse.org/dul/enduser.htm’)dnl FEATURE(‘no_default_msa’)dnl FEATURE(‘rbl’)dnl dnl dnl Permet de bloquer l’arrivée de courrier pour certains utilisateurs dnl FEATURE(‘blacklist_recipients’)dnl dnl dnl Taille maximum d’un message, en octets. Ici, 10 Mo. dnl define(‘confMAX_MESSAGE_SIZE’,‘10485760’)dnl dnl define(‘confAUTO_REBUILD’)dnl dnl dnl Message affiché lors de la connexion dnl define(‘confSMTP_LOGIN_MSG’, ‘sardaukar.etablissement.org Sendmail 8.9.3 Have a nice day !’)dnl dnl dnl Les durées après lesquelles les messages d’erreur sont envoyés dnl define(‘confTO_QUEUEWARN’,‘12h’)dnl define(‘confTO_QUEUEWARN_NORMAL’,‘12h’)dnl define(‘confTO_QUEUEWARN_URGENT’,‘12h’)dnl define(‘confTO_QUEUEWARN_NONURGENT’,‘12h’)dnl dnl dnl Nous interdisont certaines commandes, et nous plaçons dnl des avertissements de sécurité dans certains cas dnl define(‘confPRIVACY_FLAGS’, ‘‘authwarnings,novrfy,noexpn,noetrn’’)dnl dnl dnl Emplacement du fichier .forward dnl define(‘confFORWARD_PATH’, ‘$z/.forward.$w:$z/.forward+$h:$z/.forward’)dnl dnl dnl La personne qui doit recevoir les messages d’erreurs dnl define(‘confCOPY_ERRORS_TO’, ‘postmaster’)dnl dnl
147
9
Configuration du serveur d’accès
dnl Nombre maximum de destinataires pour un mail dnl define(‘confMAX_RCPTS_PER_MESSAGE’, ‘20’)dnl dnl dnl Nous masquons les noms de machines dnl MASQUERADE_AS(etablissement.org)dnl MASQUERADE_DOMAIN(*.etablissement.org)dnl FEATURE(‘masquerade_entire_domain’)dnl dnl dnl Nous relayons les machines listées dans /etc/mail/access dnl FEATURE(‘relay_hosts_only’)dnl dnl dnl Nous envoyons les mails considérés comme locaux à notre dnl serveur principal dnl define(‘LOCAL_RELAY’,‘esmtp:[xxx.xxx.xxx.xxx]’)dnl dnl dnl Nous définissons une machine à qui envoyer tous les mails dnl define(‘MAIL_HUB’,‘esmtp:[xxx.xxx.xxx.xxx]’)dnl dnl dnl Nous définissons quelle machine doit recevoir le courrier dnl du domaine dnl define(‘SMART_HOST’,‘esmtp:[xxx.xxx.xxx.xxx]’)dnl dnl dnl Dans les lignes précédentes, remplacez dnl xxx.xxx.xxx.xxx par l’adresse IP de fremen dnl Compilez le fichier avec la commande : m4 sendmail.mc > /etc/mail/sendmail.cf Ici aussi, vous aurez besoin des deux fichiers no_default_msa.m4 et dnsbl.m4 présents sur le CDROM. Copiez-les dans le sous-répertoire feature. Ces fichiers ne sont normalement pas nécessaires pour une version de sendmail supérieure ou égale à 8.10.x. Puis sauvegardez le fichier /etc/mail/sendmail.cf et copiez le nouveau sendmail.cf dans le répertoire /etc/mail.
9.4.2
/etc/mail/access
Comme tout à l’heure, ce fichier définit les droits d’accès de certains sites. Ici, nous le renseignons comme ceci :
Ce fichier contient les alias. Il n’est pas utile de s’en soucier ici, étant donné que tout mail, même local, sera renvoyé sur notre serveur principal. Il serait même dangereux de mettre en place des alias, car ceux-ci ne seraient pas respectés. Nous utiliserons donc le fichier de base : # # # # # # # # # #
@(#)aliases
8.2 (Berkeley) 3/5/94
Aliases in this file will NOT be expanded in the header from Mail, but WILL be visible over networks or from /bin/mail. >>>>>>>>>> >> NOTE >> >>>>>>>>>>
The program "newaliases" must be run after this file is updated for any changes to show through to sendmail.
# Basic system aliases -- these MUST be present. MAILER-DAEMON: postmaster postmaster: root # General redirections for pseudo accounts. bin: root daemon: root games: root ingres: root nobody: root system: root toor: root uucp: root # Well-known aliases. manager: root dumper: root operator: root abuse: root # trap decode to catch security attacks decode: root
149
9
Configuration du serveur d’accès
Enregistrez le fichier et lancez la commande : newaliases Sendmail a régénéré les aliases.
9.4.4
/etc/mail/domaintable
Ici non plus, nous ne servirons pas de ce fichier. Nous créons donc un fichier vide et le compilons : touch /etc/mail/domaintable makemap hash /etc/mail/domaintable.db < /etc/mail/domaintable
9.4.5
/etc/mail/genericstable
Nous ne nous servons pas de ce fichier. Nous créons un fichier vide et le compilons : touch /etc/mail/genericstable makemap hash /etc/mail/genericstable.db < /etc/mail/genericstable
9.4.6
/etc/mail/local-host-names
Ce fichier contient les différents noms sous lesquels la machine est connue. Sendmail s’en sert pour déterminer s’il doit ou non accepter un mail. Nous le renseignons comme ceci : sardaukar.etablissement.org ns2.etablissement.org Nous ne compilons pas ce fichier, Sendmail y accède directement.
9.4.7
/etc/mail/mailertable
Sur cette machine, nous nous servons de ce fichier afin de rediriger les mails vers notre serveur principal. Nous renseignons le fichier comme ceci : etablissement.org esmtp:[xxx.xxx.xxx.xxx] *.etablissement.org esmtp:[xxx.xxx.xxx.xxx] Où xxx.xxx.xxx.xxx est à remplacer par l’adresse IP du serveur principal, ici «fremen».
150
9
9.4.8
Configuration du serveur d’accès
/etc/mail/relay-domains
Nous n’utilisons pas ce fichier. Nous créons un fichier vide : touch /etc/mail/relay-domains
9.4.9
/etc/mail/sendmail.ct
Ce fichier contient les logins des personnes considérées comme sûres. Sendmail ne générera pas de message d’avertissement si ces personnes mentionnent une adresse différente de leur adresse «[email protected]». Nous y mettons bien sûr root : root
9.4.10
/etc/mail/service.switch
Ce fichier indique à Sendmail de quels moyens il dispose pour se renseigner sur un utilisateur, un nom de machine ou sur ses aliases : # /etc/mail/service.switch # # This is the format that sendmail expects (no colon after the service) # passwd files hosts files dns aliases files Ce fichier ne se compile pas.
9.4.11
/etc/mail/virtusertable
Nous n’utilisons pas ce fichier. Nous créons un fichier vide et le compilons : touch /etc/mail/virtusertable makemap hash /etc/mail/virtusertable.db < /etc/mail/virtusertable
9.4.12
Redémarrage de Sendmail
Nous pouvons maintenant redémarrer Sendmail : /etc/init.d/sendmail start Si Sendmail ne redémarre pas, il y a une erreur quelque part. Il devrait vous l’indiquer. Vérifiez que Sendmail est effectivement en fonction en vous connectant sur le port 25 (SMTP) : telnet localhost 25 Si tout va bien, Sendmail vous accueille, sinon vous obtenez le message «Connection refused.». Vous mettez fin à la connexion avec Sendmail par la commande «quit».
151
9
9.5
Configuration du serveur d’accès
NFS
Nous commençons par arrêter le service nfs-common : /etc/init.d/nfs-common stop
9.5.1
/etc/hosts
Pour que le système puisse monter le volume NFS, le serveur doit figurer dans le fichier /etc/hosts :
# The following lines are desirable for IPv6 capable hosts # (added automatically by netbase upgrade) ::1 fe00::0 ff00::0 ff02::1 ff02::2 ff02::3
Pour que le système monte tout seul le volume NFS au démarrage, nous devons ajouter une ligne à notre fichier /etc/fstab. Voici ce que nous obtenons :
# /etc/fstab: static file system information. # # /dev/hda5 / ext2 defaults,errors=remount-ro 0 1 /dev/hda6 none swap sw 0 0 proc /proc proc defaults 0 0 # Uncomment the following entry if you use a 2.2.x or newer kernel for # UNIX98-style pty handling none /dev/pts devpts gid=5,mode=620 0 0 /dev/fd0 /floppy auto defaults,user,noauto 0 0 /dev/cdrom /cdrom iso9660 defaults,ro,user,noauto 0 0 /dev/hda1 /boot ext2 rw 0 2 fremen:/home /home nfs rsize=1024,wsize=1024 0 0
152
9
9.5.3
Configuration du serveur d’accès
Redémarrage de nfs-common
Nous pouvons redémarrer nfs-common : /etc/init.d/nfs-common start
9.5.4
Montage manuel des volumes NFS
Vérifiez que le volume NFS soit bien accessible dans le répertoire /home. S’il ne l’était pas, vous pouvez monter manuellement le volume par la commande : mount -o rsize=1024,wsize=1024,hard,intr fremen:/home /home
9.6
NIS
Lors de l’installation du paquetage, il vous est demandé d’entrer le domaine NIS. Saisissez «etablissement.org». Nous commençons par stopper le service NIS : /etc/init.d/nis stop
9.6.1
/etc/hosts
Nous devons modifier le fichier de manière à ce qu’il contienne toutes les autres machines. Nous arrivons à quelque chose comme ceci : # The following lines are desirable for IPv6 capable hosts # (added automatically by netbase upgrade) ::1 fe00::0 ff00::0 ff02::1 ff02::2 ff02::3
Si vous avez utilisé la classe d’adresses 192.168.x.x, remplacez par les valeurs idoines.
153
9
9.6.2
Configuration du serveur d’accès
/etc/defaultdomain
Dans ce fichier est configuré le nom de domaine NIS que nous utilisons :
etablissement.org
9.6.3
/etc/init.d/nis
Nous devons indiquer au script de démarrage que seul le client NIS est utilisé ici. Il faut éditer le script :
#!/bin/sh # # /etc/init.d/nis Start NIS (formerly YP) daemons. # # # Set to "false", "slave" or "master". NISSERVER=false NET="/usr/sbin" test -f $NET/ypbind -a -f /etc/defaultdomain || exit 0 [...]
9.6.4
/etc/yp.conf
Dans ce fichier, nous indiquons au client NIS qui est le serveur. Cela évite que le client parcours le réseau à la recherche de son serveur :
# # yp.conf # # # # #
Configuration file for the ypbind process. You can define NIS servers manually here if they can’t be found by broadcasting on the local net (which is the default). See the manual page of ypbind for the syntax of this file.
ypserver fremen.etablissement.org
9.6.5
/etc/passwd
Pour utiliser le service NIS, nous devons modifier le fichier /etc/passwd :
154
9
Configuration du serveur d’accès
root:x:0:0:root:/root:/bin/bash daemon:x:1:1:daemon:/usr/sbin:/bin/sh bin:x:2:2:bin:/bin:/bin/sh sys:x:3:3:sys:/dev:/bin/sh sync:x:4:100:sync:/bin:/bin/sync games:x:5:100:games:/usr/games:/bin/sh man:x:6:100:man:/var/cache/man:/bin/sh lp:x:7:7:lp:/var/spool/lpd:/bin/sh mail:x:8:8:mail:/var/spool/mail:/bin/sh news:x:9:9:news:/var/spool/news:/bin/sh uucp:x:10:10:uucp:/var/spool/uucp:/bin/sh proxy:x:13:13:proxy:/bin:/bin/sh majordom:x:30:31:Majordomo:/usr/lib/majordomo:/bin/sh postgres:x:31:32:postgres:/var/lib/postgres:/bin/sh www-data:x:33:33:www-data:/var/www:/bin/sh backup:x:34:34:backup:/var/backups:/bin/sh msql:x:36:36:Mini SQL Database Manager:/var/lib/msql:/bin/sh operator:x:37:37:Operator:/var:/bin/sh list:x:38:38:SmartList:/var/list:/bin/sh irc:x:39:39:ircd:/var:/bin/sh gnats:x:41:41:Gnats Bug-Reporting System:/var/lib/gnats/gnats-db:/bin/sh nobody:x:65534:65534:nobody:/home:/bin/sh telnetd:x:101:101::/usr/lib/telnetd:/bin/false identd:x:100:65534::/var/run/identd:/bin/false +julien::::::: +:*::::::/etc/NoShell julien:x:1000:1000:Julien BLACHE,,,:/home/julien:/bin/bash autre:x:1001:1001:Un autre utilisateur,,,:/home/autre:/bin/bash Dans cette exemple, tous les utilisateurs listés avant les lignes +julien::::::: +:*::::::/etc/NoShell peuvent utiliser la machine. Tout ceux listés après ne peuvent pas, à l’exception de l’utilisateur «julien». Faites donc très attention lorsque vous ajoutez ces lignes. D’autre part, le nombre de « :» est important ! Notez qu’il n’y a pas d’espace entre les « :». Sur cette machine, faites en sorte que vous soyez le seul à pouvoir ouvrir une session sous un compte normal (différent de root). Il n’est pas indispensable que votre utilisateur soit déclaré dans le fichier /etc/passwd de cette machine.
9.6.6
/etc/group
Nous devons faire le même genre de modification dans ce fichier :
155
9
Configuration du serveur d’accès
root:x:0: daemon:x:1: bin:x:2: sys:x:3: adm:x:4: tty:x:5: disk:x:6: lp:x:7:lp,julien mail:x:8: news:x:9: uucp:x:10: proxy:x:13: kmem:x:15: dialout:x:20:julien fax:x:21: voice:x:22: cdrom:x:24:julien floppy:x:25: tape:x:26: sudo:x:27: audio:x:29:julien dip:x:30: majordom:x:31:majordom postgres:x:32: www-data:x:33: backup:x:34: msql:x:36: operator:x:37: list:x:38: irc:x:39: src:x:40: gnats:x:41: shadow:x:42: utmp:x:43:telnetd video:x:44: staff:x:50:julien games:x:60: users:x:100: nogroup:x:65534: telnetd:x:101: +::: julien:x:1000: autre:x:1001: Attention, ici aussi, le nombre de « :» est important ! Remarquez encore qu’il n’y a pas
156
9
Configuration du serveur d’accès
d’espace entre les « :».
9.6.7
Redémarrage de NIS
Nous pouvons maintenant redémarrer NIS : /etc/init.d/nis start
9.7
Permettre l’accès à Internet - firewalling et masquerading
Les adresses IP assignées à nos machines clientes ne sont pas publiques. De ce fait, elles ne peuvent accéder à Internet sans l’aide de notre serveur d’accès. Nous en profiterons pour les protéger quelque peu. Pour configurer les fonctionnalités de firewalling2 et de masquerading3 du noyau Linux, nous utiliserons le script FireMasq. Ce script est une interface à l’utilitaire ipchains utilisé pour configurer ces deux fonctions. Étant donnée la topologie de notre réseau et nos besoins, cela nous suffira amplement. Il est bien sûr toujours possible d’utiliser ipchains directement.
9.7.1 /sbin/firemasq.up.sh Ce script sera lancé automatiquement lorsque les interfaces de la machine auront été configurées. Il configurera les fonctionnalités de firewalling et de masquerading de façon adéquate. #!/bin/sh # Masquerading Firewall # Script for IPChains on Linux 2.2.14 kernel # Released under the GNU GPL (http://www.fsf.org/copyleft/gpl.html) # Copyleft 2000 by Dr. Teeth (this is open source, hack away...) # [email protected] # Check http://northernlights.bizland.com for new versions of this program # and for other computer security related tools and information. # # # # # 2 3
This is a script for any box running ipchains on a Linux 2.2.x kernel (RedHat 6.x, Mandrake 7.x, etc). In particular, this script is for a box with a dial-up internet connection; it will turn the box into a firewall with masquerading services. All clients that connect to the firewall via a local network can simultaneously connect to the Internet, or any Protection des machines par le biais d’une machine filtrant le trafic réseau entrant et sortant. Masquage d’adresses IP. Le masquerading permet d’utiliser une connexion avec plusieurs machines, une machine se chargeant de masquer toutes les autres.
157
9
Configuration du serveur d’accès
# other network segment the firewall is connected to. This script can also # be used for today’s "high speed internet access" enabled machines, for # example machines connected to cable modems and dsl routers. # # # #
If you do not need masquerading servives, but you still want to setup a firewall for a dial-up, dsl, cable modem, or ethernet connection on a single computer, you can download the script "firedog" from the Northern Lights Group’s site at http://northernlights.bizland.com.
# All denied packets are logged via the kernel’s packet logging facilities. # Check ’/var/log/messages’ on most systems for a log of denied traffic... # # # # #
Any clients using masquerading will "borrow" the IP address of the firewall router, so outside machines will always see the firewall, not any of the clients on the LAN. This is actually a nice side effect of masquerading, as outsiders can’t easily get a picture of what’s on the inside of the firewall if they never see the LAN clients’ IP addresses.
# # # # # # #
Remember that most dial-up connections have a unique IP address with every connection. While you could manually start and stop the firewall, I would highly suggest storing this executable in ’/sbin’ and then starting it by adding the line ’/sbin/firemasq’ to the end of ’/etc/ppp/ip-up’ (at the next-to-last line, before the line ’exit 0’). This will automatically start the firewall with the correct IP on every connection, even when the connection is lost and it redials.
# Copy the script ’firemasq.down’ to ’/sbin’ as well, then you can deactivate # the firewall with a simple ’firemasq.down’ command if needed. # # # # #
This script sets up more than adaquate protection for a dial-up connection. Most services are blocked from the outside but not from the inside. For example, you can still telnet, ftp, etc. the firewall from the LAN, but hosts on the Internet cannot. You may want to add more sections to block the known cable modem nets in your area (think script kiddie protection).
# # # # #
There is a further layer of protection for LAN clients who use IP’s from the "private" ranges ’10.x.x.x’, ’172.16.x.x - 172.31.x.x’, and ’192.168.0.x - 192.168.255.x’. These clients are in the Internet’s "blackhole", and routers are not capable of directing traffic to these "private" hosts.
# # # #
You will need to edit settings for your network, changing the network addresses and devices if needed. The path for ipchains is probablly okay, but you can change it if nessesary. You only have to change this information in the beginning of the script (below). The script will take care of the
158
9
Configuration du serveur d’accès
# rest. # You can stop a certain line or section from executing by adding a pound ’#’ # character to the begginning of the line... # Advanced users already know they can add lines with ’$IPCHAINS [options]’. # run ’man ipchains’ for more info... # Change IPCHAINS to the correct path for your system IPCHAINS=/sbin/ipchains # Change INETDEV to the network device connceted to the Internet (ppp0/eth0) # This is ppp0 by default for dial-up connections. Most cable modem users # will probably want eth0 or possibly eth1. When in doubt look at the command # ’ifconfig’. INETDEV="eth0" # Change LAN to the correct network address and network mask for your LAN # this can be found by using ifconfig from one of the clients LAN="10.0.1.0/24" # Change LANDEV to the network device connected to your LAN LANDEV="eth1" # There should be no need to change this LOCALIP=‘ifconfig $LANDEV | grep inet | cut -d : -f 2 | cut -d \ echo echo echo echo echo echo echo echo echo
"" "FireMasq version 0.7 by Dr. Teeth (2000)" "---------------------------------------------------------" "Local Network Device: $LANDEV" "Local IP: $LOCALIP" "Local Network Address: $LAN" "External Network Device: $INETDEV" "---------------------------------------------------------" ""
Ce script sera exécuté à l’arrêt de la machine. Bien qu’il ne soit pas spécialement utile à ce moment-là. Il est utile en cas de changement sur les interfaces (adresses IP par exemple). Les règles de masquerading et firewalling seront alors remises à zéro.
Éditez le fichier /etc/modules et vérifiez que les modules ip_masq_ftp, ip_masq_irc, ip_masq_cuseeme, ip_masq_raudio sont listés dans ce fichier. S’ils ne le sont pas, rajoutez-les puis sauvegardez le fichier. Ce fichier est consulté au démarrage de la machine et permet de charger automatiquement les modules noyau qui y sont mentionnés. Les lignes commençant par «#» sont ignorées. Ces modules permettent aux machines clients d’utiliser certains protocoles (FTP, ICQ, IRC et RealAudio) qui ne peuvent être utilisés lorsque la machine se trouve derrière une passerelle comme la notre. Lancez la commande lsmod et observez sa sortie. Si les modules cités ci-dessus n’apparaissent pas dans la liste, exécutez les commandes : insmod insmod insmod insmod
Ce script sera exécuté au démarrage de la machine par init et appellera /sbin/firemasq.up.sh pour mettre en place les règles de firewalling et masquerading. Il pourra ensuite être utilisé comme tous les autres scripts d’init pour stopper/réactiver ces fonctionnalités.
162
9
Configuration du serveur d’accès
#!/bin/sh # Simple init script for firemasq by Julien BLACHE. # Licensed under the GNU GPL. test -x /sbin/firemasq.up.sh || exit 0 test -x /sbin/firemasq.down.sh || exit 0 test -x /sbin/ipchains || exit 0 case "$1 in start) echo -n "Setting up firewalling/masquerading rules:" /sbin/firemasq.up.sh echo " firemasq.up." ;; stop) echo -n "Flushing firewalling/masquerading rules:" /sbin/firemasq.down.sh echo " firemasq.down." ;; restart) echo -n "Resetting firewalling/masquerading rules:" /sbin/firemasq.up.sh echo " done." ;; *) echo "Usage: /etc/init.d/firemasq {start|stop|restart}" >&2 exit 1 ;; esac exit 0
Il nous faut faire quelques liens symboliques pour installer convenablement ce script : cd cd cd cd cd cd cd cd
Nous utilisons notre script : /etc/init.d/firemasq start
9.8
Serveur proxy
En milieu scolaire, nous ne pouvons nous permettre de fournir un accès brut au Web. Nous devons filtrer certains sites. Nous utiliserons le serveur proxy Squid et SquidGuard, un redirecteur pour Squid. Le travail du redirecteur consiste à comparer les adresses des sites demandés au proxy avec le contenu de ses bases de données. Si le résultat est positif, SquidGuard prendra une décision différente selon la base qui a produit ce résultat, et informera Squid de la suite à donner à la requête. Si le résultat est négatif, Squid en sera informé, et la requête s’effectuera. Tout ceci est presque transparent pour l’utilisateur, excepté qu’il ne pourra accéder à certains sites et ne verra quasiment aucune bannière de publicité. Il existe des listes noires de sites toutes prêtes pour SquidGuard, disponibles sur le site4 du projet. Nous nous en servirons afin de filtrer les sites proposant des contenus pornographiques, traitant de warez5 ou de cracking6 et les publicités. L’administrateur du site pourra, s’il le souhaite, utiliser l’une ou l’autre des listes disponibles, telles celles traitant des sites de jeux d’argent ou de ceux permettant le téléchargement libre d’enregistrement audio (MP3 notamment) ou vidéo illégaux. Pour justifier ce filtrage, outre le bon sens, rappelons l’article 227-24 du Nouveau Code Pénal : Article 227-24 Le fait soit de fabriquer, de transporter, de diffuser par quelque moyen que ce soit et quel qu’en soit le support un message à caractère violent ou pornographique ou de nature à porter gravement atteinte à la dignité humaine, soit de faire commerce d’un tel message, est puni de trois ans d’emprisonnement et de 500.000 F d’amende lorsque ce message est susceptible d’être vu ou perçu par un mineur. Lorsque les infractions prévues au présent article sont soumises par la voie de la presse écrite ou audiovisuelle, les dispositions particulières des lois qui régissent ces matières sont applicables en ce qui concerne la détermination des personnes responsables.
9.8.1
Squid - /etc/squid.conf
C’est le fichier de configuration central de Squid. Voici celui que nous utiliserons : 4
http://www.squidguard.org/blacklist/ Piratage de logiciels. 6 Piratage d’équipements électroniques et informatiques, à ne pas confondre avec «hacking» qui signifie «programmation», malgré ce que les médias s’évertuent à nous faire croire. 5
164
9 # # # # # # # # # # # # # # #
Configuration du serveur d’accès
WELCOME TO SQUID 2 -----------------This is the default Squid configuration file. You may wish to look at http://cache.is.co.za/squid/ for documentation, or the Squid home page (http://squid.nlanr.net/) for the FAQ. The default Squid config file shows what the defaults for various options happen to be. If you don’t need to change the default, you shouldn’t uncomment the line. Doing so may cause run-time problems. In some cases "none" refers to no default setting at all, whilst in other cases it refers to a valid option - the comments for that keyword indicate if this is the case.
# NETWORK OPTIONS # ----------------------------------------------------------------------------# TAG: http_port # The port number where Squid will listen for HTTP client # requests. Default is 3128, for httpd-accel mode use port 80. # May be overridden with -a on the command line. # # You may specify multiple ports here, but they MUST all be on # a single line. # http_port 8080 # TAG: icp_port # The port number where Squid sends and receives ICP requests to # and from neighbor caches. Default is 3130. To disable use # "0". May be overridden with -u on the command line. # #icp_port 3130 # TAG: htcp_port # The port number where Squid sends and receives ICP requests to # and from neighbor caches. Default is 4827. To disable use # "0". # # To enable this option, you must use --enable-htcp with the # configure script. #htcp_port 0
165
9
Configuration du serveur d’accès
# TAG: mcast_groups # This tag specifies a list of multicast groups which your server # should join to receive multicasted ICP requests. # # NOTE! Be very careful what you put here! Be sure you # understand the difference between an ICP _query_ and an ICP # _reply_. This option is to be set only if you want to RECEIVE # multicast queries. Do NOT set this option to SEND multicast # ICP (use cache_peer for that). ICP replies are always sent via # unicast, so this option does not affect whether or not you will # receive replies from multicast group members. # # You must be very careful to NOT use a multicast address which # is already in use by another group of caches. NLANR has been # assigned a block of multicast address space for use in Web # Caching. Plese write to us at [email protected] to receive # an address for your own use. # # If you are unsure about multicast, please read the Multicast # chapter in the Squid FAQ (http://squid.nlanr.net/Squid/FAQ/). # # Usage: mcast_groups 239.128.16.128 224.0.1.20 # # By default, Squid doesn’t listen on any multicast groups. # #mcast_groups none # # # # # # # # # # # # # # # # #
TAG: tcp_incoming_address TAG: tcp_outgoing_address TAG: udp_incoming_address TAG: udp_outgoing_address Usage: tcp_incoming_address 10.20.30.40 udp_outgoing_address fully.qualified.domain.name tcp_incoming_address is used connections from clients and tcp_outgoing_address is used servers and other caches. udp_incoming_address is used from other caches. udp_outgoing_address is used caches.
for the HTTP socket which accepts other caches. for connections made to remote for the ICP socket receiving packets for ICP packets sent out to other
The default behaviour is to not bind to any specific address.
166
9
Configuration du serveur d’accès
# # NOTE, udp_incoming_address and udp_outgoing_address can not # have the same value (unless it is 0.0.0.0) since they both use # port 3130. # tcp_incoming_address 10.0.1.2 tcp_outgoing_address xxx.xxx.xxx.xxx udp_incoming_address 10.0.1.2 udp_outgoing_address xxx.xxx.xxx.xxx # # Ici, remplacez xxx.xxx.xxx.xxx par l’adresse affectée à l’interface eth0 #
TAG: cache_peer To specify other caches in a hierarchy, use the format: hostname type http_port icp_port For example, # # # cache_peer cache_peer cache_peer
proxy_port: The port number where the cache listens for proxy requests. icp_port: Used for querying neighbor caches about objects. To have a non-ICP neighbor specify ’7’ for the ICP port and make sure the neighbor machine has the UDP echo port enabled in its /etc/inetd.conf file. options: proxy-only weight=n ttl=n
no-query default round-robin multicast-responder closest-only no-digest no-netdb-exchange no-delay login=user:password use ’proxy-only’ to specify that objects fetched from this cache should not be saved locally. use ’weight=n’ to specify a weighted parent. The weight must be an integer. The default weight is 1, larger weights are favored more. use ’ttl=n’ to specify a IP multicast TTL to use when sending an ICP request to this address. Only useful when sending to a multicast group. Because we don’t accept ICP replies from random hosts, you must configure other group members as peers with the ’multicast-responder’ option below. use ’no-query’ to NOT send ICP queries to this neighbor. use ’default’ if this is a parent cache which can be used as a "last-resort." You should probably only use ’default’ in situations where you cannot use ICP with your parent cache(s). use ’round-robin’ to define a set of parents which should be used in a round-robin fashion in the absence of any ICP queries. ’multicast-responder’ indicates that the named peer is a member of a multicast group. ICP queries will not be sent directly to the peer, but ICP replies will be accepted from it. ’closest-only’ indicates that, for ICP_OP_MISS replies, we’ll only forward CLOSEST_PARENT_MISSes and never FIRST_PARENT_MISSes.
168
9
Configuration du serveur d’accès
# use ’no-digest’ to NOT request cache digests from # this neighbor. # # ’no-netdb-exchange’ disables requesting ICMP # RTT database (NetDB) from the neighbor. # # use ’no-delay’ to prevent access to this neighbor # from influencing the delay pools. # # use ’login=user:password’ if this is a personal/workgroup # proxy and your parent requires proxy authentication. # # NOTE: non-ICP neighbors must be specified as ’parent’. # #cache_peer hostname type 3128 3130 # # # # # # # # # # # # # # # # # # # # # # # # # #
TAG: cache_peer_domain Use to limit the domains for which a neighbor cache will be queried. Usage: cache_peer_domain cache-host domain [domain ...] cache_peer_domain cache-host !domain For example, specifying cache_peer_domain parent.foo.net .edu has the effect such that UDP query packets are sent to ’bigserver’ only when the requested object exists on a server in the .edu domain. Prefixing the domainname with ’!’ means that the cache will be queried for objects NOT in that domain. NOTE: * Any number of domains may be given for a cache-host, either on the same or separate lines. * When multiple domains are given for a particular cache-host, the first matched domain is applied. * Cache hosts with no domain restrictions are queried for all requests. * There are no defaults. * There is also a ’cache_peer_access’ tag in the ACL section.
# # Modifying the neighbor type for specific domains is now # possible. You can treat some domains differently than the the # default neighbor type specified on the ’cache_peer’ line. # Normally it should only be necessary to list domains which # should be treated differently because the default neighbor type # applies for hostnames which do not match domains listed here. # #EXAMPLE: # cache_peer parent cache.foo.org 3128 3130 # neighbor_type_domain cache.foo.org sibling .com .net # neighbor_type_domain cache.foo.org sibling .au .de # TAG: icp_query_timeout (msec) # Normally Squid will automatically determine an optimal ICP # query timeout value based on the round-trip-time of recent ICP # queries. If you want to override the value determined by # Squid, set this ’icp_query_timeout’ to a non-zero value. This # value is specified in MILLISECONDS, so, to use a 2-second # timeout (the old default), you would write: # # icp_query_timeout 2000 # #icp_query_timeout 0 # TAG: mcast_icp_query_timeout (msec) # For Multicast peers, Squid regularly sends out ICP "probes" to # count how many other peers are listening on the given multicast # address. This value specifies how long Squid should wait to # count all the replies. The default is 2000 msec, or 2 # seconds. # #mcast_icp_query_timeout 2000 # # # # # # # # # # #
TAG: dead_peer_timeout (seconds) This controls how long Squid waits to declare a peer cache as "dead." If there are no ICP replies received in this amount of time, Squid will declare the peer dead and not expect to receive any further ICP replies. However, it continues to send ICP queries, and will mark the peer as alive upon receipt of the first subsequent ICP reply. This timeout also affects when Squid expects to receive ICP replies from peers. If more than ’dead_peer’ seconds have passed since the last ICP reply was received, Squid will not
170
9
Configuration du serveur d’accès
# expect to receive an ICP reply on the next query. Thus, if # your time between requests is greater than this timeout, you # will see a lot of requests sent DIRECT to origin servers # instead of to your parents. # #dead_peer_timeout 10 seconds # TAG: hierarchy_stoplist # A list of words which, if found in a URL, cause the object to # be handled directly by this cache. In other words, use this # to not query neighbor caches for certain objects. You may # list this option multiple times. # # The default is to directly fetch URLs containing ’cgi-bin’ or ’?’. # #hierarchy_stoplist cgi-bin ? # TAG: no_cache # A list of ACL elements which, if matched, cause the reply to # immediately removed from the cache. In other words, use this # to force certain objects to never be cached. # # You must use the word ’DENY’ to indicate the ACL names which should # NOT be cached. # # There is no default. We recommend you uncomment the following # two lines. # #acl QUERY urlpath_regex cgi-bin \? #no_cache deny QUERY
# OPTIONS WHICH AFFECT THE CACHE SIZE # ----------------------------------------------------------------------------# # # # # # # # # #
TAG: cache_mem (bytes) NOTE: THIS PARAMETER DOES NOT SPECIFY THE MAXIMUM PROCESS SIZE. IT PLACES A LIMIT ON ONE ASPECT OF SQUID’S MEMORY USAGE. SQUID USES MEMORY FOR OTHER THINGS AS WELL. YOUR PROCESS WILL PROBABLY BECOME TWICE OR THREE TIMES BIGGER THAN THE VALUE YOU PUT HERE ’cache_mem’ specifies the ideal amount of memory to be used for: * In-Transit objects
171
9
Configuration du serveur d’accès
# * Hot Objects # * Negative-Cached objects # # Data for these objects are stored in 4 KB blocks. This # parameter specifies the ideal upper limit on the total size of # 4 KB blocks allocated. In-Transit objects take the highest # priority. # # In-transit objects have priority over the others. When # additional space is needed for incoming data, negative-cached # and hot objects will be released. In other words, the # negative-cached and hot objects will fill up any unused space # not needed for in-transit objects. # # If circumstances require, this limit will be exceeded. # Specifically, if your incoming request rate requires more than # ’cache_mem’ of memory to hold in-transit objects, Squid will # exceed this limit to satisfy the new requests. When the load # decreases, blocks will be freed until the high-water mark is # reached. Thereafter, blocks will be used to store hot # objects. # # The values of cache_mem_low and cache_mem_high (below) can be # used to tune the use of the memory pool. When the high mark is # reached, in-transit and hot objects will be released to clear # space. When an object transfer is completed, it will remain in # memory only if the current memory usage is below the low water # mark. # # The default is 8 Megabytes. # cache_mem 8 MB # TAG: cache_swap_low (percent, 0-100) # TAG: cache_swap_high (percent, 0-100) # The low- and high-water marks for cache LRU replacement. LRU # replacement begins when the high-water mark is reached and ends # when enough objects have been removed and the low-water mark is # reached. Defaults are 90% and 95%. If you have a large cache, 5% # could be hundreds of MB. If this is the case you may wish to # set these numbers closer together. # cache_swap_low 90 cache_swap_high 95
172
9
Configuration du serveur d’accès
# TAG: maximum_object_size (bytes) # Objects larger than this size will NOT be saved on disk. The # value is specified in kilobytes, and the default is 4MB. If # you wish to get a high BYTES hit ratio, you should probably # increase this (one 32 MB object hit counts for 3200 10KB # hits). If you wish to increase speed more than your want to # save bandwidth you should leave this low. # maximum_object_size 4096 KB # TAG: ipcache_size (number of entries) # TAG: ipcache_low (percent) # TAG: ipcache_high (percent) # The size, low-, and high-water marks for the IP cache. # ipcache_size 1024 ipcache_low 90 ipcache_high 95 # TAG: fqdncache_size (number of entries) # Maximum number of FQDN cache entries. fqdncache_size 1024
TAG: cache_dir Usage: cache_dir Directory-Name Mbytes Level-1 Level2 You can specify multiple cache_dir lines to spread the cache among different disk partitions. ’Directory’ is a top-level directory where cache swap files will be stored. If you want to use an entire disk for caching, then this can be the mount-point directory. The directory must exist and be writable by the Squid process. Squid will NOT create this directory for you. If no ’cache_dir’ lines are specified, the following default will be used: /var/spool/squid. ’Mbytes’ is the amount of disk space (MB) to use under this
173
9
Configuration du serveur d’accès
# directory. The default is 100 MB. Change this to suit your # configuration. # # ’Level-1’ is the number of first-level subdirectories which # will be created under the ’Directory’. The default is 16. # # ’Level-2’ is the number of second-level subdirectories which # will be created under each first-level directory. The default # is 256. # cache_dir /var/spool/squid 100 16 256 # TAG: cache_access_log # Logs the client request activity. Contains an entry for # every HTTP and ICP request received. # cache_access_log /var/log/squid/access.log # TAG: cache_log # Cache logging file. This is where general information about # your cache’s behaviour goes. You can increase the amount of data # logged to this file with the "debug_options" tag below. # cache_log /var/log/squid/cache.log # TAG: cache_store_log # Logs the activities of the storage manager. Shows which # objects are ejected from the cache, and which objects are # saved and for how long. To disable, enter "none". There are # not really utilities to analyse this data, so you can safely # disable it. # cache_store_log /var/log/squid/store.log # # # # # # # # # # #
TAG: cache_swap_log Location for the cache "swap.log." This log file holds the metadata of objects saved on disk. It is used to rebuild the cache during startup. Normally this file resides in the first ’cache_dir’ directory, but you may specify an alternate pathname here. Note you must give a full filename, not just a directory. Since this is the index for the whole object list you CANNOT periodically rotate it! If you have more than one ’cache_dir’, these swap logs will have names such as:
174
9
Configuration du serveur d’accès
# # cache_swap_log.00 # cache_swap_log.01 # cache_swap_log.02 # # The numbered extension (which is added automatically) # corresponds to the order of the ’cache_dir’ lines in this # configuration file. If you change the order of the ’cache_dir’ # lines in this file, then these log files will NOT correspond to # the correct ’cache_dir’ entry (unless you manually rename # them). We recommend that you do NOT use this option. It is # better to keep these log files in each ’cache_dir’ directory. # #cache_swap_log # TAG: emulate_httpd_log on|off # The Cache can emulate the log file format which many ’httpd’ # programs use. To disable/enable this emulation, set # emulate_httpd_log to ’off’ or ’on’. The default # is to use the native log format since it includes useful # information that Squid-specific log analysers use. # emulate_httpd_log off # TAG: mime_table # Pathname to Squid’s MIME table. You shouldn’t need to change # this, but the default file contains examples and formatting # information if you do. # mime_table /usr/lib/squid/mime.conf # TAG: log_mime_hdrs on|off # The Cache can record both the request and the response MIME # headers for each HTTP transaction. The headers are encoded # safely and will appear as two bracketed fields at the end of # the access log (for either the native or httpd-emulated log # formats). To enable this logging set log_mime_hdrs to ’on’. # #log_mime_hdrs off # # # # #
TAG: useragent_log If configured with the "--enable-useragent_log" configure option, Squid will write the User-Agent field from HTTP requests to the filename specified here. By default useragent_log is disabled.
175
9
Configuration du serveur d’accès
# #useragent_log none # TAG: pid_filename # A filename to write the process-id to. # pid_filename /var/run/squid.pid
To disable, enter "none".
# TAG: debug_options # Logging options are set as section,level where each source file # is assigned a unique section. Lower levels result in less # output, Full debugging (level 9) can result in a very large # log file, so be careful. The magic word "ALL" sets debugging # levels for all sections. We recommend normally running with # "ALL,1". # #debug_options ALL,1 # TAG: log_fqdn on|off # Turn this on if you wish to log fully qualified domain names # in the access.log. To do this Squid does a DNS lookup of all # IP’s connecting to it. This can (in some situations) increase # latency, which makes your cache seem slower for interactive # browsing. # #log_fqdn off # TAG: client_netmask # A netmask for client addresses in logfiles and cachemgr output. # Change this to protect the privacy of your cache clients. # A netmask of 255.255.255.0 will log all IP’s in that range with # the last digit set to ’0’. # #client_netmask 255.255.255.255
# OPTIONS FOR EXTERNAL SUPPORT PROGRAMS # ----------------------------------------------------------------------------# # # # # #
TAG: ftp_user If you want the anonymous login password to be more informative (and enable the use of picky ftp servers), set this to something resonable for your domain, like [email protected] The reason why this is domainless by default is that the
176
9
Configuration du serveur d’accès
# request can be made on the behalf of a user in any domain, # depending on how the cache is used. # Some ftp server also validate that the email address is valid # (for example perl.com). # ftp_user squid@ # TAG: ftp_list_width # Sets the width of ftp listings. This should be set to fit in # the width of a standard browser. Setting this too small # can cut off long filenames when browsing ftp sites. # ftp_list_width 32 # TAG: cache_dns_program # Specify the location of the executable for dnslookup process. # #cache_dns_program /usr/lib/squid/dnsserver # TAG: dns_children # The number of processes spawn to service DNS name lookups. # For heavily loaded caches on large servers, you should # probably increase this value to at least 10. The maximum # is 32. The default is 5. # #dns_children 5 # TAG: dns_defnames on|off # Normally the ’dnsserver’ disables the RES_DEFNAMES resolver # option (see res_init(3)). This prevents caches in a hierarchy # from interpreting single-component hostnames locally. To allow # dnsserver to handle single-component names, enable this # option. # #dns_defnames off # TAG: dns_nameservers # Use this if you want to specify a list of DNS name servers # (IP addresses) to use instead of those given in your # /etc/resolv.conf file. # # Example: dns_nameservers 10.0.0.1 192.172.0.4 # #dns_nameservers none
177
9
Configuration du serveur d’accès
# TAG: unlinkd_program # Specify the location of the executable for file deletion process. # This isn’t needed if you are using async-io since it’s handled by # a thread. # #unlinkd_program /usr/lib/squid/unlinkd # TAG: pinger_program # Specify the location of the executable for the pinger process. # This is only useful if you configured Squid (during compliation) # with the ’--enable-icmp’ option. # #pinger_program /usr/lib/squid/pinger # TAG: redirect_program # Specify the location of the executable for the URL redirector. # Since they can perform almost any function there isn’t one included. # See the Release-Notes for information on how to write one. # By default, a redirector is not used. # redirect_program /usr/bin/squidGuard -c /etc/squidGuard.conf # TAG: redirect_children # The number of redirector processes to spawn. If you start # too few Squid will have to wait for them to process a backlog of # URLs, slowing it down. If you start too many they will use RAM # and other system resources. # redirect_children 10 # TAG: redirect_rewrites_host_header # By default Squid rewrites any Host: header in redirected requests. # If you are running a accelerator then this may not be a wanted effect # of a redirector. redirect_rewrites_host_header on # # # # # # # # #
TAG: authenticate_program Specify the command for the external authenticator. Such a program reads a line containing "username password" and replies "OK" or "ERR" in an endless loop. If you use an authenticator, make sure you have 1 acl of type proxy_auth. By default, the authenticator_program is not used. If you want to use the traditional proxy authentication, jump over to the ../auth_modules/NCSA directory and
178
9
Configuration du serveur d’accès
# type: # % make # % make install # # Then, set this line to something like # # authenticate_program /usr/bin/ncsa_auth /usr/etc/passwd # #authenticate_program none # TAG: authenticate_children # The number of authenticator processes to spawn (default 5). If you # start too few Squid will have to wait for them to process a backlog # of usercode/password verifications, slowing it down. When password # verifications are done via a (slow) network you are likely to need # lots of authenticator processes. # #authenticate_children 5 # TAG: authenticate_ttl # The time a checked username/password combination remains cached # (default 3600). If a wrong password is given for a cached user, # the user gets removed from the username/password cache forcing # a revalidation. # #authenticate_ttl 3600
# OPTIONS FOR TUNING THE CACHE # ----------------------------------------------------------------------------# TAG: wais_relay_host # TAG: wais_relay_port # Relay WAIS request to host (1st arg) at port (2 arg). # #wais_relay_host localhost #wais_relay_port 8000 # TAG: request_size (KB) # Maximum allowed request size in kilobytes. If people are using # POST to upload files, then set this to the largest acceptable # filesize plus a few extra kbytes. # #request_size 100 KB
TAG: refresh_pattern usage: refresh_pattern [-i] regex min percent max [options] By default, regular expressions are CASE-SENSITIVE. them case-insensitive, use the -i option.
To make
min and max are specified in MINUTES. percent is an integer number. options: override-expire override-lastmod reload-into-ims ignore-reload override-expire enforces min age even if the server sent a Expires: header. Doing this VIOLATES the HTTP standard. Enabling this feature could make you liable for problems which it causes. override-lastmod enforces min age even on objects that was modified recently. reload-into-ims changes client no-cache or ‘‘reload’’ to If-Modified-Since requests. Doing this VIOLATES the HTTP standard. Enabling this feature could make you liable for problems which it causes. ignore-reload ignores a client no-cache or ‘‘reload’’ header. Doing this VIOLATES the HTTP standard. Enabling this feature could make you liable for problems which it causes. Please see the file doc/Release-Notes-1.1.txt for a full description of Squid’s refresh algorithm. Basically a cached object is: (the order is changed from 1.1.X) FRESH if expires < now, else STALE STALE if age > max FRESH if lm-factor < percent, else STALE FRESH if age < min else STALE The refresh_pattern lines are checked in the order listed here. The first entry which matches is used. If none of the entries match, then the default will be used.
180
9
Configuration du serveur d’accès
# #Default: #refresh_pattern ^ftp: 1440 20% 10080 #refresh_pattern ^gopher: 1440 0% 1440 #refresh_pattern . 0 20% 4320 # TAG: reference_age # As a part of normal operation, Squid performs Least Recently # Used removal of cached objects. The LRU age for removal is # computed dynamically, based on the amount of disk space in # use. The dynamic value can be seen in the Cache Manager ’info’ # output. # # The ’reference_age’ parameter defines the maximum LRU age. For # example, setting reference_age to ’1 week’ will cause objects # to be removed if they have not been accessed for a week or # more. The default value is one month. # # Specify a number here, followed by units of time. For example: # 1 week # 3.5 days # 4 months # 2.2 hours # reference_age 1 days # # # # # # # # # # # # # # # # # # #
TAG: quick_abort_min (KB) TAG: quick_abort_max (KB) TAG: quick_abort_pct (percent) The cache can be configured to continue downloading aborted requests. This may be undesirable on slow (e.g. SLIP) links and/or very busy caches. Impatient users may tie up file descriptors and bandwidth by repeatedly requesting and immediately aborting downloads. When the user aborts a request, Squid will check the quick_abort values to the amount of data transfered until then. If the transfer has less than ’quick_abort_min’ KB remaining, it will finish the retrieval. Setting ’quick_abort_min’ to -1 will disable the quick_abort feature. If the transfer has more than ’quick_abort_max’ KB remaining, it will abort the retrieval.
181
9
Configuration du serveur d’accès
# # If more than ’quick_abort_pct’ of the transfer has completed, # it will finish the retrieval. # quick_abort_min 16 KB quick_abort_max 16 KB quick_abort_pct 95 # TAG: negative_ttl time-units # Time-to-Live (TTL) for failed requests. Certain types of # failures (such as "connection refused" and "404 Not Found") are # negatively-cached for a configurable amount of time. The # default is 5 minutes. Note that this is different from # negative caching of DNS lookups. # #negative_ttl 5 minutes # TAG: positive_dns_ttl time-units # Time-to-Live (TTL) for positive caching of successful DNS lookups. # Default is 6 hours (360 minutes). If you want to minimize the # use of Squid’s ipcache, set this to 1, not 0. # #positive_dns_ttl 6 hours # TAG: negative_dns_ttl time-units # Time-to-Live (TTL) for negative caching of failed DNS lookups. # #negative_dns_ttl 5 minutes # # # # # # # # # # # # # # # #
TAG: range_offset_limit (bytes) Sets a upper limit on how far into the the file a Range request may be to cause Squid to prefetch the whole file. If beyond this limit then Squid forwards the Range request as it is and the result is NOT cached. This is to stop a far ahead range request (lets say start at 17MB) from making Squid fetch the whole object up to that point before sending anything to the client. A value of -1 causes Squid to always fetch the object from the beginning so that it may cache the result. (2.0 style) A value of 0 causes Squid to never fetch more than the client client requested. (default)
182
9
Configuration du serveur d’accès
#range_offset_limit 0 KB
# TIMEOUTS # ----------------------------------------------------------------------------# TAG: connect_timeout time-units # Some systems (notably Linux) can not be relied upon to properly # time out connect(2) requests. Therefore the Squid process # enforces its own timeout on server connections. This parameter # specifies how long to wait for the connect to complete. The # default is two minutes (120 seconds). # connect_timeout 60 seconds # TAG: siteselect_timeout time-units # For URN to multiple URL’s URL selection # #siteselect_timeout 4 seconds # TAG: read_timeout time-units # The read_timeout is applied on server-side connections. After # each successful read(), the timeout will be extended by this # amount. If no data is read again after this amount of time, # the request is aborted and logged with ERR_READ_TIMEOUT. The # default is 15 minutes. # #read_timeout 15 minutes # TAG: request_timeout # How long to wait for an HTTP request after connection # establishment. For persistent connections, wait this long # after the previous request completes. # request_timeout 30 seconds # # # # # # # # #
TAG: client_lifetime time-units The maximum amount of time that a client (browser) is allowed to remain connected to the cache process. This protects the Cache from having alot of sockets (and hence file descriptors) tied up in a CLOSE_WAIT state from remote clients that go away without properly shutting down (either because of a network failure or because of a poor client implementation). The default is one day, 1440 minutes.
183
9
Configuration du serveur d’accès
# NOTE: The default value is intended to be much larger than any # client would ever need to be connected to your cache. You # should probably change client_lifetime only as a last resort. # If you seem to have many client connections tying up # filedescriptors, we recommend first tuning the read_timeout, # request_timeout, pconn_timeout and quick_abort values. # #client_lifetime 1 day # TAG: half_closed_clients # Some clients may shutdown the sending side of their TCP # connections, while leaving their receiving sides open. Sometimes, # Squid can not tell the difference between a half-closed and a # fully-closed TCP connection. By default, half-closed client # connections are kept open until a read(2) or write(2) on the # socket returns an error. Change this option to ’off’ and Squid # will immediately close client connections when read(2) returns # "no more data to read." # #half_closed_clients on # TAG: pconn_timeout # Timeout for idle persistent connections to servers and other # proxies. pconn_timeout 120 seconds # TAG: ident_timeout # Maximum time to wait for IDENT requests. If this is too high, # and you enabled ’ident_lookup’, then you might be susceptible # to denial-of-service by having many ident requests going at # once. # # This option may be disabled by using --disable-ident with # the configure script. #ident_timeout 10 seconds # TAG: shutdown_lifetime time-units # When SIGTERM or SIGHUP is received, the cache is put into # "shutdown pending" mode until all active sockets are closed. # This value is the lifetime to set for all open descriptors # during shutdown mode. Any active clients after this many # seconds will receive a ’timeout’ message. # #shutdown_lifetime 30 seconds
TAG: acl Defining an Access List acl aclname acltype string1 ... acl aclname acltype "file" ... when using "file", the file should contain one item per line acltype is one of src dst srcdomain dstdomain url_pattern urlpath_pattern time port proto method browser user By default, regular expressions are CASE-SENSITIVE. them case-insensitive, use the -i option. src src dst myip
To make
acl acl acl acl
aclname aclname aclname aclname
ip-address/netmask ... (clients IP address) addr1-addr2/netmask ... (range of addresses) ip-address/netmask ... (URL host’s IP address) ip-address/netmask ... (local socket IP address)
acl acl acl acl # # #
aclname srcdomain foo.com ... # reverse lookup, client IP aclname dstdomain foo.com ... # Destination server from URL aclname srcdom_regex [-i] xxx ... # regex matching client name aclname dstdom_regex [-i] xxx ... # regex matching server For dstdomain and dstdom_regex a reverse lookup is tried if a IP based URL is used. The name "none" is used if the reverse lookup fails.
acl aclname time [day-abbrevs] [h1:m1-h2:m2] day-abbrevs: S - Sunday M - Monday T - Tuesday W - Wednesday H - Thursday F - Friday A - Saturday h1:m1 must be less than h2:m2 acl aclname url_regex [-i] ^http:// ... # regex matching on whole URL acl aclname urlpath_regex [-i] \.gif$ ... # regex matching on URL path acl aclname port 80 70 21 ... acl aclname port 0-1024 ... # ranges allowed
185
9
Configuration du serveur d’accès
# acl aclname proto HTTP FTP ... # acl aclname method GET POST ... # acl aclname browser [-i] regexp # # pattern match on User-Agent header # acl aclname ident username ... # # string match on ident output. # # use REQUIRED to accept any non-null ident. # acl aclname src_as number ... # acl aclname dst_as number ... # # Except for access control, AS numbers can be used for # # routing of requests to specific caches. Here’s an # # example for routing all requests for AS#1241 and only # # those to mycache.mydomain.net: # # acl asexample dst_as 1241 # # cache_peer_access mycache.mydomain.net allow asexample # # cache_peer_access mycache_mydomain.net deny all # # acl aclname proxy_auth username ... # # list of valid usernames # # use REQUIRED to accept any valid username. # # # # NOTE: when a Proxy-Authentication header is sent but it is not # # needed during ACL checking the username is NOT logged # # in access.log. # # # # NOTE: proxy_auth requires a EXTERNAL authentication program # # to check username/password combinations (see # # authenticate_program). # # # # WARNING: proxy_auth can’t be used in a transparent proxy. It # # collides with any authentication done by origin servers. It may # # seem like it works at first, but it doesn’t. # # acl aclname snmp_community string ... # # A community string to limit access to your SNMP Agent # # Example: # # # # acl snmppublic snmp_community public # # #Examples: #acl myexample dst_as 1241 #acl password proxy_auth REQUIRED # #Defaults:
186
9 acl acl acl acl acl acl acl
Configuration du serveur d’accès
all src 0.0.0.0/0.0.0.0 manager proto cache_object localhost src 127.0.0.1/255.255.255.255 SSL_ports port 443 563 Safe_ports port 80 21 443 563 70 210 1025-65535 purge method PURGE CONNECT method CONNECT
# # Nous définissons un groupe pour nos clients # acl clients 10.0.1.0/255.255.255.0 # TAG: http_access # Allowing or Denying access based on defined access lists # # Access to the HTTP port: # http_access allow|deny [!]aclname ... # # Access to the ICP port: # icp_access allow|deny [!]aclname ... # # NOTE on default values: # # If there are no "access" lines present, the default is to allow # the request. # # If none of the "access" lines cause a match, the default is the # opposite of the last line in the list. If the last line was # deny, then the default is allow. Conversely, if the last line # is allow, the default will be deny. For these reasons, it is a # good idea to have an "deny all" or "allow all" entry at the end # of your access lists to avoid potential confusion. # #Default configuration: http_access allow manager localhost http_access deny manager http_access allow purge localhost http_access deny purge http_access deny !Safe_ports http_access deny CONNECT !SSL_ports # # INSERT YOUR OWN RULE(S) HERE TO ALLOW ACCESS FROM YOUR CLIENTS # http_access deny all
187
9
Configuration du serveur d’accès
# # Nous accordons l’accès HTTP à nos postes clients # http_access allow clients # TAG: icp_access # Reply to all ICP queries we receive # icp_access deny all # TAG: miss_access # Use to force your neighbors to use you as a sibling instead of # a parent. For example: # # acl localclients src 172.16.0.0/16 # miss_access allow localclients # miss_access deny !localclients # # This means that only your local clients are allowed to fetch # MISSES and all other clients can only fetch HITS. # # By default, allow all clients who passed the http_access rules # to fetch MISSES from us. miss_access allow all # # # # # # # # #
TAG: cache_peer_access Similar to ’cache_peer_domain’ but provides more flexibility by using ACL elements. cache_peer_access cache-host allow|deny [!]aclname ... The syntax is identical to ’http_access’ and the other lists of ACL elements. See the comments for ’http_access’ below, or the Squid FAQ (http://squid.nlanr.net/Squid/FAQ/FAQ-10.html).
# TAG: proxy_auth_realm # Specifies the realm name which is to be reported to the client for # proxy authentication (part of the text the user will see when # prompted their username and password). # #proxy_auth_realm Squid proxy-caching web server # TAG: ident_lookup_access # A list of ACL elements which, if matched, cause an ident
188
9
Configuration du serveur d’accès
# (RFC 931) lookup to be performed for this request. For # example, you might choose to always perform ident lookups # for your main multi-user Unix boxes, but not for your Macs # and PCs. By default, ident lookups are not performed for # any requests. # # To enable ident lookups for specific client addresses, you # can follow this example: # # acl ident_aware_hosts src 198.168.1.0/255.255.255.0 # ident_lookup_access allow ident_aware_hosts # ident_lookup_access deny all # # This option may be disabled by using --disable-ident with # the configure script. #ident_lookup_access deny all
# ADMINISTRATIVE PARAMETERS # ----------------------------------------------------------------------------# TAG: cache_mgr # Email-address of local cache manager who will receive # mail if the cache dies. The default is "webmaster." # cache_mgr root # TAG: cache_effective_user # TAG: cache_effective_group # # If the cache is run as root, it will change its effective/real # UID/GID to the UID/GID specified below. The default is to # change to UID to nobody and GID to nogroup. # # If Squid is not started as root, the default is to keep the # current UID/GID. Note that if Squid is not started as root then # you cannot set http_port to a value lower than 1024. # cache_effective_user proxy cache_effective_group proxy # TAG: visible_hostname # If you want to present a special hostname in error messages, etc, # then define this. Otherwise, the return value of gethostname() # will be used. If you have multiple caches in a cluster and
189
9
Configuration du serveur d’accès
# get errors about IP-forwarding you must set them to have individual # names with this setting. # #visible_hostname www-cache.foo.org # TAG: unique_hostname # If you want to have multiple machines with the same # ’visible_hostname’ then you must give each machine a different # ’unique_hostname’ so that forwarding loops can be detected. # #unique_hostname www-cache1.foo.org
# # # # # # # # # # # # # # # # # # # # #
OPTIONS FOR THE CACHE REGISTRATION SERVICE ----------------------------------------------------------------------------This section contains parameters for the (optional) cache announcement service. This service is provided to help cache administrators locate one another in order to join or create cache hierarchies. An ’announcement’ message is sent (via UDP) to the registration service by Squid. By default, the annoucement message is NOT SENT unless you enable it with ’announce_period’ below. The announcement message includes your hostname, plus the following information from this configuration file: http_port icp_port cache_mgr All current information is processed regularly and made available on the Web at http://ircache.nlanr.net/Cache/Tracker/.
# TAG: announce_period # This is how frequently to send cache announcements. The # default is ‘0’ which disables sending the announcement # messages. # # To enable announcing your cache, just uncomment the line # below. # #announce_period 1 day
190
9
Configuration du serveur d’accès
# TAG: announce_host # TAG: announce_file # TAG: announce_port # announce_host and announce_port set the hostname and port # number where the registration message will be sent. # # Hostname will default to ’tracker.ircache.net’ and port will # default default to 3131. If the ’filename’ argument is given, # the contents of that file will be included in the announce # message. # #announce_host tracker.ircache.net #announce_port 3131
# HTTPD-ACCELERATOR OPTIONS # ----------------------------------------------------------------------------# TAG: httpd_accel_host # TAG: httpd_accel_port # If you want to run Squid as an httpd accelerator, define the # host name and port number where the real HTTP server is. # # If you want virtual host support then specify the hostname # as "virtual". # # NOTE: enabling httpd_accel_host disables proxy-caching and # ICP. If you want these features enabled also, then set # the ’httpd_accel_with_proxy’ option. # #httpd_accel_host hostname #httpd_accel_port port # TAG: httpd_accel_with_proxy on|off # If you want to use Squid as both a local httpd accelerator # and as a proxy, change this to ’on’. # #httpd_accel_with_proxy off # # # # # #
TAG: httpd_accel_uses_host_header on|off HTTP/1.1 requests include a Host: header which is basically the hostname from the URL. Squid can be an accelerator for different HTTP servers by looking at this header. However, Squid does NOT check the value of the Host header, so it opens a big security hole. We recommend that this option remain
191
9
Configuration du serveur d’accès
# disabled unless you are sure of what you are doing. # # However, you will need to enable this option if you run Squid # as a transparent proxy. Otherwise, virtual servers which # require the Host: header will not be properly cached. #httpd_accel_uses_host_header off
# MISCELLANEOUS # ----------------------------------------------------------------------------# TAG: dns_testnames # The DNS tests exit as soon as the first site is successfully looked up # # If you want to disable DNS tests, do not comment out or delete this # list. Instead use the -D command line option # #dns_testnames netscape.com internic.net nlanr.net microsoft.com # TAG: logfile_rotate # Specifies the number of logfile rotations to make when you # type ’squid -k rotate’. The default is 10, which will rotate # with extensions 0 through 9. Setting logfile_rotate to 0 will # disable the rotation, but the logfiles are still closed and # re-opened. This will enable you to rename the logfiles # yourself just before sending the rotate signal. # # Note, the ’squid -k rotate’ command normally sends a USR1 # signal to the running squid process. In certain situations # (e.g. on Linux with Async I/O), USR1 is used for other # purposes, so -k rotate uses another signal. It is best to get # in the habit of using ’squid -k rotate’ instead of ’kill -USR1 # ’. # #logfile_rotate 0 # TAG: append_domain # Appends local domain name to hostnames without any dots in # them. append_domain must begin with a period. # append_domain .etablissement.org # # Remplacez "etablissement.org" par votre domaine. #
192
9
Configuration du serveur d’accès
# TAG: tcp_recv_bufsize (bytes) # Size of receive buffer to set for TCP sockets. Probably just # as easy to change your kernel’s default. Set to zero to use # the default buffer size. # #tcp_recv_bufsize 0 bytes # TAG: err_html_text # HTML text to include in error messages. Make this a "mailto" # URL to your admin address, or maybe just a link to your # organizations Web page. # # To include this in your error messages, you must rewrite # the error template files (found in the "errors" directory). # Wherever you want the ’err_html_text’ line to appear, # insert a %L tag in the error template file. #err_html_text # # # # # # # # # # #
TAG: deny_info Usage: deny_info err_page_name acl Example: deny_info ERR_CUSTOM_ACCESS_DENIED bad_guys This can be used to return a ERR_ page for requests which do not pass the ’http_access’ rules. A single ACL will cause the http_access check to fail. If a ’deny_info’ line exists for that ACL then Squid returns a corresponding error page. You may use ERR_ pages that come with Squid or create your own pages and put them into the configured errors/ directory.
# TAG: memory_pools on|off # If set, Squid will keep pools of allocated (but unused) memory # available for future use. If memory is a premium on your # system and you believe your malloc library outperforms Squid # routines, disable this. # #memory_pools on # # # # # #
TAG: memory_pools_limit (bytes) Used only with memory_pools on: memory_pools_limit 50 MB If set to a non-zero value, Squid will keep at most the specified limit of allocated (but unused) memory in memory pools. All free()
193
9 # # # # # # # # # # # # # # # # #
Configuration du serveur d’accès
requests that exceed this limit will be handled by your malloc library. Squid does not pre-allocate any memory, just safe-keeps objects that otherwise would be free()d. Thus, it is safe to set memory_pools_limit to a reasonably high value even if your configuration will use less memory. If not set (default) or set to zero, Squid will keep all memory it can. That is, there will be no limit on the total amount of memory used for safe-keeping. To disable memory allocation optimization, do not set memory_pools_limit to 0. Set memory_pools to "off" instead. An overhead for maintaining memory pools is not taken into account when the limit is checked. This overhead is close to four bytes per object kept. However, pools may actually _save_ memory because of reduced memory thrashing in your malloc library.
# TAG: forwarded_for on|off # If set, Squid will include your system’s IP address or name # in the HTTP requests it forwards. By default it looks like # this: # # X-Forwarded-For: 192.1.2.3 # # If you disable this, it will appear as # # X-Forwarded-For: unknown # #forwarded_for on # TAG: log_icp_queries on|off # If set, ICP queries are logged to access.log. You may wish # do disable this if your ICP load is VERY high to speed things # up or to simplify log analysis. # #log_icp_queries on # # # # # # #
TAG: icp_hit_stale on|off If you want to return ICP_HIT for stale cache objects, set this option to ’on’. If you have sibling relationships with caches in other administrative domains, this should be ’off’. If you only have sibling relationships with caches under your control, then it is probably okay to set this to ’on’.
194
9
Configuration du serveur d’accès
#icp_hit_stale off # TAG: minimum_direct_hops # If using the ICMP pinging stuff, do direct fetches for sites # which are no more than this many hops away. # #minimum_direct_hops 4 # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
TAG: cachemgr_passwd Specify passwords for cachemgr operations. Usage: cachemgr_passwd password action action ... Some valid actions are (see cache manager menu for a full list): 5min 60min asndb authenticator cbdata client_list comm_incoming config * counters delay digest_stats dns events filedescriptors fqdncache histograms http_headers info io ipcache mem menu netdb non_peers objects pconn peer_select redirector refresh server_list shutdown *
195
9
Configuration du serveur d’accès
# store_digest # storedir # utilization # via_headers # vm_objects # # * Indicates actions which will not be performed without a # valid password, others can be performed if not listed here. # # To disable an action, set the password to "disable". # To allow performing an action without a password, set the # password to "none". # # Use the keyword "all" to set the same password for all actions. # #cachemgr_passwd secret shutdown #cachemgr_passwd lesssssssecret info stats/objects #cachemgr_passwd disable all # TAG: store_avg_object_size (kbytes) # Average object size, used to estimate number of objects your # cache can hold. See doc/Release-Notes-1.1.txt. The default is # 13 KB. # #store_avg_object_size 13 KB # TAG: store_objects_per_bucket # Target number of objects per bucket in the store hash table. # Lowering this value increases the total number of buckets and # also the storage maintenance rate. The default is 20. # #store_objects_per_bucket 50 # TAG: client_db on|off # If you want to disable collecting per-client statistics, then # turn off client_db here. # #client_db on # # # # # #
TAG: netdb_low TAG: netdb_high The low and high water marks for the ICMP measurement database. These are counts, not percents. The defaults are 900 and 1000. When the high water mark is reached, database entries will be deleted until the low mark is reached.
196
9
Configuration du serveur d’accès
# #netdb_low 900 #netdb_high 1000 # TAG: netdb_ping_period # The minimum period for measuring a site. There will be at # least this much delay between successive pings to the same # network. The default is five minutes. # #netdb_ping_period 5 minutes # TAG: query_icmp on|off # If you want to ask your peers to include ICMP data in their ICP # replies, enable this option. # # If your peer has configured Squid (during compilation) with # ’--enable-icmp’ then that peer will send ICMP pings to origin server # sites of the URLs it receives. If you enable this option then the # ICP replies from that peer will include the ICMP data (if available). # Then, when choosing a parent cache, Squid will choose the parent with # the minimal RTT to the origin server. When this happens, the # hierarchy field of the access.log will be # "CLOSEST_PARENT_MISS". This option is off by default. # #query_icmp off # TAG: test_reachability on|off # When this is ’on’, ICP MISS replies will be ICP_MISS_NOFETCH # instead of ICP_MISS if the target host is NOT in the ICMP # database, or has a zero RTT. # #test_reachability off # TAG: buffered_logs on|off # Some log files (cache.log, useragent.log) are written with # stdio functions, and as such they can be buffered or # unbuffered. By default they will be unbuffered. Buffering them # can speed up the writing slightly (though you are unlikely to # need to worry). #buffered_logs off # TAG: reload_into_ims on|off # When you enable this option, client no-cache or ‘‘reload’’ # requests will be changed to If-Modified-Since requests. # Doing this VIOLATES the HTTP standard. Enabling this
197
9
Configuration du serveur d’accès
# feature could make you liable for problems which it # causes. # # see also refresh_pattern for a more selective approach. # # This option may be disabled by using --disable-http-violations # with the configure script. #reload_into_ims off # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
TAG: always_direct Usage: always_direct allow|deny [!]aclname ... Here you can use ACL elements to specify requests which should ALWAYS be forwarded directly to origin servers. For example, to always directly forward requests for local servers use something like: acl local-servers dstdomain my.domain.net always_direct allow local-servers To always forward FTP requests directly, use acl FTP proto FTP always_direct allow FTP NOTE: There is a similar, but opposite option named ’never_direct’. You need to be aware that "always_direct deny foo" is NOT the same thing as "never_direct allow foo". You may need to use a deny rule to exclude a more-specific case of some other rule. Example: acl local-external dstdomain external.foo.net acl local-servers dstdomain foo.net always_direct deny local-external always_direct allow local-servers This option replaces some v1.1 options such as local_domain and local_ip.
# TAG: never_direct # Usage: never_direct allow|deny [!]aclname ... # # never_direct is the opposite of always_direct. Please read # the description for always_direct if you have not already. #
With ’never_direct’ you can use ACL elements to specify requests which should NEVER be forwarded directly to origin servers. For example, to force the use of a proxy for all requests, except those in your local domain use something like: acl local-servers dstdomain foo.net acl all src 0.0.0.0/0.0.0.0 never_direct deny local-servers never_direct allow all or if squid is inside a firewall and there is local intranet servers inside the firewall then use something like: acl local-intranet dstdomain foo.net acl local-external dstdomain external.foo.net always_direct deny local-external always_direct allow local-intranet never_direct allow all This option replaces some v1.1 options such as inside_firewall and firewall_ip. TAG: anonymize_headers Usage: anonymize_headers allow|deny header_name ... This option replaces the old ’http_anonymizer’ option with something that is much more configurable. You may now specify exactly which headers are to be allowed, or which are to be removed from outgoing requests. There are two methods of using this option. You may either allow specific headers (thus denying all others), or you may deny specific headers (thus allowing all others). For example, to achieve the same behaviour as the old ’http_anonymizer standard’ option, you should use: anonymize_headers deny From Referer Server anonymize_headers deny User-Agent WWW-Authenticate Link Or, to reproduce the old ’http_anonymizer paranoid’ feature you should use: anonymize_headers allow Allow Authorization Cache-Control anonymize_headers allow Content-Encoding Content-Length
199
9
Configuration du serveur d’accès
# anonymize_headers allow Content-Type Date Expires Host # anonymize_headers allow If-Modified-Since Last-Modified # anonymize_headers allow Location Pragma Accept Charset # anonymize_headers allow Accept-Encoding Accept-Language # anonymize_headers allow Content-Language Mime-Version # anonymize_headers allow Retry-After Title Connection # anonymize_headers allow Proxy-Connection # # NOTE: You can not mix "allow" and "deny". All ’anonymize_headers’ # lines must have the same second argument. # # By default, all headers are allowed (no anonymizing is # performed). # #anonymize_headers # TAG: fake_user_agent # If you filter the User-Agent header with ’anonymize_headers’ it # may cause some Web servers to refuse your request. Use this to # fake one up. For example: # # fake_user_agent Nutscrape/1.0 (CP/M; 8-bit) # (credit to Paul Southworth [email protected] for this one!) # #fake_user_agent none # TAG: icon_directory # Where the icons are stored. These are normally kept in # /usr/lib/squid/icons # # # # #
TAG: error_directory If you wish to create your own versions of the default (English) error files, either to customise them to suit your language or company copy the template english files to another directory and point this tag at them.
# # # # # # # # #
TAG: minimum_retry_timeout (seconds) This specifies the minimum connect timeout, for when the connect timeout is reduced to compensate for the availability of multiple IP addresses. When a connection to a host is initiated, and that host has several IP addresses, the default connection timeout is reduced by dividing it by the number of addresses. So, a site with 15 addresses would then have a timeout of 8 seconds for each
200
9
Configuration du serveur d’accès
# address attempted. To avoid having the timeout reduced to the # point where even a working host would not have a chance to # respond, this setting is provided. The default, and the # minimum value, is five seconds, and the maximum value is sixty # seconds, or half of connect_timeout, whichever is greater and # less than connect_timeout. # #minimum_retry_timeout 5 seconds # TAG: maximum_single_addr_tries # This sets the maximum number of connection attempts for a # host that only has one address (for multiple-address hosts, # each address is tried once). # # The default value is three tries, the (not recommended) # maximum is 255 tries. A warning message will be generated # if it is set to a value greater than ten. # #maximum_single_addr_tries 3 # TAG: snmp_port # Squid can now serve statistics and status information via SNMP. # By default it listens to port 3401 on the machine. If you don’t # wish to use SNMP, set this to ’-1’. # # NOTE: SNMP support requires use the --enable-snmp configure # command line option. #snmp_port -1 # TAG: forward_snmpd_port # This configures whether we should be forwarding SNMP requests # to another snmpd. The reason for putting this piece of # functionality into Squid was to enable access to the system’s # installed snmpd with minimal changes. This option is turned # off by default, check with your /etc/services for your system’s # snmp port (usually 161). We do not use getservbyname() to # allow you to set Squid into port 161 and your system’s snmpd to # another port by changing /etc/services. # # WARNING: Because of Squid acting as a proxy snmpd for system # you have to do security checks on THIS snmpd for all objects. # Check your snmp_config_file. #forward_snmpd_port 0 #
TAG: snmp_access
201
9
Configuration du serveur d’accès
# Allowing or denying access to the SNMP port. # # All access to the agent is denied by default. # usage: # # snmp_access allow|deny [!]aclname ... # #Example: #snmp_access allow public localhost #snmp_access deny all # TAG: snmp_incoming_address # TAG: snmp_outgoing_address # Just like ’udp_incoming_address’ above, but for the SNMP port. # # snmp_incoming_address is used for the SNMP socket receiving # messages from SNMP agents. # snmp_outgoing_address is used for SNMP packets returned to SNMP # agents. # # The default behaviour is to not bind to any specific address. # # NOTE, snmp_incoming_address and snmp_outgoing_address can not have # the same value since they both use port 3130. # #snmp_incoming_address 0.0.0.0 #snmp_outgoing_address 0.0.0.0 # TAG: as_whois_server # WHOIS server to query for AS numbers. NOTE: AS numbers are # queried only when Squid starts up, not for every request.
# DELAY POOL PARAMETERS (all require DELAY_POOLS compilation option) # ----------------------------------------------------------------------------# TAG: delay_pools # This represents the number of delay pools to be used. For example, # if you have one class 2 delay pool and one class 3 delays pool, you # have a total of 2 delay pools. # # To enable this option, you must use --enable-delay-pools with the # configure script. #delay_pools 0
202
9
Configuration du serveur d’accès
# TAG: delay_class # This defines the class of each delay pool. There must be exactly one # delay_class line for each delay pool. For example, to define two # delay pools, one of class 2 and one of class 3, the settings above # and here would be: # #delay_pools 2 # 2 delay pools #delay_class 1 2 # pool 1 is a class 2 pool #delay_class 2 3 # pool 2 is a class 3 pool # # The delay pool classes are: # # class 1 Everything is limited by a single aggregate # bucket. # # class 2 Everything is limited by a single aggregate # bucket as well as an "individual" bucket chosen # from bits 25 through 32 of the IP address. # # class 3 Everything is limited by a single aggregate # bucket as well as a "network" bucket chosen # from bits 17 through 24 of the IP address and a # "individual" bucket chosen from bits 17 through # 32 of the IP address. # # NOTE: If an IP address is a.b.c.d # -> bits 25 through 32 are "d" # -> bits 17 through 24 are "c" # -> bits 17 through 32 are "c * 256 + d" # TAG: delay_access # This is used to determine which delay pool a request falls into. # The first matched delay pool is always used, ie, if a request falls # into delay pool number one, no more delay are checked, otherwise the # rest are checked in order of their delay pool number until they have # all been checked. For example, if you want some_big_clients in delay # pool 1 and lotsa_little_clients in delay pool 2: # #delay_access 1 allow some_big_clients #delay_access 1 deny all #delay_access 2 allow lotsa_little_clients #delay_access 2 deny all # TAG: delay_parameters # This defines the parameters for a delay pool.
203
Each delay pool has
9
Configuration du serveur d’accès
# a number of "buckets" associated with it, as explained in the # description of delay_class. For a class 1 delay pool, the syntax is: # #delay_parameters pool aggregate # # For a class 2 delay pool: # #delay_parameters pool aggregate individual # # For a class 3 delay pool: # #delay_parameters pool aggregate network individual # # The variables here are: # # pool a pool number - ie, a number between 1 and the # number specified in delay_pools as used in # delay_class lines. # # aggregate the "delay parameters" for the aggregate bucket # (class 1, 2, 3). # # individual the "delay parameters" for the individual # buckets (class 2, 3). # # network the "delay parameters" for the network buckets # (class 3). # # A pair of delay parameters is written restore/maximum, where restore is # the number of bytes (not bits - modem and network speeds are usually # quoted in bits) per second placed into the bucket, and maximum is the # maximum number of bytes which can be in the bucket at any time. # # For example, if delay pool number 1 is a class 2 delay pool as in the # above example, and is being used to strictly limit each host to 64kbps # (plus overheads), with no overall limit, the line is: # #delay_parameters 1 -1/-1 8000/8000 # # Note that the figure -1 is used to represent "unlimited". # # And, if delay pool number 2 is a class 3 delay pool as in the above # example, and you want to limit it to a total of 256kbps (strict limit) # with each 8-bit network permitted 64kbps (strict limit) and each # individual host permitted 4800bps with a bucket maximum size of 64kb
204
9
Configuration du serveur d’accès
# to permit a decent web page to be downloaded at a decent speed # (if the network is not being limited due to overuse) but slow down # large downloads more significantly: # #delay_parameters 2 32000/32000 8000/8000 600/64000 # # There must be one delay_parameters line for each delay pool. # TAG: delay_initial_bucket_level (percent, 0-100) # The initial bucket percentage is used to determine how much is put # in each bucket when squid starts, is reconfigured, or first notices # a host accessing it (in class 2 and class 3, individual hosts and # networks only have buckets associated with them once they have been # "seen" by squid). # #delay_initial_bucket_level 50 # TAG: incoming_icp_average # TAG: incoming_http_average # TAG: min_icp_poll_cnt # TAG: min_http_poll_cnt # Heavy voodoo here. I can’t even believe you are reading this. # Are you crazy? Don’t even think about adjusting these unless # you understand the algorithms in comm_select.c first! # #incoming_icp_average 6 #incoming_http_average 4 #min_icp_poll_cnt 8 #min_http_poll_cnt 8 # TAG: max_open_disk_fds # TAG: offline_mode # Enable this option and Squid will never try to validate cached # objects. # # # # # # # # # #
TAG: uri_whitespace What to do with requests that have whitespace characters in the URI. Options: deny: The request is denied. The user receives an "Invalid Request" message. allow: The request is allowed and the URI is not changed. The whitespace characters remain in the URI. Note the whitespace is passed to redirector processes if they are in use.
205
9
Configuration du serveur d’accès
# encode: The request is allowed and the whitespace characters are # encoded according to RFC1738. This could be considered # a violation of the HTTP/1.1 # RFC because proxies are not allowed to rewrite URI’s. # chop: The request is allowed and the URI is chopped at the # first whitespace. This might also be considered a # violation. #uri_whitespace deny # TAG: broken_posts # A list of ACL elements which, if matched, causes Squid to send # a extra CRLF pair after the body of a PUT/POST request. # # Some HTTP servers has broken implementations of PUT/POST, # and rely on a extra CRLF pair sent by some WWW clients. # # Quote from RFC 2068 section 4.1 on this matter: # # Note: certain buggy HTTP/1.0 client implementations generate an # extra CRLF’s after a POST request. To restate what is explicitly # forbidden by the BNF, an HTTP/1.1 client must not preface or follow # a request with an extra CRLF. # #acl buggy_server url_regex ^http://.... #broken_posts allow buggy_server # # # # # #
TAG: mcast_miss_addr If you enable this option, every "cache miss" URL will be sent out on the specified multicast address. Do not enable this option unless you are are absolutely certain you understand what you are doing.
# TAG: mcast_miss_port # This is the port number to be used in conjuction with # ’mcast_miss_addr’. # TAG: mcast_miss_encode_key # The URLs that are sent in the multicast miss stream are # encrypted. This is the encryption key. # TAG: prefer_direct # By default, if the ICP, HTCP, Cache Digest, etc. techniques # do not yield a parent cache, Squid gives higher preference # to forwarding the request direct to origin servers, rather
206
9
Configuration du serveur d’accès
# than selecting a parent cache anyway. # # If you want Squid to give higher precedence to a parent # cache, instead of going direct, then turn this option off. #prefer_direct on # TAG: strip_query_terms # By default, Squid strips query terms from requested URLs before # logging. This protects your user’s privacy. #strip_query_terms on # # # # #
TAG: coredump_dir By default Squid leaves core files in the first cache_dir directory. If you set ’coredump_dir’ to a directory that exists, Squid will chdir() to that directory at startup and coredump files will be left there.
9.8.2
Installation de SquidGuard
Vous avez dû vous en rendre compte lors de l’installation, SquidGuard n’est pas inclus dans Debian GNU/Linux 2.2 «Potato». En revanche, SquidGuard fait son apparition dans la version suivante, pour le moment en développement, à savoir Debian GNU/Linux «Woody». Lors de la rédaction de ce dossier, les deux versions, «Potato» et «Woody», ont encore un contenu très proche, permettant de compiler un paquetage de l’une sur l’autre. C’est donc ce que j’ai fait. Vous trouverez sur le CD joint un fichier nommé «squidguard_1.1.4-6.1_i386.deb». Installez ce paquetage par la commande : dpkg -i squidguard_1.1.4-6.1_i386.deb Dpkg va installer le paquetage. S’il y avait des problèmes de dépendances, installez les paquetages idoines. Pour tout autre problème, contactez-moi.
9.8.3
/etc/squidGuard.conf
C’est le fichier de configuration de SquidGuard. Il contient absolument toutes les règles et toutes les options dont nous avons besoin. Nous utiliserons ceci : # # Configuration file for SquidGuard # /etc/squidGuard.conf # dbhome /var/lib/squidguard/db logdir /var/log/squid #
207
9 # # # # # # # #
Configuration du serveur d’accès
Règles Temporelles Définition de règles en fonction des heures et des jours Rappelez-vous que les machines sont réglées en heure GMT... Nous réglons ici pour la période en heure d’été, celle-ci étant à GMT + 2 heures. abbréviation des jours : s = sun, m = mon, t =tue, w = wed, h = thu, f = fri, a = sat
time heures_de_cours { weekly mtwhf 05:00 - 17:00 # de 07h00 à 19h00 weekly a 05:00 - 11:00 # de 07h00 à 13h00 le samedi }
# # Déclaration des groupes # src clients { ip 10.0.1.0/255.255.255.0 within heures_de_cours } src admin { ip 10.0.1.0/255.255.255.0 user root vos_utilisateurs_d_administration } # ici, remplacez "vos_utilisateurs_d_administration" par les logins des # différents administrateurs, qui doivent pouvoir accéder à l’extérieur # en permanence.
# # Groupes de destination # dest ok { } dest local { } dest adulte { domainlist adulte/domains
# # Règles de réécriture d’adresses # Le filtrage se fait réellement ici, au moyen des définitions précédentes. # acl { clients { pass !adulte !warez !pub !cracking all } admin { pass !adulte !pub !warez all } # En effet, certains sites dit de "cracking" peuvent être utiles à un # administrateur. default {
Les pages de redirection sont à installer sur le serveur Web (c’est-à-dire la machine appelée «fremen» dans ce dossier), dans le répertoire /var/www/erreur_proxy/. Les images sont à placer dans le répertoire /var/www/images/. Ci-dessous, un exemple pour chacune des pages. Les pages se trouvent sur le CD-ROM joint. Nous utiliserons des pages XHTML 1.0 (nouvelle recommandation du W3C7 ) et les CSS8 . Voici le CSS que nous utiliserons (fichier squid.css) : BODY {background: black; color: white; font-family: arial, verdana, helvetica, times; font-size: 12pt} A:link {background: black; color: #00C0FF} A:visited {background: black; color: #00A0FF} H1 {background: black; color: white; font-family: arial, verdana, helvetica, times; font-size: 24pt; font-weight: bold; text-align: center} B {background: black; color: white; font-family: arial, verdana, helvetica, times; font-size: 12pt; 9.8.4.1
Sites pour adultes
Fichier adulte.html : 7 8
World Wide Web Consortium : organisme chargé de définir les standards du Web. Cascading Style Sheet : feuilles de style. Leur utilisation permet de réduire la taille des pages HTML en supprimant tous les éléments de mise en forme.
210
9
Configuration du serveur d’accès
<meta http-equiv="Content-type" content=’text/html; charset="ISO-8859-1"’ /> Désolé... Site indisponible...
SquidGuard
Vous avez tenté d’accéder à un site présentant un contenu suscpetible de choquer certaines personnes.
Soucieux de respecter la loi, votre administrateur a mis en place un système de filtrage vous empêchant d’accéder à un tel site.
Cette tentative d’accès a été enregistrée et consignée dans un fichier-journal.
Nous vous rappelons le contenu de l’article 227-24 du Nouveau Code Pénal :
Article 227-24
Le fait soit de fabriquer, de transporter, de diffuser par quelque moyen que ce soit et quel qu’en soit le support un message à caractère violent ou pornographique ou de nature à porter gravement< atteinte à la dignité humaine, soit de faire commerce d’un tel message, est puni de trois ans d’emprisonnement et de 500.000 F lorsque ce message est susceptible d’être vu ou perçu par Lorsque les infractions prévues au présent article sont soumises par la voie de la presse écrite ou audiovisuelle, les dispositions particulières des lois qui régissent ces matières sont applicables en ce qui concerne la détermination des personnes responsables.
Ce site utilise le serveur proxy Squid et le redirecteur SquidGuard.
213
9
Configuration du serveur d’accès
9.8.4.3 Sites proposant divers moyens de piratage Fichier cracking.html : <meta http-equiv="Content-type" content=’text/html; charset="ISO-8859-1"’ /> Désolé... Site indisponible...
SquidGuard
Vous avez tenté d’accéder à un site présentant divers moyens de
214
9
Configuration du serveur d’accès
pirater du matériel électronique ou informatique, ou fournissant un ou plusieurs moyens de s’introduire frauduleusement sur une machine ne vous appartenant pas.
Nous vous rappelons que toute tentative d’intrusion dans un système informatique tiers est réprimée par la loi.
Soucieux de respecter la loi, votre administrateur a mis en place un système de filtrage vous empêchant d’accéder à un tel site.
Cette tentative d’accès a été enregistrée et consignée dans un fichier-journal.
Ce site utilise le serveur proxy Squid et le redirecteur SquidGuard.
215
9
Configuration du serveur d’accès
9.8.4.4 Sites de publicité Fichier pub.html : <meta http-equiv="Content-type" content=’text/html; charset="ISO-8859-1"’ /> Désolé... Site indisponible...
SquidGuard
Vous avez tenté d’accéder à un site fournissant divers moyens de publicit
Bien que ceci ne constitue en rien une infraction, certains de ces sites proposent des publicités qui sont répréhensibles, notamment par l’article 227-24 du Nouveau Code Pénal.
Soucieux de respecter la loi, et d’économiser les ressources en bande passante, votre administrateur a mis en place un système de filtrage vous empêchant d’accéder à un tel site.
Cette tentative d’accès a été enregistrée et consignée dans un fichier-journal.
Nous vous rappelons le contenu de l’article 227-24 du Nouveau Code Pénal :
Article 227-24 Le fait soit de fabriquer, de transporter, de diffuser par quelque moyen que ce soit et quel qu’en soit le support un message à caractère violent ou pornographique ou de nature à porter gravement<
216
9
Configuration du serveur d’accès
atteinte à la dignité humaine, soit de faire commerce d’un tel message, est puni de trois ans d’emprisonnement et de 500.000 F lorsque ce message est susceptible d’être vu ou perçu par Lorsque les infractions prévues au présent article sont soumises par la voie de la presse écrite ou audiovisuelle, les dispositions particulières des lois qui régissent ces matières sont applicables en ce qui concerne la détermination des personnes responsables.
Ce site utilise le serveur proxy Squid et le redirecteur SquidGuard.
217
9
Configuration du serveur d’accès
9.8.5
Listes noires
Ces listes sont utilisées par SquidGuard pour filtrer l’accès à certains sites. 9.8.5.1
Installation
Récupérez l’archive contenant les listes noires sur le site de SquidGuard9 . Décompressez-la, et copiez les différents fichiers vers les emplacements adéquats. Ici, nous ferons ceci : – copie des fichiers «domains», «domains.db», «urls» et «urls.db» du répertoire ads de l’archive vers le répertoire /var/lib/squidguard/db/pub – copie des fichiers «domains», «domains.db», «urls» et «urls.db» du répertoire warez de l’archive vers le répertoire /var/lib/squidguard/db/warez – copie des fichiers «domains», «domains.db», «urls» et «urls.db» du répertoire hacking de l’archive vers le répertoire /var/lib/squidguard/db/cracking – copie des fichiers «domains», «domains.db», «urls», «urls.db» et «expressions» du répertoire porn de l’archive vers le répertoire /var/lib/squidguard/db/adulte Lancez la commande : squidGuard -C all SquidGuard met à jour ses fichiers, nous sommes prêts à redémarrer Squid. 9.8.5.2
Maintenance
Il faut garder ces fichiers à jour. En effet, ces listes évoluent toutes les semaines. Il est souhaitable de procéder à la mise à jour des listes noires une fois par semaine. Nous pouvons automatiser ceci grâce à cron, ncftp, et à un petit script shell : #! /bin/bash echo -e "\n *** Recuperation de l’archive ***" date echo -e "\n"
cd /root ncftpget ftp://ftp.ost.eltele.no/pub/www/proxy/squidGuard/contrib/blacklists.ta 9
http://www.squidguard.org/blacklist/
218
9
Configuration du serveur d’accès
echo -e "\n *** Decompression de l’archive ***\n" tar -xvzf blacklists.tar.gz echo -e "\n *** Copie des fichiers en cours... ***\n" cd cp cp cp cp
echo -e "\n *** Copie des fichiers terminee *** \n" echo -e "\n *** Mise a jour de SquidGuard et nettoyage ***\n" /usr/bin/squidGuard -C all cd /root rm -rf blacklists rm -f blacklists.tar.gz echo -e "\n *** Mise a jour des listes terminee ***" date echo -e "\n" Enregistrez ceci dans un fichier /usr/local/bin/update-sgbl.sh, et rendez ce fichier exécutable. Installez le paquetage ncftp qui nous fournit le logiciel ncftpget. Éditez la crontab de root par le traditionnel crontab -e, et rajoutez la ligne : 30 22 * * 7
/usr/local/bin/update-sgbl.sh
219
9
Configuration du serveur d’accès
Cron lancera notre script tous les dimanches à 22h30.
9.8.6
Redémarrage de Squid
Nous pouvons maintenant redémarrer Squid : /etc/init.d/squid start
9.9 9.9.1
Serveur d’impression Configuration des imprimantes
Raccordez les deux imprimantes sur les deux ports parallèles de la machine.
9.9.2
apsfilter
Pour configurer les imprimantes, nous utiliserons le logiciel apsfilter. C’est un jeu de filtres qui permettent l’utilisation des imprimantes sous divers Unices. La configuration d’apsfilter se fait par le biais du programme apsfilterconfig. Ne pouvant connaître à l’avance les modèles d’imprimantes, je pense que c’est la meilleure solution. Il se peut que vos modèles d’imprimantes ne soient pas supportés par aspfilter. Dans ce cas-là, tentez votre chance avec magicfilter.
9.9.3
/etc/printcap
Ce fichier est le fichier de configuration de lpd10 . C’est ici que nous déclarons les imprimantes, leurs noms, les filtres à utiliser pour l’envoi de données, etc. . . Aspfilterconfig se charge de créer les entrées nécessaires aux imprimantes. Trois entrées sont crées, correspondant aux filtres PostScript, Raw et Auto. Vous pouvez supprimer les entrées concernant PostScript et Raw. Au final, vous devriez obtenir un fichier s’apparentant à celui-ci : # # # #
/etc/printcap: printer capability database. See printcap(5). You can use the filter entries df, tf, cf, gf etc. for your own filters. See /etc/filter.ps, /etc/filter.pcl and the printcap(5) manual page for further details.
lpstylus:\ :lp=/dev/lp1:\ :sd=/var/spool/lpd/lpstylus:\ :lf=/var/spool/lpd/lpstylus/log:\ :af=/var/spool/lpd/lpstylus/acct:\ :if=/var/lib/apsfilter/filter/aps-uniprint-a4-auto-color:\ :mx#0:\ :sh: Configurez donc les deux imprimantes avec des noms équivoques ; par exemple lplaser et lpcouleur sont de bons noms pour une imprimante laser et une imprimante jet d’encre couleur. Il est possible de donner plusieurs noms à une imprimante, comme dans l’exemple ci-dessus. Ici, les deux imprimantes correspondent à une Epson Stylus Color II et une Hewlett Packard LaserJet III. La mention «lp» signifie que l’imprimante est locale. En aucun cas cette mention n’est obligatoire dans le nom de l’imprimante.
9.9.4
Configuration de l’accès
Créez un fichier /etc/hosts.lpd contenant ceci : # /etc/hosts.lpd: list of hosts that are allowed to use the printing # services of this machine. See lpd(8). # client1
221
9
Configuration du serveur d’accès
client2 client3 client4 client5 fremen Nous listons ici toutes les machines qui ont le droit d’utiliser le service d’impression. Remplacez «client[1-5]» par les noms de différentes machines clientes.
9.9.5
Redémarrage de lpd
Nous devons redémarrer le daemon lpd pour qu’il prenne en compte les modifications : /etc/init.d/lpd restart
9.10
NTP, synchronisation de l’heure
Comme pour notre serveur, cette machine va se mettre à l’heure grâce à NTP. Lors de l’installation du paquetage ntp, vous devrez spécifier un serveur NTP. Vous trouverez une liste des serveurs français à l’adresse http://www.cru.fr/NTP/serveurs\protect\ T1\textunderscorefrancais.html. Pour ne pas encombrer les serveurs primaires, utilisez s’il vous plaît un serveur secondaire, comme ntp.loria.fr, par exemple.
9.11 SNMPD, surveillance réseau Le fichier de configuration utilisé est le même que celui de notre serveur (section 8.16, page 122). Une fois placé dans /etc/snmp, relancez snmpd : /etc/init.d/snmpd stop /etc/init.d/snmpd start Une fois que snmpd est relancé avec sa nouvelle configuration, vous pouvez décommenter les entrées concernant sardaukar dans le fichier /etc/mrtg.cfg de fremen.
222
10 Configuration des machines clientes Nos cinq postes clients étant des machines strictement identiques, je vous conseille de configurer une machine, puis de recopier la configuration sur les autres. Vous gagnerez de ce fait beaucoup de temps. N’oubliez pas de faire les modifications propres à chaque machine (noms des machines, adresses IP, etc. . .). Je ne présente plus certains des fichiers de configuration, maintenant connus, notamment sur la partie résolution de noms.
10.1
Compilation du noyau
Comme pour nos autres machines, nous avons besoin de certaines fonctionnalités qui ne sont pas incluses dans le noyau standard. Commencez par récupérer les sources du dernier noyau 2.2.x (le noyau 2.4.x est supporté par Debian GNU/Linux 2.2.r3, vous pouvez utiliser un kernel 2.4 si vous le souhaitez) sur ftp.fr.kernel.org, par exemple. Placez l’archive dans le répertoire /usr/src. Vérifiez qu’il n’y a pas de répertoire nommé «linux», s’il y en a un, renommez-le. Maintenant, décompressez l’archive contenant les sources du noyau. Un nouveau répertoire «linux» est apparu, celui-ci contient les sources du noyau. Allez dans ce répertoire, et lancez la commande (le paquetage libncurses-dev doit être installé) : make menuconfig Après la compilation de quelques fichiers, une interface graphique apparaît. Nous allons maintenant configurer le noyau Linux. En dehors des composants requis pour la bonne marche de la machine, veillez plus particulièrement aux options suivantes : – utilisation des pilotes expérimentaux – optimisation pour la famille de processeurs utilisée par la machine – utilisation des modules noyau – nous mettons le pilote de la carte Ethernet dans le noyau et non pas en module – le support pour les «UNIX98 PTYs» ; nous laissons la valeur par défaut (256) – dans la section «systèmes de fichiers», nous incluons dans le noyau le support pour le système «/proc» ainsi que celui pour le système «/dev/pts», sans oublier d’inclure le support pour le «deuxième système de fichiers étendu (ext2fs)». – dans la même section, nous plaçons en modules les supports pour les systèmes de fichiers FAT, VFAT, MSDOS, UMSDOS, ISO9660 – dans la section «systèmes de fichiers réseau», nous plaçons en module le support pour le système de fichiers NFS – nous faisons en sorte de pouvoir exploiter la carte son installée dans la machine
223
10
Configuration des machines clientes
– configurez également le support AGP et DRM/DRI si vous souhaitez utiliser XFree86 version 4.x.x (ce qui sera le cas si les cartes vidéo sont récentes) – dans la section «kernel hacking», activez l’option «Magic SysRQ key». Cette option permet de communiquer avec le noyau lors d’un plantage sévère de la machine afin d’effectuer les opérations de dernière minute (synchronisation des partitions montées, etc. . .) avant de redémarrer la machine. Lisez la documentation concernant cette fonctionnalité dans le fichier Documentation/sysrq.txt. Maintenant, sauvegardez la configuration et quittez l’interface. Puis compilez et installez le noyau. Configurez LILO de manière à pouvoir démarrer sur l’un ou l’autre des deux noyaux présents, c’est-à-dire le noyau d’origine et celui que nous venons de compiler. Le fichier de configuration de LILO doit ressembler à celui-ci : # /etc/lilo.conf - See: ‘lilo(8)’ and ‘lilo.conf(5)’, # --------------‘install-mbr(8)’, ‘/usr/share/doc/lilo/’, # and ‘/usr/share/doc/mbr/’. # # # # # # # # #
+---------------------------------------------------------------+ | !! Reminder !! | | | | Don’t forget to run ‘lilo’ after you make changes to this | | conffile, ‘/boot/bootmess.txt’, or install a new kernel. The | | computer will most likely fail to boot if a kernel-image | | post-install script or you don’t remember to run ‘lilo’. | | | +---------------------------------------------------------------+
# Specifies the boot device. This is where Lilo installs its boot # block. It can be either a partition, or the raw device, in which # case it installs in the MBR, and will overwrite the current MBR. # boot=/dev/hda # Specifies the device that should be mounted as root. (‘/’) # root=/dev/hda5 # # # # # # # #
Enable map compaction: Tries to merge read requests for adjacent sectors into a single read request. This drastically reduces load time and keeps the map smaller. Using ‘compact’ is especially recommended when booting from a floppy disk. It is disabled here by default because it doesn’t always work. compact
224
10
Configuration des machines clientes
# Installs the specified file as the new boot sector # install=/boot/boot.b # Specifies the location of the map file # map=/boot/map # # # # # # # # # # # # # # # # # #
You can set a password here, and uncomment the ‘restricted’ lines in the image definitions below to make it so that a password must be typed to boot anything but a default configuration. If a command line is given, other than one specified by an ‘append’ statement in ‘lilo.conf’, the password will be required, but a standard default boot will not require one. This will, for instance, prevent anyone with access to the console from booting with something like ‘Linux init=/bin/sh’, and thus becoming ‘root’ without proper authorization. Note that if you really need this type of security, you will likely also want to use ‘install-mbr’ to reconfigure the MBR program, as well as set up your BIOS to disallow booting from removable disk or CD-ROM, then put a password on getting into the BIOS configuration as well. Please RTFM ‘install-mbr(8)’. password=tatercounter2000
# Specifies the number of deciseconds (0.1 seconds) LILO should # wait before booting the first image. # delay=100 # laissons-nous 10 secondes pour choisir le noyau # # # # # # # # # # # #
You can put a customized boot message up if you like. If you use ‘prompt’, and this computer may need to reboot unattended, you must specify a ‘timeout’, or it will sit there forever waiting for a keypress. ‘single-key’ goes with the ‘alias’ lines in the ‘image’ configurations below. eg: You can press ‘1’ to boot ‘Linux’, ‘2’ to boot ‘LinuxOLD’, if you uncomment the ‘alias’. message=/boot/bootmess.txt prompt single-key delay=100 timeout=100
225
10
Configuration des machines clientes
# Specifies the VGA text mode at boot time. (normal, extended, ask, ) # # vga=ask # vga=9 # vga=normal # # # # #
Kernel command line options that apply to all installed images go here. See: The ‘boot-prompt-HOWO’ and ‘kernel-parameters.txt’ in the Linux kernel ‘Documentation’ directory. append=""
# Boot up Linux by default. # default=Linux image=/boot/vmlinuz-2.2.16 label=Linux read-only # restricted # alias=1
If you have another OS on this machine to boot, you can uncomment the following lines, changing the device name on the ‘other’ line to where your other OS’ partition is. other=/dev/hda4 label=HURD restricted alias=3
Ce fichier est en fait le même que précédemment. Il s’agit du fichier par défaut livré avec Debian GNU/Linux. Seules les sections concernant les noyaux disponibles ont été modifiées, ainsi que les options concernant les partitions. Lancez /sbin/lilo de manière à mettre à jour le secteur de boot de la machine. Si tout se passe bien, vous pouvez essayer de redémarrer la machine. Si LILO vous dit que votre noyau est trop gros, soit vous avez inclus beaucoup trop de choses dedans, auquel cas vous pouvez le
226
10
Configuration des machines clientes
reconfigurer et faire la chasse aux options inutiles, soit vous pouvez utiliser «make bzImage» pour le compiler. Si la machine redémarre sans problèmes, bravo, sinon recommencez, vous avez certainement oublié quelque chose. Une fois la machine redémarrée avec son nouveau noyau, et si tout se passe bien, sauvegardez le fichier /usr/src/linux/.config (notez le «.», ce qui signifie que c’est un fichier caché) dans le répertoire personnel de root (/root), sous un nom évocateur. Vous pourrez charger ce fichier pour configurer le prochain kernel, ce qui vous évitera de devoir saisir à nouveau la configuration.
10.2
Interface réseau
Les machines clientes ne disposent que d’une seule interface réseau. La seule spécificité réside dans la spécification de la passerelle. # /etc/network/interfaces -- configuration file for ifup(8), ifdown(8) # The loopback interface iface lo inet loopback # The first network card # This entry was created during the Debian installation iface eth0 inet static hostname client1.etablissement.org address 10.1.0.11 netmask 255.255.255.0 network 10.1.0.0 broadcast 10.1.0.255 gateway 10.1.0.2 N’oubliez pas de modifier le nom de la machine et l’adresse IP qui correspond.
Vous remarquerez que les serveurs DNS sont inversés : le serveur secondaire est listé en premier, afin de décharger le serveur primaire de nos requêtes internes.
10.3.2
/etc/nsswitch.conf
Nous utiliserons le même fichier que précédemment : # # # # #
/etc/nsswitch.conf Example configuration of GNU Name Service Switch functionality. If you have the ‘glibc-doc’ and ‘info’ packages installed, try: ‘info libc "Name Service Switch"’ for information about this file.
passwd: group: shadow:
compat compat compat
hosts: networks:
files dns files
protocols: services: ethers: rpc:
db db db db
netgroup:
nis
10.3.3
files files files files
/etc/host.conf
Nous utiliserons là aussi la même configuration que précédemment : order hosts,bind multi on
10.3.4
/etc/hosts
Nous utiliserons ceci, sur le poste nommé «client1» (une fois encore, vous pouvez choisir un autre nom) : # The following lines are desirable for IPv6 capable hosts # (added automatically by netbase upgrade) ::1 ip6-localhost ip6-loopback fe00::0 ip6-localnet
Notez que ce fichier varie selon le nom de la machine. La ligne commençant par «127.0.0.1» doit être modifiée sur chaque machine.
10.4
Sendmail, serveur SMTP
Sur ces postes, le seul but de Sendmail est d’envoyer le courrier à notre serveur principal afin que celui-ci le fasse parvenir à l’extérieur (ou à un autre utilisateur). Nous commençons par arrêter Sendmail : /etc/init.d/sendmail stop
10.4.1
/etc/mail/sendmail.cf
Nous utilisons là encore le kit M4 fourni avec Sendmail. Rendez-vous donc dans le répertoire /usr/share/sendmail/sendmail.cf, puis ouvrez un fichier nommé sendmail.mc. Nous utiliserons cette configuration, très similaire à celle de notre MX secondaire : include(‘./m4/cf.m4’)dnl dnl dnl Définition de certains éléments spécifiques au système dnl (emplacement de certains fichiers, ...) dnl OSTYPE(‘debian’)dnl dnl dnl Nous définissons certains emplacements dnl FEATURE(‘use_cw_file’,‘/etc/mail/local-host-names’)dnl FEATURE(‘use_ct_file’,‘/etc/mail/sendmail.ct’)dnl FEATURE(‘mailertable’,‘hash -o /etc/mail/mailertable’)dnl FEATURE(‘domaintable’,‘hash -o /etc/mail/domaintable’)dnl
229
10
Configuration des machines clientes
FEATURE(‘genericstable’,‘hash -o /etc/mail/genericstable’)dnl FEATURE(‘virtusertable’,‘hash -o /etc/mail/virtusertable’)dnl FEATURE(‘access_db’,‘hash -o /etc/mail/access’)dnl define(‘STATUS_FILE’, ‘/etc/mail/trusted-users’)dnl define(‘LOCAL_MAILER_PATH’, ‘/usr/bin/procmail’)dnl define(‘confCW_FILE’,‘/etc/mail/local-host-names’)dnl define(‘confCT_FILE’,‘/etc/mail/sendmail.ct’)dnl define(‘confSTATUS_FILE’, ‘/etc/mail/statistics’)dnl dnl dnl Nous rajoutons toujours le domaine en fin d’adresse dnl (ex.: To: root devient To: [email protected]) dnl FEATURE(‘always_add_domain’)dnl dnl dnl Nous définissons les mailer (protocoles) à utiliser dnl Ainsi que l’utilisation de procmail dnl FEATURE(‘local_procmail’)dnl MAILER(‘local’)dnl MAILER(‘smtp’)dnl MAILER(‘procmail’)dnl dnl dnl Permet de rediriger une adresse en "adresse.REDIRECT" dnl FEATURE(‘redirect’)dnl dnl dnl Protection anti-spam dnl FEATURE(‘dnsbl’,‘blackholes.mail-abuse.org’, ‘ Mail from $&{client_addr} rejected; see http://mail-abuse.org/cgi-bin/look’)d FEATURE(‘dnsbl’,‘dialups.mail-abuse.org’, ‘ Mail from dial-up rejected; see http://mail-abuse.org/dul/enduser.htm’)dnl FEATURE(‘no_default_msa’)dnl FEATURE(‘rbl’)dnl dnl dnl dnl Taille maximum d’un message, en octets. Ici, 10 Mo. dnl define(‘confMAX_MESSAGE_SIZE’,‘10485760’)dnl dnl define(‘confAUTO_REBUILD’)dnl dnl dnl Message affiché lors de la connexion dnl define(‘confSMTP_LOGIN_MSG’,
230
10
Configuration des machines clientes
‘client1.etablissement.org Sendmail 8.9.3 Have a nice day !’)dnl dnl dnl Les durées après lesquelles les messages d’erreur sont envoyés dnl define(‘confTO_QUEUEWARN’,‘12h’)dnl define(‘confTO_QUEUEWARN_NORMAL’,‘12h’)dnl define(‘confTO_QUEUEWARN_URGENT’,‘12h’)dnl define(‘confTO_QUEUEWARN_NONURGENT’,‘12h’)dnl dnl dnl Nous interdisont certaines commandes, et nous plaçons dnl des avertissements de sécurité dans certains cas dnl define(‘confPRIVACY_FLAGS’, ‘‘authwarnings,novrfy,noexpn,noetrn’’)dnl dnl dnl Emplacement du fichier .forward dnl define(‘confFORWARD_PATH’, ‘$z/.forward.$w:$z/.forward+$h:$z/.forward’)dnl dnl dnl La personne qui doit recevoir les messages d’erreurs dnl define(‘confCOPY_ERRORS_TO’, ‘postmaster’)dnl dnl dnl Nombre maximum de destinataires pour un mail dnl define(‘confMAX_RCPTS_PER_MESSAGE’, ‘20’)dnl dnl dnl Nous masquons les noms de machines dnl MASQUERADE_AS(etablissement.org)dnl MASQUERADE_DOMAIN(*.etablissement.org)dnl FEATURE(‘masquerade_entire_domain’)dnl dnl dnl Nous relayons les machines listées dans /etc/mail/access dnl FEATURE(‘relay_hosts_only’)dnl dnl dnl Nous envoyons les mails considérés comme locaux à notre dnl serveur principal dnl define(‘LOCAL_RELAY’,‘esmtp:[10.0.1.1]’)dnl dnl dnl Nous définissons une machine à qui envoyer tous les mails dnl define(‘MAIL_HUB’,‘esmtp:[10.0.1.1]’)dnl dnl
231
10
Configuration des machines clientes
dnl Nous définissons quelle machine doit recevoir le courrier dnl du domaine dnl define(‘SMART_HOST’,‘esmtp:[10.0.1.1]’)dnl dnl N’oubliez pas de remplacer «client1.etablissement.org» par le nom de la machine concernée. Compilez le fichier avec la commande : m4 sendmail.mc > /etc/mail/sendmail.cf Ici aussi, vous aurez besoin des deux fichiers no_default_msa.m4 et dnsbl.m4 présents sur le CDROM. Copiez-les dans le sous-répertoire feature. Ces fichiers ne sont normalement pas nécessaires pour une version de sendmail supérieure ou égale à 8.10.x. Puis sauvegardez le fichier /etc/mail/sendmail.cf et copiez le nouveau sendmail.cf dans le répertoire /etc/mail. Cette configuration a l’avantage de convenir à toutes les situations, ou presque. Que la machine soit accessible ou non de l’extérieur (si vous disposez de suffisament d’adresses IP publiques, ne vous privez pas), le routage du mail se fera de la même façon, en toute sécurité. Pour des machines non accessibles de l’extérieur, on peut utiliser la fonction nullclient de sendmail. La machine se comporte alors comme un relai ouvert à tous les vents, ce qui est dangereux si la machine est accessible autrement que par un réseau local.
10.4.2
/etc/mail/access
Comme tout à l’accoutumée, ce fichier définit les droits d’accès de certains sites. Ici, nous le renseignons comme ceci : *.etablissement.org RELAY Noux compilons le fichier : makemap hash /etc/mail/access.db < /etc/mail/access
10.4.3
/etc/mail/aliases
Ce fichier contient les alias. Il n’est pas utile de s’en soucier ici, étant donné que tout mail, même local, sera renvoyé sur notre serveur principal. Il serait même dangereux de mettre en place des alias, car ceux-ci ne seraient pas respectés. Nous utiliserons donc le fichier de base : # # # #
@(#)aliases
8.2 (Berkeley) 3/5/94
Aliases in this file will NOT be expanded in the header from
232
10 # # # # # #
Configuration des machines clientes
Mail, but WILL be visible over networks or from /bin/mail. >>>>>>>>>> >> NOTE >> >>>>>>>>>>
The program "newaliases" must be run after this file is updated for any changes to show through to sendmail.
# Basic system aliases -- these MUST be present. MAILER-DAEMON: postmaster postmaster: root # General redirections for pseudo accounts. bin: root daemon: root games: root ingres: root nobody: root system: root toor: root uucp: root # Well-known aliases. manager: root dumper: root operator: root abuse: root # trap decode to catch security attacks decode: root Enregistrez le fichier et lancez la commande : newaliases Sendmail a régénéré les aliases.
10.4.4
/etc/mail/domaintable
Ici non plus, nous ne servirons pas de ce fichier. Nous créons donc un fichier vide et le compilons : touch /etc/mail/domaintable makemap hash /etc/mail/domaintable.db < /etc/mail/domaintable
10.4.5
/etc/mail/genericstable
Nous ne nous servons pas de ce fichier. Nous créons un fichier vide et le compilons :
Ce fichier contient les différents noms sous lesquels la machine est connue. Sendmail s’en sert pour déterminer s’il doit ou non accepter un mail. Nous le renseignons comme ceci : client1.etablissement.org Nous ne compilons pas ce fichier, Sendmail y accède directement.
10.4.7
/etc/mail/mailertable
Sur cette machine, nous nous servons de ce fichier afin de rediriger les mails vers notre serveur principal. Nous renseignons le fichier comme ceci : * esmtp:[xxx.xxx.xxx.xxx] Où xxx.xxx.xxx.xxx est à remplacer par l’adresse IP du serveur principal, ici «fremen».
10.4.8
/etc/mail/relay-domains
Nous n’utilisons pas ce fichier. Nous créons un fichier vide : touch /etc/mail/relay-domains
10.4.9
/etc/mail/sendmail.ct
Ce fichier contient les logins des personnes considérées comme sûres. Sendmail ne générera pas de message d’avertissement si ces personnes mentionnent une adresse différente de leur adresse «[email protected]». Nous y mettons bien sûr root : root
10.4.10 /etc/mail/service.switch Ce fichier indique à Sendmail de quels moyens il dispose pour se renseigner sur un utilisateur, un nom de machine ou sur ses aliases :
234
10
Configuration des machines clientes
# /etc/mail/service.switch # # This is the format that sendmail expects (no colon after the service) # passwd files hosts files dns aliases files Ce fichier ne se compile pas.
10.4.11 /etc/mail/virtusertable Nous n’utilisons pas ce fichier. Nous créons un fichier vide et le compilons : touch /etc/mail/virtusertable makemap hash /etc/mail/virtusertable.db < /etc/mail/virtusertable
10.4.12 Redémarrage de Sendmail Nous pouvons maintenant redémarrer Sendmail : /etc/init.d/sendmail start Si Sendmail ne redémarre pas, il y a une erreur quelque part. Il devrait vous l’indiquer. Vérifiez que Sendmail est effectivement en fonction en vous connectant sur le port 25 (SMTP) : telnet localhost 25 Si tout va bien, Sendmail vous accueille, sinon vous obtenez le message «Connection refused.». Vous mettez fin à la connexion avec Sendmail par la commande «quit».
10.5
NFS
Nous allons maintenant nous occuper du client NFS, afin que les utilisateurs puissent accéder à leurs répertoires personnels. Nous arrêtons le service nfs-common, afin de procéder à la configuration : /etc/init.d/nfs-common stop
10.5.1
/etc/fstab
Pour que le système monte tout seul le volume NFS au démarrage, nous devons ajouter une ligne à notre fichier /etc/fstab. Voici ce que nous obtenons :
235
10
Configuration des machines clientes
# /etc/fstab: static file system information. # # /dev/hda5 / ext2 defaults,errors=remount-ro 0 1 /dev/hda6 none swap sw 0 0 proc /proc proc defaults 0 0 # Uncomment the following entry if you use a 2.2.x or newer kernel for # UNIX98-style pty handling none /dev/pts devpts gid=5,mode=620 0 0 /dev/fd0 /floppy auto defaults,user,noauto 0 0 /dev/cdrom /cdrom iso9660 defaults,ro,user,noauto 0 0 /dev/hda1 /boot ext2 rw 0 2 fremen:/home /home nfs rsize=1024,wsize=1024 0 0
10.5.2
Redémarrage de nfs-common
Nous pouvons redémarrer nfs-common : /etc/init.d/nfs-common start
10.5.3
Montage manuel des volumes NFS
Vérifiez que le volume NFS soit bien accessible dans le répertoire /home. S’il ne l’était pas, vous pouvez monter manuellement le volume par la commande : mount -o rsize=1024,wsize=1024,hard,intr fremen:/home /home
10.6
NIS
Lors de l’installation du paquetage, il vous est demandé d’entrer le domaine NIS. Saisissez «etablissement.org». Nous commençons par stopper le service NIS : /etc/init.d/nis stop
10.6.1
/etc/defaultdomain
Dans ce fichier est configuré le nom de domaine NIS que nous utilisons : etablissement.org
10.6.2
/etc/init.d/nis
Nous devons indiquer au script de démarrage que seul le client NIS est utilisé ici. Il faut éditer le script :
236
10
Configuration des machines clientes
#!/bin/sh # #/etc/init.d/nis Start NIS (formerly YP) daemons. # # # Set to "false", "slave" or "master". NISSERVER=false NET="/usr/sbin" test -f $NET/ypbind -a -f /etc/defaultdomain || exit 0 [...]
10.6.3
/etc/yp.conf
Dans ce fichier, nous indiquons au client NIS qui est le serveur. Cela évite que le client parcours le réseau à la recherche de son serveur : # # yp.conf # # # # #
Configuration file for the ypbind process. You can define NIS servers manually here if they can’t be found by broadcasting on the local net (which is the default). See the manual page of ypbind for the syntax of this file.
ypserver fremen.etablissement.org
10.6.4
/etc/passwd
Pour utiliser le service NIS, nous devons modifier le fichier /etc/passwd : root:x:0:0:root:/root:/bin/bash daemon:x:1:1:daemon:/usr/sbin:/bin/sh bin:x:2:2:bin:/bin:/bin/sh sys:x:3:3:sys:/dev:/bin/sh sync:x:4:100:sync:/bin:/bin/sync games:x:5:100:games:/usr/games:/bin/sh man:x:6:100:man:/var/cache/man:/bin/sh lp:x:7:7:lp:/var/spool/lpd:/bin/sh mail:x:8:8:mail:/var/spool/mail:/bin/sh news:x:9:9:news:/var/spool/news:/bin/sh uucp:x:10:10:uucp:/var/spool/uucp:/bin/sh proxy:x:13:13:proxy:/bin:/bin/sh
237
10
Configuration des machines clientes
majordom:x:30:31:Majordomo:/usr/lib/majordomo:/bin/sh postgres:x:31:32:postgres:/var/lib/postgres:/bin/sh www-data:x:33:33:www-data:/var/www:/bin/sh backup:x:34:34:backup:/var/backups:/bin/sh msql:x:36:36:Mini SQL Database Manager:/var/lib/msql:/bin/sh operator:x:37:37:Operator:/var:/bin/sh list:x:38:38:SmartList:/var/list:/bin/sh irc:x:39:39:ircd:/var:/bin/sh gnats:x:41:41:Gnats Bug-Reporting System:/var/lib/gnats/gnats-db:/bin/sh nobody:x:65534:65534:nobody:/home:/bin/sh telnetd:x:101:101::/usr/lib/telnetd:/bin/false identd:x:100:65534::/var/run/identd:/bin/false +::::::: julien:x:1000:1000:Julien BLACHE,,,:/home/julien:/bin/bash autre:x:1001:1001:Un autre utilisateur,,,:/home/autre:/bin/bash Sur ces machines, tout le monde doit pouvoir ouvrir une session avec son login. Nous ajoutons donc la ligne suivante : +::::::: Pour une raison ou pour une autre, il se pourrait que vous souhaitiez interdire l’accès d’une ou plusieurs machines à un utilisateur. Cela peut être réalisé de la manière suivante ; ajoutez cette ligne pour interdire à l’utilisateur «julien» d’ouvrir une session : -julien::::::: Là encore, le nombre de signes « :» est très important. Notez également qu’il n’y a pas d’espace entre les « :».
10.6.5
/etc/group
Nous devons faire le même genre de modification dans ce fichier : root:x:0: daemon:x:1: bin:x:2: sys:x:3: adm:x:4: tty:x:5: disk:x:6: lp:x:7:lp mail:x:8: news:x:9: uucp:x:10: proxy:x:13: kmem:x:15:
238
10
Configuration des machines clientes
dialout:x:20: fax:x:21: voice:x:22: cdrom:x:24: floppy:x:25: tape:x:26: sudo:x:27: audio:x:29: dip:x:30: majordom:x:31:majordom postgres:x:32: www-data:x:33: backup:x:34: msql:x:36: operator:x:37: list:x:38: irc:x:39: src:x:40: gnats:x:41: shadow:x:42: utmp:x:43:telnetd video:x:44: staff:x:50: games:x:60: users:x:100: nogroup:x:65534: telnetd:x:101: +::: julien:x:1000: autre:x:1001: Attention, ici aussi, le nombre de « :» est important ! Remarquez qu’il n’y a pas d’espace entre les « :».
10.6.6
Redémarrage de NIS
Nous pouvons maintenant redémarrer NIS : /etc/init.d/nis start
10.7
Configuration des imprimantes
Ici, nous n’avons besoin ni de GhostScript, ni d’apsfilter. Le daemon lpd se charge de tout, et c’est le serveur d’impression qui fera les éventuelles transformations nécessaires pour l’impression.
239
10
Configuration des machines clientes
Votre fichier /etc/printcap doit ressembler à cela :
# # # #
/etc/printcap: printer capability database. See printcap(5). You can use the filter entries df, tf, cf, gf etc. for your own filters. See /etc/filter.ps, /etc/filter.pcl and the printcap(5) manual page for further details.
Donnez-leur pour noms rplaser et rpcouleur. La machine à contacter pour utiliser les imprimantes est le serveur d’accès («sardaukar» dans notre exemple), et les queues distantes sont respectivement lplaser et lpcouleur.
10.8
NTP
Comme nos deux serveurs, les postes clients se maintiendront à l’heure grâce à NTP. Lors de l’installation du paquetage ntp, vous devrez spécifier un serveur NTP. Vous trouverez une liste des serveurs français à l’adresse http://www.cru.fr/NTP/serveurs\protect\ T1\textunderscorefrancais.html. Pour ne pas encombrer les serveurs primaires, utilisez s’il vous plaît un serveur secondaire, comme ntp.loria.fr, par exemple. Ne vous souciez pas de la zone horaire des machines, le protocole NTP se charge de tout.
240
10
10.9
Configuration des machines clientes
SNMPD, surveillance réseau
Là encore, le fichier de configuration est le même que précédemment. Une fois placé dans /etc/snmp/, redémarrez snmpd : /etc/init.d/snmpd stop /etc/init.d/snmpd start Puis vous pourrez décommenter les entrées correspondant aux clients dans le fichier /etc/mrtg.cfg sur fremen, au fur et à mesure que ceux-ci sont configurés.
241
11 Détails concernant les postes clients 11.1
Configuration des navigateurs Internet
Puisque nous utilisons un proxy, les utilisateurs devront configurer leurs navigateurs Web de telle sorte qu’ils utilisent ce proxy. Sans cela, ils ne pourront pas accéder au Web. Voici les données utiles pour faire ceci : – serveur proxy : sardaukar.etablissement.org ou 10.0.1.2 – port : 8080 Le serveur proxy n’est disponible que pour le protocole HTTP. Pour les autres protocoles, la connexion se fait directement, au travers du masquerading.
11.2
Protocole FTP
Du fait du masquerading opéré par le serveur d’accès, les connexions FTP doivent impérativement se faire en mode passif.
11.3
Modules spécifiques
Il existe des modules spécifiques concernant le masquage d’adresses, qui s’appliquent entre autres aux protocoles FTP et ICQ. N’hésitez pas à les installer sur le serveur d’accès. Ils sont disponibles lors de l’installation des pilotes, pendant la phase d’installation de Debian GNU/Linux.
11.4
Utilisation des imprimantes distantes
Pour utiliser les imprimantes distantes, les utilisateurs doivent spécifier l’imprimante qu’ils veulent utiliser lors de l’impression. Ceci est possible en utilisant la bonne option de l’utilitaire lpr. Exemples : – pour imprimer sur l’imprimante laser : lpr -Prplaser – pour imprimer sur l’imprimante jet d’encre couleur : lpr -Prpcouleur
242
12 Politique d’administration Je pose ci-dessous les bases de la politique d’administration qu’il convient d’adopter. Bien entendu, chaque administrateur est totalement libre d’adopter la politique qu’il souhaite.
12.1
Utilisation des machines
Les machines devraient être utilisées le plus possible pour des travaux scolaires. Néanmoins, il n’y pas de raisons de réprimer ou de s’opposer à leur utilisation dans un autre but, tant que celui-ci reste légal et en accord avec le règlement intérieur de l’établissement. Toutefois, il serait bon que les élèves désirant utiliser ces machines pour un travail scolaire aient la priorité, ou, tout au moins, soient favorisés.
12.2
Utilisation de l’accès Internet
Je pense qu’il ne faut pas imposer un usage exclusif de cet accès, comme cela est parfois le cas sur les accès fournis par l’Éducation Nationale. Il faut bien entendu rester en accord avec la loi sur l’usage qui est fait de cet accès. Nous avons pris des dispositions pour cela (mise en place du proxy Squid et du redirecteur SquidGuard assorti de listes noires) ; toutefois, rien ne garantit que tout site illégal sera inaccessible. Je vous encourage à reporter au mainteneur des listes noires tout manquement ou toute erreur.
12.3
Utilisation du compte e-mail
Nous abordons ici la partie délicate de l’administration. En effet, il vous faut maintenant lire sérieusement votre courrier, c’est à dire le courrier adressé à root, aux adresses [email protected], [email protected], entre autres. C’est à ces adresses que vous seront envoyées les plaintes concernant les éventuels abus commis par vos utilisateurs avec leurs adresses e-mail. C’est alors à vous de juger de la gravité de l’abus. Dans tous les cas, vous devrez répondre à la personne qui vous aura prévenu. En cas de spam, vous devrez prendre des mesures immédiates ; personnellement, j’avertirais l’utilisateur concerné par mail, et éventuellement en personne. Je le ferais une fois, puis une deuxième. À la troisième plainte, je fermerais purement et simplement le compte e-mail de l’utilisateur. Il est indispensable de prendre des mesures, car, si vous ne le faites pas, votre domaine sera répertorié comme expéditeur de spam, et vous risquez d’être filtré sur un bon nombre de serveurs.
243
12
Politique d’administration
Quelque soit votre politique à cet égard, vous devrez en assumer les conséquences. Dans le premier cas, elles seront minimes, c’est-à-dire que seul l’utilisateur concerné vous demandera des comptes. Dans le deuxième cas, celui où vous ne réagiriez pas aux plaintes, vous devrez affronter les questions de plusieurs utilisateurs vous demandant pourquoi leurs courriers ne sont pas arrivés à destination.
12.4 Utilisation des newsgroups Là aussi, la question est délicate. Vous devrez lire attentivement votre courrier, car vous recevrez les plaintes aux adresses [email protected], [email protected], [email protected] ou encore [email protected]. Dans tous les cas, répondez aux personnes qui vous préviennent des abus. Ici, vous ne pouvez pas interdire l’accès aux newsgroups pour un utilisateur donné. C’est une limitation de INN 2.2.2 qui ne peut pas se baser sur les fichiers systèmes pour l’authentification des utilisateurs. Avertissez donc l’utilisateur incriminé, et soyez ferme. Ensuite, vous n’avez qu’à espérer qu’il comprenne. Les risques sont ici à peu près les mêmes, à savoir un filtrage de tout ce qui provient de votre serveur de news. La seule différence est que vos utilisateurs risquent de ne pas se rendre compte qu’ils sont filtrés ailleurs, tandis que dans le cas du mail, ils le sauraient assez rapidement. Le plus gros risque ici est que votre feed refuse de continuer l’aventure avec vous. Cela peut se faire du jour au lendemain, sans explications. Rappelez-vous qu’il ne vous doit rien, et que vous l’avez sollicité.
12.5 Utilisation de l’espace Web personnel Concernant l’espace Web personnel, vous recevrez les éventuelles plaintes aux adresses [email protected] ou [email protected]. Tentez de régler au mieux les problèmes ; en cas de différend entre deux personnes, essayez d’influer sur votre utilisateur ; en cas de contenu clairement illégal, réagissez de suite par l’effacement du contenu en question (ou le déplacement temporaire pour ne pas perdre les données). Rappelez-vous que vous êtes l’administrateur : vous avez les pleins pouvoirs sur les fichiers stockés sur les machines, mais surtout, vous êtes responsables de ces fichiers au regard de la loi.
12.6 Quotas disque Il se peut que, pour une raison ou une autre, l’un ou l’autre de vos utilisateurs vous demande un quota disque plus élevé. Pourquoi pas. Dans le cas où vous seriez amené à créer un groupe pour quelques utilisateurs, vous devrez très certainement revoir leurs quotas sensiblement à la hausse.
244
12
Politique d’administration
Il n’y a pas vraiment de raisons de refuser un ajustement des quotas pour l’une ou l’autre personne.
12.7 Matériel En cas de détérioration du matériel, ou de vol, je ne peux que laisser le champ libre à l’administrateur et à l’établissement concerné.
245
13 L’administration en pratique Dans les sections suivantes, je donne dans les grandes lignes les manipulations à réaliser pour mener à bien les tâches d’administration les plus simples. Rappelez-vous que le postulat de départ est que l’administrateur soit un tant soit peu familier avec l’administration UNIX. La plupart des manipulations sont décrites dans les sections précédentes de ce dossier.
13.1
Ajout d’un utilisateur
Il y a deux cas différents lors de l’ajout d’un utilisateur : l’utilsateur est un élève, ou un professeur. Pour ajouter un utilisateur, voici les étapes à suivre : – création du compte (et attribution d’un premier mot de passe) par la commande : adduser --home /home/eleves/ (pour un élève) adduser --home /home/profs/ (pour un professeur) – ajout de l’utilisateur sur le serveur Samba – mise à jour des maps NIS – ajout d’un quota disque pour l’utilisateur Concernant les maps NIS, vous pouvez soit les régénérer manuellement, soit laisser cron s’en charger pendant la nuit. Bien entendu, un login est unique et ne peut être utilisé par deux personnes.
13.2 Suppression d’un utilisateur Pour supprimer un utilisateur : – suppression du compte (et du répertoire personnel, ainsi que du spool de mail) : userdel -r – suppression de l’utilisateur sur le serveur Samba – mise à jour des maps NIS – suppression du quota disque pour l’utilisateur
13.3 Les groupes Les groupes sont utiles lorsque plusieurs utilisateurs travaillent sur un même projet, par exemple. Dans ce cas, vous pouvez leur créer un groupe, ainsi qu’un répertoire commun (sous /home/groups/* par exemple). Les membres du groupe pourront alors accéder librement à ce répertoire et aux fichiers qu’il contient.
246
13
13.3.1
L’administration en pratique
Création d’un groupe
Pour créer un nouveau groupe : – création du groupe par la commande : addgroup – mise à jour des maps NIS – création d’un répertoire commun, possédé par le groupe et l’un des utilisateurs de ce groupe – mise en place d’un quota disque portant sur le répertoire – éventuellement, mise en place d’un alias mail pointant vers tous les utilisateurs du groupe : groupe1:
utilisateur1,utilisateur2,utilisateur3
– ajout des utilisateurs dans le groupe
13.3.2
Ajout d’utilisateurs dans un groupe
Pour ajouter un utilisateur dans un groupe : adduser Puis mettez à jour les maps NIS.
13.3.3
Suppression d’un utilisateur dans un groupe
Éditez le fichier /etc/group, et effacez l’utilisateur dans la liste correspondant au groupe voulu. Puis mettez à jour les maps NIS.
13.3.4
Suppression d’un groupe
Pour supprimer un groupe : – éditez le fichier /etc/group, et supprimez l’entrée correspondant au groupe voulu – mettez à jour les maps NIS – supprimez les quotas portant sur le répertoire assigné au groupe – supprimez le répertoire assigné au groupe
13.4
Gestion des programmes
Si vous êtes amenez à installer des programmes supplémentaires sur les postes clients, prenez garde à les installer sur tous les postes. De même si vous en supprimez. Vous disposez de deux méthodes pour installer ou enlever des logiciels : – à partir des sources, comme expliqué plus haut, auquel cas il vous faudra effacer à la main les fichiers dudit logiciel pour le désinstaller – à partir d’un paquetage Debian
247
13
13.4.1
L’administration en pratique
Installation d’un paquetage Debian
Il vous suffit d’utiliser le logiciel apt-get, configuré soit pour récupérer le paquetage sur un serveur FTP, soit sur un CD-ROM. Pour installer un paquetage, vous utiliserez simplement la commande : apt-get install Apt-get se chargera de se procurer le paquetage, au besoin il vous demandera d’insérer tel ou tel CD-ROM de Debian GNU/Linux 2.2 «Potato», puis installera le paquetage. Vous pouvez également utiliser dpkg sur un fichier présent localement : dpkg -i
13.4.2
Désinstallation d’un paquetage Debian
Apt-get est le moyen le plus simple : apt-get remove
13.4.3
Désinstallation d’un paquetage Debian et de ses fichiers de configuration
Les fichiers de configuration d’un logiciel ont un statut à part dans les paquetages Debian. Lors des mises à jour, ces fichiers ne sont pas remplacés par ceux présents dans le paquetage, afin de préserver votre configuration. Lorsque vous désinstallez un paquetage, vous pouvez décider de laisser ces fichiers à leur place, ou de les enlever. Pour désinstaller un paquetage ainsi que ses fichiers de configuration, utilisez l’option – purge d’apt-get : apt-get remove --purge
248
14 Captures d’écran
249
14
Captures d’écran
F IG . 14.1 – GNOME 1.2. On remarque Gnumeric intégrant plusieurs objets Bonobo, ainsi que The GIMP et un éditeur d’icônes. Au-dessus, un émulateur de terminal avec fond transparent. Le gestionnaire de fenêtres utilisé est SawFish. L’utilisateur a appliqué un thème aux objets GTK+ ainsi qu’au gestionnaire de fenêtres.
F IG . 14.2 – Netscape 4.76 affichant le site http ://linuxfr.org/.
250
14
Captures d’écran
F IG . 14.3 – Mozilla M18 affichant le site http ://linuxfr.org/.
F IG . 14.4 – Le logiciel IglooFTP, connecté à un serveur.
251
14
Captures d’écran
F IG . 14.5 – La fenêtre principale du logiciel Balsa.
F IG . 14.6 – Lecture d’un groupe de discussion avec Gnus. Ici, le groupe comp.text.tex.
252
14
Captures d’écran
F IG . 14.7 – Lecture du courrier avec Mutt. La barre de menu ne fait pas partie de mutt, mais d’Eterm, un émulateur de terminal.
F IG . 14.8 – Lecture d’un groupe de discussion avec Pan, fortement inspiré du logiciel Forté Agent sous MS-Windows.
253
14
Captures d’écran
F IG . 14.9 – Lecture des groupes de discussion avec SLRN, dans un émulateur de terminal RXVT.
F IG . 14.10 – LYX, composition de la section 5.2 de ce document. Affichage du fichier PostScript contenant le diagramme du réseau, on aperçoit également une référence croisée vers une section du document, ainsi qu’une étiquette permettant de se référer à ce passage par une référence croisée.
254
14
Captures d’écran
F IG . 14.11 – TiLP en action. À gauche, liste des fichiers présents sur la calculatrice, à droite liste des fichiers dans le répertoire courant.
F IG . 14.12 – RasMol affichant une molécule relativement complexe. Le résultat est vraiment bon.
255
14
Captures d’écran
F IG . 14.13 – Dia en pleine action.
256
15 Documentation et sources d’information Par thèmes, les différentes sources de documentations et d’informations utilisées pour la rédaction de ce dossier, ainsi que quelques documentations plus poussées. La plupart de ces documentations sont en anglais, soit par manque de traduction française, soit pour cause de traduction obsolète ou imprécise. Les différents HOWTO1 cités ici se trouvent dans divers formats en version anglaise et française sur le CD-ROM joint. Les RFC2 sont des documents définissant un standard, un protocole, ou n’importe quoi3 ayant attrait à Internet. Vous pouvez les consulter sur le site http://www.faqs.org ou http://www.rfc-editor.org Ces documents sont uniquement disponibles en langue anglaise. La mention «documentation de» renvoie aux diverses pages de man et documentations Info livrées avec le programme.
15.1 Installation de Debian GNU/Linux 2.2 «Potato» – «Installing Debian GNU/Linux 2.2 For Intel x86», disponible sur les CD-ROM d’installation et sur les mirroirs FTP, dont ftp ://ftp.fr.debian.org/debian/dists/potato/main/disks-i386/ current/doc/install.en.pdf (ou ..../doc/fr/install.fr.pdf en version française)
15.2 Debian GNU/Linux – «Learning Debian GNU/Linux», aux éditions O’Reilly
15.3
Paquetages Debian
La plupart des documentations sont disponibles uniquement en anglais. – «Le Guide du Nouveau Responsable Debian» – «The Debian Developer’s Reference» – «The Debian Policy Manual» ainsi que les autres «Policy Manuals» – «The Debian Packaging Manual» 1
Documentations spécifiques à GNU/Linux décrivant pas à pas la mise en place d’une fonctionnalité. Request For Comment. 3 Mais alors, vraiment n’importe quoi, telle la RFC 2324 qui définit HTCPCP (HyperText Coffee Pot Control Protocol) ou encore la RFC 1149 (RFC 2549 pour une version améliorée) qui encadre la transmission de paquets IP par pigeons voyageurs. . . 2
257
15
Documentation et sources d’information
Toutes ces documentations et quelques autres sont disponibles dans les paquetages debianpolicy, developers-reference, doc-debian (doc-debian-fr), maint-guide (maint-guide-fr), packaging-manual, ainsi que sur le site Web du projet Debian : http://www.Debian.org/devel.
15.4
Serveur DNS Bind
– «The Linux DNS-HOWTO», version 2.2 du 11 Février 1999 – «DNS & BIND», aux éditions O’Reilly – RFC 952 : DOD Internet Host Table Specifications – RFC 1034 : Domain Names - Concepts and Facilities – RFC 1035 : Domain Names - Implementation and Specifications – RFC 1101 : DNS Encoding of Network Names and Other Types – RFC 1183 : New DNS RR Definitions – RFC 1918 : Address Allocation for Private Internets Ainsi que la documentation présente dans /usr/share/doc/bind.
15.5
Serveur SMTP Sendmail
– – – –
«Sendmail», aux éditions O’Reilly (aussi appelé le «Bat Book») «Sendmail Desktop Reference», aux éditions O’Reilly Le site Web http://www.sendmail.org/ Les fichiers de /usr/share/doc/sendmail, spécialement le fichier cf.README.gz, ainsi que les fichiers d’exemple – RFC 821 : Simple Mail Transfer Protocol – RFC 822 : Standard Format of ARPA Internet Text Messages – RFC 974 : Mail Routing and the Domain System – RFC 1341 : MIME (Multipurpose Internet Mail Extensions) – RFC 2045 : MIME part One - Format of Internet Messages Bodies – RFC 2046 : MIME part Two - Media Types – RFC 2047 : MIME part Three - Message Header Extensions for Non-ASCII Text – RFC 2142 : Mailbox Names for Common Services, Roles and Functions – RFC 2635 : DON’T SPEW - A set of guidelines for mass unsolicited mailings and postings Merci à Valentin BECK pour son exemple de sendmail.mc, sur lequel je me suis basé.
15.6
Serveur POP3 QPopper
– RFC 1939 : Post Office Protocol - Version 3 – Les fichiers de /usr/share/doc/qpopper
15.7
NIS
– «The Linux NIS(YP)/NYS/NIS+ HOWTO», version 1.0 du 9 Mars 1999
258
15
Documentation et sources d’information
– «The Debian GNU/Linux NIS HOWTO», présent dans /usr/share/doc/nis, ainsi que les autres fichiers du répertoire
15.8 Quotas disque – «The Linux Quota Mini-HOWTO», version du 8 Août 1997 – Les fichiers de /usr/share/doc/quota
15.9 Partage de fichiers par NFS – «The Linux NFS-HOWTO», version 1.0 du 1er Octobre 1999 – Les fichiers de /usr/share/doc/nfs-common – Les fichiers de /usr/share/doc/nfs-kernel-server
15.10
Partage de fichiers par Samba
– «The Linux SMB-HOWTO», version 1.3 du 20 Avril 2000 – «Using SAMBA», éditions O’Reilly – Les fichiers de /usr/share/doc/samba
15.11
Serveur de news INN
– La documentation d’Éric JACOBONI, «Configuration de INN sous Linux», version 2.6 du 30 Juin 1998 – La FAQ INN, disponible sur le site Web http://blank.org/innfaq/ – Les fichiers de /usr/share/doc/inn2 – RFC 977 : Network News Transfer Protocol – RFC 1036 : Standard for Interchange of USENET Messages – Son-of-RFC 1036 Merci à Valentin BECK pour le feed de news sur la hiérarchie FR.*.
15.11.1
Filtre PERL pour INN, CleanFeed
– La documentation livrée avec CleanFeed
15.12 – – – –
Serveur HTTP Apache
«The Apache Server Survival Guide» Le fichier de configuration par défaut de Debian GNU/Linux La documentation de /usr/share/doc/apache RFC 2068 : HyperText Transfer Protocol - HTTP/1.1
259
15
15.13
Documentation et sources d’information
Serveur FTP ProFTPd
– Le fichier de configuration par défaut de Debian GNU/Linux – Le site Web http://www.proftpd.net/ – La documentation de /usr/share/doc/proftpd
15.14
Synchronisation de l’heure par NTP
– Les fichiers de /usr/share/doc/ntp – RFC 2030 : Simple Network Time Protocol Version 4 for IPv4, IPv6 and OSI
15.15
Sauvegarde de données
– La documentation Info de GNU Tar
15.16
Firewalling, firemasq
– La documentation de l’utilitaire IPChains – La documentation de firemasq – Le site Web de firemasq : http://northernlights.bizland.com/firewalls.htm
15.17
Serveur proxy Squid
– La documentation de Squid, http://www.squid-cache.org/ – Les fichiers de /usr/share/doc/squid
15.18
Redirecteur SquidGuard
– La documentation de /usr/share/doc/squidguard – Le site Web http://www.squidguard.org/
15.19
Serveur d’impression, lpd
– La documentation de lpd – Les fichiers de /usr/share/doc/lpd
15.20
SNMP/snmpd
– La documentation de /usr/share/doc/snmpd – Le site Web http://ucd-snmp.ucdavis.edu/ – La documentation http://www.cisco.com/univercd/cc/td/doc/cisintwk/ito\ protect\T1\textunderscoredoc/snmp.htm
– La documentation de /usr/share/doc/mrtg – Le site Web http://www.mrtg.org/
15.22
Notions de réseau
– «TCP/IP», aux éditions O’Reilly – «DNS & BIND», aux éditions O’Reilly – Le site http://www.cisco.com Ainsi que divers ouvrages, glânés et perdus au fil du temps.
15.23
Administration UNIX
– «Linux in a Nutshell», éditions O’Reilly Et, là encore, divers autres ouvrages, glânés et perdus au fil du temps.
15.24
Divers
– «OpenSources : Voices from the Open Source Revolution», et sa version française «Tribune Libre», aux éditions O’Reilly L’histoire de ce que beaucoup appellent la «Révolution OpenSource», qui mena Richard M . STALLMAN à fonder la Free Software Foundation et à démarrer le projet GNU, avec les conséquences et la réussite que l’on connaît aujourd’hui.
15.25
Autres documentations
15.25.1
Les pages de man
Tous les logiciels cités ci-dessus disposent de pages de man (manuel en ligne), disponible sous tous les systèmes UNIX en tapant : man Par exemple, pour la page de man concernant le fichier /etc/network/interfaces : man 5 interfaces Le numéro de la section est optionnel, il n’est nécessaire que s’il existe plusieurs pages portant le même nom dans des sections différentes. Pour connaître la répartition des sections, consultez la page de man du programme man.
261
15
15.25.2
Documentation et sources d’information
La documentation Info
Certains logiciels, spécialement ceux du projet GNU, disposent de documentation au format Info. Pour y accéder : info Par exemple, pour la documentation de GNU Tar : info tar
15.25.3
Les newsgroups
Un remerciement spécial aux habitués de la hiérarchie FR.* qui m’ont permis d’apprendre beaucoup de choses. En particulier les forums fr.comp.os.linux.*, fr.comp.mail, fr.usenet.logiciels, fr.comp.os.unix, fr.reseaux.*, et j’en oublie.
15.25.4
Les personnes
Un autre remerciement particulier aux habitués des quelques channels que je fréquente sur IRCnet, ainsi que OpenProjects.net. Enfin, merci à Yves POTIN4 pour la lecture des premières versions de ce document et ses avis éclairés.
15.25.5
L’expérience
Rien ne remplace l’expérience, et je n’aurais certainement jamais imaginé ce projet si je n’avais pas eu l’expérience nécessaire pour le réaliser et l’administrer moi-même. Si je n’avais pas été fatigué par les plantages incessant de Microsoft Windows, si je n’avais pas eu l’occasion d’essayer GNU/Linux, de configurer un serveur SMTP, de monter un serveur de news, et de faire tout un tas d’autres choses, tout ceci n’aurait jamais été possible. Merci donc à toutes les personnes qui ont rendu cela possible et qui m’ont aidé, encouragé.
15.26
Logithèque
Ci-dessous, les adresses des sites Web de la plupart des logiciels cités dans ce document. GNOME http://www.gnome.org/ Enlightenment http://www.enlightenment.org/ AfterStep http://www.afterstep.org/ 4
Professeur de philosophie au Lycée François Truffaut de Beauvais, Yves POTIN a réalisé l’installation de salles informatiques utilisant GNU/Linux durant l’année scolaire 1998/99. Un document disponible sur http:// www.aful.org/education/lycee-beauvais/ résulte de ces mises en place.
Dia http://www.lysator.liu.se/\T1\textasciitilde{}alla/dia/
264
15
Documentation et sources d’information
BWBasic http://www.bwbasic.com/ DrGeo
http://drgeo.seul.org/
The GIMP http://www.gimp.org/ Moonlight Creator http://rufus.w3.org/linux/moonlight/intro.html Blender http://www.blender.nl/
265
16 CD-ROM DemoLinux Le CD-ROM DemoLinux est un CD-ROM bootable contenant un système Debian GNU/Linux utilisable sans installation depuis le CD-ROM.
16.1
Utilisation
DemoLinux peut constituer une alternative à court terme à l’installation d’un système GNU/Linux sur une machine. L’utilisation de DemoLinux requiert une machine possédant au moins 32 Mo de RAM, 64 Mo étant fortement recommandés. Vous devrez également vérifier que votre matériel est supporté, principalement la carte vidéo. DemoLinux, comme son nom l’indique, se veut un outil de découverte des systèmes GNU/Linux. Je ne peux qu’encourager le lecteur ne connaissant pas GNU/Linux à en faire l’expérience par le biais du CD-ROM joint au dossier.
16.2
Documentation
Il est nécessaire de lire la documentation avant d’utiliser DemoLinux. La documentation est fournie sur le CD, au format HTML (fichier index.html à la racine du CD). Je vous conseille de l’imprimer. Pour plus de renseignements, visitez le site http://www.demolinux.org/.
266
17 Concernant le document 17.1
Période de rédaction
Ce document a été rédigé pour la plus grande partie durant les mois de Juillet et Août 2000, pour des questions d’emploi du temps. Le contenu du présent document se réfère donc aux versions logicielles disponibles à cette date.
17.2
Historique
– 10 août 2000 : version 1.0, le document est en grande partie terminé, ainsi que le CD-ROM. – 18 août 2000 : version 1.1, ajout de la section 17. – 15 septembre 2000 : version 1.2, ajout des paragraphes concernant l’accès aux ressources physiques, diverses corrections. – 29 octobre 2000 : version 1.3, réécriture des pages de redirection de SquidGuard en XHTML 1.0 et CSS. – 30 octobre 2000 : version 1.4, ajout des sections concernant SNMP et MRTG. – 17 Novembre 2000 : diverses corrections, relecture de la section 1. Un bug de LYX risque de me poser quelques problèmes dans les temps à venir. – 18 Novembre 2000 : diverses corrections, relecture des sections 2 à 7. Ce bug de LYX (touches mortes) est vraiment horripilant, je vais terminer le document avec XEmacs. – 19 Novembre 2000 : version 1.5, le diagramme du réseau a été refait avec Dia. Relecture des sections 8 et 9. – 21 Novembre 2000 : version 1.6, relecture des sections 10 et 11, modification de la configuration des imprimantes. L’utilitaire printtool semblant quelque peu déficient par les temps qui courent, l’utilisation d’outils plus performants est nécessaire. – 23 Novembre 2000 : relecture des sections 12 à 14. – 27 Décembre 2000 : version 1.7-bac, relecture des sections 15 et 16, diverses corrections. Mise à jour de certaines captures d’écran. Ajout des chapitres 17 et 18. – 20 Janvier 2001 : version 1.8-bac. Amélioration des configurations d’Apache, SNMP/MRTG et Samba. – 21 Janvier 2001 : version 1.9-bac. Amélioration du firewalling/masquerading, diverses adaptations. – 23 Janvier 2001 : version 1.95-bac. Ajout d’un mode de réplication des machines clientes. – 23 Mars 2001 : Début de la dernière relecture. Sections 1 à 6. – 6 Avril 2001 : version 1.99-bac. Fin de la relecture, impression du sommaire et du dossier lui-même. Le CD-ROM sera finalisé et gravé au mois de mai. – 8 Mai 2001 : version 2.10-bac. Reprise complète du fichier TEX produit par LYX. Nom-
267
17
Concernant le document
breuses adaptations pour obtenir un rendu de qualité avec pdfTEX, diverses corrections (notamment structure du CD-ROM). CD-ROM finalisé. Le nombre de pages a diminué suite à ces modifications. Le fichier LYX ne correspond plus au présent document et ne sera pas remis à jour ; la version 2.00-bac sera à priori rendue car imprimée avant. – 21 Juin 2001 : nettoyage des sections concernant le Baccalauréat, quelques modifications, publication.
17.3
Traduction
L’auteur demande à toute personne désirant effectuer une traduction de ce document de prendre contact avec lui. La traduction est autorisée et encouragée.
17.4
Mises à jour
Quiconque désire mettre à jour ce document est autorisé à le faire. L’auteur aimerait cependant en être informé.
17.5
Validité des solutions
Par manque de matériel et de temps, je n’ai pas été en mesure de tester la majeure partie des configurations proposées dans ce document. Toutefois, elles devraient être en majorité fonctionnelles.
17.6
Mise en application
L’auteur souhaiterait être averti au cas où quelqu’un déciderait de mettre en pratique le contenu de ce document.
268
18 Mentions légales 18.1
Informations de copyright
Copyright (c) 2000 Julien BLACHE. L’auteur accorde la permission de copier, distribuer et/ou modifier ce document conformément aux termes de la GNU Free Documentation License, Version 1.1 telle que publiée par la Free Software Foundation ; avec comme Sections Invariantes les sections intitulées «Avantpropos» et «Annexe D : détails concernant le baccalauréat général», avec pour Texte de Couverture le titre et le nom exact de l’auteur, ainsi que l’adresse e-mail de l’auteur, et sans Texte de Dernière de Couverture. Une copie de la licence est incluse dans le présent document à la section 18.5. (en page 272) Afin de rester le plus fidèle possible à l’esprit de la licence, et la version anglaise de celle-ci faisant foi en cas de désaccord, voici le texte original, traduit ci-dessus par l’auteur : Copyright (c) 2000 Julien BLACHE. Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.1 as published by the Free Software Foundation ; with the Invariant Sections being “Avant-propos” and “Annexe D : détails concernant le baccalauréat général”, with the Front-Cover Texts being the exact title of the document, the name and e-mail address of the author, and with no Back-Cover Texts. A copy of the license is included in the section 18.5. (on page 272)
18.2 Concernant le domaine «etablissement.org» Le domaine «etablissement.org» est pris ici à titre d’exemple, et uniquement à ce titre. L’auteur déclare n’avoir aucune relation avec le propriétaire du domaine qui est : [01-05-08 - 12:47:27] julien@thumper(pts/0 150):~% whois etablissement.org Whois Server Version 1.3 Domain names in the .com, .net, and .org domains can now be registered with many different competing registrars. Go to http://www.internic.net for detailed information. Domain Name: ETABLISSEMENT.ORG
269
18
Mentions légales
Registrar: NETWORK SOLUTIONS, INC. Whois Server: whois.networksolutions.com Referral URL: www.networksolutions.com Name Server: NS1.NBC.NETCOM.CA Name Server: NS2.NBC.NETCOM.CA Name Server: TOR-NS2.NETCOM.CA Updated Date: 01-feb-2001
>>> Last update of whois database: Mon, 7 May 2001 07:34:37 EDT <<< The Registry database contains ONLY .COM, .NET, .ORG, .EDU domains and Registrars.
Found InterNIC referral to whois.networksolutions.com. The Data in Network Solutions’ WHOIS database is provided by Network Solutions for information purposes, and to assist persons in obtaining information about or related to a domain name registration record. Network Solutions does not guarantee its accuracy. By submitting a WHOIS query, you agree that you will use this Data only for lawful purposes and that, under no circumstances will you use this Data to: (1) allow, enable, or otherwise support the transmission of mass unsolicited, commercial advertising or solicitations via e-mail (spam); or (2) enable high volume, automated, electronic processes that apply to Network Solutions (or its systems). Network Solutions reserves the right to modify these terms at any time. By submitting this query, you agree to abide by this policy. Registrant: Compucentre (ETABLISSEMENT-DOM) 1 Sunlight Park Rd. 2nd Floor Toronto, Ont. M4M 1B5 CA Domain Name: ETABLISSEMENT.ORG Administrative Contact, Billing Contact: Bradshaw, David (DB16506) [email protected] Compucentre 1 Sunlight Park Rd. 2nd Floor Toronto, Ont. M4M 1B5 CA +1 416 788 1300 (FAX) +1 416 778 1777
270
18
Mentions légales
Technical Contact: AT&T Canada IES (SO69-ORG) AT&T Canada IES 905 King Street West Toronto, Ontario M6K 3G9 CA 416-341-5700 Fax- 416-341-5725
Record last updated on 31-Jan-2001. Record expires on 09-Dec-2001. Record created on 09-Dec-1998. Database last updated on 7-May-2001 19:01:00 EDT. Domain servers in listed order: NS1.NBC.NETCOM.CA NS2.NBC.NETCOM.CA TOR-NS2.NETCOM.CA
207.181.89.2 207.181.89.3 207.181.101.5
L’auteur certifie les informations ci-dessus comme exactes au moment de la requête. L’auteur ne saurait en aucun cas être tenu responsable des problèmes que pourraient causer l’utilisation des fichiers de configuration pour le serveur DNS Bind tels que fournis dans ce document.
18.3
Marques citées dans ce document
Toutes les marques citées dans ce document sont des marques déposées par leurs propriétaires respectifs aux États-Unis d’Amérique et/ou dans d’autres pays. Linux est une marque déposée de Linus TORVALDS aux États-Unis d’Amérique et dans d’autres pays.
18.4
Scripts fournis dans le document
Les scripts fournis dans ce document sont Copyright (c) 2000 Julien BLACHE, à l’exception des scripts firemasq.up.sh et firemasq.down.sh. Ces fichiers sont des logiciels libres ; vous pouvez les redistribuer et/ou les modifier conformément aux termes de la GNU General Public License telle que publiée par la Free Software Foundation ; dans sa version 2. Ces fichiers sont distribués dans l’espoir qu’il deviendront utiles, mais SANS AUCUNE GARANTIE, ni implicite, ni explicite concernant leur commercialisation ou leur adaptation dans un but spécifique. Reportez-vous à la GNU General Public License pour plus de détails.
271
18
Mentions légales
Vous devriez avoir reçu une copie de la GNU General Public License avec ces programmes ; si ce n’est pas le cas, écrivez à la Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. Dans le même soucis de respect que précédemment, et car là encore la version anglaise fait foi, voici le texte original traduit ci-dessus par l’auteur : Copyright (c) 2000 Julien BLACHE, except the firemasq.up.sh and firemasq.down.sh scripts. This program is free software ; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation ; version 2. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY ; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program ; if not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. Le texte complet de la GNU General Public License figure à la section 18.6, en page 279 du présent document.
18.5
GNU Free Documentation License
Voici le texte intégral de la GNU Free Documentation License : GNU Free Documentation License Version 1.1, March 2000 Copyright (C) 2000 Free Software Foundation, Inc. 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed.
0. PREAMBLE The purpose of this License is to make a manual, textbook, or other written document "free" in the sense of freedom : to assure everyone the effective freedom to copy and redistribute it, with or without modifying it, either commercially or noncommercially. Secondarily, this License preserves for the author and publisher a way to get credit for their work, while not being considered responsible for modifications made by others. This License is a kind of "copyleft", which means that derivative works of the document must themselves be free in the same sense. It complements the GNU General Public License, which is a copyleft license designed for free software.
272
18
Mentions légales
We have designed this License in order to use it for manuals for free software, because free software needs free documentation : a free program should come with manuals providing the same freedoms that the software does. But this License is not limited to software manuals ; it can be used for any textual work, regardless of subject matter or whether it is published as a printed book. We recommend this License principally for works whose purpose is instruction or reference.
1. APPLICABILITY AND DEFINITIONS This License applies to any manual or other work that contains a notice placed by the copyright holder saying it can be distributed under the terms of this License. The "Document", below, refers to any such manual or work. Any member of the public is a licensee, and is addressed as "you". A "Modified Version" of the Document means any work containing the Document or a portion of it, either copied verbatim, or with modifications and/or translated into another language. A "Secondary Section" is a named appendix or a front-matter section of the Document that deals exclusively with the relationship of the publishers or authors of the Document to the Document’s overall subject (or to related matters) and contains nothing that could fall directly within that overall subject. (For example, if the Document is in part a textbook of mathematics, a Secondary Section may not explain any mathematics.) The relationship could be a matter of historical connection with the subject or with related matters, or of legal, commercial, philosophical, ethical or political position regarding them. The "Invariant Sections" are certain Secondary Sections whose titles are designated, as being those of Invariant Sections, in the notice that says that the Document is released under this License. The "Cover Texts" are certain short passages of text that are listed, as Front-Cover Texts or Back-Cover Texts, in the notice that says that the Document is released under this License. A "Transparent" copy of the Document means a machine-readable copy, represented in a format whose specification is available to the general public, whose contents can be viewed and edited directly and straightforwardly with generic text editors or (for images composed of pixels) generic paint programs or (for drawings) some widely available drawing editor, and that is suitable for input to text formatters or for automatic translation to a variety of formats suitable for input to text formatters. A copy made in an otherwise Transparent file format whose markup has been designed to thwart or discourage subsequent modification by readers is not Transparent. A copy that is not "Transparent" is called "Opaque". Examples of suitable formats for Transparent copies include plain ASCII without markup, Texinfo input format, LATEX input format, SGML or XML using a publicly available DTD, and
273
18
Mentions légales
standard-conforming simple HTML designed for human modification. Opaque formats include PostScript, PDF, proprietary formats that can be read and edited only by proprietary word processors, SGML or XML for which the DTD and/or processing tools are not generally available, and the machine-generated HTML produced by some word processors for output purposes only. The "Title Page" means, for a printed book, the title page itself, plus such following pages as are needed to hold, legibly, the material this License requires to appear in the title page. For works in formats which do not have any title page as such, "Title Page" means the text near the most prominent appearance of the work’s title, preceding the beginning of the body of the text.
2. VERBATIM COPYING You may copy and distribute the Document in any medium, either commercially or noncommercially, provided that this License, the copyright notices, and the license notice saying this License applies to the Document are reproduced in all copies, and that you add no other conditions whatsoever to those of this License. You may not use technical measures to obstruct or control the reading or further copying of the copies you make or distribute. However, you may accept compensation in exchange for copies. If you distribute a large enough number of copies you must also follow the conditions in section 3. You may also lend copies, under the same conditions stated above, and you may publicly display copies.
3. COPYING IN QUANTITY If you publish printed copies of the Document numbering more than 100, and the Document’s license notice requires Cover Texts, you must enclose the copies in covers that carry, clearly and legibly, all these Cover Texts : Front-Cover Texts on the front cover, and Back-Cover Texts on the back cover. Both covers must also clearly and legibly identify you as the publisher of these copies. The front cover must present the full title with all words of the title equally prominent and visible. You may add other material on the covers in addition. Copying with changes limited to the covers, as long as they preserve the title of the Document and satisfy these conditions, can be treated as verbatim copying in other respects. If the required texts for either cover are too voluminous to fit legibly, you should put the first ones listed (as many as fit reasonably) on the actual cover, and continue the rest onto adjacent pages. If you publish or distribute Opaque copies of the Document numbering more than 100, you must either include a machine-readable Transparent copy along with each Opaque copy, or state in or with each Opaque copy a publicly-accessible computer-network location containing a complete Transparent copy of the Document, free of added material, which the general
274
18
Mentions légales
network-using public has access to download anonymously at no charge using public-standard network protocols. If you use the latter option, you must take reasonably prudent steps, when you begin distribution of Opaque copies in quantity, to ensure that this Transparent copy will remain thus accessible at the stated location until at least one year after the last time you distribute an Opaque copy (directly or through your agents or retailers) of that edition to the public. It is requested, but not required, that you contact the authors of the Document well before redistributing any large number of copies, to give them a chance to provide you with an updated version of the Document.
4. MODIFICATIONS You may copy and distribute a Modified Version of the Document under the conditions of sections 2 and 3 above, provided that you release the Modified Version under precisely this License, with the Modified Version filling the role of the Document, thus licensing distribution and modification of the Modified Version to whoever possesses a copy of it. In addition, you must do these things in the Modified Version : A. Use in the Title Page (and on the covers, if any) a title distinct from that of the Document, and from those of previous versions (which should, if there were any, be listed in the History section of the Document). You may use the same title as a previous version if the original publisher of that version gives permission. B. List on the Title Page, as authors, one or more persons or entities responsible for authorship of the modifications in the Modified Version, together with at least five of the principal authors of the Document (all of its principal authors, if it has less than five). C. State on the Title page the name of the publisher of the Modified Version, as the publisher. D. Preserve all the copyright notices of the Document. E. Add an appropriate copyright notice for your modifications adjacent to the other copyright notices. F. Include, immediately after the copyright notices, a license notice giving the public permission to use the Modified Version under the terms of this License, in the form shown in the Addendum below. G. Preserve in that license notice the full lists of Invariant Sections and required Cover Texts given in the Document’s license notice. H. Include an unaltered copy of this License. I. Preserve the section entitled "History", and its title, and add to it an item stating at least the title, year, new authors, and publisher of the Modified Version as given on the Title Page. If there is no section entitled "History" in the Document, create one stating the title, year, authors, and publisher of the Document as given on its Title Page, then add an item describing the Modified Version as stated in the previous sentence. J. Preserve the network location, if any, given in the Document for public access to a Transparent copy of the Document, and likewise the network locations given in the Document for previous versions it was based on. These may be placed in the "History" section. You may omit a network location for a work that was published at least four years before the Document itself,
275
18
Mentions légales
or if the original publisher of the version it refers to gives permission. K. In any section entitled "Acknowledgements" or "Dedications", preserve the section’s title, and preserve in the section all the substance and tone of each of the contributor acknowledgements and/or dedications given therein. L. Preserve all the Invariant Sections of the Document, unaltered in their text and in their titles. Section numbers or the equivalent are not considered part of the section titles. M. Delete any section entitled "Endorsements". Such a section may not be included in the Modified Version. N. Do not retitle any existing section as "Endorsements" or to conflict in title with any Invariant Section. If the Modified Version includes new front-matter sections or appendices that qualify as Secondary Sections and contain no material copied from the Document, you may at your option designate some or all of these sections as invariant. To do this, add their titles to the list of Invariant Sections in the Modified Version’s license notice. These titles must be distinct from any other section titles. You may add a section entitled "Endorsements", provided it contains nothing but endorsements of your Modified Version by various parties–for example, statements of peer review or that the text has been approved by an organization as the authoritative definition of a standard. You may add a passage of up to five words as a Front-Cover Text, and a passage of up to 25 words as a Back-Cover Text, to the end of the list of Cover Texts in the Modified Version. Only one passage of Front-Cover Text and one of Back-Cover Text may be added by (or through arrangements made by) any one entity. If the Document already includes a cover text for the same cover, previously added by you or by arrangement made by the same entity you are acting on behalf of, you may not add another ; but you may replace the old one, on explicit permission from the previous publisher that added the old one. The author(s) and publisher(s) of the Document do not by this License give permission to use their names for publicity for or to assert or imply endorsement of any Modified Version.
5. COMBINING DOCUMENTS You may combine the Document with other documents released under this License, under the terms defined in section 4 above for modified versions, provided that you include in the combination all of the Invariant Sections of all of the original documents, unmodified, and list them all as Invariant Sections of your combined work in its license notice. The combined work need only contain one copy of this License, and multiple identical Invariant Sections may be replaced with a single copy. If there are multiple Invariant Sections with the same name but different contents, make the title of each such section unique by adding at the end of it, in parentheses, the name of the original author or publisher of that section if
276
18
Mentions légales
known, or else a unique number. Make the same adjustment to the section titles in the list of Invariant Sections in the license notice of the combined work. In the combination, you must combine any sections entitled "History" in the various original documents, forming one section entitled "History" ; likewise combine any sections entitled "Acknowledgements", and any sections entitled "Dedications". You must delete all sections entitled "Endorsements."
6. COLLECTIONS OF DOCUMENTS You may make a collection consisting of the Document and other documents released under this License, and replace the individual copies of this License in the various documents with a single copy that is included in the collection, provided that you follow the rules of this License for verbatim copying of each of the documents in all other respects. You may extract a single document from such a collection, and distribute it individually under this License, provided you insert a copy of this License into the extracted document, and follow this License in all other respects regarding verbatim copying of that document.
7. AGGREGATION WITH INDEPENDENT WORKS A compilation of the Document or its derivatives with other separate and independent documents or works, in or on a volume of a storage or distribution medium, does not as a whole count as a Modified Version of the Document, provided no compilation copyright is claimed for the compilation. Such a compilation is called an "aggregate", and this License does not apply to the other self-contained works thus compiled with the Document, on account of their being thus compiled, if they are not themselves derivative works of the Document. If the Cover Text requirement of section 3 is applicable to these copies of the Document, then if the Document is less than one quarter of the entire aggregate, the Document’s Cover Texts may be placed on covers that surround only the Document within the aggregate. Otherwise they must appear on covers around the whole aggregate.
8. TRANSLATION Translation is considered a kind of modification, so you may distribute translations of the Document under the terms of section 4. Replacing Invariant Sections with translations requires special permission from their copyright holders, but you may include translations of some or all Invariant Sections in addition to the original versions of these Invariant Sections. You may include a translation of this License provided that you also include the original English version of this License. In case of a disagreement between the translation and the original English version of this License, the original English version will prevail.
277
18
Mentions légales
9. TERMINATION You may not copy, modify, sublicense, or distribute the Document except as expressly provided for under this License. Any other attempt to copy, modify, sublicense or distribute the Document is void, and will automatically terminate your rights under this License. However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance.
10. FUTURE REVISIONS OF THIS LICENSE The Free Software Foundation may publish new, revised versions of the GNU Free Documentation License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. See http: //www.gnu.org/copyleft/. Each version of the License is given a distinguishing version number. If the Document specifies that a particular numbered version of this License "or any later version" applies to it, you have the option of following the terms and conditions either of that specified version or of any later version that has been published (not as a draft) by the Free Software Foundation. If the Document does not specify a version number of this License, you may choose any version ever published (not as a draft) by the Free Software Foundation.
ADDENDUM : How to use this License for your documents To use this License in a document you have written, include a copy of the License in the document and put the following copyright and license notices just after the title page : Copyright (c) YEAR YOUR NAME. Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.1 or any later version published by the Free Software Foundation ; with the Invariant Sections being LIST THEIR TITLES, with the Front-Cover Texts being LIST, and with the Back-Cover Texts being LIST. A copy of the license is included in the section entitled "GNU Free Documentation License". If you have no Invariant Sections, write "with no Invariant Sections" instead of saying which ones are invariant. If you have no Front-Cover Texts, write "no Front-Cover Texts" instead of "Front-Cover Texts being LIST" ; likewise for Back-Cover Texts.
278
18
Mentions légales
If your document contains nontrivial examples of program code, we recommend releasing these examples in parallel under your choice of free software license, such as the GNU General Public License, to permit their use in free software.
18.6 GNU General Public License Voici le texte intégral de la GNU General Public License : GNU GENERAL PUBLIC LICENSE Version 2, June 1991 Copyright (C) 1989, 1991 Free Software Foundation, Inc. 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. Preamble The licenses for most software are designed to take away your freedom to share and change it. By contrast, the GNU General Public License is intended to guarantee your freedom to share and change free software–to make sure the software is free for all its users. This General Public License applies to most of the Free Software Foundation’s software and to any other program whose authors commit to using it. (Some other Free Software Foundation software is covered by the GNU Library General Public License instead.) You can apply it to your programs, too. When we speak of free software, we are referring to freedom, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for this service if you wish), that you receive source code or can get it if you want it, that you can change the software or use pieces of it in new free programs ; and that you know you can do these things. To protect your rights, we need to make restrictions that forbid anyone to deny you these rights or to ask you to surrender the rights. These restrictions translate to certain responsibilities for you if you distribute copies of the software, or if you modify it. For example, if you distribute copies of such a program, whether gratis or for a fee, you must give the recipients all the rights that you have. You must make sure that they, too, receive or can get the source code. And you must show them these terms so they know their rights. We protect your rights with two steps : (1) copyright the software, and (2) offer you this license which gives you legal permission to copy, distribute and/or modify the software. Also, for each author’s protection and ours, we want to make certain that everyone understands that there is no warranty for this free software. If the software is modified by someone
279
18
Mentions légales
else and passed on, we want its recipients to know that what they have is not the original, so that any problems introduced by others will not reflect on the original authors’ reputations. Finally, any free program is threatened constantly by software patents. We wish to avoid the danger that redistributors of a free program will individually obtain patent licenses, in effect making the program proprietary. To prevent this, we have made it clear that any patent must be licensed for everyone’s free use or not licensed at all. The precise terms and conditions for copying, distribution and modification follow. GNU GENERAL PUBLIC LICENSE TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION 0. This License applies to any program or other work which contains a notice placed by the copyright holder saying it may be distributed under the terms of this General Public License. The "Program", below, refers to any such program or work, and a "work based on the Program" means either the Program or any derivative work under copyright law : that is to say, a work containing the Program or a portion of it, either verbatim or with modifications and/or translated into another language. (Hereinafter, translation is included without limitation in the term "modification".) Each licensee is addressed as "you". Activities other than copying, distribution and modification are not covered by this License ; they are outside its scope. The act of running the Program is not restricted, and the output from the Program is covered only if its contents constitute a work based on the Program (independent of having been made by running the Program). Whether that is true depends on what the Program does. 1. You may copy and distribute verbatim copies of the Program’s source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice and disclaimer of warranty ; keep intact all the notices that refer to this License and to the absence of any warranty ; and give any other recipients of the Program a copy of this License along with the Program. You may charge a fee for the physical act of transferring a copy, and you may at your option offer warranty protection in exchange for a fee. 2. You may modify your copy or copies of the Program or any portion of it, thus forming a work based on the Program, and copy and distribute such modifications or work under the terms of Section 1 above, provided that you also meet all of these conditions : a) You must cause the modified files to carry prominent notices stating that you changed the files and the date of any change. b) You must cause any work that you distribute or publish, that in whole or in part contains or is derived from the Program or any part thereof, to be licensed as a whole at no
280
18
Mentions légales
charge to all third parties under the terms of this License. c) If the modified program normally reads commands interactively when run, you must cause it, when started running for such interactive use in the most ordinary way, to print or display an announcement including an appropriate copyright notice and a notice that there is no warranty (or else, saying that you provide a warranty) and that users may redistribute the program under these conditions, and telling the user how to view a copy of this License. (Exception : if the Program itself is interactive but does not normally print such an announcement, your work based on the Program is not required to print an announcement.) These requirements apply to the modified work as a whole. If identifiable sections of that work are not derived from the Program, and can be reasonably considered independent and separate works in themselves, then this License, and its terms, do not apply to those sections when you distribute them as separate works. But when you distribute the same sections as part of a whole which is a work based on the Program, the distribution of the whole must be on the terms of this License, whose permissions for other licensees extend to the entire whole, and thus to each and every part regardless of who wrote it. Thus, it is not the intent of this section to claim rights or contest your rights to work written entirely by you ; rather, the intent is to exercise the right to control the distribution of derivative or collective works based on the Program. In addition, mere aggregation of another work not based on the Program with the Program (or with a work based on the Program) on a volume of a storage or distribution medium does not bring the other work under the scope of this License. 3. You may copy and distribute the Program (or a work based on it, under Section 2) in object code or executable form under the terms of Sections 1 and 2 above provided that you also do one of the following : a) Accompany it with the complete corresponding machine-readable source code, which must be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange ; or, b) Accompany it with a written offer, valid for at least three years, to give any third party, for a charge no more than your cost of physically performing source distribution, a complete machine-readable copy of the corresponding source code, to be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange ; or, c) Accompany it with the information you received as to the offer to distribute corresponding source code. (This alternative is allowed only for noncommercial distribution and only if you received the program in object code or executable form with such an offer, in accord with Subsection b above.) The source code for a work means the preferred form of the work for making modifications
281
18
Mentions légales
to it. For an executable work, complete source code means all the source code for all modules it contains, plus any associated interface definition files, plus the scripts used to control compilation and installation of the executable. However, as a special exception, the source code distributed need not include anything that is normally distributed (in either source or binary form) with the major components (compiler, kernel, and so on) of the operating system on which the executable runs, unless that component itself accompanies the executable. If distribution of executable or object code is made by offering access to copy from a designated place, then offering equivalent access to copy the source code from the same place counts as distribution of the source code, even though third parties are not compelled to copy the source along with the object code. 4. You may not copy, modify, sublicense, or distribute the Program except as expressly provided under this License. Any attempt otherwise to copy, modify, sublicense or distribute the Program is void, and will automatically terminate your rights under this License. However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance. 5. You are not required to accept this License, since you have not signed it. However, nothing else grants you permission to modify or distribute the Program or its derivative works. These actions are prohibited by law if you do not accept this License. Therefore, by modifying or distributing the Program (or any work based on the Program), you indicate your acceptance of this License to do so, and all its terms and conditions for copying, distributing or modifying the Program or works based on it. 6. Each time you redistribute the Program (or any work based on the Program), the recipient automatically receives a license from the original licensor to copy, distribute or modify the Program subject to these terms and conditions. You may not impose any further restrictions on the recipients’ exercise of the rights granted herein. You are not responsible for enforcing compliance by third parties to this License. 7. If, as a consequence of a court judgment or allegation of patent infringement or for any other reason (not limited to patent issues), conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot distribute so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not distribute the Program at all. For example, if a patent license would not permit royalty-free redistribution of the Program by all those who receive copies directly or indirectly through you, then the only way you could satisfy both it and this License would be to refrain entirely from distribution of the Program. If any portion of this section is held invalid or unenforceable under any particular circumstance, the balance of the section is intended to apply and the section as a whole is intended to apply in other circumstances.
282
18
Mentions légales
It is not the purpose of this section to induce you to infringe any patents or other property right claims or to contest validity of any such claims ; this section has the sole purpose of protecting the integrity of the free software distribution system, which is implemented by public license practices. Many people have made generous contributions to the wide range of software distributed through that system in reliance on consistent application of that system ; it is up to the author/donor to decide if he or she is willing to distribute software through any other system and a licensee cannot impose that choice. This section is intended to make thoroughly clear what is believed to be a consequence of the rest of this License. 8. If the distribution and/or use of the Program is restricted in certain countries either by patents or by copyrighted interfaces, the original copyright holder who places the Program under this License may add an explicit geographical distribution limitation excluding those countries, so that distribution is permitted only in or among countries not thus excluded. In such case, this License incorporates the limitation as if written in the body of this License. 9. The Free Software Foundation may publish revised and/or new versions of the General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. Each version is given a distinguishing version number. If the Program specifies a version number of this License which applies to it and "any later version", you have the option of following the terms and conditions either of that version or of any later version published by the Free Software Foundation. If the Program does not specify a version number of this License, you may choose any version ever published by the Free Software Foundation. 10. If you wish to incorporate parts of the Program into other free programs whose distribution conditions are different, write to the author to ask for permission. For software which is copyrighted by the Free Software Foundation, write to the Free Software Foundation ; we sometimes make exceptions for this. Our decision will be guided by the two goals of preserving the free status of all derivatives of our free software and of promoting the sharing and reuse of software generally. NO WARRANTY 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
283
18
Mentions légales
12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. END OF TERMS AND CONDITIONS How to Apply These Terms to Your New Programs If you develop a new program, and you want it to be of the greatest possible use to the public, the best way to achieve this is to make it free software which everyone can redistribute and change under these terms. To do so, attach the following notices to the program. It is safest to attach them to the start of each source file to most effectively convey the exclusion of warranty ; and each file should have at least the "copyright" line and a pointer to where the full notice is found. Copyright (C) yyyy This program is free software ; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation ; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY ; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program ; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
Also add information on how to contact you by electronic and paper mail. If the program is interactive, make it output a short notice like this when it starts in an interactive mode :
284
18
Mentions légales
Gnomovision version 69, Copyright (C) 19yy name of author Gnomovision comes with ABSOLUTELY NO WARRANTY ; for details type ‘show w’. This is free software, and you are welcome to redistribute it under certain conditions ; type ‘show c’ for details. The hypothetical commands ‘show w’ and ‘show c’ should show the appropriate parts of the General Public License. Of course, the commands you use may be called something other than ‘show w’ and ‘show c’ ; they could even be mouse-clicks or menu items–whatever suits your program. You should also get your employer (if you work as a programmer) or your school, if any, to sign a "copyright disclaimer" for the program, if necessary. Here is a sample ; alter the names : Yoyodyne, Inc., hereby disclaims all copyright interest in the program ‘Gnomovision’ (which makes passes at compilers) written by James Hacker. , 1 April 1989 Ty Coon, President of Vice This General Public License does not permit incorporating your program into proprietary programs. If your program is a subroutine library, you may consider it more useful to permit linking proprietary applications with the library. If this is what you want to do, use the GNU Library General Public License instead of this License.