Un réseau Debian GNU/Linux pour un centre de formation



Documents pareils
Administration de Parc Informatique TP07 : Installation de Linux Debian

Un réseau Debian GNU/Linux pour un centre de formation

LINUX - ADMINISTRATION PROGRAMME DE FORMATION

Netfilter & Iptables. Théorie Firewall. Autoriser le trafic entrant d'une connexion déjà établie. Permettre le trafic entrant sur un port spécifique

Le filtrage de niveau IP

Maintenir Debian GNU/Linux à jour

Université Pierre Mendès France U.F.R. Sciences de l Homme et de la Société Master IC²A. TP réseau firewall

Personnes ressources Tice. Académie de Rouen

Fonctionnement de Iptables. Exercices sécurité. Exercice 1

Il est courant de souhaiter conserver à

Commandes Linux. Gestion des fichiers et des répertoires. Gestion des droits. Gestion des imprimantes. Formation Use-IT

LINUX - Sécurité. Déroulé de l'action. - 3 jours - Contenu de formation

Ubuntu Linux Création, configuration et gestion d'un réseau local d'entreprise (3ième édition)

Installation et prise en main d UBUNTU

ACTION PROFESSIONNELLE N 4. Fabien SALAMONE BTS INFORMATIQUE DE GESTION. Option Administrateur de Réseaux. Session Sécurité du réseau

LAB : Schéma. Compagnie C / /24 NETASQ

MANUEL D INSTALLATION

TP4 : Firewall IPTABLES

Comment configurer Kubuntu

2. MAQUETTAGE DES SOLUTIONS CONSTRUCTIVES. 2.2 Architecture fonctionnelle d un système communicant.

LINUX REDHAT, SERVICES RÉSEAUX/INTERNET

Dispositif e-learning déployé sur les postes de travail

Présentation du logiciel Free-EOS Server

Lutter contre les virus et les attaques... 15

Mettez Linux en boîte avec ClearOS

TD 1 - Installation de système UNIX, partitionnement

Réseaux. Moyens de sécurisation. Plan. Evolutions topologiques des réseaux locaux

TP n 2 : Installation et administration du serveur ProFTP. Partie 1 : Fonctionnement du protocole FTP (pas plus de 15min)

MISE EN PLACE DU FIREWALL SHOREWALL

Installation du SLIS 4.1

MANUEL D INSTALLATION D UN PROXY

INSTALL ATION D UNE D I S T RIBUTION

Procédure pas à pas de découverte de l offre. Service Cloud Cloudwatt

But de cette présentation. Proxy filtrant avec Squid et SquidGuard. Serveur proxy. Serveur proxy. Hainaut P

Rapport de certification ANSSI-CSPN-2011/14. Fonctionnalités de pare-feu de StoneGate Firewall/VPN build 8069

Groupe Eyrolles, 2006, ISBN : x

Firewall IDS Architecture. Assurer le contrôle des connexions au. Sécurité 1

Itium XP. Guide Utilisateur

Procédure d utilisation et de paramétrage (filtrage) avec IPFIRE

OpenMediaVault installation

UltraBackup NetStation 4. Guide de démarrage rapide

FreeNAS Shere. Par THOREZ Nicolas

Serveur de messagerie sous Debian 5.0

Prise en main d un poste de travail sous Windows sur le réseau du département MMI de l'upemlv. d après M. Berthet et G.Charpentier

Spécialiste Systèmes et Réseaux

Windows 7, Configuration

Sécurité des réseaux Firewalls

Amiens Métier 39 : Gestion des réseaux informatiques. Jour 2, première partie. Durée : 3 heures

Serveur virtuel infogéré

0.1 Mail & News : Thunderbird

Atelier Le gestionnaire de fichier

CONFIGURATION DE BASE. 6, Rue de l'industrie BP130 SOULTZ GUEBWILLER Cedex. Fax.: Tel.:

Documentation FOG. Déploiement d images de systèmes d exploitation à travers le réseau.

Pré-requis techniques

ESPACE NUMERIQUE DE TRAVAIL DU LYCEE LYAUTEY LCS SE3

Guide d installation

Mission TICE : Thierry CHASSAIN - Guy PICOU AIDAT du Lot : Hélène CREUSOT Pierre LAGREZE. Réseaux pédagogiques sous Windows 2003 Server 12/01/2011

Ce manuel vous accompagne au long des procédures d installation et de restauration de PheBuX 2004 [alternative solutions]

TP LINUX : MISE EN PLACE DU SERVEUR DE MESSAGERIE QMAIL

Administration de systèmes

Linux. Sécuriser un réseau. 3 e édition. l Admin. Cahiers. Bernard Boutherin Benoit Delaunay. Collection dirigée par Nat Makarévitch

SSH. Romain Vimont. 7 juin Ubuntu-Party

MANUEL D INSTALLATION DE WATCHDOC 2011 (EVALUATION)

Eléments techniques tome I Installation Serveur Windows 2012

Retour d expérience sur Prelude

Formation Iptables : Correction TP

Machine virtuelle W4M- Galaxy : Guide d'installation

Guide d utilisation WEBPORTAL CPEM Portail d Applications Web CPEM

ClariLog - Asset View Suite

FILTRAGE de PAQUETS NetFilter

SQUID P r o x y L i b r e p o u r U n i x e t L i n u x

AOLbox. Partage de disque dur Guide d utilisation. Partage de disque dur Guide d utilisation 1

Environnements informatiques

Syfadis. > Configuration du poste client. Nous vous aidons à réussir. REFERENCE : Syfadis LMS - 20/06/2007. AUTEUR : Equipe technique Syfadis

Mise en place des TPs Réseau en machines virtuelles. Utilisation de VmPlayer

Version de novembre 2012, valable jusqu en avril 2013

LiveUSB clefisn. Meilland jean claude et Kbida Abdellatif. 16 septembre 2012

Aperçu technique Projet «Internet à l école» (SAI)

OSCAR Un outil gratuit libre d images disque

TP LINUX Travaux avec Debian ETCH

Tutoriel Création d une source Cydia et compilation des packages sous Linux

Installation ou mise à jour du logiciel système Fiery

Tsoft et Groupe Eyrolles, 2005, ISBN :

Licence 3 Systèmes et Réseaux II. Chapitre V : Filtrage

POVERELLO KASONGO Lucien SIO 2, SISR SITUATION PROFESSIONNELLE OCS INVENTORY NG ET GLPI

Réalisation d un portail captif d accès authentifié à Internet

Stage SambaÉdu Module B. Jour 9 Outils complémentaires et problèmes récurrents divers

Prérequis techniques

Manuel d administration de Virtual Box MANUEL D UTILISATION VIRTUAL BOX

Tutorial Terminal Server sous

Préparation à l installation d Active Directory

Systèmes informatiques

DSI - Pôle Infrastructures

Enoncé du TP 8 Système

Fiche d identité produit

Présentation du Serveur SME 6000

Transcription:

Un réseau Debian GNU/Linux pour un centre de formation Yves Potin 10 juin 2005 Résumé Le logiciel libre, aujourd hui au cœur de l actualité de l informatique, ne peut plus être ignoré des administrateurs de réseau, en particulier dans des établissements d enseignement ou de formation d où sortiront les utilisateurs de demain, du simple utilisateur à l ingénieur système. Il incombe en effet aux responsables informatiques de mettre à disposition des systèmes d exploitation libres par respect du pluralisme de l enseignement comme pour tenir compte des évolutions à terme du monde de l entreprise qu ils peuvent ainsi anticiper et encourager. Les documentations sur les divers services et systèmes sous GNU/Linux abondent, mais il manque peut être un résumé de l ensemble de la mise en place d un réseau informatique libre dans le cadre d une structure de formation. Ce document résume l installation d un réseau Debian GNU/Linux complet, des serveurs aux machines clientes, de l achat du matériel aux derniers ajustements de l interface graphique et des usages du multimédia. Il ne prétend pas détailler tous les services réseau, mais servir de mémorandum et fournir des fichiers de configuration pour la plupart d entre eux. La majeure partie des services d Internet est présentée sous l angle d un réseau local : DNS, courriel, Web, ftp... Certains services sont présentés sous forme de didacticiels progressifs : Amanda, pour les sauvegardes sur bande, Nut, logiciel de surveillance des onduleurs, et l utilisation avancée du chiffrage de l authentification par ssh. Un script permet la réplication de contenus sur toutes les machines clientes en une seule ligne de commande, simplifiant grandement les tâches d installation et d administration. Si cette longue étude de cas est artificielle en ce qu elle commence par les murs d un local vide et l argent pour acheter le matériel, et s achève par un réseau entier de machines homogènes, nous espérons néanmoins qu elle sera utile comme aide mémoire à ceux qui désirent offrir à leurs étudiants la pratique d une informatique libérée du carcan propriétaire qu ils peuvent ainsi, chacun selon sa mesure, contribuer à faire reculer. Cette documentation est placée sous Licence Documentaire libre (GNU/FDL) 1 1 http ://www.gnu.org/copyleft/fdl.html 1

Table des matières 1 L équipement matériel 4 1.1 Les serveurs................................................... 4 1.2 Les machines clientes.............................................. 4 1.3 Matériel complémentaire............................................ 5 2 L installation des systèmes d exploitation 6 2.1 Partitionnement des serveurs......................................... 6 2.2 Partitionnement d une station de travail................................... 7 2.3 Conseils généraux pour l installation..................................... 7 2.4 Les sources des packages Debian....................................... 8 2.5 Logiciels complémentaires........................................... 9 3 Une session de travail d un administrateur réseau 9 3.1 Conseils généraux................................................ 9 3.2 Un interpréteur de commandes confortable : zsh, le Z Shell........................ 10 4 Sécuriser une machine Debian : les bases 11 5 Configuration et sécurité du routeur 11 5.1 Sécurité sur le routeur : première étape................................... 11 5.2 Sécurité sur le routeur : seconde étape.................................... 13 5.3 Fonctionnalités additionnelles du script de firewall............................. 13 5.4 Simulation d intrusions : Nessus........................................ 13 5.5 Logiciels complémentaires de sécurité..................................... 14 6 Premier serveur : les services réseau non authentifiés 14 6.1 Le DNS : Bind................................................. 14 6.2 Le DHCP.................................................... 16 6.3 Limiter les téléchargemets de logiciels : un miroir Debian ou un proxy de packages........... 17 6.3.1 Un miroir Debian partiel sur le réseau................................ 17 6.3.2 Apt-proxy, proxy de packages Debian pour apt........................... 18 6.4 Squid, Proxy http et ftp............................................ 19 6.4.1 Squid.................................................. 19 6.4.2 SquidGuard............................................... 21 6.4.3 En conclusion.............................................. 22 6.5 Xntpd, serveur de temps............................................ 22 6.6 CUPS, serveur d impression.......................................... 22 7 Second serveur : l authentification 23 7.1 Courrier : SMTP et Pop3........................................... 23 7.1.1 Postfix : installation et configuration simple............................. 24 7.1.2 Sécuriser Postfix............................................ 25 7.1.3 Un serveur de messagerie sur le réseau : envoi et réception..................... 27 7.2 NIS....................................................... 27 7.3 NFS....................................................... 28 7.4 Samba...................................................... 29 7.5 Web et FTP................................................... 30 7.5.1 Apache................................................. 30 7.5.2 ProFTPd................................................ 30 8 Services réseau complémentaires 30 8.1 Nut : gestion des onduleurs.......................................... 30 8.1.1 Configuration de nut en mode maître................................ 31 8.1.2 Démarrage du service et test de son bon fonctionnement...................... 32 8.1.3 Configuration d un client sur le réseau................................ 33 8.2 Amanda : sauvegarde en réseau sur bande.................................. 34 8.2.1 Configuration d une sauvegarde : le serveur............................. 34 8.2.2 Configuration d une sauvegarde : les clients............................. 37 2

