Rapport de Stage Migration d un serveur de production de Windows vers Linux et mise en place d outils de collaboration Jules DAGNAUD 17 juillet 2009 Encadrants NKB Archi : Nicolas Berry, Nguyen Dang Kiem Encadrant UCBL : Thierry Excoffier
Remerciements Je tiens en premier lieu à remercier Monsieur Nicolas Berry, directeur général de l entreprise NKB Archi, pour m avoir accueilli et fait confiance en me donnant de grandes responsabilités au sein de sa société. Je voudrais remercier également l administrateur informatique de l entreprise, Monsieur Nguyen Dang Kiem, pour m avoir accompagné dans ma mission. Je remercie ensuite mes enseignants de l IFI, Messieurs Victor Moraru et Nguyen Hong Quang, ainsi que Monsieur Thierry Excoffier, mon tuteur pédagogique de l UCBL, pour leur disponibilité et le partage de leurs connaissances. Merci également à mes collègues, et plus particulièrement les membres de ma salle : Tu, Duong, Nhung, Kim Anh, Thoa, Huyen, ainsi qu à la communauté francophone de l entreprise : Guillaume, Thomas, Sophie, Guilhem, Andrew et Gaëlle, qui, grâce à leur accueil chaleureux et leur bonne humeur, ont grandement facilité mon insertion dans l entreprise. Enfin, je remercie mes amis, mes colocataires et ma famille qui m ont soutenu pendant cette année passée au Vietnam.
Résumé Ce mémoire est le résultat de cinq mois de stage passés en temps qu administrateur système et réseau au sein de l agence d architecture NKB Archi. Les travaux qui y sont présentés concernent l amélioration d un réseau existant à l aide de solutions issues du monde du logiciel libre. Sont développées dans ce document les principales modifications apportées au système d information de l agence, à savoir : les étapes de la migration du serveur de production de Windows 2003 Server vers Debian Lenny, et la mise en place d outils de collaboration au sein de l entreprise. Mots-clés : Libre, Linux, sécurité, information, communication, DNS, DHCP, intranet, proxy Abstract This report is the result of a five-month training period spent as an Information Technology Manager. The work presented here concern the improvement of an existing network using solutions from the world of free softwares. In this document, the different stages of the network change, including the migration of the production server, from Windows 2003 Server to Linux Debian Lenny, and the implementation of collaboration tools within the company, are addressed and developed. Keywords : Free, Linux, sécurity, information, communication, DNS, DHCP, intranet, proxy
Table des matières 1 Introduction 6 2 L entreprise d accueil 7 2.1 Présentation de l entreprise.................................... 7 2.2 Rôle occupé au sein de l agence................................. 8 2.2.1 Description de la mission................................. 8 2.2.2 Calendrier Prévisionnel.................................. 8 3 Description de l existant, des besoins, et envisagement des solutions 10 3.1 Audit................................................. 10 3.1.1 Audit matériel........................................ 10 3.1.2 Audit systèmes....................................... 10 3.1.3 Audit des services réseaux................................ 10 3.2 Exigences pour la nouvelle architecture............................. 12 3.3 Analyse et choix.......................................... 12 3.3.1 Topologie.......................................... 12 3.3.2 Systèmes.......................................... 12 3.3.2.a Serveurs................................. 12 3.3.2.b Postes clients............................... 13 3.3.3 Services réseau...................................... 13 3.3.3.a OpenLdap................................ 14 3.3.3.b Dhcpd................................... 14 3.3.3.c Bind.................................... 14 3.3.3.d Netfilter/Iptables............................. 14 3.3.3.e Samba.................................. 14 3.3.3.f Squid................................... 14 3.3.3.g SSH.................................... 15 3.3.3.h Backup Manager............................. 15 3.3.3.i Openfire................................. 15 3.3.3.j Plone................................... 15 4 Migration du serveur 16 4.1 Installation de Debian Lenny................................... 16 4.2 Dhcpd................................................ 17 4.2.1 Fonctionnement...................................... 17 4.2.2 Installation......................................... 18 4.2.3 Configuration........................................ 18 4.3 DNS................................................. 18 4.3.1 Fonctionnement...................................... 18 4.3.2 Installation......................................... 19 4.3.3 Configuration........................................ 19 4.4 Netfilter............................................... 21 4.4.1 Fonctionnement...................................... 21 4.4.2 Configuration de la passerelle............................... 23
4.5 Annuaire de centralisation..................................... 24 4.5.1 Fonctionnement...................................... 24 4.5.2 Installation......................................... 25 4.5.3 Configuration........................................ 25 4.6 Partage de ressources....................................... 26 4.6.1 Fonctionnement...................................... 26 4.6.2 Installation......................................... 26 4.6.3 Configuration........................................ 27 4.7 Serveur mandataire / Proxy.................................... 27 4.7.1 Fonctionnement...................................... 27 4.7.2 Installation......................................... 28 4.7.3 Configuration........................................ 28 4.8 Sauvegarde des données..................................... 29 4.8.1 Stratégie de sauvegarde.................................. 29 4.8.2 Sauvegarde sur le serveur de production........................ 29 4.8.3 Sauvegarde sur nkbbackup................................ 29 4.9 Schéma récapitulatif........................................ 30 5 Mise en place d outils de communication 31 5.1 Messagerie interne......................................... 31 5.1.1 Utilité............................................ 31 5.1.2 Le protocole Jabber.................................... 31 5.1.3 Le serveur Jabber OpenFire............................... 31 5.2 Plate-forme de travail collaboratif................................. 33 5.2.1 Utilité............................................ 33 5.2.2 Plone............................................ 33 5.2.3 Travail réalisé........................................ 33 6 Bilan du travail accompli 37 6.1 Difficultés rencontrées....................................... 37 6.1.1 Difficultés techniques................................... 37 6.1.2 Autres difficultés...................................... 37 6.2 Ma contribution au sein de l agence............................... 38 6.3 Améliorations possibles...................................... 38 7 Conclusion 39 Références 40 A Annexe 1 : extrait de configuration du serveur DHCP 41 B Annexe 2 : extrait configuration DNS 43 C Annexe 3 : Règles pare-feu Netfilter 45 D Annexe 4 : Fichier de configuration de Samba 47 Rapport de stage de Jules DAGNAUD 4
E Annexe 5 : Script d ajout d utilisateur Samba/LDAP 50 F Annexe 6 : Fichier de configuration de OpenLdap 51 G Annexe 7 : Fichier de configuration du proxy Squid 54 Rapport de stage de Jules DAGNAUD 5
1 Introduction Après avoir suivi ma deuxième année de Master à l Institut de la Francophonie pour l Informatique, j ai décidé de prolonger mon expérience à l étranger en effectuant mon stage de fin d études en entreprise au Vietnam. L entreprise d architecture NKB Archi m en a donné la possibilité en m accueillant en tant qu administrateur informatique. Le Vietnam, à l image des entreprises qui y sont implantées, est actuellement dans une phase de développement et de modernisation. Aussi, les sociétés se sont massivement équipées de l outil informatique, véritable moteur de développement économique et social, ces dernières années. L utilisation de tout logiciel est soumise à l acceptation d un contrat d utilisation, aussi appelé licence. Pour la plupart des logiciels, dits propriétaires, seule l utilisation est autorisée, ce qui satisfait généralement le client. Leurs équivalents libres sont soumis à des contrats plus permissifs. Ils permettent à toute personne qui possède une copie du logiciel non seulement de l utiliser, mais aussi de l étudier, le modifier et le redistribuer. Il est important pour les utilisatrices que sont les entreprises de connaître objectivement l offre logicielle existante. Or, la position dominante et les moyens marketing des grands acteurs en place biaisent l information dont elles bénéficient. C est particulièrement vrai au Vietnam, où on peut ajouter d autres raisons pour expliquer la faible utilisation des logiciels libres, notamment le fait que les logiciels commerciaux et propriétaires sont trop faciles à trouver pour une faible somme. Cependant, les inspections au sein des entreprises se multiplient suite à la campagne lancée par le gouvernement vietnamien pour éliminer l utilisation des logiciels piratés. De plus, le ministre vietnamien de l Information et des Communications, Le Doan Hop, a annoncé un plan national prévoyant le passage vers des logiciels libres et Linux au sein des administrations nationales et locales d ici 2010. Ce mémoire, au délà de décrire mes cinq mois de stage passés à NKB Archi, se donne pour ambition de présenter comment améliorer significativement le réseau et la communication au sein d une entreprise équipée de logiciels propriétaires, en appliquant des solutions libres et gratuites. Après une présentation de l entreprise d accueil, nous décrirons la situation du réseau à mon arrivée en analysant ses forces et ses faiblesses. Nous proposerons ensuite des solutions et améliorations, dont nous aborderons la mise en place, avant de faire un bilan du travail accompli. Rapport de stage de Jules DAGNAUD 6
2 L entreprise d accueil 2.1 Présentation de l entreprise En janvier 1969, M. Jacques Berry, le père de M. Nicolas Berry, lance sa propre agence d architecture à Paris. Il est rejoint par son fils, en janvier 2003. En janvier 2005, Nicolas devient Directeur Général de l agence qui se renomme alors NKB Archi France. En décembre de la même année, NKB Archi Vietnam Ltd est lancé à Hanoi. Depuis sa création, l entreprise n a cessé de se développer, tant du point de vue de ses différentes réalisations, qu au niveau de ses locaux et du nombre de ses employés qui dépasse aujourd hui la cinquantaine. Entre temps, NKB Archi Vietnam Limited a monté un bureau de représentation à Ho Chi Minh City, a lancé NKB Planning, filiale spécialisée dans l urbanisme, et est sur le point de créer Space by NKB, à Hong-Kong et au Vietnam, dans le but d investir le marché du meuble. L agence d architecture NKB Archi se compose de deux pôles ; le premier, NKB Archi France dont le bureau est situé à Paris, travaille sur une architecture à échelle locale, tout en participant ponctuellement à des projets de plus grande envergure. Le second pôle et le plus important, NKB Archi Vietnam Limited, prend en charge des réalisations d ensembles à échelles nationales ou internationales comme des complexes touristiques, des bâtiments publics ou encore des résidences privées. L agence de Hanoi qui m a employé durant ce stage est celle qui compte le plus grand nombre d employés. Elle est implantée au 159 Lo Duc, dans le quartier Hai Ba Trung de Hanoi, depuis plus d un an. Les locaux se divisent en deux bâtiments. L un abrite la réception et les bureaux des architectes conception et technique, l autre est réservé à l administration et aux bureaux des ingénieurs. Mon poste a été installé dans la salle des architectes techniques, la plus proche de la salle des serveurs. Le pôle hanoien emploie majoritairement des vietnamiens, bien que les postes de conception architecturale soient en grande partie occupés par des occidentaux expatriés. Cette atmosphère multiculturelle est très enrichissante au jour le jour. De plus, le contexte de travail est exclusivement anglophone. Le champ d intervention de l agence s étend sur de nombreux types de réalisations qui peuvent avoir fonction de logements, bureaux, commerces, hôtels, bâtiments publics ou industriels, allant de l architecture d intérieur jusqu à l aménagement urbain. FIG. 1 Les employés de l agence de Hanoi Rapport de stage de Jules DAGNAUD 7
2.2 Rôle occupé au sein de l agence Le poste occupé pendant 5 mois fut celui d administrateur système et réseau du parc informatique de l agence. 2.2.1 Description de la mission La mission qui m était confiée consistait à proposer et mettre en place des outils gratuits et libres, dans l objectif d améliorer le réseau interne de l agence. Mon travail s est articulé autour de trois axes fortement liés : l étude du réseau existant, la migration du système d exploitation des serveurs de production et la mise en place d outils de communication et de travail collaboratif. À ces missions s est ajouté naturellement un rôle de support informatique et d assistance aux utilisateurs (installation de logiciels, correction de problèmes, maintenance matérielle). Enfin, j avais également comme tâche de former M. Nguyen Dang Kiem, pour qui le monde Linux était inconnu jusqu alors, aux outils que je mettais en place. 2.2.2 Calendrier Prévisionnel Tâche Audit du réseau existant Recherche et proposition des outils de remplacement / à ajouter Préparation de la migration Migration Formation des employés à l utilisation du nouveau réseau Mise en place d outils de collaboration et formation de l administrateur en place Période 4 semaines 2 semaines 4 semaines 2 jours (week-end) 1 semaine 9 semaines FIG. 2 Calendrier Prévisionnel Rapport de stage de Jules DAGNAUD 8
FIG. 3 Organigramme de l entreprise Rapport de stage de Jules DAGNAUD 9
3 Description de l existant, des besoins, et envisagement des solutions 3.1 Audit 3.1.1 Audit matériel Le réseau est peuplé d une cinquantaine de machines : deux serveurs (que nous appellerons S1 et S2), une quarantaine d ordinateurs clients et une imprimante réseau. Ces équipements sont répartis dans les neuf salles des deux bâtiments qui constituent les locaux de l agence (la salle des serveurs, le bureau de la direction, le bureau administratif, l accueil, et les cinq salles de travail). Nous avons à faire à un réseau Ethernet classique, conçu selon une topologie hybride en bus et en étoile. Les deux serveurs sont reliés entre eux par une liaison (commutateur et câbles) Gigabit Ethernet 1000BaseT. Dans chaque salle, les hôtes sont reliés à un commutateur 100BaseT. Tous les commutateurs reliés entre eux forment le Backbone du réseau. De nombreux tests, avec du matériel spécialisé, ont révélé qu aucun composant de liaison physique n était défectueux. Les caractéristiques des machines du parc informatique sont assez homogènes (processeurs Intel double coeurs, 1Go de mémoire vive). En ce qui concerne les serveurs, le serveur S1 est performant (avec 2Go de mémoire vive et un processeur double coeur cadencé à 2,13GHz). Le serveur S2 en revanche est très limité avec seulement 512Mo de mémoire et un processeur cadencé à 1GHz. 3.1.2 Audit systèmes Tous les postes sont équipés d un environnement Windows : Windows 2003 Server pour les deux serveurs, Windows XP pour tous les clients. Les systèmes sont assez instables (redémarrages fréquemment nécessaires), notamment le serveur S2, qui, en plus d être très lent, plante régulièrement à la suite de dépassement mémoire. Beaucoup de machines sont également porteuses de virus (dont les deux serveurs). 3.1.3 Audit des services réseaux Les services réseaux proposés sont répartis sur les deux serveurs. Le premier serveur, S1, a comme unique rôle celui de serveur de fichier, tandis que le serveur S2 s occupe de tous les autres services : serveur d adressage DHCP : une plage de cent adresses est distribuée dynamiquement aux hôtes du réseau. Les adresses des deux serveurs sont réservées. serveur de noms : à chaque adresse IP est associée un nom, cependant les noms sont incohérents, certaines machines portant le nom de leur utilisateur, et d autres un nom sans signification particulière. pare-feu : le pare-feu intégré à Windows 2003 Server est très basique. Il est utilisé ici pour protéger le réseau (ouverture de seulement quelques ports utiles) et pour filtrer les accès Internet (tous les employés n ont pas le droit d utiliser Internet) en fonction des adresses IP. passerelle vers internet. Rapport de stage de Jules DAGNAUD 10
sauvegarde des fichiers partagés sur le premier serveur. Une sauvegarde périodique est effectuée tous les jours. FIG. 4 Réseau de l entreprise Rapport de stage de Jules DAGNAUD 11
3.2 Exigences pour la nouvelle architecture La première exigence était de nature économique : le prix des systèmes d exploitation du parc devait être le plus faible possible. De plus, une réduction significative des problèmes d instabilité des serveurs et de lenteur du réseau était nécessaire. Le nouveau réseau devait proposer les mêmes services que celui en place précédemment ainsi que de nouvelles fonctionnalités : adressage automatique, service de nommage, partage contrôlé de ressources, identification des utilisateurs et notion de groupes d utilisateurs, partage contrôlé de l Internet, service de messagerie instantanée interne, plate-forme collaborative de travail, contrôle du serveur à distance, sauvegarde automatique et régulière des données. 3.3 Analyse et choix 3.3.1 Topologie Les tests des composants physiques du réseau n ayant révélé aucune défaillance, et en prenant compte de l agencement des locaux, il a été décidé qu aucune modification du réseau ne serait effectuée au niveau physique. La seule modification importante sera donc le changement total de la configuration des serveurs. 3.3.2 Systèmes 3.3.2.a Serveurs Les problèmes d instabilités se sont révélés être la conséquence d un manque flagrant de mémoire vive du serveur S2, assurant tous les services réseau (à l exception du service de partage de fichiers) et la sauvegarde des fichiers partagés sur le serveur S1, couplé à un système vérolé (une simple analyse antivirus avec le logiciel gratuit Avast! a révélé la présence de milliers de fichiers systèmes infectés sur les deux serveurs). Le choix opéré fût donc d utiliser le serveur S1, beaucoup plus performant, comme unique fournisseur de services. Le serveur S2, totalement obsolète, sera quant à lui chargé d une seule tâche : le stockage des sauvegardes des données partagées. Pour répondre aux exigences économiques, le choix, pour les serveurs, d un système d exploitation gratuit et libre s imposait. Il était donc naturel de s orienter vers une distribution Linux. Ayant utilisé principalement Mandriva et Debian, mon choix s est finalement porté sur Debian, beaucoup plus stable et évolutive que Mandriva, bien que demandant plus de connaissances pour son installation, son administration, et sa maintenance. Un avantage non négligeable de cette distribution est également sa gestion de l installation de paquets, transparente et structurée, ainsi que le nombre d outils disponibles. Tout le contraire de Mandriva qui, dans sa version gratuite, présente de nombreux problèmes de stabilité. Enfin, Rapport de stage de Jules DAGNAUD 12
Debian respecte totalement la philosophie du monde du logiciel libre, comme le témoigne le Contrat Social Debian dont la partie consacrée aux principes du logiciel libre a été adoptée par la communauté du logiciel libre comme base pour la définition de l informatique libre. De plus, il existe une forte communauté d utilisateurs autour de cette distribution, il est donc assez aisé de trouver de la documentation fiable et abondante. Le système installé sur les serveurs sera donc la dernière version stable de Debian, Debian Lenny 5.0. Concernant les virus, la légende selon laquelle les systèmes d exploitation Linux y sont invulnérables est erronée. Linux possède des failles de sécurité qui peuvent être exploitées par des programmes malveillants. Linux est donc sensible aux virus, tout comme Windows, mais dans une moindre mesure. En effet, on recense seulement une trentaine de virus existant sous Linux, ce qui est négligeable en comparaison des millions existant sous Windows. Ceci peut être expliqué par plusieurs raisons : les utilisateurs de Linux n ont pas les droits administrateur, et ne peuvent donc pas modifier les fichiers système. Il est ainsi difficile pour un virus d infecter la machine, Linux oblige à déclarer si un fichier est exécutable ou non. Ce n est pas l extension qui détermine si un fichier est exécutable. Il est donc difficile d exécuter un fichier sans le vouloir, en pensant que c était un fichier d un autre type, Linux est open-source, c est-à-dire que tout le monde peut examiner son code source, y compris des experts en sécurité. Les failles ont donc plus de chances d être détectées, la plupart des logiciels sont installés à partir de dépôts, dont le contenu est contrôlé, enfin, il existe de nombreuses distributions différentes, ce qui limite la propagation des virus. 3.3.2.b Postes clients L idée d utiliser Linux pour les postes clients a très vite été abandonnée à court terme. En effet, l architecture utilise de nombreux outils informatiques spécifiques (logiciels de dessin technique, de retouche photo, conception d image 3D, design...). Si des équivalents à ces logiciels existent bel est bien sous Linux, ces outils sont tout de même différents et requièrent une expérience utilisateur considérable. Aussi, l adaptation ne semblait pas possible dans l immédiat. Le projet, extrêmement bénéfique en termes d économie et d image, de passer à un parc informatique entièrement gratuit et libre, n a cependant pas été abandonné. 3.3.3 Services réseau Debian Lenny est un système particulièrement orienté réseau. On trouve facilement sur les dépôts officiels les paquets nécessaires à la mise en place d un serveur de production complet. Les outils ont été choisis selon les critères suivants : gratuité et respect de la philosophie des logiciels libres, conformité aux standards, sécurité, quantité et qualité de la documentation disponible. Les outils retenus sont les suivants : Rapport de stage de Jules DAGNAUD 13
3.3.3.a OpenLdap Devant le besoin d identifier/authentifier les utilisateurs sur le réseau, et devant le grand nombre de services qui seront pourvus, la mise en place d un annuaire de centralisation des informations utilisateurs s imposait. Le standard en la matière est le protocole LDAP. On va pouvoir grâce à cet annuaire réunir les informations (noms d utilisateurs, mots de passe, noms, prénoms, mail...) de chaque utilisateur du réseau. Ainsi, un employé aura les même identifiants pour accéder à Internet, aux données partagées, à la plate-forme collaborative ou à la messagerie interne. OpenLdap est l implémention libre de ce protocole la plus renommée. 3.3.3.b Dhcpd C est le serveur DHCP proposé par l ISC 1. C est une implantation référence de ce protocole, la plus utilisée pour des réseaux locaux, et possède donc une riche documentation. 3.3.3.c Bind Bind est le serveur DNS le plus utilisé sur Internet, et est devenu un standard. Il est également maintenu par l ISC. De plus, Bind est peu gourmand, aussi bien en taille sur le disque qu en utilisation mémoire et processeur. 3.3.3.d Netfilter/Iptables Netfilter est un parefeu intégré au noyau Linux depuis sa version 2.4. Il fonctionne en interceptant et manipulant des paquets réseau. Netfilter est configurable avec la commande iptables. Il est possible de réaliser avec cet outil des passerelles et pare-feux aussi performants que ce que l on peut obtenir avec du matériel spécialisé. 3.3.3.e Samba C est une implantation du protocole SMB de Microsoft permettant de partager de ressource sur un réseau Windows. Samba émule un domaine SMB sur un serveur Linux. Ainsi grâce à Samba, on va pouvoir partager des ressources entre notre serveur Linux et nos clients Windows. On peut identifier les utilisateurs avec LDAP. 3.3.3.f Squid Un serveur mandataire (proxy) capable d utiliser les protocoles FTP, HTTP, et HTTPS. C est un logiciel libre distribué selon les termes de la licence GNU GPL. Squid garde les données les plus fréquemment utilisées dans un cache, améliorant ainsi les performances. Il permet également d identifier les utilisateurs et de filtrer les accés HTTP. Squid est compatible avec Ldap. 1 Internet Systems Consortium Rapport de stage de Jules DAGNAUD 14
3.3.3.g SSH SSH 2 est à la fois un programme informatique et un protocole de communication sécurisé. SSH est pour l instant la référence de l accès distant sécurisé sous linux. 3.3.3.h Backup Manager Un utilitaire de sauvegarde de fichiers locaux sous forme d archives. Backup Manager est une solution de sauvegarde simple, automatique et sûre. Son paramétrage est fourni et intuitif. 3.3.3.i Openfire Openfire est un serveur Jabber (protocole de messagerie instantanée), écrit en Java, sous licence GNU GPL. Il est stable, possède une interface d administration intuitive et peut s appuyer sur une importante communauté. Enfin, Openfire possède de nombreux plugins permettant de personnaliser la messagerie, et notamment un permettant l authentification des utilisateurs via LDAP. 3.3.3.j Plone Un système de gestion de contenu Web libre publié selon les termes de la GNU GPL. Il est construit au-dessus du serveur d applications Zope, écrit en langage Python. Plone est considéré comme étant l un des meilleurs CMS open-source existants, et est régulièrement récompensé au Open Source CMS Awards. Plone est extrêmement flsystèmes exible et puissant, et il existe une grande quantité de modules disponibles pour le personnaliser. 2 Secure SHell Rapport de stage de Jules DAGNAUD 15
4 Migration du serveur Sous peine de paralyser l agence toute entière, l échec de la migration était intolérable. N ayant que très peu d expérience dans la création et l administration d un réseau mixte Linux/Windows au début de ma mission, j ai donc configuré le serveur dans un environnement de test (un serveur et un poste client déconnecté du réseau fonctionnel), avant d appliquer la configuration adéquate obtenue sur le serveur de production. Cette méthode de travail m a permis de prendre le temps de configurer la plupart des services réseaux, sans risque, et d effectuer la migration sans perturbation et sans immobilisation du réseau (la configuration du serveur de production a été effectuée en un week end). 4.1 Installation de Debian Lenny Depuis les plus récentes versions, Debian s installe très facilement. J ai choisi de faire cette installation par Internet, en utilisant seulement un CD d installation : la plupart des paquets va être téléchargée depuis les dépôts (dans un souci de rapidité, j ai utilisé des miroirs situés à Hong-Kong). Le seul point délicat consiste à choisir comment partitionner l espace disque. J ai choisi de séparer sur 3 partitions différentes : /, /home, /var et /usr. Cette séparation permet de réinstaller le système en cas de problème sans perdre les données utilisateurs dans /home, et d allouer la place suffisante à /var et /usr, dossiers dans lesquels beaucoup de données relatives aux applications sont écrites. Enfin, la dernière difficulté concernait le format de fichier des disques de stockage de données. En effet, si les disques système ont été reformatés au format ext3 lors de l installation, les 3 disques de stockage étaient toujours au format cher à Windows : NTFS. Heureusement, il existe un pilote NTFS libre pour Linux, ntfs-3g, qui permet l accès en lecture et en écriture aux disques NTFS. Pour résumer la situation des disques, voici le résultat de la commande df -h : Filesystem Size Used Avail Use% Mounted on /dev/sda1 6.5G 2.3G 3.9G 37% / /dev/sda6 31G 216M 29G 1% /home /dev/sdb1 373G 335G 39G 90% /media/diske /dev/sdc1 932G 598G 335G 65% /media/diskf /dev/sdd1 932G 371G 562G 40% /media/diskg /dev/sda2 145G 5.7G 132G 5% /var /dev/sda2 145G 5.7G 132G 5% /usr Maintenant que l on dispose d un système fonctionnel, nous allons pouvoir mettre en place les services réseau sur notre serveur. Rapport de stage de Jules DAGNAUD 16
4.2 Dhcpd 4.2.1 Fonctionnement Lorsqu un client, équipé de TCP/IP, tente de se connecter à un réseau, il charge une adresse IP vide et diffuse un paquet DHCPDISCOVER sur le réseau. Le paquet DHCPDISCOVER contient le nom du poste de travail, l adresse MAC de l interface réseau et peut aussi contenir la dernière adresse TCP/IP que le client a obtenu du serveur. Avec cette information, le serveur est capable de donner au client la même adresse que celle qu il avait reçu lors de sa dernière requête. Lorsqu un serveur DHCP actif reçoit le paquet DHCPDISCOVER, l état de sélection commence. Le serveur réserve une adresse de sa liste et diffuse une réponse au poste de travail. La réponse, appelée paquet DHCPOFFER, contient une proposition d adresse TCP/IP pour le poste de travail ainsi que l adresse MAC du poste de travail, les informations de masque de sous-réseau, la longueur du bail et l adresse TCP/IP du serveur DHCP faisant l offre. Une fois que le client a reçu un paquet DHCPOFFER, l état de requête commence. Le client génère un paquet DHCPREQUEST qui accepte l adresse TCP/IP offerte par le serveur qui a issu le paquet DHCPOFFER. Le paquet DHCPREQUEST inclut l adresse TCP/IP du serveur qui a fourni l adresse client. Pour conclure l état de requête, le client effectue une diffusion de masse du paquet DHCPREQUEST. Tous les serveurs DHCP sur le réseau reçoivent le paquet et comparent ses informations d adresses serveurs avec leur propre adresse. Si l adresse du serveur ne correspond pas avec celle dans le paquet, alors le serveur libère l adresse qu il avait réservée pour le client dans son propre paquet DHCPOFFER. Si un serveur trouve sa propre adresse TCP/IP dans le paquet DHCPREQUEST, il répond au client avec un paquet DHCPACK. Ce paquet contient le bail pour le client. Lorsque le client reçoit le paquet DHCPACK, la phase de liaison commence en reliant l adresse assignée au protocole TCP/IP tournant sur sa carte réseau et finissant alors le démarrage. A ce point, le client peut communiquer sur le réseau en utilisant TCP/IP. Le client garde l adresse TCP/IP qui lui est assignée pour la période de bail. Lorsque le client atteint 50% de son temps de bail assigné, il entre en phase de renouvellement. Le client envoie un paquet DHCPREQUEST directement au serveur qui lui a donné son adresse TCP/IP. Le serveur DHCP renouvelle le bail et renvoie un paquet DHCPACK, qui contient le nouveau bail et toute information de configuration qui pourrait avoir changer depuis le bail initial. Si le client ne peut communiquer avec le serveur qui a accordé le bail, il affichera une erreur mais continuera à tourner normalement. Lorsque 87.5% du temps de bail du client expire, le client commence à paniquer et entre dans une phase de reliaison. Lors de la phase de reliaison, le client commence à diffuser des paquets DHCPREQUEST sur le réseau en direction de tout serveur DHCP qui y répondra. Le serveur DHCP courant peut répondre avec un paquet DHCPACK qui permet au client de continuer à utiliser l adresse qui lui avait été assignée au départ. Ou il peut envoyer un paquet DHCPNAK, qui force le client à réinitialiser TCP/IP et à obtenir une nouvelle adresse TCP/IP et un nouveau bail. S il accepte le paquet DHCPNAK, le client recommence le processus complet à la phase d initialisation. Rapport de stage de Jules DAGNAUD 17
FIG. 5 Le protocole DHCP 4.2.2 Installation La version 3 du serveur Dhcpd est disponible dans le paquet dhcp3-server. On l installe donc avec aptitude, le gestionnaire de paquets de Debian : apt-get install dhcp3-server On dispose désormais d un serveur DHCP sur la machine. Il faut maintenant le configurer. 4.2.3 Configuration Notre réseau comporte une cinquantaine d ordinateurs. On peut donc utiliser une adresse de sousréseau de classe C : 192.168.1.0 qui permet d adresser 254 hôtes. Pour assigner les adresses de façon logique, nous allons adresser les ordinateurs d une même salle dans la même dizaine (par exemple les ordinateurs de la salle 1 auront tous une adresse IP comprise entre 192.168.1.10 et 192.168.1.19). Pour cela, on peut effectuer des réservations d adresses : on va, pour une adresse donnée, limiter la possibilité d octroi de cette adresse à un client possédant une adresse physique donnée. Si cette solution est fastidieuse, elle est néanmoins possible à l échelle de notre réseau de taille moyenne. Cette méthode permet également de dresser une première barrière de sécurité sur le réseau : le filtrage par adresse MAC. La configuration s effectue par l édition du fichier /etc/dhcp3/dhcpd.conf (disponible en annexe). Une fois la configuration effectuée, il faut relancer le serveur pour que les modifications soient prises en considération : /etc/init.d/dhcp3-server stop /etc/init.d/dhcp3-server start 4.3 DNS 4.3.1 Fonctionnement Dans le monde de l Internet, les machines du réseau sont identifiées par des adresses IP. Néanmoins, ces adresses ne sont pas très agréables à manipuler. C est pourquoi on utilise les noms. DNS permet la Rapport de stage de Jules DAGNAUD 18
résolution des noms de domaines, ce qui consiste à assurer la conversion entre les noms d hôtes et les adresses IP. Aucun serveur ne connaît toutes les correspondances entre noms et adresses IP sur Internet. Si un serveur ne connaît pas une correspondance, il interroge un autre serveur jusqu à atteindre le serveur détenant l information désirée. Ainsi, il existe 3 types de serveurs DNS : les serveurs de noms locaux à qui s adresseront les requêtes locales (c est ce qui nous intéresse ici), les serveurs de noms racine, censés savoir comment approcher de la réponse, les serveurs de noms de source autorisée, connaissant les correspondance officielles. Dans notre situation, nous avions besoin d un serveur DNS local récursif pour effectuer la résolution des noms des machines du réseau interne. Pour les machines extérieures au réseau local, le serveur DNS envoie une requête à un serveur racine, qui se procurera l adresse auprès d un serveur de source autorisée et la fera parvenir à notre serveur local. 4.3.2 Installation Nous allons installer le paquet bind9 qui contient la dernière version du serveur de noms récursif Bind pour Debian Lenny. apt-get install bind9 Notre installation de bind9 a produit une configuration par défaut, minimaliste, qui permet au serveur de fonctionner en mode récursif. Tout se trouve dans le répertoire /etc/bind/. 4.3.3 Configuration Notre but est de construire un serveur de noms local, qui sera capable de résoudre des noms d hôtes sur le réseau interne à l entreprise, mais également sur Internet. Les informations contenues dans le fichier db.root permettent à notre serveur de résoudre tous les noms d hôtes sur Internet. En effet, ce fichier contient toutes les informations sur les 13 serveurs de noms racines. Nous devons donc maintenant créer une zone pour l Intranet de l entreprise. Ceci passe par la création et l édition des fichiers db.nkb.com et db.192.168.1 (pour la zone de résolution inverse). Ces fichiers sont disponibles en annexe. Comme pour notre serveur DHCP, il faut relancer BIND : /etc/init.d/bind9 stop /etc/init.d/bind9 start On peut maintenant identifier les hôtes de notre réseau par des noms (le nom d une machine est le nom de l employé l utilisant). Rapport de stage de Jules DAGNAUD 19
La figure 6 montre l état du réseau après la configuration des serveurs DHCP et DNS. Par sécurité (notre machine ne dispose pas encore de pare-feu), le serveur n est pas connecté au modem et n endosse donc pas le rôle de passerelle pour l instant. L installation d un parefeu et le partage de la connexion Internet est la prochaine étape. FIG. 6 Nouvel adressage et nouveau nommage avec Dhcp et Bind9 Rapport de stage de Jules DAGNAUD 20
FIG. 7 Notre serveur DNS récursif 4.4 Netfilter 4.4.1 Fonctionnement Une fois que le réseau local dispose d un serveur de noms, il faut s intéresser au partage de la connexion Internet pour tous les ordinateurs du parc. Cependant, ce partage doit être contrôlé, et le réseau local doit être protégé de l extérieur. Netfilter, le pare-feu de Linux, permet de le réaliser. Netfilter se présente comme une série de 5 points d accrochage de paquets dans la pile IP, sur lesquels des modules de traitement vont se greffer. Ces points sont : NF IP PRE ROUTING NF IP LOCAL IN NF IP FORWARD NF IP POSTROUTING NF IP LOCAL OUT On peut représenter le trajet des paquets dans la pile IP comme sur la figure 8. A travers ces cinq points d insertion, Netfilter va être capable : d effectuer des filtrages de paquets, principalement pour assurer des fonctions de Firewall. d effectuer des opérations de NAT 3 d effectuer des opérations de marquage des paquets, pour leur appliquer un traitement spécial. 3 Network Address Translation.Ces fonctions sont particulièrement utiles lorsque l on veut faire communiquer un réseau privé avec Internet. Rapport de stage de Jules DAGNAUD 21
FIG. 8 Trajet des paquets dans la pile IP Pour effectuer ces opérations, Netfilter dispose d une commande à tout faire avec iptables. Cette commande va permettre d écrire des règles de filtrage dans les 3 trois tables de Netfilter, correspondant aux 3 fonctions ci-dessus. FIG. 9 Les 3 tables de Netfilter et leurs chaines La table F ILT ER va contenir toutes les règles qui permettront de filtrer les paquets. Cette table contient trois chaînes : INPUT : cette chaîne décidera du sort des paquets entrant localement sur l hôte, OUTPUT : les paquets émis par l hôte local qui seront filtrés ici, FORWARD : filtrage des paquets qui traversent l hôte suivant les routes implantées. La table N AT permet d effectuer toutes les translations d adresses nécessaires : PREROUTING : permet de faire de la translation d adresse de destination, POSTROUTING : elle permet de faire de la translation d adresse de la source, OUTPUT : Celle-ci va permettre de modifier la destination de paquets générés par la passerelle elle-même. La table M AN GLE permet le marquage des paquets entrants (chaîne PREROUTING) et générés localement (chaîne OUTPUT). Rapport de stage de Jules DAGNAUD 22
4.4.2 Configuration de la passerelle Pour commencer, il faut tout fermer au niveau de la passerelle dans la table F ILT ER. iptables -P INPUT DROP iptables -P OUTPUT DROP iptables -P FORWARD DROP On peut tout ouvrir au niveau des tables NAT et MANGLE, cela ne pose pas de problème puisque tout est bloqué au niveau F ILT ER. Cette manipulation permet d être sûr de l état de Netfilter. Maintenant, nous considérons que notre machine est sûre, et que les processus locaux peuvent communiquer entre eux : iptables -A INPUT -i lo -j ACCEPT iptables -A OUTPUT -o lo -j ACCEPT Après avoir nettoyé tous les ordinateurs du réseau local, nous pouvons considérer que celui-ci est sûr également : iptables -A INPUT -i eth1 -j ACCEPT iptables -A OUTPUT -o eth1 -j ACCEPT À ce stade, tous les ordinateurs du réseau local peuvent communiquer avec le serveur, mais le réseau est totalement isolé du monde extérieur. Il faut faire une translation d adresse pour tout ce qui traverse la passerelle : iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE Il faut maintenant accorder des autorisations de passage sur F ORW ARD. Nous allons accepter toutes les connexions qui sortent du LAN vers Internet, à l exception des connexions HTTP (nous voulons filtrer l accés au Web pour certains utilisateurs, et utiliserons un Proxy Squid pour cela) : iptables -A FORWARD -p tcp --dport! 80 -i eth1 -o eth0 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT iptables -A FORWARD -p tcp --dport! 80 -i eth0 -o eth1 -m state --state ESTABLISHED,RELATED -j ACCEPT Aussi, Seules les connexions déjà établies ou en relation avec des connexions établies sont acceptées venant d Internet vers le LAN. iptables -A FORWARD -p tcp --dport! 80 -i eth0 -o eth1 -m state --state ESTABLISHED,RELATED -j ACCEPT Désormais, notre réseau local pourra se connecter sur tout serveur Internet (hors HTTP), mais aucune nouvelle connexion ne pourra être créée depuis le Net vers notre installation. Enfin, il faut bien penser à rajouter les règles le DNS. On rajoutera ensuite les règles nécessaires au fonctionnement du Proxy, puis permettant un accès SSH par Internet, ainsi qu un accès externe à la future méssagerie instantannée. Vous trouverez en annexe, le script Bash complet de configuration de la passerelle. Rapport de stage de Jules DAGNAUD 23
4.5 Annuaire de centralisation FIG. 10 Fonctionnement du Firewall NKB Archi souhaitait pouvoir identifier et authentifier les utilisateurs du réseau, dans le but de créer une vision personnalisée de l intranet à chaque utilisateur. Un utilisateur X n aura pas les mêmes droits qu un utilisateur Y, que cela soit au niveau du partage de ressources (certain fichiers sont accessibles, d autres non), ou au niveau de la navigation Web (X, par exemple, n a pas l autorisation de naviguer sur internet, alors que Y dispose d un accès illimité). Aussi, la mise en place d un annuaire LDAP 4 permettait de centraliser l authentification des utilisateurs pour plusieurs services (connexion au serveur de fichiers, connexion au Proxy, connexion à la messagerie instantanée et à la plate-forme de travail...). De plus, la nouvelle architecture devait introduire la notion de groupes d utilisateurs : les utilisateurs d un même groupe ont des droits en commun, sachant qu un utilisateur peut appartenir à plusieurs groupes. Tout ceci est possible avec les annuaires LDAP, et l implantation que nous allons utiliser, OpenLdap. 4.5.1 Fonctionnement LDAP est un protocole standard permettant de gérer des annuaires, c est-à-dire d accéder à des bases d informations sur les utilisateurs d un réseau par l intermédiaire de protocoles TCP/IP. ssha Ce protocole définit la méthode d accès aux données sur le serveur au niveau du client, et non la manière dont les informations sont stockées. LDAP est uniquement prévu pour gérer l interfaçage avec les annuaires. Plus exactement, il s agit d une norme définissant la façon suivant laquelle les informations sont échangées entre le client et le serveur LDAP ainsi que la manière dont les données sont représentées. Ainsi ce protocole se conforme à quatre modèles de base : un modèle d information, définissant le type d information stockée dans l annuaire, un modèle de nommage, définissant la façon de laquelle les informations sont organisées dans l annuaire et leur désignation, 4 Lightweight Directory Access Protocol Rapport de stage de Jules DAGNAUD 24
un modèle fonctionnel, définissant la manière d accéder aux informations et éventuellement de les modifier, c est-à-dire les services offerts par l annuaire, un modèle de sécurité, définissant les mécanismes d authentification et de droits d accès des utilisateurs à l annuaire. De plus, LDAP définit la communication entre : le client et le serveur, c est-à-dire les commandes de connexion et de déconnexion au serveur, de recherche ou de modification des entrées, les serveurs eux-mêmes, pour définir d une part le service de réplication (un échange de contenu entre serveurs) et synchronisation d autre part pour créer des liens entre les annuaires. En résumé, LDAP va nous servir à stocker des données relatives aux utilisateurs (groupe, nom, login, mot de passe, mail...) de manière organisée dans un annuaire, qui sera exploitable par d autres applications ayant besoin de ces données. Cela va nous permettre de ne pas avoir à recréer des utilisateurs pour chaque application utilisée. 4.5.2 Installation Encore une fois, l installation est très simple avec aptitude : apt-get install slapd 4.5.3 Configuration Comme d habitude, le fichier de configuration se trouve ici : /etc/ldap/slapd.conf, disponible en annexe. D autre part, LDAP fournit un format d échange LDIF 5 permettant d importer et d exporter les données d un annuaire avec un simple fichier texte. La syntaxe étant extrêment fastidieuse, j ai préféré utilisé l excellente interface web PhpLdapAdmin (qui a nécessité l installation d un serveur Apache 6 ). Il serait trop long et compliqué de décrire exactement la configuration de notre annuaire LDAP (cela passerait notamment par l introduction de tous les attributs utilisés). Nous allons plutôt décrire l organisation générale de notre annuaire. Comme on peut le constater sur la figure 11, notre arborescence est assez simple. La racine de notre annuaire est notre nom de domaine interne, nkb.com. De la racine naissent 3 fils : cn=nkbadmin : c est l administrateur du serveur LDAP (cn est un acronyme pour Common Name, c est le nom sous lequel est connu l entité). Cette entité comprend seulement le nom de l administrateur et son mot de passe crypté avec le hachage SSHA 7 ou=users est une entité de type organizationalunit (ou). Ce noeud n a pas d autre utilité que d organiser la hiérarchie de l annuaire. De ce noeud de l arbre naissent toutes les entrées de l annuaire correspondant aux utilisateurs. Chaque entité utilisateur comporte les mêmes attributs (identifiant, mot de passe crypté avec SSHA, nom complet, mail, numéro de téléphone...) 5 Lightweight Data Interchange Format 6 Serveur HTTP 7 SSHA est un algorithme de hachage de mot de passe. C est une amélioration de l algorithme SHA-1 Rapport de stage de Jules DAGNAUD 25
FIG. 11 Arborescence d informations hiérarchiques simplifiée ou=groups est également une entité de type organizationalunit. C est le noeud père de toutes les entrées correspondant aux groupes d utilisateurs. Chaque groupe d utilisateurs possède les attributs cn (nom du groupe), description, gid (identifiant numérique unique, qu il faudra synchroniser au gid des groupes d utilisateurs Linux correspondants pour l utilisation avec Samba) et member (la liste des identifiants des utilisateurs membres du groupe en question). Cet annuaire seul n est d aucune utilité. Nous allons voir son utilisation avec les outils suivants. 4.6 Partage de ressources Le partage de ressources est un élément indispensable au fonctionnement de l entreprise. En effet, lors d un projet, plusieurs équipes (architectes concept, architectes techniques, ingénieurs...) travaillent ensemble et ont besoin de partager des documents. Actuellement, Samba est la seule solution éprouvée pour partager des ressources sur un réseau mixte (Linux, Windows). 4.6.1 Fonctionnement Samba configure des partages réseau pour les répertoires UNIX (y compris le contenu de tous les sous-répertoires). Ils apparaissent pour les utilisateurs de Windows comme des dossiers Windows classiques accessibles via le réseau. Chaque répertoire peut avoir des privilèges d accès différents. Par exemple : les répertoires ayant un accès en lecture/écriture pour tous les utilisateurs définis, permettent à chacun d eux d accéder à leurs propres fichiers. Mais ils n ont pas accès aux dossiers des autres, sauf si une autorisation est définie. Un logiciel libre nommé smbldap_tools assure la liaison avec un annuaire LDAP de comptes utilisateurs. C est un ensemble de scripts Perl interfacés directement avec un service conforme au protocole LDAP (comme notre serveur OpenLDAP). 4.6.2 Installation L installation se fait par la récupération du paquet samba : Rapport de stage de Jules DAGNAUD 26
apt-get install samba apt-get install smbldap-tools 4.6.3 Configuration La configuration est réalisée par l édition d un fichier unique /etc/samba/smb.conf disponible en annexe. Une fois ce fichier correctement édité (on y spécifie le nom du groupe de travail, les dossiers à partager, les droits d accés, comment accéder à l annuaire LDAP...), on peut passer à la création des groupes et des utilisateurs. Tout d abord, les utilisateurs et groupes Samba doivent exister en tant qu utilisateurs et groupes Linux. Une fois les utilisateurs et groupes Linux créés, on peut créer les utilisateurs et groupes dans l annuaire LDAP grâce aux scripts du logiciel smbldap-tools : smbldap-useradd et smbldap-groupadd. Il ne reste plus ensuite qu à ajouter les utilisateurs aux groupes appropriés via l interface web PhpLdapAdmin. Pour faciliter la création des utilisateurs, j ai écrit un script Bash disponible en annexe. Désormais, les utilisateurs du réseau doivent s identifier avant d accéder au serveur de fichier. Selon cette identification, effectuée à l aide de l annuaire OpenLdap, les utilisateurs auront des droits différents, définis par l appartenance ou non à un groupe. A l heure de rédaction de ce rapport, je travaille toujours en collaboration avec le Directeur Général, Nicolas Berry, et le Directeur Artistique, Thomas Montreau, à l élaboration d une politique d accès aux fichiers partagés. Néanmoins, certaines données sensibles sont d ores et déjà protégées, et accessibles seulement par une partie définie des employés, ce qui n était pas le cas à mon arrivée. 4.7 Serveur mandataire / Proxy 4.7.1 Fonctionnement La mise en place d un serveur mandataire HTTP présente de nombreaux avantages, aussi bien en termes de sécurité que de performance de navigation Internet. Nous allons utiliser le proxy libre Squid comme un serveur mandataire pour filtrer les accés au Web selon les utilisateurs. Ce filtrage était bien présent avant la migration mais était réalisé en dur : les adresses IP des machines des utilisateurs non autorisés à naviguer était bloquées par le pare-feu de Windows 2003 Server. C est une solution efficace, mais absolument pas évolutive, et qui devient obsolète à l issue des bails DHCP, ou tout simplement si un utilisateur change de poste de travail. Notre proxy Squid va authentifier les utilisateurs grâce aux entrées présentes dans l annuaire LDAP. Nous n avons pas besoins de recréer des utilisateurs spécifiquement pour ce service. Cependant, l authentification des utilisateurs n est pas compatible avec l utilisation d un proxy transparent (ce qui aurait pu être intéressant, évitant de configurer manuellement tous les navigateurs Web de l agence). Le proxy fonctionne donc de manière classique : le client demande au proxy d interroger le serveur HTTP cible. Si le client est correctement authentifié, ce dernier répond au proxy qui communique alors la réponse au client. Le client est configuré pour utiliser un proxy et il modifie les requêtes http en fonction. Rapport de stage de Jules DAGNAUD 27
4.7.2 Installation FIG. 12 Serveur Mandataire Nous devons installer le paquet squid3 pour le proxy lui même et le paquet squid_ldap_auth pour l authentification via l annuaire LDAP. apt-get install squid3 apt-get install squid_ldap_auth 4.7.3 Configuration Le fichier de configuration est /etc/squid3/squid.conf. Il faut rajouter les lignes suivantes pour préciser que l on veut utiliser une authification par LDAP : auth_param basic program /usr/lib/squid3/squid_ldap_auth -b ou=users,dc=nkb,dc=com -u uid localhost auth_param basic children 5 auth_param basic realm Identification proxy auth_param basic credentialsttl 2 hours acl ldapauth proxy_auth REQUIRED acl authenticated proxy_auth REQUIRED On distingue deux types de règles dans ce fichier de configuration : les acl 8 : permettent de définir, par exemple, un plage d adresses IP ou une plage de ports, les http_access : définissent des autorisations (allow) ou interdictions (deny) pour une acl donnée. Les restrictions indiquent quoi faire lorsque ces conditions sont vérifiées. On autorise ou on interdit en fonction d une acl ou d un groupe d acl. La première restriction vérifiée est la bonne, d où l importance de l ordre dans lequel elles sont placées. 8 Access Control List Rapport de stage de Jules DAGNAUD 28
Dans notre cas, nous avons créé plus haut une acl décrivant les utilisateurs authentifiés. Nous voulons bloquer l accés au Web à certains utilisateurs. On va donc créer une acl pour ces utilisateurs là, à qui l on refusera l accès HTTP, avant d autoriser l acl des utilisateurs authentifiés. Dans le fichier de configuration, cela donne : acl no_internet proxy_auth liste_des_utilisateurs_a_bloquer http_access deny no_internet #on refuse les utilisateur à bloquer http_access allow authenticated #on autorise les utilisateurs authentifiés http_access allow ldapauth #idem http_access allow localhost #on autorise la passerelle elle_m^eme http_access deny all #on bloque l accés à tout h^ote qui ne respecterait pas les conditions ci dessus. Pour que le proxy soit fonctionnel, il faut bien penser à modifier les règles iptables de Netfilter. 4.8 Sauvegarde des données La sauvegarde des données est essentielle dans une agence d architecture. Il doit toujours exister une copie des fichiers de travail (plans, images 3D, documents administratifs...), et c est pour cela que l on doit effectuer un backup périodique fréquent. Nous utiliserons pour cette sauvegarde l outil Backup-Manager associé à cron 9. 4.8.1 Stratégie de sauvegarde Nous devons avoir les données en triple à l intérieur de l agence : les données partagées sur le serveur de production, une copie sur le même serveur mais sur un autre disque (en cas de panne du premier), et une dernière copie sur un autre server (le fameux serveur S2 renommé nkbbackup, dédié exclusivement à cette tâche). 4.8.2 Sauvegarde sur le serveur de production Disposant de peu de place, j ai décidé de procéder à une sauvegarde en archives incrémentales. Cette méthode ne sauvegarde que les différences entre deux sauvegardes successives. Ici, deux sortes de sauvegardes sont mises en oeuvre : Sauvegardes complètes (chaque semaine) : sauvegarde tous les fichiers dans une archive Sauvegardes différentielles (toutes les 12 heures) : ce sont les sauvegardes entre deux sauvegardes complètes. Elles contiennent juste la différence entre sauvegardes successives. 4.8.3 Sauvegarde sur nkbbackup Disposant d encore moins de place sur ce serveur de backup, j ai décidé de simplement faire une synchronisation de dossiers avec la méthode rsync 10. 9 cron est le nom d un programme qui permet aux utilisateurs des systèmes Unix d exécuter automatiquement des scripts, des commandes ou des logiciels à une date et une heure spécifiées à l avance, ou selon un cycle défini à l avance. Le nom est dérivé du grec chronos 10 Remote SYNChronization est un logiciel libre de synchronisation de fichiers, distribué sous GNU GPL. La synchronisation est unidirectionnelle, c est-à-dire qu elle copie les fichiers de la source en direction de la destination. Rapport de stage de Jules DAGNAUD 29
Pour pouvoir copier les données sur le serveur de backup, on doit s y connecter par SSH. Or, SSH demande le mot de passe du compte que l on veut utiliser sur l ordinateur distant, ce qui est incompatible avec une sauvegarde automatique, sans intervention humaine. Néanmoins, il existe une technique (plus sécurisée que la connexion avec mot de passe) d autorisation de connexion par échange asymétrique de clés. Toutes les 12 heures, le contenu des dossiers à sauvegarder (projets d architecture, configuration du serveur de production...) est copié sur le serveur de sauvegarde. 4.9 Schéma récapitulatif FIG. 13 Schéma récapitulatif du fonctionnement du réseau Rapport de stage de Jules DAGNAUD 30
5 Mise en place d outils de communication L agence souhaitait améliorer l efficacité de la communication entre employés. Aussi, j ai défini avec les dirigeants quels outils seraient adaptés à la situation : une messagerie interne instantanée, pouvant aussi servir pour le transfert de fichier, une plateforme de travail collaboratif, dont nous décrirons les fonctionnalités attendues un peu plus bas. 5.1 Messagerie interne 5.1.1 Utilité Longtemps réservée à un usage privé, pour communiquer avec des amis ou de la famille éloignée, la messagerie instantanée s installe aujourd hui dans l entreprise, avec de forts gains de réactivité à la clé. Tout l intérêt de cet outil réside dans l accélération du transit de l information. 5.1.2 Le protocole Jabber Jabber est un protocole de messagerie instantanée ouvert et standardisé, basé sur XML 11 et dont la première version date de 2000. C est donc un protocole jeune, et adapté aux réalités actuelles de la communication. C est un protocole : décentralisé : Chacun est libre de créer un serveur et de le connecter, ou non, au reste de monde. sûr : tous les échanges entre les différents acteurs (serveurs et clients) sont sécurisé via TLS 12. Les échanges entre deux sites sont donc sécurisés même sans utiliser un VPN 13. 5.1.3 Le serveur Jabber OpenFire Réputé pour ses nombreuses fonctionnalités et sa simplicité d installation et d administration, j ai choisi d installer le serveur OpenFire, développé par Ignitrealtime 14. Aussi, l agence dispose désormais d une messagerie instantannée : propre à l entreprise (ne dépend pas d un serveur sur Internet), compatible avec l annuaire OpenLdap, ce qui permet à tous les employés de se connecter avec leur identifiants habituels, utilisés pour le proxy d identification ou pour accéder aux fichiers partagés sur le serveur, qui permet le partage de groupes : dès sa première connexion, un employé dispose de tous les employés de l agence dans ses contacts, organisés selon les groupes définis dans l annuaire OpenLdap, qui permet de créer des conférences (chat avec plus de deux utilisateurs), 11 extensible Markup Language 12 Transport Layer Security, un protocole de sécurisation des échanges, basé sur l authentification par certificat numérique. 13 Virtual Private Network. 14 http://www.ignitrealtime.org Rapport de stage de Jules DAGNAUD 31
qui gère le transfert de fichiers, ainsi les employés peuvent s envoyer rapidement des fichiers sans passer par les dossiers partagés Pour pouvoir vérifier que l utilisation de cet outil est saine, le serveur OpenFire permet de conserver une trace de tous les échanges effectués en son sein. Au niveau du client, après en avoir fait essayer plusieurs aux employés, le choix s est porté sur Spark, un client très léger, ergonomique et simple d utilisation. FIG. 14 Client Jabber : Spark Rapport de stage de Jules DAGNAUD 32
5.2 Plate-forme de travail collaboratif 5.2.1 Utilité Une plate-forme de travail collaborative (qu on appelle souvent Intranet par abus de langage) permet de mettre facilement à la disposition des employés des documents divers et variés. Cela permet d avoir un accès centralisé et cohérent à la mémoire de l entreprise : on parle ainsi de capitalisation de connaissances. On peut ajouter également des fonctionnalités de groupeware, c est à dire des méthodes permettant aux utilisateurs de mener un travail en commun à travers un réseau. J ai travaillé en collaboration avec les dirigeants de l agence pour définir quelles fonctionnalités devaient exister dans le futur portail Intranet de NKB Archi : recherche de documents au sein de la plate-forme, annuaire du personnel, système d agenda partagé, système de création et suivi de projet, gestionnaire de congés pour les employés, forum de discussion. 5.2.2 Plone Plone est un système de gestion de contenu Web libre. C est une sur-couche du serveur d application Zope 15 Notre Intranet Plone va se présenter comme un site Web communautaire, sur lequel il faudra s identifier pour accéder au contenu et en ajouter. Il existe une extension (aussi appelée produit ) de Plone qui permet l authentification des utilisateurs grâce à un annuaire LDAP. Une fois de plus, les employés pourront donc utiliser leurs identifiants habituels. Une fois connecté, l employé, selon le groupe d utilisateurs auquel il appartient, a accés à un contenu différent. De même un utilisateur avec beaucoup de droits (c est à dire haut placé dans la hiérarchie de l entreprise) va pouvoir éditer du contenu, créer un évènement, publier un article, alors qu un utilisateur avec des droits très restreints pourra seulement consulter certaines informations. 5.2.3 Travail réalisé A l heure d écriture de ce rapport, l intranet n en est qu à ses prémisses. L installation de Zope puis la création d une instance Plone est assez aisée grâce au gestionnaire de paquets de Debian. En revanche, la prise en main du CMS 16 est assez difficile. 15 Zope est un serveur d application web orienté objet libre écrit dans le langage de programmation Python. Il peut être entièrement géré à partir d une interface Web. Zope publie sur le réseau des objets Python qui sont enregistrés dans une base de données objet, ZODB. Des types d objets basiques, tels que des documents, des images, des patrons (templates) de page, sont à la disposition des utilisateurs pour être créés et gérés via l internet. Des types d objets spécialisés, tels que les wikis, les blogs, les galeries de photos, sont disponibles en tant que greffons tiers (appelés produits), et il existe une communauté grandissante de petites entreprises créant des applications web sur mesure à base de Zope. 16 Content Management System. Rapport de stage de Jules DAGNAUD 33
FIG. 15 Page d identification de l intranet Une fois Plone installé, on accède à l interface d administration (appelée ZMI 17 ) par le biais d un navigateur Web. C est à travers cette interface que l on peut personnaliser le site, tant au niveau de l apparence qu au niveau des fonctionnalités. A l heure actuelle, voici les services disponibles sur l intranet : Annuaire des employés, Publication de news, création de pages, Partage d agenda : un utilisateur peut créer un évènement qui sera ajouté aux agendas des personnes concernées, Forum de discussion et sondages. Je travaille actuellement à la réalisation d un formulaire de demande de congés. Une fois ce travail réalisé et s il reste du temps, nous nous pencherons sur l implantation d un système de création et suivi de projet. Ce système nécessite la définition formelle du workflow 18 nécessaire à un projet. 17 Zope Management Interface. 18 modélisation de l ensemble des tâches à accomplir et des personnes impliquées dans leur réalisation. Rapport de stage de Jules DAGNAUD 34
FIG. 16 Interface d administration de Zope Rapport de stage de Jules DAGNAUD 35
FIG. 17 Page d accueil de l intranet pour un utilisateur Rapport de stage de Jules DAGNAUD 36
6 Bilan du travail accompli 6.1 Difficultés rencontrées 6.1.1 Difficultés techniques J ai rencontré assez peu de difficultés techniques jusqu à présent. Les principaux problèmes étaient liés à la syntaxe particulièrement difficile de LDAP/LDIFF. Ces problèmes ont étés résolus avec l utilisation de l interface graphique PHPLdapAdmin. Une autre difficulté fut rencontrée au niveau du Proxy : Squid conserve des données en cache pour accélérer la navigation sur des sites fréquemment visités. Cette conservation demande de la place sur le disque, notamment pour les dossiers /var et /usr, auxquels je n avais pas accordé assez de place lors de l installation de Debian (présents sur la même partition que /). Ainsi le proxy ne fonctionnait plus une fois la partition pleine. J ai donc du déplacer /var et /usr sur une partition dédiée avec suffisament d espace. Enfin, il subsiste un problème concernant la méssagerie instantannée. En effet, l actualisation de l état des utilisateurs n est pas toujours instantannée, et n intervient parfois jamais. Par exemple, un utilisateur qui vient de se connecté apparaîtra comme toujours déconnecté aux autres utilisateurs, pendant une durée variable. Je n ai pas encore trouvé de solution à ce problème. 6.1.2 Autres difficultés Les plus grandes difficultés furent rencontrées au niveau de la formation des employés à l utilisation de nouveaux outils. Il est difficile d obliger les gens à utiliser de nouveaux outils et nous avons du trouver des moyens pour rendre leur utilisation plus habituelle et systèmatique. Par exemple, nous avons eu l idée de proposer un sondage sur le portail Intranet pour impliquer les utilisateurs au choix de son nom. Quand les employés se sentent concernés, ils font plus d éffort pour appréhender de nouveaux outils et nouveaux services. Enfin, j ai éprouvé (et éprouve encore) des difficultés concernant la formation de l administrateur réseau à l administration d un serveur Linux. Il est difficile d imaginer que des principes paraissant évidents quand on est un utilisateur de ces systèmes depuis plusieurs années, reste très obscurs et inhabituelles à un nouvel utilisateur, même si celui-ci à de l expérience en informatique. La méthode de formation adoptée fut de reprendre à zero la configuration du serveur, en environnement déconnecté du réseau, et de rédiger en parallèle la documentation nécessaire pour chaque service. Nous nous sommes accordés pour cela une journée complète chaque semaine. Rapport de stage de Jules DAGNAUD 37
6.2 Ma contribution au sein de l agence Mon travail au sein de NKB Archi a été bénéfique pour l entreprise à plusieurs niveaux : au niveau économique : les solutions libres mises en place ont remplacées des logiciels propriétaires couteux, au niveau de la stabilité du réseau : depuis la migration du serveur et le nettoyage des postes clients, il n y a plus de problème d instabilité et d infection virale dans le parc informatique. En 3 mois, la seule panne rencontrée fut la chute du proxy décrite plus haut. au niveau de la rapidité du réseau : des tests sur des échanges de fichiers entre différents hôtes du réseau ont montré que la nouvelle architecture est de 2 à 3 fois plus rapide que l ancienne. au niveau de l évolutivité du réseau : l agence continue de grandir, de s enrichir de nouveaux employés. L authentification des employés par l annuaire LDAP va permettre d ajouter de nombreux services sans avoir à redéfinir des comptes utilisateurs. au niveau de la communication : les outils de collaboration mis en place contribuent à une communication plus efficace et à un transfert des informations plus rapide. 6.3 Améliorations possibles La première amélioration possible et indispensable à court terme consiste à mettre en place un système de backup des données à l extérieur de l agence. En effet, en cas de catastrophe sur le site (incendie, innondations...), des données essentielles à la survie de l entreprise peuvent être perdues. Cette possibilité de backup distant a été étudiée durant le stage, mais n est pas encore en place. Aussi, l agence NKB Archi souhaite que les employés des autres sites de l agence puissent également communiquer à l aide de la méssagerie instantannée. Ceci est tout à fait possible, mais il faudrait que l agence de Hanoi, où j ai configuré le serveur Jabber, possède une adresse IP fixe, ce qui n est pas le cas pour l instant. Le même problème existe pour l accés extérieur au portail Intranet. En allant plus loin, on pourrait imaginer la création d un VPN afin d interconnecter tous les différents sites de l entreprise et pousser la télécommunication au maximum. Rapport de stage de Jules DAGNAUD 38
7 Conclusion Ces cinq mois passé en tant qu administrateur système et réseau au sein de l agence furent une expérience très enrichissante, tant du point de vue professionnel qu au niveau humain. J ai pu mettre en pratique pendant ce stage les connaissances théoriques acquises durant mon cursus universitaire, mais également découvrir de nouvelles technologies comme le serveur d applications Zope ou de nouveaux langages (Python). De plus, j ai pu parfaire ma maîtrise des systèmes d exploitation Linux, tout en accumulant des connaissances au sujet du monde du logiciel libre. Travailler dans un secteur, l architecture, différent du monde de l informatique, m a apporté de l expérience au niveau de la collaboration avec des professionnels non informaticiens, et de l étude des besoins d une entreprise. L informatique doit toujours rester au service des utilisateurs, et pas s imposer comme une contrainte nécessaire. Cette prédiode de stage m a beaucoup apporté. De grandes responsabilités m ont été confiées, et travailler dans un environnement multiculturel et multilingue a développé mes facultés d adaptation. Je suis satisfait du travail accompli, et pense que ces cinq mois ont très bien préparé mon entrée dans le monde professionnel. Rapport de stage de Jules DAGNAUD 39
Références [1] Christian Caleca, L Internet Rapide et Permanent, http://irp.nain-t.net/ [2] Olivier Glück, Applications de l Internet de type Client/Serveur [3] Thomas Lotze, Jan Ulrich Hasecke, A User s guide to Plone [4] Olivier Allard-Jacquin, Firewall et sécurité d un réseau personnel sous Linux [5] http://www.debian.org [6] http://www.linux-france.org [7] http://www.isc.org [8] http://www.plone.org [9] http://www.igniterealtime.org Table des figures 1 Les employés de l agence de Hanoi............................... 7 2 Calendrier Prévisionnel...................................... 8 3 Organigramme de l entreprise................................... 9 4 Réseau de l entreprise....................................... 11 5 Le protocole DHCP......................................... 18 6 Nouvel adressage et nouveau nommage avec Dhcp et Bind9................. 20 7 Notre serveur DNS récursif.................................... 21 8 Trajet des paquets dans la pile IP................................. 22 9 Les 3 tables de Netfilter et leurs chaines............................. 22 10 Fonctionnement du Firewall.................................... 24 11 Arborescence d informations hiérarchiques simplifiée...................... 26 12 Serveur Mandataire........................................ 28 13 Schéma récapitulatif du fonctionnement du réseau....................... 30 14 Client Jabber : Spark........................................ 32 15 Page d identification de l intranet................................. 34 16 Interface d administration de Zope................................ 35 17 Page d accueil de l intranet pour un utilisateur.......................... 36 Rapport de stage de Jules DAGNAUD 40
A Annexe 1 : extrait de configuration du serveur DHCP # # Sample configuration file for ISC dhcpd for Debian # # $Id: dhcpd.conf,v 1.1.1.1 2002/05/21 00:07:44 peloy Exp $ # # The ddns-updates-style parameter controls whether or not the server will # attempt to do a DNS update when a lease is confirmed. We default to the # behavior of the version 2 packages ( none, since DHCP v2 didn t # have support for DDNS.) ddns-update-style interim; #ddns-update on; ignore client-updates; update-static-leases on; allow-unknown-clients; # option definitions common to all supported networks... option time-servers 192.168.1.254; option domain-name "nkb.com"; option domain-name-servers 192.168.1.254; option subnet-mask 255.255.255.0; option routers 192.168.1.254; max-lease-time 3600; default-lease-time 600; # If this DHCP server is the official DHCP server for the local # network, the authoritative directive should be uncommented. authoritative; # Use this to send dhcp log messages to a different log file (you also # have to hack syslog.conf to complete the redirection). log-facility local7; Rapport de stage de Jules DAGNAUD 41
# No service will be given on this subnet, but declaring it helps the # DHCP server to understand the network topology. subnet 192.168.1.0 netmask 255.255.255.0 { range dynamic-bootp 192.168.1.90 192.168.1.99 ; } # DNS to update zone nkb.com. { primary 127.0.0.1; } zone 1.168.192.in-addr-arpa. { primary 127.0.0.1;} # Reservations host nkbbackup { hardware ethernet 00:08:**:**:**:**; fixed-address 192.168.1.20; } host nkbbackup { hardware ethernet 00:11:**:**:**:**; fixed-address 192.168.1.253; } host jdagnaud { hardware ethernet 00:1f:**:**:**:**; fixed-address 192.168.1.49; } Rapport de stage de Jules DAGNAUD 42
B Annexe 2 : extrait configuration DNS ; ;BIND data file for nkb.com ;/etc/bind/db.nkb.com ; $TTL 604800 @ IN SOA nkbserver.nkb.com. root.nkbserver.nkb.com. ( 2009051401 ; Serial 604800 ; Refresh 86400 ; Retry 2419200 ; Expire 604800 ) ; Negative Cache TTL ; @ IN NS nkbserver.nkb.com. @ IN A 192.168.1.254 nkbserver IN A 192.168.1.254 server IN CNAME nkbserver nkbbackup IN A 192.168.1.253 nberry IN A 192.168.1.15 jdagnaud IN A 192.168.1.62 gmetadier IN A 192.168.1.20 svaidie IN A 192.168.1.21 tmontreau IN A 192.168.1.22 ltphuong IN A 192.168.1.23 tqthang IN A 192.168.1.24 ntnam IN A 192.168.1.25 nkb26 IN A 192.168.1.26 ptphuong IN A 192.168.1.27 ntthuong IN A 192.168.1.28 btnhung IN A 192.168.1.29 pthuyen IN A 192.168.1.30 ndkiem IN A 192.168.1.31 nkb32 IN A 192.168.1.32 ptphuc IN A 192.168.1.33 cdquy IN A 192.168.1.35 vthieu IN A 192.168.1.36 nktan IN A 192.168.1.37 nkb38 IN A 192.168.1.38 nvduong IN A 192.168.1.39 nkb40 IN A 192.168.1.40 vkimanh IN A 192.168.1.41 nkb42 IN A 192.168.1.42 Rapport de stage de Jules DAGNAUD 43
ltttu IN A 192.168.1.43 datuan IN A 192.168.1.44 nkb45 IN A 192.168.1.45 nkthoa IN A 192.168.1.46 npha IN A 192.168.1.47 vtha IN A 192.168.1.49 nmthuy IN A 192.168.1.50 nkb51 IN A 192.168.1.51 ntthop IN A 192.168.1.52 lgiang IN A 192.168.1.53 nkb54 IN A 192.168.1.54 gdesormeaux IN A 192.168.1.55 dmquy IN A 192.168.1.56 nkb57 IN A 192.168.1.57 nthvan IN A 192.168.1.59 mqanh IN A 192.168.1.71 tttha IN A 192.168.1.61 ttduong IN A 192.168.1.201 Rapport de stage de Jules DAGNAUD 44
C Annexe 3 : Règles pare-feu Netfilter #!/bin/bash # Erase chain rules iptables -F #FILTER iptables -t nat -F #NAT iptables -t mangle -F #MANGLE # Erase user chains iptables -X #FILTER iptables -t nat -X #NAT iptables -t mangle -X #MANGLE # DROP everything by default for table FILTER iptables -P INPUT DROP iptables -P OUTPUT DROP iptables -P FORWARD DROP # ACCEPT everything for NAT and MANGLE iptables -t nat -P PREROUTING ACCEPT iptables -t nat -P POSTROUTING ACCEPT iptables -t nat -P OUTPUT ACCEPT iptables -t mangle -P PREROUTING ACCEPT iptables -t mangle -P INPUT ACCEPT iptables -t mangle -P OUTPUT ACCEPT iptables -t mangle -P FORWARD ACCEPT iptables -t mangle -P POSTROUTING ACCEPT # ACCEPT FOR LAN AND LOCAL PROCESSUS iptables -A INPUT -i eth1 -j ACCEPT iptables -A OUTPUT -o eth1 -j ACCEPT iptables -A INPUT -i lo -j ACCEPT iptables -A OUTPUT -o lo -j ACCEPT # NAT : IP MASQUERADE AND FORWARD ACCEPT FROM LAN TO INTERNET modprobe ip_conntrack modprobe ip_conntrack_ftp iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE #iptables -A FORWARD -i eth1 -o eth0 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT #iptables -A FORWARD -i eth0 -o eth1 -m state --state ESTABLISHED,RELATED -j ACCEPT iptables -A FORWARD -p tcp --dport! 80 -i eth1 -o eth0 -m state --state NEW,ESTABLISHED,RELATE iptables -A FORWARD -p tcp --dport! 80 -i eth0 -o eth1 -m state --state ESTABLISHED,RELATED -j #iptables -A FORWARD -p tcp --dport! 443 -i eth1 -o eth0 -m state --state NEW,ESTABLISHED,RELA Rapport de stage de Jules DAGNAUD 45
#iptables -A FORWARD -p tcp --dport! 443 -i eth0 -o eth1 -m state --state ESTABLISHED,RELATED # DNS ACCEPT iptables -A OUTPUT -o eth0 -p udp --sport 1024: --dport 53 -m state --state! INVALID -j ACCEPT iptables -A INPUT -i eth0 -p udp --sport 53 --dport 1024: -m state --state RELATED,ESTABLISHED # SSH ACCEPT iptables -A INPUT -p tcp --dport 22 -i eth0 -j ACCEPT iptables -A OUTPUT -p tcp --sport 22 -o eth0 -j ACCEPT # JABBER ACCEPT iptables -A INPUT -p tcp --dport 5222 -i eth0 -j ACCEPT iptables -A OUTPUT -p tcp --sport 5222 -o eth0 -j ACCEPT iptables -A OUTPUT -p tcp --dport 80 -o eth0 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT iptables -A OUTPUT -p tcp --dport 443 -o eth0 -m state --state NEW,ESTABLISHED,RELATED -j ACCEP # PROXY iptables -A INPUT -p tcp --sport 80 -i eth0 -m state --state ESTABLISHED,RELATED -j ACCEPT iptables -A INPUT -p tcp --sport 443 -i eth0 -m state --state ESTABLISHED,RELATED -j ACCEPT #iptables -A OUTPUT -o eth0 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT #iptables -A INPUT -i eth0 -m state --state ESTABLISHED,RELATED -j ACCEPT Rapport de stage de Jules DAGNAUD 46
D Annexe 4 : Fichier de configuration de Samba [global] workgroup = NKB netbios name = nkbserver server string = nkbserver domain master = Yes local master = Yes domain logons = Yes os level = 40 ldap passwd sync = Yes passdb backend = ldapsam:ldap://127.0.0.1/ ldap admin dn = cn=nkbadmin,dc=nkb,dc=com ldap suffix = dc=nkb,dc=com ldap group suffix = ou=groups ldap user suffix = ou=users #ldap machine suffix = ou=machines add user script = /usr/sbin/smbldap-useradd -m "%u" ldap delete dn = no delete user script = /usr/sbin/smbldap-userdel "%u" add machine script = /usr/sbin/smbldap-useradd -w "%u" add group script = /usr/sbin/smbldap-groupadd -p "%g" #delete group script = /usr/sbin/smbldap-groupdel "%g" add user to group script = /usr/sbin/smbldap-groupmod -m "%u" "%g" delete user from group script = /usr/sbin/smbldap-groupmod -x "%u" "%g" set primary group script = /usr/sbin/smbldap-usermod -g "%g" "%u" logon path = \\%L\profile\%U logon drive = P: logon home = \\%L\%U socket options = TCP_NODELAY SO_RCVBUF=8576 SO_SNDBUF=8576 case sensitive = No default case = lower preserve case = yes short preserve case = Yes #character set = iso8859-1 #domain admin group = @admin dns proxy = no wins support = no hosts allow = 192.168.1. 127. winbind use default domain = Yes nt acl support = Yes msdfs root = Yes hide files = /desktop.ini/ntuser.ini/ntuser.*/ #### SHARING ##### [netlogon] Rapport de stage de Jules DAGNAUD 47
path = /home/netlogon writable = No browseable = No write list = nkbadmin # [profile] path = /home/export/profile browseable = No writeable = Yes profile acls = yes create mask = 0700 directory mask = 0700 # #[homes] #comment = Personal Folder #browseable = No #writeable = Yes # [NKB Library] comment = NKBLibrary browseable = Yes writeable = Yes public = No path = /media/diske/nkblibrary # [Network Admin] comment = NetworkAdmin browseable = Yes writeable = Yes public = No #valid users = @it @dg path = /media/diske/networkadmin # [Business Development] comment = Business Development browseable = Yes writeable = Yes valid users = @dg @secretaries @accountants @marketing public = No path = /media/diske/jean_verly/ # [Projects] comment = Projects browseable = Yes writeable = Yes public = No Rapport de stage de Jules DAGNAUD 48
path = /media/diskf/projects # [Scans] comment = Scans browseable = Yes writeable = Yes public = No path = /media/diske/scan Rapport de stage de Jules DAGNAUD 49
E Annexe 5 : Script d ajout d utilisateur Samba/LDAP #! /bin/sh echo -n "User name? "; read name ; echo -n "User login? "; read log ; echo -n "Machine name($)?"; read machine1 ; echo -n "Machine name?"; read machine ; useradd -g machines -d /dev/null -s /bin/false "$machine1"; smbpasswd -a -m "$machine"; adduser "$log" --ingroup users; smbldap-useradd -a -c "$name" -m -P "$log"; #$ Rapport de stage de Jules DAGNAUD 50
F Annexe 6 : Fichier de configuration de OpenLdap # This is the main slapd configuration file. See slapd.conf(5) for more # info on the configuration options. ####################################################################### # Global Directives: # Features to permit allow bind_v2 # Schema and objectclass definitions include /etc/ldap/schema/core.schema include /etc/ldap/schema/cosine.schema include /etc/ldap/schema/nis.schema include /etc/ldap/schema/inetorgperson.schema include /etc/ldap/schema/openldap.schema include /etc/ldap/schema/samba.schema # Where the pid file is put. The init.d script # will not stop the server if you change this. pidfile /var/run/slapd/slapd.pid # List of arguments that were passed to the server argsfile /var/run/slapd/slapd.args # Read slapd.conf(5) for possible values loglevel none # Where the dynamically loaded modules are stored modulepath /usr/lib/ldap moduleload back_bdb # The maximum number of entries that is returned for a search operation sizelimit 500 # The tool-threads parameter sets the actual amount of cpu s that is used # for indexing. tool-threads 1 ####################################################################### # Specific Backend Directives for hdb: # Backend specific directives apply to this backend until another # backend directive occurs Rapport de stage de Jules DAGNAUD 51
backend bdb ####################################################################### # Specific Backend Directives for other : # Backend specific directives apply to this backend until another # backend directive occurs #backend <other> ####################################################################### # Specific Directives for database #1, of type hdb: # Database specific directives apply to this databasse until another # database directive occurs database bdb # The base of your directory in database #1 suffix dc=nkb,dc=com rootdn cn=nkbadmin,dc=nkb,dc=com # for syncrepl. # rootdn "cn=nkbadmin,dc=nkb,dc=com" # Where the database file are physically stored for database #1 directory "/var/lib/ldap" # The dbconfig settings are used to generate a DB_CONFIG file the first # time slapd starts. They do NOT override existing an existing DB_CONFIG # file. You should therefore change these settings in DB_CONFIG directly # or remove DB_CONFIG and restart slapd for changes to take effect. # For the Debian package we use 2MB as default but be sure to update this # value if you have plenty of RAM dbconfig set_cachesize 0 2097152 0 # Sven Hartge reported that he had to set this value incredibly high # to get slapd running at all. See http://bugs.debian.org/303057 for more # information. # Number of objects that can be locked at the same time. dbconfig set_lk_max_objects 1500 # Number of locks (both requested and granted) dbconfig set_lk_max_locks 1500 # Number of lockers dbconfig set_lk_max_lockers 1500 # Indexing options for database #1 Rapport de stage de Jules DAGNAUD 52
index objectclass eq # Save the time that the entry gets modified, for database #1 lastmod on # Checkpoint the BerkeleyDB database periodically in case of system # failure and to speed slapd shutdown. checkpoint 512 30 # Where to store the replica logs for database #1 # replogfile /var/lib/ldap/replog # The userpassword by default can be changed # by the entry owning it if they are authenticated. # Others should not be able to see it, except the # admin entry below # These access lines apply to database #1 only # Ensure read access to the base for things like # supportedsaslmechanisms. Without this you may # have problems with SASL not knowing what # mechanisms are available and the like. # Note that this is covered by the access to * # ACL below too but if you change that as people # are wont to do you ll still need this if you # want SASL (and possible other things) to work # happily. # The admin dn has full write access, everyone else # can read everything. # For Netscape Roaming support, each user gets a roaming # profile for which they have write access to #access to dn=".*,ou=roaming,o=morsnet" # by dn="cn=nkbadmin,dc=nkb,dc=com" write # by dnattr=owner write ####################################################################### # Specific Directives for database #2, of type other (can be hdb too): # Database specific directives apply to this databasse until another # database directive occurs #database <other> # The base of your directory for database #2 #suffix "dc=debian,dc=org" rootpw ******** Rapport de stage de Jules DAGNAUD 53
G Annexe 7 : Fichier de configuration du proxy Squid auth_param basic program /usr/lib/squid3/squid_ldap_auth -b ou=users,dc=nkb,dc=com -u uid local auth_param basic children 5 auth_param basic realm Identification proxy auth_param basic credentialsttl 2 hours acl ldapauth proxy_auth REQUIRED acl authenticated proxy_auth REQUIRED acl manager proto cache_object acl localhost src 127.0.0.1/32 acl to_localhost dst 127.0.0.0/8 acl SSL_ports port 443 acl Safe_ports port 80 # http acl Safe_ports port 21 # ftp acl Safe_ports port 443 # https acl Safe_ports port 70 # gopher acl Safe_ports port 210 # wais acl Safe_ports port 1025-65535 # unregistered ports acl Safe_ports port 280 # http-mgmt acl Safe_ports port 488 # gss-http acl Safe_ports port 591 # filemaker acl Safe_ports port 777 # multiling http acl CONNECT method CONNECT acl no_internet proxy_auth user1 user2 user3 http_access deny no_internet http_access allow authenticated http_access allow ldapauth http_access allow localhost http_access deny all #http_access allow manager localhost #http_access deny manager #http_access deny!safe_ports #http_access deny CONNECT!SSL_ports icp_access deny all http_port 3128 hierarchy_stoplist cgi-bin? access_log /var/log/squid3/access.log squid refresh_pattern ^ftp: 1440 20% 10080 refresh_pattern ^gopher: 1440 0% 1440 refresh_pattern (cgi-bin \?) 0 0% 0 refresh_pattern. 0 20% 4320 icp_port 3130 coredump_dir /var/spool/squid3 Rapport de stage de Jules DAGNAUD 54