8.2.3 La première sauvegarde et restauration............................... 38 8.2.4 Paramétrage de la sauvegarde hebdomadaire............................ 39 8.3 Partimage : sauvegarde des machines..................................... 40 8.4 Webmin, administration simplifiée et création de comptes......................... 41 8.5 Les statistiques d usage du réseau et des serveurs.............................. 42 9 L installation de la première station de travail 43 9.1 Rappels sur l installation d une machine cliente............................... 43 9.1.1 Debian Sid............................................... 43 9.1.2 Paramétrage d un environnement français.............................. 43 9.2 Un kernel linux pour machines multimédia.................................. 44 9.3 Intégration de la machine au réseau..................................... 44 9.3.1 Clients NIS et NFS........................................... 44 9.3.2 Clients LDAP.............................................. 44 9.4 Installation d un environnement graphique et de logiciels divers...................... 45 9.5 Les droits sur les périphériques : carte son, webcam, etc............................ 47 9.6 Le problème des logiciels et composants propriétaires............................ 47 10 Installation automatisée de toutes les autres machines 48 10.1 Le principe de la réplication de fichiers.................................... 48 10.2 Ssh en mode agent............................................... 48 10.3 Dupliquer la première machine : adapter le script de réplication - premiers tests............. 50 10.4 Extraire la liste des logiciels installés et la reproduire............................ 52 11 Jouer avec le réseau 52 11.1 Déporter l affichage............................................... 52 11.2 Déporter le son................................................. 53 11.3 Wims...................................................... 53 11.4 La diffusion vidéo : vlc............................................. 53 11.5 Partager un scanner.............................................. 53 11.6 Un cluster de calcul.............................................. 54 11.7 Quelques jeux en réseau............................................ 55 12 Remerciements 56 3

1 L équipement matériel 1.1 Les serveurs Au moins deux ordinateurs serveurs vont faire fonctionner notre centre de formation : Un petit ordinateur servant de pare-feu / routeur pour la gestion de la connexion ADSL de notre centre. Un Pentium 75 muni de 16 ou mieux 32 Mo de mémoire vive et au moins 600 Mo de disque dur IDE suffit amplement pour du matériel fiable, encore en bon état de fonctionnement. On lui adjoindra deux cartes réseau, de préférence PCI et non ISA par souci de simplicité, et un onduleur. Les «vrais» serveurs seront convenablement dimensionnés tant en mémoire qu en capacité de disque SCSI. Si le budget le permet, on choisira deux serveurs en configuration en RAID 5, au moins pour le serveur qui va héberger les données. Les serveurs récents sont souvent munis d un Gigaoctet de mémoire vive, et de disques de large capacité. Un serveur hébergera les données de chacun et les services demandant authentification : NIS (ou LDAP), NFS, Samba, serveur SMTP, serveur POP, ainsi qu un serveur Web et un serveur FTP. Dans notre cas, deux disques de 70 Go, un pour les formateurs, un pour les données des stagiaires, suffisent amplement. L autre serveur hébergera un certain nombre de services réseau sans authentification : DHCP, DNS, Proxy (Web et apt), impression (via CUPS et Samba), serveur de temps, sauvegardes (Amanda et partimage). Pour les sauvegardes, on prévoira beaucoup d espace disque pour les images des stations. Pour les données, on adjoindra un lecteur DAT externe qui pourra servir ainsi à d autres usages comme l enregistrement numérique de productions multimédia. Ce matériel sera placé dans un local séparé des salles de formation, fermant à clef et normalement aéré. Tous les éléments actifs (switchs, routeurs, modems mais aussi les écrans et le commutateur écran /clavier partagé entre les serveurs) seront ondulés au moyen d une prise en kit fournie. Il s agit d une prise à l apparence peu habituelle livrée avec chaque onduleur du marché. Pour l utiliser, on coupera la prise mâle d une multiprise ordinaire dont on reliera les fils à la prise en kit ; on peut alors brancher cette multiprise sur l onduleur. Ceci est essentiel dès lors que : Tout le matériel du local serveur doit être ondulé pour ne pas lui faire subir de violentes coupures de courant et maintenir la disponibilité de fonctionnement. S il y a coupure de courant, le switch qui relie plusieurs ordinateurs partageant le même onduleur doit continuer à être alimenté, sinon le contrôle par réseau ne fonctionnera plus, occasionnant la chute des serveurs esclaves qui auraient pu continuer à fonctionner pendant une coupure courte. La configuration du logiciel de surveillance d onduleur Nut est décrite dans la section 8.1. De nombreux tests aboutiront à un fonctionnement normal en cas de coupure courte ; on obtiendra une chute et remontée normale des serveurs en cas de coupure longue et rétablissement du courant. Fréquemment, il faudra déclarer dans le BIOS des ordinateurs le comportement à adopter en cas de retour du secteur, qui n est souvent pas par défaut le redémarrage pourtant requis. On doit pouvoir l âme tranquille débrancher l alimentation générale du secteur et observer tout l équipement continuer à fonctionner normalement avec un message d alerte dans les logs de chaque serveur (et sur les consoles ouvertes) avertissant que l onduleur est sur batterie. Dans la mesure du possible, compte tenu de l évolution du matériel dont seront équipés demain par défaut les ordinateurs, on choisira des switchs embarquant au minimum un port au Gigabit. Les usages d applications multimédia modernes, en particulier en vidéo, rendront bientôt un tel débit non plus confortable, mais nécessaire. Règles élémentaires de sécurité : tous les ordinateurs du centre de formation, à commencer par les serveurs, seront verouillés par mot de passe dans le BIOS et il ne sera pas possible d amorcer les ordinateurs sur autre chose que le disque dur une fois le système installé. Les cassettes DAT des sauvegardes seront rangées dans un autre local en prévision d une détérioration des serveurs (incendie, inondation...). La sécurité informatique comporte une limite : elle est inexistante dès lors qu il y a accès physique au matériel, mais on peut tout de même prendre quelques précautions. 1.2 Les machines clientes L idéal pour la maintenance est de disposer de machines strictement homogènes, mais il est clair que cette homogénéité n est simple ni à obtenir ni à conserver dans le temps. Quand à l achat de matériel, une règle simple s impose qui doit guider tout choix : se renseigner au préalable sur la compatibilité Linux de tout composant en identifiant très précisément celui ci. Un devis très détaillé demandé au fournisseur doit permettre de taper le nom de chaque composant et périphérique, à commencer par la carte mère, dans un moteur de recherche pour étudier les problèmes qu ont pu rencontrer les utilisateurs. Moins on parle d un certain matériel, mieux il est supporté... Le matériel de marque SiS pose les plus grands problèmes de compatibilité, outre ses performances relativement douteuses quel que soit le système d exploitation. Une station de travail aujourd hui requiert le plus de mémoire vive possible, 512 Mo ne coutant pas beaucoup plus cher que 256 Mo. Pour des applications particulièrement gourmandes en ressources, en particulier l usage de synthétiseurs virtuels ou de logiciels de montage vidéo (comme Cinelerra, les auteurs recommandant une machine 4

bi processeur), on prévoira 1 Go de RAM. Il est faux de croire que les environnements graphiques modernes sous GNU/Linux sont moins gourmands en ressource que les environnements propriétaires. Un système rapide, agréable à utiliser, qui fasse fonctionner en même temps de nombreux logiciels et environnements de bureau récents requiert une machine puissante. Les cartes vidéo sont quelque peu difficiles à choisir puisque les principaux constructeurs ne livrent plus entièrement les spécifications de leur matériel : il est donc impossible de les exploiter entièrement avec des pilotes libres. Toutefois, le problème ne se pose qu avec les applications 3D, principalement les jeux, encore relativement rares et peu pertinents dans un contexte éducatif ou de formation, à l exception notable du logiciel Celestia 2. Les cartes graphiques du constructeur ATI, modèles Radeon jusque 9300, fonctionnent très bien, y compris en 3D, avec les pilotes libres standard sans téléchargement de driver, compilation de modules, etc... Il n en va pas de même des cartes de type GForce de Nvidia. Enfin pour le pur travail en 2D, les cartes du constructeur Matrox restent une référence de qualité, en particulier pour travailler sur plusieurs écrans. L environnement graphique X Window est d autant plus confortable et agréable à l usage que la résolution de l écran est grande, 1280x1024 constituant un strict minimum. On appréciera de travailler en 1600x1200 avec de nombreuses applications ouvertes à l écran, ce qui est normal avec un système d exploitation de type Unix pleinement multitâches. Aussi, des écrans CRT de grandes dimensions (19 pouces ou plus) seront préférés à des écrans TFT dans la limite du même budget. Ceci sera encore plus vrai pour les postes des formateurs dont l affichage sera redirigé sur vidéoprojecteur : si l on doit montrer des manipulations en ligne de commande avec des stagiaires assis un peu loin de l écran, grossir considérablement la police de caractères, et donc la taille du terminal, peut rendre une résolution 1280x1024 difficilement utilisable. 1.3 Matériel complémentaire Pour se connecter à Internet par l ADSL, tout modem Ethernet est parfait, aucun modem USB ne convient. Le firewall / routeur que nous préconisons permet de se passer de routeur dédié, intégré ou non au modem. Les imprimantes seront simples à choisir : un modèle PostScript réseau ne demandera aucun pilote d impression particulier, fonctionnera dans tous les cas de figure avec n importe quel système d exploitation et donnera toute satisfaction pendant de longues années. Une imprimante jet d encre couleur de bonne qualité sera plus difficile à choisir, on se demandera en premier lieu si les stagiaires ont réellement besoin de ce type d impression, eu égard au coût des consommables. Le site linuxprinting.org 3 recense tous les problèmes de compatibilité matérielle (très importante base de données d imprimantes). Les scanners peuvent poser bien plus de problèmes de compatibilité que les imprimantes, on identifiera très exactement le matériel avant tout achat. Le logiciel standard s appelle Sane 4, et dispose d une interface graphique uniforme pour tous les scanners, un avantage par rapport à la diversité de logiciels de pilotage propriétaires qui imposent d utiliser une interface différente par type de scanner. Le site mentionné ci dessus intègre une très importante base de données qui expose le degré de compatibilité de la plupart des matériels connus, classés par fabricants ou par pilote. D une manière générale, un scanner véritablement SCSI (c est à dire sans carte propriétaire mal identifiable) fonctionnera partout sans problème, mais ce type de matériel devient rare. Un très grand nombre de scanners USB sont compatibles, on sera donc très circonspect quand au matériel imposant des manipulations complexes et hasardeuses dont on peut se dispenser aujourd hui. Les cartes sons s organisent autour de «standards» industriels qui correspondent dans la réalité à des chipsets fort différents. Néanmoins les cartes normalisés AC 97 sont aujourd hui les plus répandues et fonctionnent en général de manière satisfaisante, mais on ne cherchera pas autre chose avec ce type de matériel que l écoute de CDs audio ou fichiers OGG Vorbis ou mp3 sur des enceintes bas de gamme. Pour un véritable travail multimédia, on s orientera vers un matériel de bonne qualité voire professionnel, la marque RME constituant une référence. Cette fois, le projet ALSA 5 (Advanced Linux Sound Architecture) fait autorité ; le site intègre une base de données des cartes son qui tend à l exhaustivité. Une section entière 6 de notre site est consacrée aux logiciels de musique et audio sous GNU/Linux, qui sont pléthoriques. Les appareils photos numériques sont, eux, encore loin de présenter tous le même degré de compatibilité, en particulier ceux de marque Canon qui, quelles que soient les qualités de leurs optiques et boîtiers, embarquent un matériel aux spécifications très peu ouvertes. Les appareils récents fonctionnent toutefois souvent selon le protocole PTP qui permet une détection et une communication aisée avec un ordinateur. La base de données du matériel supporté 2 http ://logiciels-libres-cndp.ac-versailles.fr/article.php3?id_article=7 3 http ://www.linuxprinting.org/ 4 http ://www.sane-project.org/ 5 http ://www.alsa-project.org/ 6 http ://logiciels-libres-cndp.ac-versailles.fr/rubrique.php3?id_rubrique=16 5

se trouve sur le site du logiciel standard de pilotage de ce type de matériel : Gphoto 7. Un article 8 du présent site expose l interface graphique la plus courante pour communiquer avec un appareil photo numérique sous GNU/linux et traiter les images obtenues. Le matériel d acquisition vidéo numérique est le terrain ou GNU/Linux possède le plus de retard par rapport aux offres propriétaires. Le site Funix.org 9 donne des informations complètes à propos des configurations matérielles et logicielles pour l acquisition et le montage. Enfin, le noyau Linux 2.6 sera systématiquement préféré à la version 2.4 dès qu on se proposera de travailler le multimédia, d utiliser des périphériques USB ou Firewire, de toucher à la gestion avancée de l énergie (ACPI)... Un article 10 sur le présent site expose en détail la procédure de compilation d un noyau 2.6 avec toutes les options et pilotes. 2 L installation des systèmes d exploitation Note préliminaire Cet article concerne particulièrement un centre de formation, mais pourquoi pas d autres structures (établissement scolaire, espace public numérique, etc...). Il présuppose des connaissances en réseau relativement solides. Cependant, des solutions packagées libres existent qui simplifient grandement l installation des serveurs et des services réseau et offrent des interfaces graphiques simplifiées d administration qui ne requièrent pas de compétences Unix particulières, au premier rang desquelles Slis et Sambaedu. Une liste des solutions serveurs pour l Éducation Nationale est en ligne sur le présent site 11. De manière générale, le choix Debian, systématique dans cette étude, ne doit pas faire oublier que la plupart des conseils et fichiers de configuration seront identiques dans d autres distributions puisque les logiciels sont les mêmes. Pour les machines clientes, si nous préconisons Debian Sid, mentionnons tout de même la distribution Ubuntu 12, très simple d installation, particulièrement bien finie et basée sur Sid. Quelques manipulations sont cependant nécessaires pour disposer vraiment de tous les logiciels de Debian, qui ne sont pas supportés de la même manière. Nous ne détaillerons pas outre mesure l installation de Debian GNU/Linux sur un ordinateur, serveur ou non, dans la mesure où celle ci est aujourd hui tellement simplifiée, décrite et documentée qu elle ne pose pas de problème en dehors de l étape toujours délicate du partitionnement des disques. Debian comprend aujourd hui trois distributions principales : Woody, ancienne distribution stable. Elle n est aujourd hui plus actualisée que pour des mises à jour de sécurité et peut maintenant être abandonnée ; toutefois, une mise à jour d une machine Woody vers Sarge doit être bien préparée et vérifiée à l avance. 13. Sarge est la version stable, sortie le 6 Juin 2005 après une longue attente. Elle convient pour tout usage, station de travail comme serveur, et dispose d un installeur très confortable. Sid (Still in developpement) est la version unstable. Recommandée si l on désire les dernières versions des logiciels au fur et à mesure de leur sortie, elle présente le risque relativement mineur de rencontrer parfois un certain nombre de choses qui ne fonctionnent pas, ou mal, en particulier le système de dépendances qui empêche parfois l installation ou la mise à jour d un plus ou moins grand nombre de choses à cause d un seul package. Néanmoins, l utilisation de Sid au quotidien depuis plusieurs années est tout à fait confortable. On prendra simplement garde de ne pas se ruer immédiatement sur les tous derniers packages disponibles dès leur sortie, et d installer l utilitaire apt-listbugs qui prévient des problèmes avant installation ou mise à jour effective de tel ou tel logiciel. 2.1 Partitionnement des serveurs Le principe de tout partitionnement est simple : séparer rigoureusement le système des données. Le reste peut donner lieu à de nombreux débats confinant à la théologie :), concernant en particulier les partitions pour /var et /tmp. Nous avons retenu le partage des services réseau sur deux serveurs (outre le petit routeur) et avons donné dans la section précédente leur répartition sur chaque ordinateur, mais on peut très bien concevoir de tout placer sur un seul serveur si on n a pas de problème de charge ou de débit sur le réseau local. Nous conseillons le partitionnement suivant pour le serveur devant héberger les données et les comptes : 7 http ://www.gphoto.org/ 8 http ://logiciels-libres-cndp.ac-versailles.fr/article.php3?id_article=171 9 http ://www.funix.org/ 10 http ://logiciels-libres-cndp.ac-versailles.fr/article.php3?id_article=180 11 http ://logiciels-libres-cndp.ac-versailles.fr/article.php3?id_article=103 12 http ://www.ubuntulinux.org/ 13 Par souci de compatibilité, de nombreux services sont décrits dans cet article pour leurs anciennes versions pour Woody comme pour les versions récentes disponibles en Sarge. 6

sda1 : /boot : 15 Mo 14 sda2 : Swap : 1,2 Go pour 1 Go de Ram. sda3 : / : 5 Go (si l on prévoit vraiment l installation de très nombreux logiciels) sda4 : /home : le reste du disque sdb1 : /data : le second disque du serveur, que l on pourra affecter à autant de partages réseau que de besoin pour le stockage de données, exportées ou non sur le réseau. Le second serveur n héberge pas à proprement parler de données mais plutôt des sauvegardes (on y place donc le lecteur DAT), ainsi que divers spools de proxy et d impression. sda1 : /boot : 15 Mo (avec la réserve ci dessus) sda2 : Swap : 1,2 Go pour 1 Go de Ram. sda3 : / : 5 Go (si l on prévoit vraiment l installation de très nombreux logiciels) sda4 : partition étendue sda5 : /var/spool : au moins 6 Go, pour les spools de squid, d apt-proxy, de l impression et d Amanda. sda6 : /data : le reste du disque, environ 50 Go, pour les images des disques des stations générées avec le logiciel partimage 15. Ces partitions seront formatées avec le système de fichiers ext3 si l on désire une sauvegarde simple avec Amanda. Reiserfs ne peut pas être sauvegardé ni surtout partiellement restauré simplement et XFS demande un logiciel spécifique de backup, outre la complexité de sauvegarde des ACLs. Normalement, un centre de formation avec des utilisateurs occasionnels n a pas besoin d un système de fichiers aussi complexe que XFS. Si l on envisage la mise en place d un serveur de news avec un feed extérieur, cela se traduira par la prolifération de petits fichiers extrêmement nombreux dans le spool, il sera donc recommandé d augmenter la densité des inodes de la partition /var/spool au formatage (voir man mke2fs, option -i. Cette option est à fixer au formatage, il n est plus possible de la modifier par la suite). Par contre il est possible d ajouter la journalisation à un système ext2, donc passer en ext3, de manière très simple : «tune2fs -j /dev/sdax», en rajoutant bien sur dans le fichier /etc/fstab que la partition est maintenant en ext3. La page de man de tune2fs donne toutes les précisions voulues, également pour modifier le pourcentage d espace disque alloué au super utilisateur par partition. Cela sera utile après redimensionnement d une partition avec le logiciel parted 16, qui fonctionne très bien, dans la mesure où l usage peut révéler une partition chroniquement sur dimensionnée au détriment d une autre. 2.2 Partitionnement d une station de travail Le partitionnement d une station de travail est beaucoup plus simple et beaucoup moins sensible que celui d un serveur, dans la mesure où les stations n hébergent absolument aucune donnée ; la partition /home est montée au boot par NFS et n occupe donc aucun espace sur le disque local. On pourra faire une petite partition /boot, puis une partition de swap plus large que la RAM dont on prévoit de doter a terme la machine, le reste du disque contenant la partition racine /. Une installation complète de Gnome 2.8, KDE 3.3, Enlightenment, Windowmaker, Mozilla, Firefox, Thunderbird, Gimp 2.2, L A TEX, OOo 1.1, Gcompris et la majeure partie des logiciels éducatifs ou transversaux référencés sur le présent site 17 occupe moins de 3 Go sur le disque. En comptant large, une partition de 6 Go est donc amplement suffisante. 2.3 Conseils généraux pour l installation Qu il s agisse d un serveur ou d une station de travail, l installation de Debian demeure simple mis à part le moment du partitionnement qui requiert une grande attention. Les machines clientes et l environnement français sont détaillées dans la section 9. Voici quelques conseils complémentaires : le mot de passe root des stations ne doit pas être le même que celui des serveurs et autres machines «sensibles». Par simple bon sens, mais aussi parce qu on fera parfois installer des logiciels par les stagiaires. l installeur Sarge sera démarré avec l option linux26 pour le kernel 2.6.8. Le gestionnaire d amorçage (lilo ou GRUB) doit toujours être installé dans le MBR (master boot record) du disque principal. L installer ailleurs, sur une partition du disque ou sur une disquette, est le meilleur moyen d avoir des problèmes par la suite. 14 Taille conseillée si l on ne recourt pas aux images de kernel officielles qui intègrent un initrd de large taille, avec tous les modules de gestion du SCSI, RAID, IDE, file systems, etc... En ce cas, prévoir une petite centaine de Mo par sécurité. 15 A l usage, il s avère que seuls les systèmes MS-Windows ont vraiment besoin de ce genre de sauvegarde 16 http ://www.gnu.org/software/parted/parted.html 17 http ://logiciels-libres-cndp.ac-versailles.fr/ 7

Dans le cas de machines en double amorçage avec un système d exploitation MS-Windows, toujours commencer par installer ce dernier et installer GNU/Linux ensuite. La configuration de Debian s achève par la configuration du serveur SMTP qui permet au système de prévenir son administrateur de tel ou tel problème en lui envoyant un mail. Root n a aucune raison de lire, et encore moins de rédiger, du courrier. On redirigera donc tout le courrier de toutes les machines vers un utilisateur du réseau, typiquement le compte de la personne en train de lire ce document :-). Ceci se corrige en éditant le fichier /etc/aliases pour placer un alias ainsi : «root : yves@mp-soa.net» (où cette adresse est celle de l administrateur du réseau), puis en mettant a jour la base d alias au moyen de la commande newaliases et en relançant le serveur SMTP (dans le cas de Postfix, régénérer la base d alias au moyen de la commande «postmap /etc/aliases»). On vérifiera au moyen de la commande «echo coucou mail root» que l utilisateur «yves» reçoit bien les messages de root sur son compte, sur l ordinateur qui centralise les messages du domaine (voir plus loin, section 7.1.3). Le serveur SMTP exim, choix par défaut de Debian, convient bien pour une machine qui ne fait qu envoyer les mails du système vers un compte du réseau. Pour le serveur SMTP principal, qui doit traiter tout le courrier des utilisateurs, on préférera Postfix dont la configuration est détaillée dans la section 7.1. 2.4 Les sources des packages Debian Un principe de Debian est que tous les logiciels reposent sur des packages qui définissent leurs dépendances : ainsi, on ne va jamais à la pêche à telle ou telle version d une librairie très précise qui elle même en demande une autre qu il faudra laborieusement compiler, cette «aventure» s achevant par une réinstallation et mise à jour à la main de la moitié du système. Au contraire, l installation d un package conditionne la mise en place de tout ce qui est nécessaire pour qu il fonctionne, en passant par internet pour obtenir les dernières versions des logiciels Tout passe ainsi par l utilitaire apt-get dont on trouvera sur ce même site 18 une description sommaire. le HOWTO d apt 19 exposant beaucoup plus complètement ce logiciel qui fait une grande partie du confort, comme du succès, de Debian. Apt possède son fichier de configuration : /etc/apt/sources.list qui décrit les serveurs et sources sur lesquels il va aller chercher ses packages. Un proxy de packages permettant d économiser de la bande passante et du temps de téléchargement pour tous les ordinateurs de notre réseau sera installé plus tard (section 6.3), mais dans un premier temps, pour partir de quelque chose, nous retiendrons cette configuration : Pour un serveur : #Securite deb http://security.debian.org/ stable/updates main #Serveur principal deb ftp://ftp.fr.debian.org/debian stable main contrib Pour une station de travail, on prendra les mêmes sources mais avec la section unstable ou sid au lieu de stable ou woody, en rajoutant certains serveurs qui proposent des logiciels en plus, selon les besoins (voir par exemple apt-get.org 20, les serveurs proposés ne sont en rien officiels) : #Securite deb http://security.debian.org/ testing/updates main #Source principale deb ftp://ftp.fr.debian.org/debian sid main contrib #Agnula, logiciels de création musicale et multimedia deb http://apt.agnula.org/demudi/ unstable main local extra #Acrobat Reader, Mplayer, logiciels non libres deb ftp://ftp.nerim.net/debian-marillat unstable main ##Cinelerra, logiciel de montage video professionnel deb http://www.kiberpipa.org/~minmax/cinelerra/builds/sid/./ 18 http ://logiciels-libres-cndp.ac-versailles.fr/article.php3?id_article=20 19 http ://www.debian.org/doc/manuals/apt-howto/index.en.html 20 http ://www.apt-get.org/ 8

2.5 Logiciels complémentaires Au sortir de l installation de Debian, on dispose d un système fonctionnel mais tellement minimal qu on ne peut presque rien faire avec. Même pour une telle installation, il manque un certain nombre de logiciels qu on installera de suite, généralement parce qu ils seront nécessaires pour identifier certains problèmes dans des situations où il ne sera plus possible d installer quoique ce soit : lsof, List Open Files, permet de savoir quels sont les fichiers ouverts et quel process les ouvre 21. less affiche les pages de man de manière beaucoup plus confortable que le pager par défaut, more. manpages-fr, pour disposer de ce qui est traduit tcpdump, capteur de trames réseau. nmap, scanner de ports pour s assurer de ce qui est ouvert localement ou sur une autre machine. ssh, permettant de prendre a distance le contrôle de la machine en mode texte. Il y a peu de raisons de ne pas installer ssh sur une machine. On prendra les choix par défaut lors de la configuration sous peine d introduire une faille de sécurité. rsync, dont nous ferons un usage intensif pour distribuer des fichiers sur tout le réseau à la fin de cet article. ntpdate, pour mettre les machines à l heure sur le serveur de temps du réseau (voir section 6.5). localepurge (voir 9.1.2). Bien entendu, apt-get installera tout cela en quelques instants. 3 Une session de travail d un administrateur réseau 3.1 Conseils généraux Pour organiser son travail de manière efficace, ne pas répéter toujours les mêmes taches et conserver une visibilité maximale de ce qui se passe sur un ordinateur au fur et à mesure que l on installe des logiciels et qu on modifie leur configuration, un certain nombre d habitudes de travail, de simple bon sens, sont à prendre. Trois points essentiels : Comprendre ce que l on est en train de faire en consultant systématiquement les pages de man et la documentation présente dans /usr/share/doc/<nom du package>, en particulier les fichiers README.Debian 22. Un service réseau ne démarrera pas ou ne fonctionnera pas correctement si l on ne fait pas ce qui est indiqué dans ces fichiers rédigés très clairement, hélas en anglais. Se familiariser avec un éditeur en mode texte qui permet d ouvrir simplement plusieurs fichiers en même temps, et se familiariser pendant une ou deux heures avec ses raccourcis clavier. Jed constitue de notre point de vue un excellent choix : cet éditeur, léger, n impose pas de manipulation particulière pour saisir du texte ou en modifier, ni pour revenir à un mode permettant de sauvegarder son travail, ce qu attend a priori un être humain normalement constitué. Il présente des menus qui rappellent les raccourcis clavier les plus usuels, offre une coloration syntaxique par défaut et peut être utilisé à de nombreuses autres fins, introduisant ainsi à un environnement complet de programmation, de courrier, de lecture de forums et bien d autres choses, connu sous le nom d Emacs. Un didacticiel en français est proposé avec Emacs, lancé avec le raccourci clavier C-h t 23. Une heure passée avec ce didacticiel permet de bien comprendre la logique très claire des raccourcis clavier et de commencer à être opérationnel. On trouve facilement sur le Web des tableaux récapitulatifs 24 des raccourcis d emacs. Mc est un gestionnaire de fichiers en mode texte très apprécié, qui propose un éditeur plus sommaire que jed mais qui reste de manipulaton aisée. Vi, ou ses clones, sont présents par défaut sous tout système Unix comme un mal nécessaire. On se doit de connaître un minimum ses raccourcis clavier, en particulier ceux permettant d en sortir rapidement ( :q!) :-). Un appui sur la touche escape permet en principe de saisir cette commande si les lettres :q! apparaissent encore dans le corps du texte. La fonction M-x doctor d emacs offre secours et compassion après une session, même brève, de «travail» dans vi. Organiser sa session de travail en ouvrant quatre consoles textes (ou quatre xterm si l on travaille sous X à travers ssh). Sur ces 4 consoles, on maintiendra : 1. Un éditeur ouvert, qui permet d ouvrir plusieurs fichiers en même temps 25 21 en particulier lsof -i :<n _de_port> 22 la commande zless permet de visualiser un fichier sans le décompresser 23 Control h suivi de t 24 http ://asi.insa-rouen.fr/ lfallet/informatique/emacs.php 25 Raccourcis claviers utiles pour travailler sur plusieurs fichiers en même temps : C-x C-f pour ouvrir un nouveau fichier C-x b pour naviguer entre les fichiers ou tampons déjà ouverts, la complétion fonctionne classiquement au moyen de la touche de tabulation 9

2. Un simple shell pour taper des commandes, en particulier redémarrer le service réseau dont on vient de modifier la configuration (/etc/init.d/nom_du_service start stop restart). 3. Le contenu d un fichier de log qui consigne l activité du système en temps réel (/var/log/syslog) ou l activité plus spécifique d un service (par exemple /var/spool/squid/access.log) et par là ce que signale le service réseau lors de son redémarrage et pendant son fonctionnement (commande tail -f <nom du fichier de logs>). 4. La documentation de ce qu on est en train de faire. Quelqu un cherchant de l aide sur les newsgroups ou les listes de diffusion se voit souvent répondre : «que disent les logs?», et ensuite RTFM 26 ou man. Avoir donc la doc et les logs présents à l écran permet de gagner du temps et surtout de l autonomie. 3.2 Un interpréteur de commandes confortable : zsh, le Z Shell La plupart des manipulations décrites dans ce document se font en mode texte, en dehors de toute interface graphique qui a très fortement tendance à diminuer la compréhension des choses et réduire l autonomie de l administrateur système. Cependant, le shell (ou interpréteur de commandes) standard Bash présente de nombreuses limitations, même dans ses dernières versions. Nous préconisons ainsi l usage de Zsh en version 4, shell très évolué permettant divers modes de complétion 27 programmable et fonctionnalités très étendues parmi lesquelles on notera : Complétion pour ssh tenant compte des machines connues ( /.ssh/known_hosts). Il devient superflu de taper le nom entier des machines qu on désire joindre, les premières lettres suffisent. Complétion distante pour scp permettant de naviguer à la complétion dans le système de fichiers d une machine distante, ce qui permet aux clefs et agents ssh de présenter un intérêt encore accru (voire section 10.2). Complétion sur les options des commandes et non plus seulement sur les commandes elles mêmes, ce qui facilite la découverte de logiciels mal connus. Par exemple, la commande gphoto2 suivie de deux appuis sur la touche de tabulation montrera clairement comment piloter un appareil photo en mode texte. Complétion sur les cibles des commandes, particulièrement pratique avec apt-get install et apt-cache show puisque la complétion proposera les packages disponibles. Un système de cache permet d optimiser les performances de cette fonctionnalité. Navigation dans le système de fichiers, dans des archives (tar, zip...) et plus généralement dans tous les choix de complétion au moyen d un menu dans lequel les touches fléchées du clavier permettent de naviguer. Ce menu est colorisé de la même manière que la commande ls. Prompt grandement personnalisable, la configuration ici proposée teste la charge machine et colorise le prompt en fonction de celle ci, ce qui permet de remarquer tout de suite un problème éventuel au login. Navigation dans un historique partagé entre les divers shells ouverts, permettant d obtenir des informations sur la date et la durée d exécution d une commande. Pour retrouver une commande, Esc-p permet une navigation standard et Ctrl-r une recherche incrémentale (comme bash). Zsh est lancé temporairement en l appelant par son nom, mais le changement de shell définitif s effectue dans le système au moyen de la commande chsh. On prendra garde au bon fonctionnement de la configuration avant de changer le shell de root, mais même en ce cas la commande su - -s /bin/bash permet de récupérer un shell fonctionnel. Le Z Shell demande un travail de configuration afin de disposer de tous ces avantages, nous proposons une configuration complète 28 dont la mise en place est détaillée dans le fichier README. L installation des logiciels complémentaires indiqués, totalement indispensables (en particulier cowsay), offrira un plaisir animalier toujours renouvelé à chaque ouverture de session :). Il existe assez peu de sites en français concernant Zsh, et la version 4 diffère très sensiblement de la version 3. Signalons, en anglais, parmi des ressources très nombreuses : Un bref didacticiel 29 chez IBM. Zsh-lovers 30, nombreux trucs et astuces. C-x 5 2 pour scinder la fenêtre d édition en deux C-x o pour naviguer d une fenêtre à l autre (par exemple pour faire des copier-coller) C-x k pour tuer le tampon courant C-x 1 pour n afficher qu une seule fenêtre 26 http ://www.catb.org/ esr/jargon/html/r/rtfm.html 27 On appelle complétion l utilisation d une touche, généralement la tabulation, pour compléter ce qui est saisi sur la ligne de commande au lieu de tout saisir manuellement. Ceci offre un confort certain, mais surtout évite de taper des erreurs, aussi faut-il utiliser cette complétion systématiquement. 28 http ://logiciels-libresècndp.ac-versailles.fr/debianinstall/fichiers/zsh 29 http ://www-106.ibm.com/developerworks/linux/library/l-z.html?dwzone=linux 30 http ://grml.org/zsh/zsh-lovers.html 10

Un guide de l utilisateur 31 sur le site officiel. 4 Sécuriser une machine Debian : les bases Chacun mesurera, en fonction du public auquel est destiné son réseau, quels sont ses besoins en matière de sécurité, en dehors du routeur / Firewall que nous exposons dans la section suivante. Il y a un monde entre une salle où ne passent que des enseignants qui, dans le cadre d un plan académique de formation, viennent apprendre le traitement de textes et les rudiments d internet sous la responsabilité d un formateur, et un local qui accueille des élèves sans contrôle pendant leurs heures de permanence. Mais la première priorité d un administrateur réseau doit être la sécurité, condition première de la haute disponibilité des machines. Au sortir de l installation, une machine GNU/Linux n est pas nécessairement aussi sécurisée qu elle peut l être, si l on part de ce principe : d abord, on ferme tout et on ouvre ensuite selon des besoins mûrement réfléchis. 1. Commenter toutes les entrées du fichier /etc/inetd.conf, sauf celles qui servent explicitement à un usage réel (normalement il n y en a aucun, lorsque l installation de notre réseau sera complète il y aura pop et ftp sur le serveur principal, et Amanda sur toutes les machines sauvegardées). Inetd est ce «super daemon» qui lance des services à la demande, leur évitant ainsi de tourner en permanence pour ne pas surcharger la machine. Certaines entrées comme time, discard, parfois finger, etc... sont actives par défaut. 2. Placer la directive ALL : ALL dans le fichier /etc/hosts.deny et redémarrer inetd. Man 5 hosts_access indique des exemples très clairs de configuration des tcp wrappers qui autorisent ou non certains services à telle ou telle machine. 3. Le fichier /etc/lilo.conf contient une ligne commentée «password=tatacounter» qui permet de démarrer la machine en mode «single user» et d avoir ainsi un accès root sans authentification. On évitera cela en décommentant cette ligne, en changeant le mot de passe, en sécurisant ce fichier 32 et enfin en réinstallant lilo (commande lilo). Il est indispensable de s abonner à la liste de diffusion d alertes de sécurité de Debian dès lors que l on administre une machine, a fortiori un serveur connecté jour et nuit à Internet. Il suffit de cliquer ici : http ://lists.debian.org/debiansecurity-announce/ 33 et d entrer son adresse. 5 Configuration et sécurité du routeur Cet ordinateur n a pas besoin de beaucoup de puissance ou ressources matérielles, par contre il doit faire l objet de l attention la plus grande en matière de sécurité car il est relié en permanence par une IP publique au monde extérieur et va donc subir des tentatives d intrusion et attaques diverses venues de pirates qu il sera toujours difficile d identifier. Insistons : il est très maladroit de se demander «vais-je subir des attaques?». La question pertinente est : «comment mes services réseau ont-ils réagi aux tentatives d intrusion qui ont eu lieu depuis que je les ai mis en place il y a une demi heure?». Pour cette raison, on suivra le principe suivant : le pare feu ne doit héberger aucun service réseau en plus de lui même et du moyen éventuel d entrer depuis l extérieur (ssh). On sera particulièrement attentif à la consultation de ses journaux (logs). Note importante Les services réseau présentés dans ce document ne sont pas considérés comme ouverts sur Internet mais réservés à un usage interne ; aucune translation de port n est active par défaut dans la configuration de firewall proposée. On ne redirigera surtout aucun port vers le serveur hébergeant les données des utilisateurs, même pour le courrier ou le Web. Pour ouvrir certains services au monde extérieur, on se renseignera sur la notion de DMZ où l on placera un serveur dédié. Une installation minimale de Debian stable suffira pour le routeur ; un partitionnement très simple conviendra puisqu il n y aura ni compte ni donnée sur cet ordinateur. 5.1 Sécurité sur le routeur : première étape Aucun ordinateur ne doit être connecté à Internet sans être protégé par Firewall, qu il n y a aucune raison de désactiver, même pour un instant. 31 http ://zsh.sunsite.dk/guide/zshguide.html 32 au moyen de la commande chmod 600 /etc/lilo.conf 33 http ://lists.debian.org/debian-security-announce/ 33 il va de soi qu aucun client NIS ou LDAP ne sera installé. 11

Ce script de firewall 34 est à placer dans le répertoire /etc/init.d. Le rendre exécutable (chmod 700 iptables.sh) et exécuté au boot du routeur par la commande update-rc.d iptables.sh start 15 2 3 4 5. (attention au. final, voir man update-rc.d). Redémarrer l ordinateur pour vérifier que les règles iptables sont bien appliquées au boot, la commande iptables -L -v devant montrer que les tables INPUT et FORWARD ont une policy de DROP, et que n est accepté en entrée sur ppp0 que ce qui est ESTABLISHED ou RELATED (une chaîne supplémentaire est affichée pour les logs). Chain INPUT (policy DROP 0 packets, 0 bytes) pkts bytes target prot opt in out source \destination 287 16748 ACCEPT tcp -- any any localnet/24 \anywhere tcp dpt:ssh 2 168 ACCEPT icmp -- any any anywhere \ anywhere 144 12183 ACCEPT all -- any any anywhere \ anywhere state RELATED,ESTABLISHED 3 483 ACCEPT all -- eth0 any anywhere \ anywhere state NEW 0 0 ACCEPT all -- lo any anywhere \ anywhere state NEW 8 400 LOG_AND_DROP all -- any any anywhere \ anywhere Chain FORWARD (policy DROP 0 packets, 0 bytes) pkts bytes target prot opt in out source \ destination 207 14731 ACCEPT all -- eth0 any anywhere \ anywhere 176 23867 ACCEPT all -- any any anywhere \ anywhere state RELATED,ESTABLISHED Chain OUTPUT (policy ACCEPT 4200K packets, 327M bytes) pkts bytes target prot opt in out source \ destination Quelques observations sur cette configuration : Tout est ouvert en sortie puisque nous n avons pas de raison particulière d interdire tel ou tel usage à l intérieur du centre de formation. On réfléchira soigneusement, dans un établissement à vocation éducative, à mettre en place un tel filtrage, comme toute forme de censure qui est vite contre-productive sans un accompagnement pédagogique consistant déjà en la mise au point d une charte des usages, adjointe au règlement intérieur, adoptée en conseil d administration et signée par les élèves. Filtrer ICMP en entrée de manière brutale doit être proscrit, mais un filtrage réfléchi permet d éviter d être visible aux scans les plus grossiers. Aucun filtrage d ICMP ne protège réellement contre un pirate compétent et décidé. Les logs de Netfilter sont fastidieux et guère passionnants à lire. Le logiciel fwlogwatch, disponible dans Debian, permet entre autres d auditer les logs du Firewall et propose des rapports au format HTML 35 ; il dépasse le cadre de cet article. Nous pouvons maintenant ouvrir la connexion ADSL ; elle se paramètre avec la commande pppoeconfig, les fichiers de configuration se trouvant dans le repertoire /etc/ppp. La ligne est ouverte avec «pon dsl-provider», fermée par «poff» et une option à la configuration permet de la rendre persistante, ce qui est recommandé. Ce script 36 permet de tester basiquement la ligne et de la remonter, on pourra le placer en crontab pour l éxécuter tous les quarts d heure. 34 http ://logiciels-libres-cndp.ac-versailles.fr/debianinstall/fichiers/iptables.sh 35 http ://logiciels-libres-cndp.ac-versailles.fr/debianinstall/fichiers/report.html 36 http ://logiciels-libres-cndp.ac-versailles.fr/debianinstall/fichiers/internet.sh 12

5.2 Sécurité sur le routeur : seconde étape Mettons tout de suite à jour la machine pour installer les derniers correctifs de sécurité : «apt-get update ; apt-get dist-upgrade». Installer la dernière version du kernel, ou mieux le compiler soi même 37 pour l optimiser et n y mettre que ce qui est nécessaire, reste une excellente idée. Cette mise à jour sera suivie de l installation des packages Logcheck et ssh. Logcheck audite tous les journaux, ou logs, du système et envoie son audit par mail à l administrateur (voir ci dessus comment déporter ces messages vers un compte effectivement lu), ceci selon une périodicité définie dans le fichier /etc/cron.d/logcheck. Le niveau de sécurité «server» permet un audit suffisant, mais le niveau «paranoid» est disponible :-). le démon sshd permet de prendre la main à distance sur le routeur, mais surtout de parcourir le réseau et de se logguer sur les machines depuis l extérieur : très commode, ceci permet à l administrateur du réseau de continuer à travailler chez lui, le soir ou le week end :-). Réalisons mantenant un premier et très sommaire audit de sécurité. Depuis l extérieur du réseau, sur une machine disposant de Nmap 38 (le standard en matière de scanner de ports), la commande «nmap -O ip_du_routeur» permet de s assurer que seul le port 22 (ssh) est ouvert 39. En cas contraire, reprendre depuis le départ la sécurisation de cette machine et la mise en place du pare-feu. Voici le résultat d un scan de port satisfaisant : Starting nmap 3.81 ( http://www.insecure.org/nmap/ ) at 2005-03-16 16:47 CET Warning: OS detection will be MUCH less reliable because we did not find at least 1 open and 1 closed TCP port Interesting ports on mpsoa.net4.nerim.net (62.212.122.37): (The 1662 ports scanned but not shown below are in state: filtered) PORT STATE SERVICE 22/tcp open ssh Device type: general purpose Running: Linux 2.4.X 2.5.X OS details: Linux 2.4.0-2.5.20, Linux 2.4.10-2.4.18, Linux 2.4.19 (x86) Uptime 66.351 days (since Sun Jan 9 08:23:22 2005) Nmap finished: 1 IP address (1 host up) scanned in 30.075 seconds 5.3 Fonctionnalités additionnelles du script de firewall Notre script permet de facilement ouvrir et translater des ports, les lignes permettant de le faire étant commentées. Il suffira donc, par exemple pour que la machine 192.168.28.50 sur lequel on a placé un serveur Web soit consultable de l extérieur sur le port 80, de commencer par ouvrir ce port sur le firewall : $IPTABLES -A INPUT -p TCP -s 0/0 --dport 80 -j ACCEPT Puis de faire en sorte que toutes les requêtes arrivant sur l ip publique du firewall à destination du port 80 soient redirigées sur le port 80 de cette machine : $IPTABLES -t nat -A PREROUTING -p tcp -i ppp0 -d 62.212.122.37 \ --dport 80 -j DNAT --to 192.168.28.50:80 $IPTABLES -A FORWARD -d 192.168.28.0/24 -p tcp --dport 80-j ACCEPT Bien évidemment, on se sera soigneusement renseigné sur la sécurité du service réseau que l on met ainsi à disposition de manière à ne pas se le faire pirater! La même procédure pourra ainsi être utilisée pour tester la sécurité du serveur SMTP Postfix lorsque nous procéderons à sa configuration (section 7.1). 5.4 Simulation d intrusions : Nessus Nessus 40 est un simulateur d intrusions et scanner de vulnérabilités avec lequel auditer la sécurité de manière poussée à partir d une machine cliente, sur le réseau ou à l extérieur. Il est toujours bon d auditer plus finement qu avec un scan de ports grossier la sécurité de ses serveurs, aussi devrait-on considérer Nessus avec beaucoup d attention. Voici quelques liens : 37 http ://logiciels-libres-cndp.ac-versailles.fr/article.php3?id_article=180 38 http ://www.insecure.org/nmap/ 39 avec ICMP non filtré, sinon ajouter l option -P0. Ce type de scan est très long. 40 http ://www.nessus.org/ 13

Un didacticiel rapide d installation et de configuration 41 sur Trustonme.net. Une description plus élaborée 42 exposant les options de scan, sur linuxfrench.net. Un autre article similaire très détaillé 43 offert par linuxfocus.org. Notons enfin que Nessus est tout sauf discret lors de ses scans, il faut être aveugle pour ne pas voir ses traces dans les logs des machines scannées... 5.5 Logiciels complémentaires de sécurité Ces logiciels dépassent le cadre de cette étude et ne sont pas strictement indispensables, en particulier si le seul port ouvert est ssh. Ils complètent toutefois utilement l installation d un lien permanent à Internet, même si l on n est pas spécialement paranoïaque :). Tripwire 44 permet de prendre l empreinte d une machine juste après son installation et de contrôler périodiquement son intégrité. Snort 45, classique IDS (système de détection d intrusion), permet d auditer très finement ce qui se passe sur le réseau. Il existe un outil similaire mais beaucoup plus avancé, prelude-ids 46. Chkrootkit 47 permet de tenter de détecter la présence d un rootkit 48 sur la machine, trace indubitable d un piratage. Une machine piratée ne peut être fiablement auditée à partir d elle même, ce qui restreint la pertinence des mails que chkrootkit propose d envoyer quotidiennement, et a fortiori un audit réalisé post mortem. Pour de plus amples détails, de nombreux sites sur la sécurité informatique et l excellente revue MISC 49 peuvent servir de référence. Tous les logiciels ci dessus sont disponibles dans Debian et installables via APT. Il est bien entendu tout à fait superflu d installer un antivirus sur notre routeur. Enfin, il est très fortement déconseillé de réagir automatiquement à un scan de ports ou une tentative d intrusion par une action (de filtrage ou bannissement en particulier) sur l IP présumée de l attaquant. Outre que le pirate ne provient pas necessairement de l IP que l on croit avoir identifiée, il sera toujours tentant, pour la personne se rendant compte qu elle est victime d une action de ce genre, de spoofer son attaque en se faisant passer pour un serveur DNS, racine ou faisant autorité pour notre classe d adresses IP, ce qui coupera notre réseau du reste du monde. Nous serons ainsi responsables d un joli déni de service dont nous serons nous mêmes victimes. C est ce que propose le logiciel Portsentry dont nous déconseillons absolument l usage. 6 Premier serveur : les services réseau non authentifiés Nous allons mettre en place dans cette section le premier serveur, dont la tâche sera essentiellement de nous relier à internet, en plus de ce que fait le Firewall. Nous étudierons les services suivants : DNS, DHCP, proxy http et ftp, proxy apt, miroir Debian, serveur de temps, serveur d impression. D une manière générale, nous configurerons les services réseau de manière autonome, sans dépendre en rien du fournisseur d accès (DNS, SMTP, etc..), pour nous affranchir de tout dysfonctionnement de ce dernier et être certains que si quelque chose ne marche pas, nous avons la main sur ce dysfonctionnement, mis à part les tuyaux, la connexion, qui est en fin de compte la seule chose à demander au fournisseur d accès. 6.1 Le DNS : Bind Packages requis : bind, dnsutils, et leurs dépendances. Le DNS établit un lien entre noms et adresses d ordinateurs et constitue le coeur d Internet. De fait, bind devient vite le cœur d un intranet et la première chose à installer dès que l on sait s en servir. Nous démontrerons sa puissance lors de l installation des stations de travail, où la distribution de fichiers à l identique sur toutes les machines en une seule ligne de commande reposera sur un DNS fonctionnel. Lire et mettre en pratique le DNS HOWTO 50 permet d acquérir les bases du DNS et surtout de beaucoup mieux comprendre Internet. Cette section présente un récapitulatif des fichiers de configuration d une zone et d un reverse, elle ne remplace pas cette introduction au DNS, présupposée connue. 41 http ://www.trustonme.net/didactels/201.html 42 http ://www.linuxfrench.net/article.php3?id_article=938 43 http ://www.linuxfocus.org/francais/november2001/article217.shtml 44 http ://www.tripwire.org/ 45 http ://www.snort.org/ 46 http ://www.prelude-ids.org/ 47 http ://www.chkrootkit.org/ 48 http ://en.wikipedia.org/wiki/rootkit 49 http ://www.miscmag.com/sommaire.php 50 http ://www.freenix.fr/unix/linux/howto/dns-howto.html 14

Avant de présenter la configuration détaillée, précisons que le serveur DNS maître a pour adresse 192.168.28.2 et l esclave 192.168.28.1. Le fichier de configuration de bind est /etc/bind/named.conf. Commentons ce qui se trouve dans la section forwarders, pour résoudre nous mêmes les noms sur internet sans passer par le serveur du fournisseur d accès, en interrogeant directement les serveurs racines. 51 Ensuite, notre zone, qui va définir les noms de nos machines, s appelle mp-soa.net ; nous allons donc y déclarer notre zone et son reverse : // add entries for other zones below here zone "mp-soa.net" in { type master; file "db.mp-soa"; allow-transfer {192.168.28.1;}; }; zone "28.168.192.in-addr.arpa" in { type master; file "db.28.168.192"; allow-transfer {192.168.28.1;}; }; La section «allow-transfer» interdit à toute autre machine que 192.168.28.1 de faire un transfert de zone qui révélerait une bonne part de la structure de notre réseau, tout en déclarant une seconde machine comme DNS secondaire. Nous avons déclaré deux fichiers dans /var/cache/bind qu il va falloir créer et renseigner : db.mp-soa 52 qui contient les machines de la zone mp-soa.net : tous les ordinateurs de notre réseau. db.28.168.192 53 : la zone inversée ou reverse, associant des adresses à des noms. Cette zone est indispensable au fonctionnement normal du DNS et par là de la majeure partie des services réseau. En particulier, le montage NFS de la section suivante ne peut se faire que si la requête sur le reverse de la machine cliente qui opère le montage réussit. Il en va de même pour nombres d autres services (FTP, SMTP...) qui ne fonctionneront pas normalement sans cette zone inversée. Le DNS HOWTO mentionné ci dessus permet de comprendre la signification du caractère @ en début de fichier, ainsi que la présence de points qui terminent les noms de machines dans le fichier de reverse, alors qu il n en va pas de même dans la zone «droite». Lorsque les fichiers seront remplis correctement, on redémarrera bind en observant soigneusement les modifications du fichier /var/log/syslog : toute erreur apparaît très clairement avec le nom du fichier et le numéro de la ligne qui contient un bug. Bind indique explicitement que les zones sont chargées et qu il est prêt à répondre aux requêtes lorsque tout est correct. Pour rajouter, enlever ou modifier des machines du DNS, on incrémentera le serial number après modification du fichier, puis on rechargera la zone au moyen de la commande ndc reload <nom de la zone>. Il est en effet absurde de redémarrer bind si on a simplement modifié une zone, ce redémarrage vidant le cache mémoire de bind qui contient toutes les requêtes DNS déjà effectuées sur Internet. Elles seront donc refaites, occasionnant trafic réseau, délai d attente pour les utilisateurs, etc... On pourra dans la suite de ce document ajouter un alias portant le nom de chaque service du réseau dès que celui ci fonctionne. Par exemple, lorsque la messagerie sera en place, il sera élégant de rajouter deux entrées de type «smtp IN CNAME abraracourcix» et «pop IN CNAME abraracourcix», comme chez le fournisseur d accès :), ce qui simplifie la vie des utilisateurs et surtout permet de déplacer un service d une machine à l autre sans que rien ne change sur le reste du réseau. C est un plaisir de voir ces alias répondre au ping dès que la zone est rechargée. Le serveur DNS secondaire, ou esclave, sera configuré très simplement ainsi (fichier /etc/bind/named.conf auquel on enlèvera les éventuels forwarders) : zone "mp-soa.net" in { type slave; file "slave/db.mp-soa"; masters {192.168.28.2; }; }; 51 Si le fournisseur d accès est Wanadoo, il est hélas requis d utiliser ses DNS comme forwarders pour pouvoir envoyer du courrier, sauf à installer soi même un serveur SMTP autonome comme expliqué ci après, section 7.1. 52 http ://logiciels-libres-cndp.ac-versailles.fr/debianinstall/fichiers/db.mp-soa 53 http ://logiciels-libres-cndp.ac-versailles.fr/debianinstall/fichiers/db.28.168.192 15

zone "28.168.192.in-addr.arpa" in { type slave; file "slave/db.28.168.192"; masters {192.168.28.2; }; }; Au redémarrage de l esclave, le fichier de zone arrive depuis le maître dans le répertoire /var/cache/bind/slave. Des tests avec nslookup (ou mieux dig) vérifieront que tout notre DNS est bien correct. A la fin de ce document, chaque machine du réseau sera jointe par son nom, en particulier les machines clientes. On donnera à chaque machine, y compris les serveurs, cette configuration dès l installation (/etc/resolv.conf ) : search mp-soa.net nameserver 192.168.28.2 nameserver 192.168.28.1 6.2 Le DHCP Packages requis : dhcp Le Dynamic Host Configuration Protocol distribue automatiquement des adresses ip, ou plus exactement une configuration réseau complète avec DNS et passerelle, à des machines dont la configuration est automatique. Service extrêmement commode, DHCP évite de déclarer sur chaque machine une configuration qui peut changer : si l adresse du serveur DNS change, il suffit de modifier un fichier sur un serveur plutôt que devoir passer sur toutes les machines qui peuvent être très éloignées les unes des autres, voire difficilement accessibles. La configuration de dhcpd est très simple, ceci suffit amplement : authoritative; # Importante durée des baux default-lease-time 259200; max-lease-time 2592000; # Nom de domaine, qui complète le DNS (directive search de /etc/resolv.conf option domain-name "mp-soa.net"; # Passerelle option routers 192.168.28.254; option domain-name-servers 192.168.28.2,192.168.28.1; # Plage d adresses distribuées par le serveur, # ne pas empiéter sur les adresses fixes du DNS subnet 192.168.28.0 netmask 255.255.255.0 { range 192.168.28.80 192.168.28.150; } Le protocole DHCP ne prévoyant pas de bail d adresses illimité dans le temps (selon la rfc2132 54 ), les adresses des machines risquent donc de changer de manière inopinée, or nous avons déclaré des adresses fixes pour les stations clientes, de manière à les retrouver facilement avec ssh et à distribuer des fichiers de manière automatisée sur tout ou partie d entre elles. La solution, si on ne souhaite pas renseigner fastidieusement chaque adresse sur chaque station, est de déclarer les machines selon l adresse matérielle (MAC) de leur carte réseau dans la configuration du serveur DHCP de cette manière : host majipoor { hardware ethernet 00:0F:1F:C2:BD:4B; fixed-address 192.168.28.50; } La commande ifconfig donne l adresse MAC d une carte réseau. Il suffit de ne placer que ce type de déclaration dans la configuration de dhcpd (donc omettre la section subnet ci dessus) pour que seules les machines déclarées selon leur adresse MAC puissent obtenir une adresse ip (et ainsi introduire un début de sécurité dans les montages NFS). Cette déclaration des adresses physiques est aussi pratique pour les ordinateurs portables dont les propriétaires souhaitent rarement déclarer une configuration ip statique mais qui apprécieront de pouvoir retrouver leur laptop en l appelant par son nom, pour y copier des fichiers par scp, etc... Enfin, il est très peu recommandé de faire tourner plus d un serveur DHCP sur un même réseau, ce qui n est pas sans poser problème lors de stages où l on enseigne le DHCP. 54 http ://www.faqs.org/rfcs/rfc2132.html 16

6.3 Limiter les téléchargemets de logiciels : un miroir Debian ou un proxy de packages Nous sommes en train d installer tout un réseau de machines clientes sous Debian à travers Internet au moyen de packages mis à disposition sur des serveurs publics. Cette mise à disposition présente une limite, qui est celle de la courtoisie : une, voire deux machines peuvent solliciter le serveur en même temps, mais pas une vingtaine provenant du même réseau. Il faudrait donc installer les machines les unes à la suite des autres, ce qui est d autant moins élégant qu il faudra à chaque fois télécharger rigoureusement les mêmes centaines de logiciels, outre que l on triche avec l occupation des miroirs Debian qu on solliciterait ainsi beaucoup plus qu il n est correct de le faire. 6.3.1 Un miroir Debian partiel sur le réseau Packages requis : debmirror, rsync, apache, un DNS fonctionnel pour le virtualhost. La première solution est de construire un miroir Debian au moins partiel. C est la solution la plus élégante, puisqu elle rend le réseau presque entièrement autonome, les stations clientes n ayant pas besoin de connexion extérieure pour installer des logiciels ou les mettre à jour 55. La première contrainte est de disposer d un espace disque suffisant : il faut prévoir une partition d au moins 15 Go pour un miroir de Sid et Sarge (Mai 2005) ne comprenant pas les sources des logiciels, avec en plus les packages mis à disposition par Christian Marillat (mplayer notamment). La seconde contrainte consiste à télécharger environ 13 Go de fichiers qui seront très partiellement utilisés, ce qui se fera aisément en moins de 24 heures à travers une connexion ADSL ; si l on met à jour le miroir toutes les nuits, la ligne sera occupée le temps de télécharger quelques centaines de Mo de données (quantité évidement constamment variable), soit moins d une demi heure sur une ligne à 2 Mbits. La dernière contrainte est de pouvoir mettre les packages à disposition des stations du réseau au moyen d un serveur Web ou FTP qu il sera élégant d appeler par un virtualhost dans le fichier sources.list de chaque machine. La mise en place du miroir peut se faire, dans le répertoire /var/spool/mirror, au moyen de l utilitaire debmirror de la manière suivante : /usr/bin/debmirror /var/spool/mirror/debian --nosource --passive \ -d sarge -d sid --getcontents -e rsync -r :debian/ \--host=ftp.fr.debian.org -v --ignore-release-gpg \ --ignore-small-errors /var/spool/mirror/debian indique le répertoire ou se trouvera le miroir, on pourra ensuite utiliser par exemple /var/spool/mirror/marillat pour une autre source nosource indique de ne pas rapatrier les sources des logiciels passive permet l accès à un serveur FTP alors que nous sommes derrière un firewall (même si nous utilisons rsync). getcontents rapatrie la description du contenu des archives (fichiers contents.arch.gz). -e rsync -r :debian/ permet de mirrorer avec rsync 56, qui vérifie ce qui manque et ne rapatrie que les différences, compressées, entre fichiers au lieu de tout télécharger, ce qui est infiniment plus élégant qu un brut téléchargement par ftp. L option " bwlimit=x" permet de limiter l occupation de la ligne. -r :debian précise le répertoire racine du serveur distant, option requise pour la méthode rsync. host=ftp.debian.org indique la source du miroir. -v indique le mode explicite ou verbeux. ignore-releases-gpg permet de poursuivre le téléchargement si la vérification des paquets par clefs GPG n a pas pu avoir lieu, ce qui est fréquent mais ne pose pas de problème sur un site de confiance. ignore-small-errors poursuit le téléchargement si quelques fichiers sont manquants. Pour initialiser le miroir, la commande ci dessus peut être lancée manuellement, mais la mise à jour quotidienne se fera bien entendu avec une entrée crontab. Il faut ensuite mettre à disposition les packages du miroir sur le réseau local, la solution la plus élégante consistant à utiliser les logiciels standard pour télécharger un fichier en http ou ftp. Nous avons retenu Apache, et pouvons noter que les téléchargements locaux de fichiers se font très sensiblement plus rapidement lorsque Apache sert les fichiers que lorsque apt-proxy le fait. Il faut bien entendu une entrée DNS pour le miroir, ainsi qu un virtual host pour le serveur web qui précisera quelle est la racine du répertoire où trouver les packages. On ajoutera une entrée de ce type dans /etc/apache/httpd.conf : <VirtualHost debian.mp-soa.net> ServerAdmin yves@ash.mp-soa.net 55 Il va de soi qu on ne mettra ce miroir à disposition du monde extérieur que si l on a la chance de disposer d une bande passante en émission tout à fait considérable. La documentation pour mettre en place un miroir complet est disponible sur le site officiel : http ://www.debian.org/mirror/ftpmirror.fr.html 56 A propos de rsync, on consultera la section 10. 17

DocumentRoot /var/spool/mirror/ ServerName debian.mp-soa.net </VirtualHost> Où debian.mp-soa.net constitue un alias DNS du serveur qui héberge le miroir, et où /var/spool/mirror est le répertoire où nous téléchargeons depuis les serveurs dont nous faisons un miroir (sous répertoires debian et marillat). On indiquera ensuite dans le sources.list des stations ces deux simples entrées : deb http://debian.mp-soa.net/debian sid main deb http://debian.mp-soa.net/marillat unstable main 6.3.2 Apt-proxy, proxy de packages Debian pour apt Packages requis : apt-proxy L autre solution consiste en un proxy de packages. Ainsi, comme avec tout proxy, seule la première machine qui installe un package donné provoque un téléchargement sur Internet, le proxy fournissant lui même ensuite ce dont il dipose déjà aux autres machines qui le demandent. Ainsi, on verra les ordinateurs télécharger l ensemble de la suite Open Office.org en quelques secondes, le débit étant de 100 Mbits... Le logiciel permettant de faire cela s appelle aptproxy, il est disponible sous forme de package installable par apt-get. Notons que les packages stockés dans le proxy n ont absolument pas besoin d être installés sur la machine qui le fait tourner, ce même proxy pouvant héberger des packages de différentes versions de Debian. Installons donc tout de suite ce proxy, qui sera défini comme source Debian pour toute machine que l on installera par la suite si l on ne retient pas la solution du miroir Debian. Répétons que cette solution représente à tous les niveaux un important gain de preformances (plus aucune connexion extérieure provoquée par les stations, rapidité bien supérieure d Apache pour les téléchargements locaux) par rapport à un proxy. Sans surprise, le fichier /etc/apt-proxy/apt-proxy.conf contient la configuration d apt-proxy. Deux options importantes : La variable APT_PROXY_CACHE détermine le répertoire de stockage des packages, pour nous /var/spool/aptproxy en raison de la partition réservée pour /var/spool. Ce répertoire, crée à la main, a besoin des permissions suivantes : drwxr-xr-x 8 aptproxy root 4096 Mar 9 13:53 /var/spool/apt-proxy La variable WGET="wget passive-ftp", est essentielle puisque nous nous trouvons derrière un firewall ; aucun téléchargement par ftp n est possible sans ce classique mode passif. On définit ensuite des backends, ou serveurs, où notre proxy s alimentera automatiquement selon les requêtes que les machines vont lui soumettre : add_backend /debian/ \ $APT_PROXY_CACHE/debian/ \ http://ftp.fr.debian.org/debian/ \ +ftp.fr.debian.org::debian/ add_backend /marillat/ \ $APT_PROXY_CACHE/marillat/ \ ftp://ftp.nerim.net/debian-marillat/ add_backend /agnula/ \ $APT_PROXY_CACHE/agnula/ \ http://apt.agnula.org/demudi/ Il est très important, dans les versions 1 d apt-proxy, de déclarer un backend sur une seule ligne. Par souci de clarté, les divers composants d un backend sont ici mis sur plusieurs lignes terminées par un \ qui, selon la syntaxe Unix, indique que la ligne suivante est en fait la continuité de la première. Si cette syntaxe n est pas respectée, le backend ne fonctionnera pas et le proxy non plus. Dans ses versions 2, la syntaxe de ce fichier, qui s appelle apt-proxy-v2.conf est devenue considérablement plus claire. Les backends se déclarent maintenant de la manière suivante : [debian] backends = http://ftp.fr.debian.org/debian [marillat] 18

backends = ftp://ftp.nerim.net/debian-marillat/ En version 1, apt-proxy est un service d inetd lancé à la demande, en version 2 il fonctionne de manière autonome. Mais les deux cas, la syntaxe des sources Debian sur les clients est la même, dans le fichier /etc/apt/sources.list : deb http://apt-proxy.mp-soa.net:9999/debian sid main deb http://apt-proxy.mp-soa.net:9999/marillat unstable main apt-proxy.mp-soa.net est une entrée de notre DNS le port 9999 est le port d apt-proxy, que personne ne change par fainéantise :) debian et marillat sont le nom des backends déclarés dans le fichier de configuration du proxy sid, main, unstable sont les noms des répertoires disponibles sur le serveur distant qu il ne faut pas déclarer sur le proxy lui même : il gérera très bien tout seul la multiplicité des répertoires sur une même source. On pourra être amené à utiliser l une ou l autre de ces versions dans la mesure où la version 1 est présente en woody, et la version 2 en sid. Si, pour une raison ou une autre, on souhaite se servir d une station de travail allumée en permanence comme proxy de packages, apt-get installera la version 2. La gestion de l occupation disque se fait de manière très transparente, apt-proxy s occupant seul de nettoyer les packages obsolètes (seul semble influer le paramètre spécifiant le nombre de versions concurrentes à conserver). Un maximum de deux Go d espace disque suffit pour de très nombreux packages sur les machines clientes. L utilitaire, apt-proxy-import permet de copier dans le cache du proxy l ensemble des packages déjà téléchargés par la même machine auparavant avec apt-get, ce qui peut représenter une taille considérable. Il faut initialiser le proxy avant cette importation avec un simple apt-get update, le fichier sources.list pointant bien évidemment maintenant sur le proxy. Restent à installer quelques logiciels sur une station pour observer notre proxy initialiser son cache et se remplir, en indiquant ce qui se passe dans son fichier de logs /var/log/apt-proxy.log. On y verra bien sûr tous les problèmes de configuration éventuels qui expliqueront pourquoi quelque chose ne marche pas. 6.4 Squid, Proxy http et ftp Packages requis : squid, squidguard (nombreuses dépendances) Une implémentation complète de Squid et SquidGuard ne demandant aucune compétence Unix particulière, développée pour les établissements scolaires et mise à jour très régulièrement est disponible sous le nom de Slis 57, «Serveur Linux pour l Internet Scolaire», installée dans des milliers de sites en France. Le développement est réalisé par une communauté interne à l Éducation Nationale et piloté par le CARMI Internet de Grenoble. Slis demande un serveur dédié et s insère en principe dans une politique académique : chaque Slis est relié à une base centrale de supervision et mise à jour. Ainsi, l administrateur local d un Slis est rarement root sur son serveur. Cette section s adresse aux administrateurs de réseau qui souhaitent contrôler entièrement leur proxy http. 6.4.1 Squid Un proxy http et ftp sert à économiser la bande passante et à fluidifier la consultation du Web ; il devrait être installé systématiquement, même avec une bande passante importante. D autre part, ce proxy permet de filtrer, on pourra aussi dire censurer, un certain nombre de contenus jugés indésirables selon tel ou tel critère. Comme nous l avons dit à propos de la fermeture de certains ports en sortie du firewall, il ne peut être pertinent de procéder à une telle censure sur un réseau, en particulier dans un établissement scolaire, que dans le cadre d une charte des usages dont les utilisateurs ont pris connaissance. Squid 58 constitue le standard quasiment absolu en matière de cache proxy. Il est livré avec un fichier de configuration qui le fait fonctionner de manière tout à fait satisfaisante ; il est déconseillé de toucher à ce fichier (clairement autodocumenté) sans réellement comprendre ce que l on fait. Les risques d altérer voire casser le disque dur du serveur sont réels si l on modifie inconsidérément certaines options. Il est bon de savoir que toute modification de la configuration de Squid demande, comme tout autre service, redémarrage, mais Squid peut être particulièrement long à s arrêter (quelques minutes dans le pire des cas). Ceci est «normal», ne doit pas donner lieu à inquiétude et permet d aller consommer une boisson en attendant :). Il y a simplement deux options à modifier : Dans la section ACLs (access control list), placer en haut de la liste une règle autorisant le réseau local à utiliser le proxy : 57 http ://slis.ac-grenoble.fr/ 58 http ://www.squid-cache.org/ 19

acl localnet src 192.168.28.0/255.255.255.0 http_access allow localnet L espace disque occupé est déclaré de la manière suivante : cache_dir ufs /var/spool/squid/cache 1500 16 256 Seul le premier chiffre est à modifier, il précise ici une taille de 1,5 Go d occupation disque dans /var/spool/squid (le défaut est de 100 Mo). Les deux autres chiffres sont relatifs à l arborescence des sous répertoires du cache, les valeurs par défaut convenant complètement. Un proxy possède trois modes de fonctionnement : le mode standard, sans configuration additionnelle particulière, le mode transparent qui est une règle de firewall redirigeant tous les accès sur un port vers un autre port, rendant superflu de déclarer le proxy dans les navigateurs mais le rendant ainsi incontournable, et le mode authentifié qui impose aux utilisateurs de saisir leurs nom et mot de passe pour utiliser squid, permettant ainsi de consigner tous les accès dans des journaux. Ces deux derniers modes sont exclusifs l un de l autre : un proxy est soit transparent, soit authentifié. 1. Le mode «standard» : Il suffit de déclarer dans un navigateur que le proxy utilisé est proxy.mp-soa.net sur le port 3128 et le fichier /var/spool/squid/logs/access.log indiquera toutes les requêtes http et ftp traitées. 2. Le proxy transparent : solution confortable puisqu aucun paramétrage n est requis sur les stations clientes. Il suffit de faire en sorte, dans le câblage du réseau, que le routeur qui redirige vers Squid soit incontournable pour qu il soit matériellement impossible d éviter le proxy et son éventuel filtrage 59. La configuration d un Squid transparent : http_port 8080 httpd_accel_host virtual httpd_accel_port 80 httpd_accel_with_proxy on httpd_accel_uses_host_header on Et la configuration du firewall : $IPTABLES -t nat -A PREROUTING -i eth0 -s! 192.168.28.2 -p tcp --dport 80 \ -j DNAT --to 192.168.28.2:8080 $IPTABLES -t nat -A POSTROUTING -o eth0 -s 192.168.28.0/24 -d 192.168.28.2 \-j SNAT --to 192.168.28.254 $IPTABLES -A FORWARD -s 192.168.28.0/24 -d 192.168.28.2 -p tcp \ --dport 8080 -j ACCEPT Le réseau local a ici pour adresse 192.168.28.0/24, le Squid tournant sur 192.168.28.2 et le routeur / Firewall ayant l adresse 192.168.28.254. 3. Le proxy authentifié : la solution la plus lourde, qui impose à chaque utilisateur une nouvelle saisie de son nom et de son mot de passe, déjà saisis à l ouverture de session, pour chaque utilisation du proxy, donc d internet, et à chaque lancement d un navigateur. Cette solution est très discutable d un point de vue juridique car elle consigne toutes les traces et tous les accès de tout le monde de manière extrêmement précise et surtout nominale. Pour bien faire les choses, on branchera Squid sur le serveur d authentification de cette manière (ici LDAP) : Squid sur woody : authenticate_program /usr/lib/squid/ldap_auth -b <base_dn> authenticate_children 50 Squid version 2.5 (Sarge) : auth_param basic program /usr/lib/squid/ldap_auth -b <base_dn> auth_param basic children 50 Et ajouter dans les ACLs : acl identification proxy_auth REQUIRED http_access allow identification 59 une règle de firewall pourra autoriser certaines adresses IPs à contourner Squid, pour le proxy apt par exemple 20