Le Libre en entreprise - BiBaBoX | Partage de...
Transcript of Le Libre en entreprise - BiBaBoX | Partage de...
PORTE Loïc – Le Libre en entreprise – 2012 Page 1 sur 66
Sommaire
Remerciements .......................................................................................................... 3
Introduction ................................................................................................................ 5
I. Contexte ........................................................................................................... 6
A. Pôle commercial ........................................................................................... 6
B. Pôle technique .............................................................................................. 6
C. Evolution de PMSIpilot .................................................................................. 7
D. Parc informatique.......................................................................................... 7
E. Ma place chez PMSIpilot .............................................................................. 8
II. Le Libre et l’open-source ................................................................................... 9
A. Définitions ..................................................................................................... 9
B. Confusion fréquente ..................................................................................... 9
C. Un peu d’histoire ........................................................................................... 9
D. Les licences .................................................................................................10
E. Logiciels libres connus .................................................................................11
III. L’offre du Libre à l’entreprise ............................................................................12
A. La libre infrastructure ...................................................................................12
1. Gestion du parc ........................................................................................12
a) Gestionnaire Libre de Parc Informatique .................................................12
b) Open Computers and Software Inventory Next Generation .....................14
c) La puissance du couple OCS-GLPI .........................................................15
2. Supervision ..............................................................................................16
a) Le concept ...............................................................................................16
b) Nagios .....................................................................................................17
c) Centreon ..................................................................................................19
3. Sécurité ....................................................................................................20
a) Squid : le calamar libre ............................................................................21
b) ClamAV ...................................................................................................22
c) SquidGuard .............................................................................................23
d) Sarg ........................................................................................................24
e) Aller plus loin ...........................................................................................25
4. Déploiement de systèmes par le réseau...................................................25
B. Poste utilisateur ...........................................................................................26
1. Choix de la distribution .............................................................................27
PORTE Loïc – Le Libre en entreprise – 2012 Page 2 sur 66
a) Avant .......................................................................................................27
b) Uniformisation des systèmes ...................................................................27
2. Adaptation ................................................................................................28
a) Utilisateur ................................................................................................28
b) Ressources de l’entreprise ......................................................................30
c) Dépôt de logiciels ....................................................................................32
d) Installation ...............................................................................................35
C. La liberté des outils au service des utilisateurs ............................................36
1. Les besoins communs ..............................................................................36
a) Besoin de communication ........................................................................37
b) Déploiement d’applications ......................................................................37
c) La libre détente ........................................................................................40
2. Les besoins des commerciaux .................................................................41
a) Gestion client ...........................................................................................41
b) L’accès distant aux ressources ................................................................42
3. Les besoins du pôle technique .................................................................45
a) Gestion de projets ...................................................................................45
b) Gestion des sources ................................................................................47
c) Gestion des tests .....................................................................................48
d) Virtualisation ............................................................................................49
e) Travail collaboratif ...................................................................................49
D. Le Libre jusqu’au client ................................................................................50
IV. Le rendu de l’entreprise au Libre ......................................................................53
A. Bug report ....................................................................................................53
B. Apport financier ...........................................................................................53
C. Diffusion du savoir .......................................................................................54
D. L’apport de nouveaux outils .........................................................................55
1. NagvisRackConstructor ............................................................................55
2. Gpol .........................................................................................................56
3. Github ......................................................................................................57
V. Conclusion .......................................................................................................59
VI. Glossaire .........................................................................................................60
VII. Liens ................................................................................................................61
VIII. Annexes ...........................................................................................................62
PORTE Loïc – Le Libre en entreprise – 2012 Page 3 sur 66
Remerciements Pour commencer je tiens à remercier l’équipe de l’école SUPINFO Lyon qui
m’a apporté les connaissances théoriques et la liberté de créer avec d’autres
étudiants un laboratoire afin d’explorer plus profondément ces connaissances.
Ensuite, je tiens à remercier Monsieur DE SAINT JEAN pour m’avoir accueilli
dans son entreprise. Je remercie aussi tout le service technique avec qui j’ai travaillé,
les responsables produits qui m’ont appris les bases des connaissances métier ainsi
que le besoin informatique des établissements de santé, les équipes de
développeurs qui m’ont montré et appris de nouvelles technologies. Je remercie
également tout particulièrement les membres de l’équipe du support technique, dont
mon responsable Gaël DUPERREY, qui m’ont accueilli dans leur équipe.
Je remercie plus précisément Laurent BESSON, Samuel VERSCHELDE,
Pascal MARTIN, Adrien GALLOU, Sébastien ROGIER et Eric LEMOINE qui n’ont
pas hésité à venir m’aider lorsque le besoin s’en est fait ressentir.
Pour finir je remercie l’ensemble des employés de PMSIpilot pour l’ambiance
sympathique et de leur aide tout au long de cette période.
PORTE Loïc – Le Libre en entreprise – 2012 Page 4 sur 66
« Free software is a matter of liberty, not price. To understand
the concept, you should think of ‘free’ as in ‘free speech’,
not as in ‘free beer’ »
Richard Stallman
PORTE Loïc – Le Libre en entreprise – 2012 Page 5 sur 66
Introduction Le monde du Libre n’est pas récent, on peut lui attribuer une naissance dans
les années 80. Depuis, la communauté a grandi de manière exponentielle et est
composée de partisans de tous âges et de tous domaines. Ces dernières années les
produits de cette communauté ont été de plus en plus mis en avant à travers des
conférences, des « install party » ou de différents rassemblements. Les différentes
réalisations de cette communauté, les logiciels libres, sont assez impressionnantes
même si on ne peut les compter. Comme de partout, on trouve du bon comme du
mauvais, mais aussi de l’exceptionnel.
Le présent document a pour but de prouver que l’image du Libre qui est
souvent vue comme non professionnelle et non fonctionnelle est dépassée. Nous
verrons que les produits issus du Libre ont totalement leur place dans un milieu
professionnel. Il ne s’agit absolument pas de démontrer une quelconque supériorité
des logiciels libres sur les logiciels dits « propriétaires ». Il ne s’agit pas non plus de
remplacer obligatoirement les logiciels propriétaires par leurs équivalents libres à tout
prix bien au contraire.
Dans le cadre d’une entreprise en pleine évolution nous verrons l’utilisation et
l’apport que peuvent offrir les logiciels issus de la communauté. Les différents
produits libres qui sont exposés dans ce document ont été sélectionnés et testés
pour répondre à des besoins réels qu’ont les entreprises.
PORTE Loïc – Le Libre en entreprise – 2012 Page 6 sur 66
I. Contexte Ce document est basé sur une recherche et une mise en place effectuées
dans une entreprise. Cette entreprise est la société PMSIpilot. Cette société a été
fondée en 1998 à Lyon. PMSIpilot a pour désir de répondre aux besoins des centres
hospitaliers français. C’est pourquoi elle propose plus d’une dizaine de logiciels à
destination des établissements de santé. Les différents logiciels proposés permettent
d’exploiter les données du programme de médicalisation des systèmes d’information
(PMSI). PMSIpilot a pour clients plus de 650 établissements de santé parmi lesquels
on retrouve les plus grands hôpitaux français.
Les différentes applications de PMSIpilot sont développées en PHP et
fournies aux clients à travers un CD-ROM ou un serveur physique qui contient un
système d’exploitation complet basé sur Mandriva 2009.0 avec les différents logiciels
pré-paramétrés. Dernièrement PMSIpilot a évolué en fournissant à ses clients leurs
logiciels hébergés directement sur Internet chez un hébergeur de santé : IDS. Ce
dernier système de mise à disposition des logiciels aux clients à travers Internet nous
prouve que PMSIpilot évolue avec la technologie et ne reste pas figé dans une
technologie vieillissante. L’évolution de PMSIpilot est surtout due à la réactivité et
l’évolutivité des employés qui composent la société.
A. Pôle commercial
Ce pôle est constitué de commerciaux et de formateurs. Les commerciaux
sont chargés de trouver de nouveaux clients, mais pas seulement. Ils permettent
aussi d’assurer les relations clients en faisant souvent le lien avec les autres services
afin de répondre au mieux à leurs besoins. Les formateurs ont également une
mission pédagogique auprès des clients afin de les former à l’utilisation des
applications.
B. Pôle technique
Le pôle technique est constitué de plusieurs services distincts :
Le support technique
Les responsables produits
Les développeurs
Les architectes
Le support technique, composé de six personnes, est chargé de faire le lien
avec le client sur la partie technique du logiciel. Cette équipe prépare et livre les
différents serveurs à destination des clients. Il est aussi chargé de l’infrastructure
interne à l’entreprise.
Les responsables produits définissent les futures fonctionnalités des différents
logiciels en définissant une roadmap précise. Cette équipe de six personnes permet
d’assurer l’évolution et la stabilité des produits.
PORTE Loïc – Le Libre en entreprise – 2012 Page 7 sur 66
Les développeurs travaillent en relation directe avec les responsables produits
afin d’implémenter de manière simple les fonctionnalités au travers de différentes
technologies. Ils sont séparés en deux équipes qui possèdent chacune un
responsable de projets.
Les architectes, nouvellement intégrés au sein de PMSIpilot, sont chargés de
créer une architecture optimisée pour les applications permettant une connectivité
simplifiée et de répondre aux besoins des clients de plus en plus rapidement.
C. Evolution de PMSIpilot
PMSIpilot est une entreprise qui a connu une forte croissance ces dernières
années. Cette évolution a eu des conséquences importantes sur l’informatique
interne de l’entreprise. Elle a dû s’adapter rapidement en termes de matériel
informatique et de services nécessaires aux employés ainsi qu’aux clients de
PMSIpilot.
D. Parc informatique
Le parc informatique est constitué quasiment exclusivement de machines Dell
en ce qui concerne les postes utilisateurs et les serveurs. Les postes utilisateurs
peuvent être séparés en deux catégories : les postes des employés techniques et les
autres. Les utilisateurs qui font partie du pôle technique utilisent des ordinateurs Dell
Vostro 410, 420, 430 ou 460 avec une distribution GNU/Linux qui fera l’objet d’une
partie complète dans ce document. Les autres utilisateurs utilisent quant à eux des
Dell Vostro 220 et 230 un peu moins puissants sous Windows XP. En plus de cela,
PMSIpilot possède des ordinateurs portables, des vidéoprojecteurs ainsi que des
clés 3G à destination des formateurs pour les formations sur le terrain.
La gamme de serveurs est, elle aussi, très variée. Cette variété est due
justement à l’évolution des besoins qui ont nécessité l’achat de nouveaux serveurs
au fil des années. Le parc des serveurs est constitué d’environ 25 machines avec
des ressources différentes selon leur utilité.
Les systèmes d’exploitation sont eux aussi très diversifiés sur ces serveurs.
PMSIpilot possède deux serveurs Windows 2008 pour la gestion du domaine et
Windows Server 2003 pour les connections distantes et les services applicatifs. Les
serveurs de virtualisations sont sous VMware ESX et le reste des serveurs sont
partagés parmi différentes distributions GNU/Linux : Mandriva 2009.0/2010, Debian
5, Centos 5/6.
Le réseau assuré par plusieurs commutateurs (switch) de marque Netgear qui
pour la plupart sont compatibles avec la norme gigabyte ce qui permet d’avoir un
réseau rapide et performant. Un firewall de marque ZyXEL assure la sécurité des
connexions entrantes et sortantes.
PORTE Loïc – Le Libre en entreprise – 2012 Page 8 sur 66
E. Ma place chez PMSIpilot
La mission qui m’a été confiée a été d’apporter mon expertise sur
l’infrastructure et de la moderniser afin de répondre aux nouveaux besoins que
l’entreprise a eus suite à son évolution. Pour cela j’ai intégré le poste d’assistant
administrateur réseau dans le service support technique de PMSIpilot. Ce poste m’a
permis de très rapidement comprendre les différents besoins des différents pôles qui
composent PMSIpilot et par conséquent de trouver des solutions, souvent libres,
pour répondre à ces besoins.
PORTE Loïc – Le Libre en entreprise – 2012 Page 9 sur 66
II. Le Libre et l’open-source
A. Définitions
Un logiciel est défini comme libre, d’après la Free Software Foundation, s’il
respecte les 4 règles suivantes, que l’on peut aussi appeler libertés :
Liberté 0 : la liberté d’exécuter le programme, pour tous les usages
Liberté 1 : la liberté d’étudier le fonctionnement du programme et de l’adapter
à ses besoins
Liberté 2 : la liberté de redistribuer des copies du programme
Liberté 3 : la liberté d’améliorer le programme et de distribuer ces
améliorations au public, pour en faire profiter la communauté
Alors que la liberté 0 ne nécessite pas d’explications supplémentaires, les
autres doivent être un peu approfondies pour éviter les incompréhensions. Les
libertés 1 et 3 impliquent la diffusion du code source du logiciel pour une lecture (#3)
et surtout une modification (#4) ce qui permet de ne plus être dépendant des éditeurs
de logiciels pour un ajout de fonctionnalité ou une correction de bug. La liberté 2,
quant à elle, nous permet de redistribuer le logiciel (modifié ou non).
En ce qui concerne les logiciels dit « propriétaires » (non libres), les libertés 1
et 3 sont souvent inaccessibles car le code source n’est pas diffusé ce qui ne nous
permet pas d’avoir le contrôle sur le logiciel, on ne peut savoir concrètement ce qu’il
fait, comment il fonctionne. La liberté 2 n’est, quant à elle, pas applicable pour la
plupart des logiciels propriétaires payants.
B. Confusion fréquente
La confusion qui est faite la plupart du temps lorsque l’on parle du Libre est la
gratuité de cette œuvre. En effet la plupart des personnes pensent que le Libre est
forcément gratuit ce qui est totalement faux même si cela se vérifie dans la plupart
des cas. Cela se comprend très simplement avec une petite explication : une œuvre
libre payante acquise par un tiers peut être redistribuée comme bon lui semble grâce
à la liberté 2.
La seconde fausse interprétation est celle du terme Open-source qui est
souvent associée à Libre. Une œuvre libre est obligatoirement open-source mais la
réciproque n’est pas forcement vraie. Dans le même registre, la confusion du terme
« freeware » avec « logiciel libre » est elle aussi fréquente, cela vient de la traduction
du terme « free » qui peut signifier libre et gratuit mais qui dans la réalité désigne un
logiciel gratuit.
C. Un peu d’histoire
Le logiciel libre existe depuis le début de l’informatique. Le logiciel était fourni
avec le matériel et avec ses sources. Avec l’évolution de l’informatique, les logiciels
ne sont plus fournis avec le matériel et surtout sont fournis sans les sources, qui
PORTE Loïc – Le Libre en entreprise – 2012 Page 10 sur 66
restent, elles, propriétaires. En partant de cette constatation Richard STALLMAN
crée en 1984 le projet GNU qui se veut un système d’exploitation libre. Il crée aussi
la Free Software Foundation, fondation qui supporte les logiciels libres. La FSF avec
Richard STALLMAN créèrent la première licence libre : la GPL.
D. Les licences
Ajouter une licence à un logiciel permet de le protéger contre toute utilisation
non souhaitée par son créateur. Par conséquent l’étude de la licence est un choix
critique au moment de la création d’une œuvre ou de son utilisation.
Parmi les licences libres les plus connues nous avons la General Public
License (GPL), Common Public License (CPL), MIT License, etc. Chacune de ces
licences divergent sur certains points mais respectent toutes les 4 libertés du Libre.
Les grands projets libres ont souvent leur propre licence, par exemple : Licence
Apache ou PHP License.
L’étude de ces différentes licences et de leurs différences est très intéressante
et mériterait un document à part entière. Voici quelques licences que nous
retrouverons dans ce document :
GNU GPL v2
GNU GPL v3
GNU LGPL
MIT
Apache v2
La licence GNU GPL v2 permet d’appliquer les libertés du Libre à un logiciel.
De plus, elle ajoute la notion de « copyleft ». Cette notion qui se veut être un jeu de
mot avec copyright oblige les logiciels intégrant une partie du code avec une licence
copyleft à réutiliser cette licence. Par exemple un logiciel propriétaire ne peut intégrer
du code sous GNU GPL.
La principale différence entre la GNU GPL version 2 et 3 est l’ajout de
l’empêchement de la « tivoisation ». Ce principe est l’utilisation de l’électronique pour
empêcher l’exécution des logiciels libres modifiés.
Ensuite la différence entre une GPL et LGPL est qu’un programme sous LGPL
peut être intégré dans un logiciel sous une autre licence sans révoquer ladite licence.
La LGPL est donc plus permissive que les GPL et est souvent utilisée pour des
libraires. De plus si le code est amené à être modifié, il doit être redistribué.
La licence MIT est très proche de la licence LGPL mais est encore plus
permissive. Pour résumer rapidement on pourrait dire que l’on peut faire ce que l’on
veut avec ce code mis à part modifier le nom de l’auteur du code original.
PORTE Loïc – Le Libre en entreprise – 2012 Page 11 sur 66
E. Logiciels libres connus
Les logiciels libres souffrent d’une image de logiciels faits par des
développeurs pour d’autres développeurs. Ils ont la réputation d’être compliqué, non
intuitifs. Pour preuve voici un tweet un peu brutal d’un internaute :
« Y a des gens pour encore critiquer des boites qui utilisent Office à la place de
LibreOffice ? C'est une merde monumentale ces trucs libres ».
Pourtant, nombreux sont les logiciels libres que tout le monde utilise au
quotidien sans forcément le savoir. A titre d’exemple on peut citer un navigateur
Internet : Firefox, un lecteur multimédia : VLC ou un client mail : Thunderbird.
Beaucoup de gens utilisent des logiciels libres chez eux, sur leurs ordinateurs
ou même sur leurs téléphones ou leur Box. En entreprise ces logiciels se font plus
rares et laissent place à des logiciels propriétaires. Pourtant le logiciel libre pourrait
répondre à un nombre non négligeable de besoin et souvent à moindre coût.
PORTE Loïc – Le Libre en entreprise – 2012 Page 12 sur 66
III. L’offre du Libre à l’entreprise
A. La libre infrastructure
Toute entreprise qu’elle soit une TPE, PME ou GE possède une infrastructure
informatique de plus ou moins grande taille. En effet même un plombier ou un
serrurier possède un ordinateur. Nous verrons dans cette partie comment des
solutions issues du Libre permettent de gérer et de maintenir une infrastructure
d’entreprise quelle que soit sa taille si le besoin est présent.
1. Gestion du parc
Avoir un parc c’est bien, le connaître c’est mieux. Le premier besoin d’une
entreprise en ce qui concerne son parc informatique est de connaitre le matériel qui
le constitue. Ce besoin n’est pas forcément utile pour les TPE, car bien souvent leur
parc est constitué de quelques machines. Avec l’agrandissement du parc le nombre
d’informations à stocker augmente de manière exponentielle. Une TPE a besoin
d’accéder aux informations des machines constituant le parc de manière très
ponctuelle. Elle aura sûrement besoin d’accéder au numéro de série ou à la date de
fin de la garantie et cela dans des cas très occasionnels. Dès que le parc commence
à avoir une certaine envergure (PME), le besoin d’information est beaucoup plus
grand. On a besoin par exemple des configurations précises des machines, de leurs
licences associées, de leur localisation, d’une gestion des incidents, etc. Le besoin
concret est donc de pouvoir stocker toutes ces informations mais surtout de pouvoir
les retrouver et les modifier rapidement.
a) Gestionnaire Libre de Parc Informatique
Le logiciel que l’on va étudier pour répondre à ce besoin se nomme GLPI. Ce
logiciel est sous licence GNU/GPL v2 qui est donc une licence libre. Il possède déjà
un nombre de clients d’environ 2300 entités dont beaucoup de structures publiques
telles que des universités ou même la Police Nationale. Il possède aussi une grande
communauté autour du projet avec environ 14 000 utilisateurs sur le forum
d’entraide. GLPI est développé en PHP et se présente sous forme d’un service Web.
Il est par conséquent accessible depuis n’importe quel navigateur. Cet outil est
installable sur plusieurs systèmes d’exploitation (Windows, GNU/Linux) et nécessite
des prérequis minimum au niveau des ressources matérielles du serveur.
Il possède un nombre de fonctionnalités impressionnant. Parmi elles, une
gestion des différents composants du parc. Tous les éléments sont pris en compte,
ordinateur, écran, téléphone, consommables, etc. On peut les ajouter, les modifier,
les supprimer, soit une gestion que l’on peut qualifier de classique. Par-dessus cela
une gestion des licences des différents logiciels installés sur chaque périphérique est
aussi disponible. Ces fonctionnalités répondent aux besoins des petites entreprises
qui ne possèdent pas de service informatique. Pour les structures un peu plus
grandes qui ont un service dédié à la gestion du matériel GLPI possède une gestion
PORTE Loïc – Le Libre en entreprise – 2012 Page 13 sur 66
de base de connaissances, ce qui permet de centraliser des procédures, des
réponses à des questions fréquentes ou des informations sur différentes solutions en
place. Pour ces mêmes entreprises, cet outil permet de gérer les emprunts des
différents ordinateurs, clés 3G, etc. En plus de cela GLPI répond aussi aux besoins
des « Service Desk » avec un système de gestion d’incident par ticket.
1.Schéma fonctionnel de GLPI
GLPI répond par défaut à la plupart des besoins des entreprises. Cependant,
s’il ne répond que partiellement aux besoins d’une entreprise, il peut être complété
de plusieurs façons. La première manière est inhérente à la licence GPL. Grâce aux
libertés n°1 et 3 on peut directement modifier le code source pour qu’il corresponde à
notre besoin. Le petit bémol de cette solution est l’impossibilité de mettre à jour sa
version de GLPI. Pour éviter cet inconvénient les développeurs ont créé un système
de plugins qui permettent aux entreprises qui ont des besoins spécifiques de pouvoir
y répondre parfaitement. De nombreux plugins sont déjà disponibles sur le site de
GLPI.
Nous venons de voir que GLPI répond parfaitement aux besoins des
entreprises mais surtout qu’il a une flexibilité que n’aurait pas forcément un logiciel
propriétaire. Cette flexibilité est due à une communauté grandissante avec des
besoins semblables mais aussi certains besoins particuliers. GLPI souffre d’un grand
défaut qui est le manque d’automatisation de l’ajout des informations du parc.
Heureusement, GLPI n’est pas le seul logiciel libre qui permet de connaître son parc.
PORTE Loïc – Le Libre en entreprise – 2012 Page 14 sur 66
b) Open Computers and Software Inventory Next Generation
OCS Inventory NG, que l’on abrégera OCS dans la suite de ce document, est
un outil qui permet lui aussi une gestion du parc mais d’une toute autre façon que
GLPI. Lui aussi est sous licence GNU/GPL v2 et comme GLPI est accessible à
travers une interface Web. Il n’a pas de service pour le « Service Desk » ni d’autre
fonctionnalité d’emprunt de matériel. Cependant il n’a rien à envier à GLPI, ces
fonctionnalités sont plus destinées à l’administrateur système.
Contrairement à GLPI on ne peut pas rentrer/modifier les informations des
différentes machines du parc à la main, tout est automatisé. Le point fort d’OCS est
l’automatisation totale de l’alimentation de la base avec les informations. Cela est
possible grâce à un agent installé sur chacun des postes/serveurs à ajouter en base
qui remonte automatiquement et de manière périodique les informations de l’agent
vers le serveur d’OCS. Cet agent est disponible sur Windows, MacOS et pour les
distributions GNU/Linux et autres UNIX. De plus, lui aussi est sous licence libre, il
peut donc être adapté pour des systèmes non pris en charge actuellement. Pour son
installation, l’agent peut très facilement être déployé par une GPO pour les postes
sous Windows et est déjà disponible dans la plupart des distributions GNU/Linux.
Grâce à cet agent vous pouvez facilement retrouver les informations matérielles et
logicielles de n’importe quelle machine de votre parc ou inversement vous pouvez
rechercher quelles machines possèdent tel logiciel ou matériel.
2. Ocs Inventory NG
Une des autres grandes fonctionnalités d’OCS est son système de diffusion
d’application ou de fichier. Ce système nous permet par exemple de lancer
l’installation d’un logiciel sur tous les postes quel que soit le système d’exploitation (à
condition que le logiciel soit compatible sur ces différents OS). On pourrait comparer
ce système aux GPO disponibles sous les systèmes Windows qui permettent de
contrôler à distance les paramètres du système ainsi que d’installer des applications.
La différence entre les deux systèmes est la compatibilité multi OS d’OCS.
PORTE Loïc – Le Libre en entreprise – 2012 Page 15 sur 66
OCS à lui seul ne peut répondre à tous les besoins d’un service informatique
complexe. Certes, comme GLPI, il possède aussi un système de plugin mais il
accuse un manque trop important de fonctionnalités et on ne va pas redévelopper
GLPI à l’intérieur d’OCS. Mais alors pourquoi ne pas les coupler ?
c) La puissance du couple OCS-GLPI
Les fonctionnalités de GLPI avec l’automatisation d’OCS ? Rien de plus facile.
Ces deux outils s’intègrent très bien ensemble et cela en toute simplicité car les
développeurs de GLPI ont ajouté cette option en natif dans leur solution. Le couplage
ce fait en toute tranquillité et d’une manière vraiment enfantine car elle se fait
directement au niveau de la base de données.
Suite à l’installation de ce couple vous possédez un outil assez puissant pour
gérer un parc de plusieurs milliers d’entités sans trop d’effort à fournir pour le
maintien des données. Ce couple est totalement libre et adaptable à tous les besoins
grâce à leurs systèmes de plugin et à leur licence. De plus comme c’est souvent le
cas avec les outils libres, ils sont totalement gratuits. On pourrait essayer de justifier
l’utilisation de logiciels propriétaires avec le support qui est souvent fourni avec les
logiciels de ce type. Cet argument est tout à fait justifiable dans un milieu
professionnel à la seule exception qu’OCS et GLPI possèdent une communauté
immense qui fournit leur aide grâce à différents supports comme les chats IRC, les
forums ou même les wiki. De plus, si le support de la communauté ne suffit pas il est
3 GLPI-OCS
PORTE Loïc – Le Libre en entreprise – 2012 Page 16 sur 66
tout à fait possible de souscrire à un support professionnel payant auprès de ces
deux outils. Nous venons donc de constater que nous pouvons gérer notre parc
librement, mais peut-on aussi voir la santé des entités qui le constituent librement ?
2. Supervision
Le parc informatique fournit le support pour les différents outils nécessaires à
une entreprise pour fonctionner. Ces différents outils sont souvent critiques pour
cette dernière et par conséquent il est indispensable d’installer un outil de
supervision. Un outil de supervision permet de récolter des informations concernant
l’état d’une machine, d’un service ou d’un réseau. Il existe plusieurs outils libres de
supervision correspondant à plusieurs besoins. Il existe par exemple Munin ou
Zabbix. Nous étudierons ici le couple Nagios-Centreon. Ce couple a été choisi pour
sa puissance et sa grande communauté ce qui lui permet d’avoir beaucoup de
ressources à disposition.
a) Le concept
La supervision peut être définie comme une récolte d’informations qui
permettent de déterminer l’état à un instant T du service à surveiller. Si ce service
n’est pas dans un état attendu à cet instant T, une politique de prévention des
administrateurs ou une politique de tentative de réparation du service est alors
lancée. Par exemple, on peut vérifier l’état du serveur de base de données. S’il est
arrêté, un mail est alors envoyé aux administrateurs en charge du serveur.
La récolte des informations essentielles à un outil de supervision se fait
essentiellement avec ces trois méthodes :
surveillances des journaux
test actif du service
récupération d’information SNMP
La méthode de surveillance des journaux consiste essentiellement à
rechercher un message d’erreur dans les journaux du service à superviser. Cela se
fait souvent sur la machine locale où est installé le système de supervision.
La seconde méthode est une méthode on ne peut plus fiable car elle consiste
à vérifier directement le bon fonctionnement de ce service en faisant appel à lui. Par
exemple pour superviser un serveur Web le superviseur va directement appeler une
page Web que ce service héberge.
La dernière méthode, qui est aussi la plus utilisée, est la récupération des
informations à travers le protocole SNMP. Ce protocole permet de demander
directement au serveur des informations le concernant comme le montre cet
exemple:
PORTE Loïc – Le Libre en entreprise – 2012 Page 17 sur 66
$snmpget -v 1 -c pmsicommunity srv-tux2 1.3.6.1.4.1.2021.10.1.3.1
UCD-SNMP-MIB::laLoad.1 = STRING: 0.12
Dans cet exemple on demande au serveur « srv-tux2 » sa charge à cet instant
et il nous répond « 0.12 ». Par conséquent ce serveur n’est pas saturé. Ceci est la
vérification dite « active » de SNMP car c’est l’outil de supervision qui demande
l’information. Il existe aussi une méthode dite « passive » qui permet au service
superviseur de fournir de lui-même l’information lorsque celle-ci dépasse un certain
seuil.
Toutes ces méthodes de récolte d’information sont utilisées dans la majorité
des outils de supervision. Nous allons voir comment elles sont traitées par l’outil
Nagios.
b) Nagios
Nagios est le service de supervision le plus connu du Libre. Il est sous licence
GNU/GPL et est souvent qualifié de très puissant grâce à une très grande
communauté qui met à disposition des plugins permettant de superviser un nombre
impressionnant de services et de machines. Nous n’expliquerons pas ici l’installation
d’un tel outil (ce n’est pas le but de ce document) mais juste quelques-unes de ses
fonctionnalités et son principe de fonctionnement global. On peut séparer Nagios en
trois parties distinctes à savoir l’ordonnanceur, les greffons et l’interface Web.
4. Nagios
PORTE Loïc – Le Libre en entreprise – 2012 Page 18 sur 66
Nagios est avant tout un ordonnanceur c'est-à-dire un processus qui lance de
manière définie des actions en fonction des informations qui sont en sa possession.
C’est cette partie qui lancera les processus qui iront récupérer les informations et
c’est aussi cette partie qui lancera une procédure en cas criticité d’un service
supervisé. Les processus qu’il lance sont pour la plupart des greffons aussi appelés
plugins ou dans certain cas des sondes.
Les greffons sont le point fort de Nagios et c’est sur cette partie que la
communauté est la plus présente. Un greffon est un script à part entière qui va
vérifier l’état d’un service. Ils sont souvent écrits en perl mais peuvent être écrit en
n’importe quel langage car seul le retour du script est interprété par Nagios. On
trouve des plugins pour Nagios pour la plupart des services que l’on souhaite
superviser. Pour preuve de la simplicité de l’écriture de ces greffons voici un exemple
que j’ai écrit qui me retourne le nombre de clients connectés au VPN.
#/bin/bash
file=/etc/openvpn/openvpn-status-*.log nb=$(cat $file |grep "^CLIENT_LIST" |wc -l)
echo "OK $nb users connected | users=$nb;100;100"
exit 0
La dernière partie est l’IHM (Interface Homme-Machine) qui se présente sur
une interface Web. Cette interface est principalement là pour nous informer en un
simple coup d’œil de l’état de tous les services supervisés comme nous le montre
cette capture d’écran.
Pour un administrateur système il peut être essentiel de connaître le temps
d’inaccessibilité d’un service. C’est pourquoi cette interface est aussi là pour pouvoir
PORTE Loïc – Le Libre en entreprise – 2012 Page 19 sur 66
facilement faire du « reporting ». On peut générer différents rapports concertant le
temps d’inaccessibilité d’un service ou d’un système.
Cette interface n’est malheureusement pas disponible pour la configuration
des services ou des machines à superviser, il faut par conséquent modifier la
configuration de Nagios directement dans ses fichiers de configurations et cela n’est
pas à la portée du premier venu et peut s’avérer très compliqué si le parc est
constitué de plusieurs dizaines/centaines de machines avec des services particuliers
sur chacune d’elles. Heureusement certains développeurs l’ont bien compris et ont
développé un outil du nom de Centreon.
c) Centreon
Centreon, anciennement appelé Oreon, est un projet qui avait pour objectif de
fournir une interface simple de configuration pour Nagios mais il est maintenant
beaucoup plus que ça. Il est aussi est sous licence GNU/GPLv2 et est utilisable à
travers une interface Web.
Comme expliqué plus haut Nagios possède des fichiers qui servent à le
configurer, c’est une des premières connexions entre Centreon et Nagios. En effet,
dans Centreon on configure directement les services et les machines à superviser
puis Centreon génère les fichiers pour Nagios.
Centreon possède d’autres fonctionnalités qui permettent de remplacer
efficacement l’interface de Nagios car lui aussi possède un système de « reporting ».
Ce projet se couple à la base Nagios grâce à NDO qui permet à Nagios d’écrire dans
une base lisible par Centreon. Cette liaison permet à Centreon de récupérer l’état
des différentes sondes mais aussi de garder en base les informations
complémentaires ce qui lui permet grâce à RRDTOOL (qui est un projet libre de
générateur de graphique) de dessiner des graphiques complets du suivi du service
dans le temps.
PORTE Loïc – Le Libre en entreprise – 2012 Page 20 sur 66
5.Exemple de graphique de charge système
Centreon possède aussi un système d’utilisateur avancé. Grâce à Centreon,
on peut se servir des utilisateurs d’une base LDAP et surtout leur affecter différents
droits. Cette gestion des utilisateurs est indispensable lorsque le parc informatique
devient d’une taille conséquente et que plusieurs personnes ou services ont besoin
des informations fournies par l’outil de supervision. De plus, dans une configuration
de TGE, il sera surement nécessaire d’avoir plusieurs serveurs Nagios (appelés
individuellement alors « poller ») centralisés dans un seul serveur Centreon.
Le couple Centreon-Nagios est certes très puissant et nous n’avons vu ici
qu’une infime partie de leurs fonctionnalités. Leur défaut commun est leur installation
qui est loin d’être simple. A cela la communauté a répondu par un autre projet :
« FAN ».
Le but du projet FAN est de parer au souci d’installation de Nagios et
Centreon en fournissant ces deux outils (et bien d’autres) déjà packagés. Ces
paquets sont disponibles pour la distribution GNU/Linux Centos ou alors vous pouvez
directement installer depuis le cd-rom FAN un nouveau système avec les outils
préinstallés.
Grâce à Nagios et Centreon, le Libre permet de répondre au besoin de
supervision qu’ont les moyennes et grandes entreprises. De plus ces deux outils,
comme les outils précédents sont gratuits ce qui n’est pas négligeable pour une
entreprise. Je ne pense pas qu’une petite entreprise ait besoin de tels outils mais elle
se tournerait plutôt vers Munin qui est un logiciel libre de supervision simplifiée.
3. Sécurité
Une infrastructure se doit de comporter des outils qui assurent la sécurité de
cette infrastructure. La sécurité est souvent mise à l’épreuve par les utilisateurs eux-
PORTE Loïc – Le Libre en entreprise – 2012 Page 21 sur 66
mêmes qui se rendent sur des sites malveillants sans le savoir et qui contaminent le
réseau avec des virus. Pour contrer cela, l’utilisation d’un proxy HTTP couplé à un
antivirus est indispensable. Plusieurs projets issus du Libre remplissent ce besoin,
comme ExaProxy, qui n’est pas encore en version stable, ou Tinyproxy, qui n’est pas
dimensionné pour une entreprise. Le logiciel que nous étudierons ici s’appelle Squid.
a) Squid : le calamar libre
Squid est un proxy libre sous licence GNU/GPL pour les protocoles
HTTP/HTTPS/FTP et quelques autres. Il est disponible pour plusieurs systèmes
incluant Windows mais il est dans la plupart des cas installé sous une distribution de
type Unix ou Unix like.
Un proxy est une sorte de passerelle entre le poste client et le serveur que l’on
veut joindre. Par conséquent la transaction passe par cette passerelle qui permet
d’effectuer des actions sur elle comme par exemple la bloquer. En plus de ses
fonctionnalités de proxy http, Squid possède des fonctionnalités de cache qui
permettent de garder le résultat des requêtes les plus courantes et de les rejouer
sans contacter le serveur distant ce qui permet de préserver la bande passante et
d’avoir une réponse très rapide. Nous ne verrons pas cette fonctionnalité car chez
PMSIpilot la bande passante est suffisante et nous n’avons pas le besoin de la
préserver.
Squid ne possède pas d’interface et la configuration se fait uniquement en
lignes de commandes. Certains projets libres ont pour objectif de lui fournir un
environnement graphique complet comme le projet Artica qui n’est pas assez stable
(à mon avis) pour être mis en place en entreprise. De plus une interface de
configuration n’est pas vraiment nécessaire car une fois configuré il est rare que l’on
change son fonctionnement. En ce qui concerne son installation, Squid est déjà sous
forme de paquets dans la plupart des distributions GNU/Linux. Par exemple sur une
distribution Centos 6 il suffit de taper :
#yum install squid
Ensuite tout se passe dans le fichier de configuration qui est bien souvent
« /etc/squid/squid.conf ». Dans ce fichier se retrouvent les informations essentielles
pour un proxy telles que le port d’écoute et les serveurs DNS. En plus de cela nous
pouvons définir des « acl » (access control lists). Ces différentes acl nous permettent
de contrôler avec précision quel protocole est disponible pour quelle partie du
réseau. Une fois cette partie configurée, il ne reste qu’à lancer simplement le service.
#service squid start
A cette étape nous ne possédons qu’une passerelle qui permet à nos
utilisateurs de sortir sur Internet mais aucun contrôle sur le contenu ne sera fait
lorsque les connections seront effectuées. Une partie des virus font leur entrée dans
un réseau par la navigation des utilisateurs qui naviguent sur des sites peu
PORTE Loïc – Le Libre en entreprise – 2012 Page 22 sur 66
recommandés. Il serait donc bien de pouvoir analyser, par un antivirus, les flux qui
transitent entre Internet et les utilisateurs. Il faut donc le coupler à un antivirus, ici
ClamAV.
b) ClamAV
Clam Antivirus est un des antivirus libres disponible sur des distributions
GNU/Linux. Il est souvent utilisé sur des serveurs pour scanner les e-mails, il est
aussi parfois directement intégré dans les pare-feu pour scanner les flux en direct.
Nous utiliserons ClamAV un peu dans le même type de fonctionnement à savoir
scanner les requêtes des utilisateurs en direct.
Comme pour Squid l’installation de ce logiciel est très simple :
#yum install clamd
Suite à cela, il est conseillé d’ajouter une routine pour mettre à jour l’antivirus
régulièrement ce qui se fait par l’intermédiaire du daemon crond sur les distributions
GNU/Linux.
Pour relier l’antivirus à notre proxy Squid il faut utiliser le protocole ICAP :
Internet Content Adaptation Protocol. Ce protocole permet d’appeler des procédures
à partir des flux passant par le proxy. Il est aussi disponible pour des serveurs mails.
Ce protocole est utilisé à travers le serveur « c-icap » qui est sous licence
GNU/LGPL qui permet à un produit libre d’être intégré dans des produits
propriétaires. Il ne reste plus qu’à relier Squid à c-icap et c-icap à ClamAV.
Pour la liaison c-icap ClamAV on utilise un autre projet issu de la communauté
du Libre qui a un nom très parlant : SquidClamav. Ce projet sous licence GNU/GPL
v3 est en réalité un service icap. Une fois installé, on le configure en lui indiquant où
se trouve ClamAV et sur quelle page rediriger l’utilisateur en cas de virus. Puis on
informe c-icap de la présence d’un nouveau service en ajoutant une simple ligne
dans son fichier de configuration :
Service squidclamav squidclamav.so
Pour finir de coupler Squid et ClamAV, il reste à spécifier à Squid de
transmettre ses requêtes au serveur ICAP. Comme d’habitude quelques lignes
suffisent dans le fichier de configuration :
PORTE Loïc – Le Libre en entreprise – 2012 Page 23 sur 66
icap_enable on
icap_send_client_ip on icap_send_client_username on icap_client_username_header X-Authenticated-User
icap_service service_req reqmod_precache bypass=1 icap://127.0.0.1:1344/squidclamav adaptation_access service_req allow all icap_service service_resp respmod_precache bypass=1 icap://127.0.0.1:1344/squidclamav adaptation_access service_resp allow all
Par ces quelques lignes, on demande à Squid de contacter le service
SquidClamav du serveur icap répondant sur l’adresse locale sur le port 1344 pour les
requêtes et les réponses qui vont passer par lui. Mais aussi que si le service ne
répond plus de continuer (bypass=1) sans interruption de service.
A cette étape, nous filtrons donc les virus, ce qui est le besoin primaire de
l’entreprise, mais souvent une entreprise souhaite filtrer certains sites à contenu
indésirable. Pour cela SquidGuard est nécessaire.
c) SquidGuard
SquidGuard est un plugin pour Squid sous licence GNU/GPL v2. Il sert de
filtre mais aussi de redirection et de contrôle d’accès. Le besoin de filtrage d’une
entreprise vient souvent d’un manque de productivité des employés qui sont distraits
par Internet. Ce besoin peut aussi venir de la surcharge de bande passante que
peuvent provoquer ces distractions.
Ce plugin est souvent fourni avec des listes de sites classés par genre. Ce
sont des listes pré-remplies de sites que l’on peut bloquer. Par exemple il contient
une liste de site à caractère violent ou de contenu pour adulte. Ces listes ne sont pas
exhaustives et peuvent être modifiées facilement.
SquidGuard permet par exemple de filtrer certains sites ou listes de sites
durant une période donnée pour certaines personnes.
acl { admin { pass any
} pmsi-clients within workhours { pass socialnetwork any } else { pass !socialnetwork any
} default { pass none redirect http://10.0.0.35/error.php log interdit.log } }
PORTE Loïc – Le Libre en entreprise – 2012 Page 24 sur 66
Cet exemple tiré du fichier de configuration de SquidGuard nous montre le
potentiel de cet outil. Ici on peut voir que le groupe administrateur n’est pas filtré, que
le groupe pmsi-clients n’a pas accès à la liste de sites « socialnetwork » durant les
heures de travail et que les autres n’ont accès à rien et sont redirigés vers une page
interne.
Le problème des listes déjà complétées est la probabilité que ces différentes
listes contiennent des sites bloqués non souhaités. Suite à cette conclusion, il peut
être utile de mettre une page personnalisée vers laquelle sont redirigés les
utilisateurs bloqués et d’ajouter un formulaire de contact vers le support informatique
pour faire une demande de déblocage qui aboutira dans la boîte mail de la personne
en charge.
Voici un graphique de fonctionnement général de la solution complète une fois
mise en place.
Une fois que tous ces outils sont paramétrés il ne reste plus qu’à rediriger les
utilisateurs dans notre proxy.
d) Sarg
Sarg est un petit outil sous GNU/GPL v2 qui analyse les logs et génère des
rapports sous forme HTML. Grâce à ses rapports on peut rapidement constater
l’utilité du cache ou quel poste utilise le plus de bande passante. Il existe d’autres
outils plus complets que celui-ci pour faire de l’analyse très précise mais ce sont
souvent des clients lourds moins pratiques.
PORTE Loïc – Le Libre en entreprise – 2012 Page 25 sur 66
e) Aller plus loin
La sécurité n’est pas juste une question de proxy. Cela sert uniquement à
éviter que l’utilisateur télécharge de virus et contamine le réseau. Pour aller plus loin
dans la sécurité il peut être bon d’installer un IPS et des HIPS. Dans cette catégorie
des outils libres tels que Snort et OSSEC peuvent s’avérer très performants.
On vient donc de démontrer que la sécurité n’est pas une question de logiciel
propriétaire ou non. Des outils libres peuvent répondre à des besoins complexes
pour garantir la sûreté du réseau.
4. Déploiement de systèmes par le réseau
A l’heure de la dématérialisation des services, le déploiement de systèmes par
le réseau est un besoin inhérent au développement d’une entreprise. Ce besoin,
n’est certes pas ressenti par les petites entreprises, mais est relativement utile
lorsque le parc s’agrandit pour l’installation des postes utilisateurs mais aussi des
serveurs.
Pour répondre à ce besoin il faut que les stations de travail soient compatibles
PXE (Preboot Execution Environment). Concrètement, ce système va s’activer au
démarrage puis, une fois lancé, il va contacter le serveur DHCP pour avoir l’adresse
du serveur TFTP où se trouvent les différentes images de systèmes à démarrer.
Nous ne détaillerons pas l’installation d’un serveur TFTP car beaucoup de tutoriels
sont disponibles sur Internet mais juste quelques-unes des différentes possibilités
d’un tel système.
PORTE Loïc – Le Libre en entreprise – 2012 Page 26 sur 66
La première chose utile à faire est de fournir un petit menu de sélection pour
choisir parmi les différents systèmes souhaités. Parmi ces systèmes on ajoutera les
systèmes d’exploitation des postes utilisateurs et des serveurs ce qui aura pour effet
d’avoir une installation beaucoup plus rapide que l’installation depuis un cd-rom et
représentera donc un gain de temps mais on peut aussi ajouter des services utiles
pour les administrateurs systèmes. Cette partie est souvent oubliée alors que c’est
une des fonctionnalités des plus intéressantes du déploiement d’images par le
réseau. A titre d’exemple, voici différents systèmes disponibles sur le serveur de
PMSIpilot :
Memtest : Outil sous licence GNU/GPL de test de mémoire RAM.
Clonezilla : Outil libre de copie de disque à disque ou de disque vers
image.
SuperGrub2 : Logiciel qui permet de détecter et de démarrer sur les
systèmes d’exploitation présents sur la machine.
Gparted : Logiciel libre pour modifier rapidement le partitionnement des
disques.
Dell Diagnostic : Outils de diagnostic pour les machines Dell.
Ubuntu 11.04 live x86 : Live système pour régler les soucis non pris en
charge par les autres outils.
Ces différents outils sont extrêmement utiles en cas de problème sur une
machine et peuvent faire gagner un temps considérable. De plus le PXE peut
permettre une installation de système d’exploitation préconfiguré et directement
fonctionnel si le système le permet.
Nous venons de voir que le Libre peut répondre à des besoins qu’exprimerait
une entreprise vis-à-vis de son infrastructure à travers les besoins de gestion, de
surveillance, de sécurité et de déploiement. Non seulement le Libre répond à ces
besoins de manière concrète mais il le fait à moindre coût car tous les outils
présentés ici sont gratuits et possèdent une communauté qui permet une évolution
rapide des outils. Nous allons maintenant rentrer dans des parties plus techniques à
travers le poste utilisateur.
B. Poste utilisateur
Les postes utilisateurs sont un point essentiel pour la productivité d’un
employé. Si l’employé est sur un poste avec un système d’exploitation lent ou non
adapté à ses besoins, l’employé ne peut travailler correctement et donc être
productif. Le système doit aussi pouvoir mettre à disposition de l’utilisateur les
ressources de l’entreprise de manière simple et efficace. L’entreprise a quant à elle
besoin d’avoir le contrôle sur les différents postes pour des raisons de sécurité
évidentes.
Dans cette partie nous étudierons le cas mis en place dans l’entreprise
PMSIpilot. Contrairement aux parties précédentes, ici nous rentrerons plus dans la
PORTE Loïc – Le Libre en entreprise – 2012 Page 27 sur 66
technique car l’utilisation d’un système d’exploitation basé sur GNU/Linux a nécessité
quelques modifications.
1. Choix de la distribution
Dans l’entreprise PMSIpilot les postes sont séparés en deux grands groupes :
les postes des services techniques et les autres. Les ordinateurs à destination
d’utilisateurs ne faisant pas partie du service technique sont pour la plupart sous
Windows XP avec quelques Windows 7. Cette séparation s’explique principalement
par la différence des besoins des services. Nous nous intéresserons aux autres
postes, les machines des services techniques.
a) Avant
Suite à l’évolution de l’entreprise certaines mauvaises habitudes avaient été
gardées. Chaque membre d’un service technique possédait une machine avec une
distribution GNU/Linux au choix de l’utilisateur ou de son supérieur direct, le parc
était donc très divisé. On pouvait trouver des Ubuntu 9.10, 10.04 et 11.04 ainsi que
des Mandriva 2010.0 2010.1 2010.2 et une Mageia 1.
Ce parc engendrait donc des complications en termes de maintenance mais
aussi en versions d’application ce qui peut être très dérangeant pour des
développeurs PHP. Aucune de ces machines n’avait d’accès distant ni d’utilisateur
commun. La gestion de la machine revenait à la charge de l’utilisateur. Par
conséquent l’utilisateur devait posséder des connaissances concernant l’utilisation
d’un tel système. De plus, la non-administration centralisée des systèmes a un coût
pour l’entreprise car c’est une perte de temps pour chacun des employés.
Ce genre de schéma est suffisant pour une petite entreprise mais devient très
vite contraignant et non adapté à une entreprise avec un nombre d’employés
conséquent.
b) Uniformisation des systèmes
La première chose à faire pour retrouver un environnement de système
d’exploitation professionnel sain est l’uniformisation de ces différents systèmes. Dans
cette optique, un choix crucial a dû être fait en ce qui concerne le système
d’exploitation commun. Sachant qu’une licence Windows XP ou Windows 7 est
disponible avec les machines. Windows n’a pas été exclu pour son prix mais il n’a
pas été retenu car ce système n’est pas adapté aux besoins des développeurs Web.
Suite à cela, il restait à choisir parmi toutes les distributions GNU/Linux.
Une distribution GNU/Linux est un système d’exploitation basé sur le noyau
Linux et des logiciels libres de GNU auxquels s’ajoute une quantité de logiciels qui
forment un système d’exploitation complet. Il existe une quantité énorme de
distributions GNU/Linux qui sont souvent basées sur une des grandes distributions
GNU/Linux à savoir Debian, RedHat et Slackware Linux. Je vous invite à suivre ce
PORTE Loïc – Le Libre en entreprise – 2012 Page 28 sur 66
lien pour voir un graphique explicatif concernant les liens entre les différentes
distributions : http://upload.wikimedia.org/wikipedia/commons/8/8c/Gldt.svg.
Parmi le choix monumental des différentes distributions, nous avons opté pour
la distribution Ubuntu dans sa version 11.04. Le choix de Ubuntu a été effectué car
cette distribution possède une des plus grandes communautés actives, ce qui permet
d’avoir un système qui est maintenu. Ensuite cette distribution possède des paquets
qui sont relativement à jour ce qui permet d’installer des logiciels simplement sans
avoir besoin de compiler chaque logiciel. Ubuntu offrait donc un bon compromis entre
stabilité et fonctionnalités.
En ce qui concerne le Libre, on ne peut dire qu’une distribution est libre que si
la totalité des logiciels qui se trouvent installés sur ce système le sont également. Ce
n’est pas tout le temps le cas surtout en ce qui concerne les pilotes graphiques
propriétaires qui offrent de bien meilleures performances que les drivers libres.
2. Adaptation
Une fois la distribution choisie il faut l’adapter au besoin d’une entreprise. Tout
d’abord, il faut unifier la base utilisateur des postes clients, mettre à disposition les
différentes ressources de l’entreprise et s’assurer de l’accessibilité des postes
utilisateurs.
a) Utilisateur
Les utilisateurs des entreprises sont stockés le plus souvent dans une base
Active Directory. Il est possible d’utiliser cette base avec un couple d’outils libres
Samba et Kerberos. Le souci est que ce couple est compliqué à mettre en place,
c’est pourquoi nous utiliserons un petit outil qui est basé sur ce couple pour nous
aider.
Likewise-open est un petit utilitaire sous licence LGPL qui permet à un
système non Windows de rejoindre un domaine Active Directory, ce qui lui permet
d’utiliser la base des utilisateurs de l’entreprise. Il possède une interface graphique
simple mais cela ne nous intéresse pas car nous souhaitons automatiser cette tâche
pour avoir le minimum de manipulations à faire après l’installation de l’Ubuntu. C’est
pourquoi, suite à l’installation de Likewise-open, nous n’utiliserons qu’une simple
ligne de commande pour ajouter la machine au domaine :
#domainjoin-cli join --userDomainPrefix $domainPrefix $domainName
$domainAdminLogin $domainAdminPassword
Les variables $domainPrefix, $domainName, $domainAdminLogin et
$domainAdminPassword contiennent les informations relatives à leur nom. Une fois
cette commande exécutée on peut vérifier la bonne présence de la machine dans
l’Active Directory :
PORTE Loïc – Le Libre en entreprise – 2012 Page 29 sur 66
Suite à cela, la machine est reliée au domaine et nous pouvons nous
connecter avec n’importe quel utilisateur de la société après redémarrage de la
machine. L’UID et les différents groupes de l’utilisateur seront les mêmes que ce que
nous pouvons voir dans l’Active Directory :
loic.porte@tech001:~$ groups |sed 's/ /\n/g'
ABC-OBJECTIF\utilisa.^du^domaine
ABC-OBJECTIF\admins^du^domaine ABC-OBJECTIF\sbs^report^users ABC-OBJECTIF\abc-objectif
ABC-OBJECTIF\proposer^des^applications^d'assistance^à^distance ABC-OBJECTIF\equipe-support
ABC-OBJECTIF\equipe-technique ABC-OBJECTIF\usage_proxy ABC-OBJECTIF\admin_linux
ABC-OBJECTIF\vpn ABC-OBJECTIF\vpn_fullaccess
ABC-OBJECTIF\partage-terniac
ABC-OBJECTIF\esx-test^admins
Pour le moment tous les utilisateurs peuvent se connecter à cette machine
indépendamment de leur statut dans l’Active Directory or nous ne souhaitons pas
qu’un Administrateur est l’impossibilité d’administrer la machine. Pour cela nous
utilisons un logiciel déjà présent dans Ubuntu à savoir « sudo ». Ce logiciel permet
d’autoriser certains utilisateurs ou groupes d’utilisateurs à lancer des commandes en
tant qu’utilisateur root qui est l’utilisateur administrateur des systèmes GNU/Linux.
Pour le configurer, il suffit d’ajouter une ligne dans le fichier de configuration
/etc/sudoers :
%ABC-OBJECTIF\\admin_linux ALL=(ALL) ALL
ABC-OBJECTIF\\laurent.besson ALL=(ALL) ALL
Avec la première ligne nous autorisons les membres du groupe du domaine
qui se nomme « admin_linux » à utiliser toutes les commandes avec les droits
administrateurs de la machine.
La seconde ligne donne ces droits à un utilisateur ici l’utilisateur est
« laurent.besson ». Ce besoin est spécifique à l’entreprise PMSIpilot car les
développeurs doivent avoir accès à leur machine en totalité pour paramétrer les
PORTE Loïc – Le Libre en entreprise – 2012 Page 30 sur 66
différents services installés sur leur machine comme par exemple le serveur Web. Si
le besoin n’est pas requis par l’entreprise il ne faut en aucun cas le faire car cela
représente une faille de sécurité.
A cette étape, les administrateurs peuvent se connecter en local à la machine
de l’utilisateur. Ce n’est pas suffisant car nous avons besoin d’une connexion
distante qui permet de maintenir les postes. Pour cela on utilise le protocole SSH à
travers le logiciel Openssh. Ce protocole permet une connexion distante à chaque
machine en ligne de commande avec le couple login-mot de passe d’un utilisateur.
Cette demande de login-mot de passe peut être gênante pour planifier des tâches de
maintenance c’est pourquoi l’on génère un couple de clés ssh privé/public pour le
support technique que l’on insère dans la machine hôte.
Pour le moment nous avons un poste utilisateur fonctionnel totalement libre et
gratuit sur lequel les utilisateurs peuvent se connecter et que les administrateurs
peuvent maintenir. L’utilisateur ne peut toujours pas accéder aux ressources de
l’entreprise comme par exemple les partages de fichiers.
b) Ressources de l’entreprise
L’entreprise met des ressources à disposition des employés. Ces ressources
sont souvent fournies au travers le partage de fichiers par le réseau. Il faut donc les
intégrer à notre distribution afin qu’elles soient transparentes pour l’utilisateur et
simples d’accès. Les dossiers de partage sont chose courante en entreprise, ils
permettent de partager des fichiers avec les employés ou d’effectuer des
sauvegardes.
Il existe plusieurs protocoles de partage de fichiers comme le NFS ou le FTP.
Le plus utilisé en entreprise est le protocole CIFS (Common Internet File System)
anciennement appelé Server Message Block. Ce protocole est le plus utilisé en
entreprise car il est natif à Windows et permet entre autres de monter des lecteurs
réseaux ou de partager les imprimantes. L’implémentation de ce protocole se fait par
l’intermédiaire du logiciel libre Samba sur les postes GNU/Linux.
Pour accéder à un partage CIFS sur les postes Ubuntu plusieurs méthodes
sont possibles. Pour commencer on pourrait utiliser uniquement la ligne de
commande suivante :
PORTE Loïc – Le Libre en entreprise – 2012 Page 31 sur 66
loic.porte@tech001:~$ smbclient //srvabc2/General
Enter ABC-OBJECTIF\loic.porte's password:
Domain=[abc-objectif] OS=[Windows Server 2008 R2 Standard 7601 Service Pack 1] Server=[Windows Server 2008 R2 Standard 6.1]
smb: \> ls [….] aides.zip A 24384472 Mon Dec 5 20:35:08 2011
Assises D 0 Mon Dec 5 20:35:10 2011 BADGES D 0 Wed Mar 28 10:57:59 2012
bookmarks_com.html A 14927 Mon Dec 5 20:42:09 2011 boot.iso A 35651584 Mon Dec 5 20:42:14 2011
[….]
Comme on peut le voir, ce n’est pas la solution la plus simple et intuitive. Une autre
solution est d‘intégrer le partage dans le système de fichiers au démarrage et pour
cela nous avons deux possibilités. On peut ajouter une ligne dans le fichier /etc/fstab
qui contient toutes les partitions du système qui doivent être montées au démarrage :
//srvabc2/General /mnt/General/ cifs noperm,rw,username=*****,password=****,iocharset=utf8,nobrl 0 0"
Avec cette solution, l’utilisateur a accès au partage « General » qui se trouve
sur le server « srvabc2 » de manière transparente en allant tout simplement dans le
dossier /mnt/General de son ordinateur. Le problème est qu’il faut ajouter le
login/password en clair dans un fichier, ce qui n’est tout simplement pas autorisé en
entreprise car cela représente une faille de sécurité conséquente. La solution
retenue est l’utilisation d’un plugin PAM.
PAM est le module d’authentification des systèmes GNU/Linux. Il est
extrêmement modulaire et permet l’utilisation de plugins. Dans le cas présent, nous
utiliserons le plugin libre pam_mount. Ce plugin nous permet d’utiliser le couple
login/password de l’utilisateur à sa connexion et de l’utiliser pour monter sur le
système les partages que l’on souhaite. Comme d’habitude cela se fait à travers un
fichier de configuration dans lequel on ajoute une ligne par partage. Voici un exemple
pour le partage « General » :
<volume fstype="cifs" server="srvabc2" path="general"
mountpoint="/media/%(DOMAIN_USER)/general" user="*" options="username=%(DOMAIN_USER),user=%(DOMAIN_USER),domain=ABC-
OBJECTIF,sec=ntlmsspi" />
On constate que les mêmes informations que dans le fichier fstab sont
présentes à l’exception près du login qui est remplacé par « %(DOMAIN_USER) » et
du mot de passe qui est entré dynamiquement par pam_mount. Concrètement,
l’accès à ce partage va se faire de manière transparente pour l’utilisateur que ce soit
par l’intermédiaire d’une ligne de commande ou d’une interface graphique :
PORTE Loïc – Le Libre en entreprise – 2012 Page 32 sur 66
loic.porte@tech001:~$ ls /media/loic.porte/general/
aides.zip
Assises BADGES
bookmarks_com.html boot.iso
[…]
Le besoin de partage de fichiers qu’exprime la plupart des entreprises n’est
donc pas une limite pour l’utilisation d’une distribution basée sur le Libre. Il reste un
dernier problème, il est inconcevable de passer sur tous les postes pour leur installer
les différents partages car cela représente une perte de temps proportionnelle au
nombre de machines. C’est pour cette raison que le besoin de diffusion d’application
devient indispensable.
c) Dépôt de logiciels
La quasi-totalité des distributions GNU/Linux utilise un système de paquets
pour installer leurs applications. Un paquet contient, pour simplifier, une application. Il
existe deux grands types de paquets : les paquets format deb et format rpm. Ubuntu
utilise les paquets dérivés de la distribution Debian à savoir les debs.
Commençons par voir comment construire un fichier deb qui contient une
application. Pour cet exemple nous construirons un fichier deb qui fournira au client
les partages réseaux de l’entreprise. Nous appellerons ce paquet pmsishare.
Premièrement nous devons définir ce que va faire le paquet. D’après ce que
nous avons vu ci-dessus il nous suffit d’installer pam_mount et de modifier sa
configuration pour qu’elle prenne en charge les différents partages de l’entreprise.
Ensuite il faut construire une architecture de dossier spécifique :
PORTE Loïc – Le Libre en entreprise – 2012 Page 33 sur 66
->pmsishare/
--->DEBIAN/
----->control (les informations concernant le paquet) ----->postinst (script exécuté avant l'installation du paquet)
--->etc/ ----->security/ -------> pam_mount.conf.xml-pmsi
----->share/ ------->doc/
--------->changelog (journal des changements apportés)
Le fichier « control » est un fichier spécifique au script deb il contient des
informations telles que le nom du paquet, sa version une description ou encore ses
dépendances. Voici l’exemple de ce fichier pour ce paquet.
Package: pmsishare
Version: 1.0 Section: base
Priority: optional Architecture: all Depends: libpam-mount, cifs-utils
Maintainer: PORTE Loïc <[email protected]>
Description: Ajoute les partages de pmsipilot grace a libpam-mount
On constate dans ce fichier que notre futur paquet aura besoin des paquets
nommés libpam-mount et cifs-util. Grâce à ses dépendances ce paquet ne peut
s’installer si ses dépendances ne sont pas déjà installées.
Le fichier pam_mount.conf.xml-pmsi contient la configuration finale de
pam_mount. Il ne reste plus qu’à le mettre en place à l’installation. C’est ici
qu’intervient le script postinst.
#!/bin/bash cp /etc/security/pam_mount.conf.xml /etc/security/pam_mount.conf.xml.old
cp /etc/security/pam_mount.conf.xml-pmsi /etc/security/pam_mount.conf.xml sed -i 's/^Priority.*$/Priority: 300/' /usr/share/pam-configs/libpam-mount
pam-auth-update –package
Comme on le constate, ce script est très concis. Les lignes 2 et 3
sauvegardent l’ancienne configuration et la remplacent par celle que nous avons
choisie. Les deux dernières lignes quant à elles augmentent la priorité du plugin
pam-mount pour éviter les conflits avec Likewise-open.
Il ne reste plus qu’à construire le fichier deb :
$dpkg-deb --build pmsishare
Nous sommes donc en possession d’un paquet, qui lorsqu’il est installé sur
une Ubuntu monte automatiquement les partages de l’entreprise à la connexion de
l’utilisateur. Il nous manque juste un moyen simple de les diffuser.
PORTE Loïc – Le Libre en entreprise – 2012 Page 34 sur 66
Les paquets sont disponibles soit directement sur le site des différents projets
soit directement sur les sites des différentes distributions. Ce rassemblement de
paquets est nommé un dépôt ou repository en anglais. Les paquets disponibles dans
ces dépôts sont créés et contrôlés par la communauté de la distribution et sont
installables très facilement à travers des applications appelées « gestionnaires de
paquets ». Sous Ubuntu, nous utiliserons la commande apt-get pour installer les
paquets.
En entreprise il peut être utile de posséder un dépôt personnel afin de rendre
disponibles des applications et des mises à jour spécifiques à l’entreprise. Un dépôt
se construit très facilement grâce à l’outil reprepro. Il suffit juste de remplir quelques
fichiers de configurations et de remplir le dépôt avec le nouveau paquet créé :
$reprepro -Vb . includedeb natty pmsishare
Une fois le premier paquet ajouté l’architecture du dépôt est créée. Il ne reste
plus qu’à le rendre disponible par le réseau à travers un protocole de partage qui
peut être aussi bien du HTTP, du FTP ou à travers rsync.
Pour le diffuser sur les différentes machines équipées d’Ubuntu il suffit que le
dépôt soit ajouté à la liste des dépôts que le système questionne avant d’installer un
paquet. Pour cela on ajoute la ligne suivante dans le fichier /etc/apt/sources.list.
deb http://10.0.0.37/apt natty main
Chez PMSIpilot nous avons choisi de diffuser le dépôt en HTTP à travers un
serveur Apache hébergé sur l’IP 10.0.0.37 dans le dossier apt. Le mot clé « natty »
correspond à la version Ubuntu et « main » à la branche du dépôt. Une fois cela
effectué, il suffit d’utiliser notre gestionnaire de paquet pour installer notre paquet :
#apt-get install pmsishare
Maintenant nous pouvons diffuser nos applications aux différentes Ubuntu de
notre parc. Pour exemple voici quelques paquets disponibles dans le dépôt de
PMSIpilot :
screen : Patch pour les noms trop longs
pmsishare : Configuration automatique des partages avec pam-mount
pmsi-ocsinventory-agent : Agent d’OCS avec serveur préconfiguré
pmsiprinters : Configuration des imprimantes
php 5.3.15 : PHP en version 5.3.15
myportal : Utilitaire pour la téléphonie
Avec les paquets et le dépôt, nous pouvons mettre à disposition des logiciels
ainsi que des paramétrages mais cela nécessite encore trop d’interventions pour être
utilisable de la sorte car il faut encore passer sur chacun des postes afin d’ajouter le
PORTE Loïc – Le Libre en entreprise – 2012 Page 35 sur 66
dépôt et d’installer les paquets. Certes cela est faisable à distance grâce au SSH
mais il serait plus ingénieux de le faire lors de l’installation.
d) Installation
L’installation d’un système préconfiguré est un besoin récurent dans les
entreprises car c’est un gain de temps non négligeable. Nous avons vu
précédemment que nous pouvons diffuser des systèmes à travers le réseau grâce au
PXE. Nous ajoutons donc une image d’Ubuntu 11.04 à notre système afin de gagner
en vitesse d’installation.
Si nous en restons là, l’installation nous demande de renseigner des
informations lors de l’installation ce qui oblige un employé à rester devant. Pour
éviter cela, nous renseignerons le maximum d’informations dans un fichier que nous
passerons automatiquement lors de l’installation. Ubuntu en version 11.04 propose
plusieurs manières d’effectuer cela. La première est de lui fournir un fichier au format
« kickstart ». Ce format est d’origine sur les distributions RedHat et ses dérivés. Il a
été implémenté sur Ubuntu. Nous ne choisirons pas ce système car jugé trop
instable sur la version 11.04. La seconde possibilité est le fichier de type
« preseed ». Ce système est implémenté sur la distribution Debian et par conséquent
souvent sur ses dérivés.
Ce système nous permet de répondre aux questions que l’installation risque
de nous poser avant même le démarrage de l’installation. Dans les informations
importantes nous retrouvons par exemple le mot de passe de l’utilisateur root ou le
fuseau horaire du poste :
#Le mot de passe de root en crypter
d-i passwd/root-password-crypted password $1$mczysd.I$aKggfd6F8A48.gUgxb.
#Réglage du timezone d-i clock-setup/utc boolean true
d-i time/zone string Europe/Paris
En annexe le fichier preseed complet est fourni. Dans ce document on peut
remarquer qu’il n’est pas question de partitionnement des disques. Il est tout à fait
possible de générer une table de partition pour l’installation mais chez PMSIpilot
nous avons des machines différentes et préférons faire un partitionnement manuel
selon l’utilisation finale de la machine.
L’installation du système d’exploitation est maintenant quasiment automatique.
Mais n’intègre pas les modifications que l’on a décrites plus haut comme l’intégration
à un domaine ou l’accès aux différentes ressources. Pour cela preseed nous permet
d’exécuter des scripts en fin d’installation. Dans le fichier preseed, nous avons choisi
de télécharger un script que nous placerons dans /root :
PORTE Loïc – Le Libre en entreprise – 2012 Page 36 sur 66
d-i preseed/late_command string cd /target/root &&
wget http://10.0.0.37/iso/script-install/start.sh &&
chmod +x start.sh
Il serait tout à fait possible avec quelques modifications du script start.sh de le
lancer directement à l’installation. Nous ne le faisons pas car nous n’utilisons pas ce
système uniquement pour l’installation des postes clients. Regardons de plus près le
script start.sh qui se trouve en annexe dans une version très simplifiée.
Le fait qu’on n’ait utilisé que des lignes de commandes dans les différentes
étapes ci-dessus nous permet de pouvoir faire facilement un script qui réunit toutes
ces étapes. On retrouve par exemple l’ajout du dépôt (lignes 30/31) et l’installation
du paquet pmsishare (ligne 85), l’ajout au domaine avec Likewise-open avec l’ajout
des administrateurs (ligne 57 à 81), l’installation de l’agent OCS est aussi dans ce
script (ligne 89). On peut aussi voir des parties non décrites dans ce document
comme la configuration d’un serveur VNC pour un accès graphique au poste ainsi
que l’ajout de favoris dans le navigateur Mozilla Firefox. Une fois le script start.sh
exécuté et la machine redémarrée, l’ordinateur est prêt à accueillir un utilisateur.
L’utilisation de systèmes d’exploitation basés sur le Libre est donc tout à fait
viable en milieu professionnel. Attention ici le choix de la distribution Ubuntu n’est
pas dû au hasard, toutes les distributions GNU/Linux ne sont pas aussi facilement
intégrables à un environnement professionnel. Les distributions jeunes qui ne
possèdent pas une communauté assez grande pour qu’elles soient testées
convenablement sont à proscrire. De plus avant de commencer le déploiement il est
important de s’assurer que le besoin de l’utilisateur est totalement pris en compte par
le nouveau système. Je rappelle que chez PMSIpilot seule la partie technique et
particulièrement les développeurs PHP sont sous une distribution GNU/Linux. Si ces
conditions sont satisfaites, l’utilisation d’Ubuntu comme système d’exploitation peut
économiser le prix de licence mais aussi améliorer grandement la productivité des
employés. Maintenant que nos employés sont libérés de leur système d’exploitation
vérifions que les différents services dont ils ont besoin peuvent être libres eux aussi.
C. La liberté des outils au service des utilisateurs
Les employés n’ont pas seulement besoin d’un ordinateur pour travailler, il
leur faut des logiciels ainsi que l’accès à différents services. Ces différents besoins
ne sont pas les mêmes selon le poste qu’occupe l’employé. Il y a tout de même des
besoins communs à tous les employés d’une même société.
1. Les besoins communs
Les besoins communs sont les besoins les moins spécifiques. Ce sont les
besoins qui rassemblent les employés. Bien souvent le besoin commun principal est
le besoin de communiquer.
PORTE Loïc – Le Libre en entreprise – 2012 Page 37 sur 66
a) Besoin de communication
La communication est un besoin essentiel dans l’entreprise, sans elle, chaque
service travaillerait séparément dans des directions opposées. C’est pourquoi dans
beaucoup d’entreprises on retrouve un service de discussion instantané qui permet à
toute la société de communiquer simplement. Plusieurs outils libres et gratuits
permettent de répondre à ce besoin essentiel. Ici nous verrons l’outil Openfire.
Openfire est sous double licence. Son code source est sous licence Apache
2.0 qui respecte les 4 libertés du Libre mais les images et les icônes d’Openfire sont
propriétaires. Ce logiciel est un serveur de messagerie instantanée qui utilise le
protocole ouvert XMPP anciennement appelé Jabber. Ce logiciel est développé en
Java ce qui lui permet une installation multiplateforme.
L’installation peut se faire à travers des paquets ou directement avec une
archive. Le paramétrage de ce service se fait par l’intermédiaire d’une interface Web.
Cette interface propose de paramétrer les fonctionnalités les plus simples et utilisées
comme l’ajout d’utilisateurs ou le couplement à une base LDAP mais aussi les
fonctions les plus avancées comme le clustering. L’interface propose aussi un
système de rapport qui nous permet de constater l’utilisation et donc la nécessité de
l’outil.
Il est aussi tout à fait possible d’utiliser des plugins afin d’étendre les
fonctionnalités d’Openfire. Par exemple nous utilisons le plugin « broadcast » qui
nous permet de contacter tous les utilisateurs afin de leur délivrer un message. Cette
fonctionnalité peut être très utile pour prévenir différentes interventions et d’éventuels
désagréments à prévoir sur les services.
Du fait de l’utilisation de protocoles ouverts XMPP, beaucoup de clients sont
disponibles afin de se connecter à ce service. Plusieurs clients libres et multi
plateforme peuvent être utilisés comme Gajim ou Pidgin. On peut aussi utiliser ce
service pour les alertes comme c’est le cas avec Nagios/Centreon qui propose de
base un greffon pour être prévenu en cas d’imprévu sur notre infrastructure. Suite à
l’utilisation de ces divers clients, les utilisateurs ont la possibilité de communiquer de
manière rapide entre eux mais aussi en groupe car l’utilisation de groupes de
discussion est aussi disponible, ce qui est utilisé lorsqu’une discussion a lieu à
l’intérieur d’un service ou qu’une question est posée à un service entier.
Le chat instantané n’est pas le seul outil de communication nécessaire. Selon
la taille d’une entreprise un système de téléphonie Internet peut être mis en place.
Dans ce cas des projets tels que Asterisk ou FreePBX peuvent être utiles.
b) Déploiement d’applications
Le déploiement d’application est un concept assez récent. Ce concept permet
de diffuser la partie visuelle d’une application sur une machine cliente à travers le
réseau ou Internet. Cette nouvelle conception permet de répondre à plusieurs
PORTE Loïc – Le Libre en entreprise – 2012 Page 38 sur 66
besoins que peuvent exprimer les entreprises. Premièrement cette technologie
permet l’utilisation des ressources d’un ou plusieurs serveurs d’applications ce qui
permet l’utilisation de postes clients légers qui sont des postes à moindre coûts. De
plus, ce type de service peut aussi être déployé à travers Internet ce qui permet à
des employés externes d’avoir accès à certaines applications et ressources de
l’entreprise.
Dans ce domaine, les logiciels ne sont pas très nombreux que ce soit les
logiciels issus du Libre ou propriétaires. Nous étudierons le logiciel Ulteo qui parmi
ses fonctionnalités possède ce type de service. Ulteo est un système de bureau à
distance et de diffusion d’applications sous licence GPLv2. Il est encore très peu
connu du monde de l’entreprise. Nous n’étudierons que la partie diffusion
d’applications qui est une partie mineure de l’ensemble du logiciel.
Ulteo est séparé en plusieurs composants. Le premier des composants qui
forment Ulteo correspond aux serveurs d’applications. Ils peuvent être sous Windows
2003 ou 2008 mais aussi sous une distribution GNU/Linux. Ces serveurs
d’applications hébergent les différentes applications à diffuser à travers le système.
Par conséquent nous pourrons diffuser des applications qui s’exécutent uniquement
sous Windows, ce qui arrive souvent avec les logiciels propriétaires, à des postes
sous Ubuntu mais aussi des applications GNU/Linux. L’installation du serveur
d’applications se fait à travers un simple exécutable pour les serveurs sous Windows
serveur et à travers des paquets hébergés sur un dépôt ou directement depuis un
CD-ROM pour les serveurs d’applications Windows. Il n’y a pas de limite de nombre
de serveurs d’applications, posséder plusieurs serveurs d’applications peut permettre
de diffuser plusieurs types d’applications mais aussi d’assurer une disponibilité d’une
même application installée sur plusieurs serveurs en répartissant la charge.
Le deuxième composant essentiel à Ulteo est le « Manager de sessions ». Ce
composant peut être installé sur un serveur d’applications mais est bien souvent
séparé pour une question de disponibilité des ressources. Cette partie sert à
paramétrer le système et à faire le lien avec les serveurs d’applications. Le
paramétrage se fait à travers une interface Web très intuitive. Les nouveaux serveurs
d’applications sont automatiquement listés dans l’interface avec leurs applications
respectives. Une fois les serveurs enregistrés et paramétrés, on ajoute les
utilisateurs. Pour cela, on paramètre notre base utilisateur afin de la coupler avec
notre Active Directory. Ulteo nous offre aussi la possibilité de réutiliser les groupes
déjà présents dans notre base afin de leur affecter des applications directement. La
gestion des droits utilisateurs sur les applications est très poussée.
Cette partie est aussi utilisée pour contacter les différents serveurs
d’applications afin de faire le lien entre le client et les serveurs. Un fois le premier
contact effectué le client est connecté directement aux serveurs d’applications et
n’utilise plus le manager de session.
PORTE Loïc – Le Libre en entreprise – 2012 Page 39 sur 66
Le troisième composant est la partie cliente. Cette partie est la partie qui fait le
lien entre l’utilisateur et le manager de session qui va rediriger les utilisateurs vers les
applications. C’est ici que l’utilisateur se connecte. Il existe deux composants clients :
un client Web et un client natif. Le client natif n’est disponible qu’avec un accès gold
payant à Ulteo. Chez PMSIpilot nous utilisons le client Web qui est gratuit. Ce client
est disponible, comme son nom l’indique, à travers un navigateur Web et peut être
installé sur le même serveur que le manager de sessions. Il repose essentiellement
sur un applet Java. Concrètement, l’utilisateur se connecte au site Internet, arrive sur
une liste d’applications qui lui sont disponibles et clique sur l’une d’entre elles pour
ensuite voir l’application s’ouvrir comme une application classique de son système.
Le fait que ce client repose sur Java le rend compatible aussi bien sur Windows que
sur les distributions GNU/Linux.
Ulteo utilise le protocole RDP pour diffuser l’application entre le client et
l’utilisateur. Ce protocole est utilisé à l’origine pour se connecter à distance aux
différents postes Windows. Ce protocole est extrêmement rapide ce qui permet
d’avoir des applications transparentes avec le système. Ce protocole permet aussi le
partage de ressources, c’est pourquoi, lorsqu’une application est ouverte, des
ressources sont aussi partagées du client au serveur. Parmi les ressources
partagées, on retrouve les imprimantes ainsi que les disques locaux du client. Ceci
permet au client de travailler de manière encore plus transparente entre sa machine
et les applications distantes.
6. Fonctionnement d'Ulteo
Ulteo est utilisé chez PMSIpilot principalement pour diffuser les applications
métiers qui ne sont disponibles que pour les systèmes Windows. Voici une capture
d’écran pour comprendre le but final d’Ulteo avec les logiciels VMware Vsphere et
PORTE Loïc – Le Libre en entreprise – 2012 Page 40 sur 66
Notepad++ lancés sur un système Ubuntu alors que ces logiciels ne sont
normalement disponibles que sous Windows.
7. Exemple d'utilisation d'Ulteo
Les fonctionnalités citées ci-dessus ne représentent pas la totalité du système
Ulteo qui possède aussi un système de serveurs de fichiers ou de bureau distant
ainsi qu’un système de proxy qui permet une diffusion simplifiée d’Ulteo par Internet.
Les logiciels libres, au travers d’Ulteo, répondent concrètement à différents besoins
qu’expriment les entreprises et permet de diminuer les coûts de manière significative.
c) La libre détente
Voici une partie que l’on peut qualifier d’atypique par rapport au reste de ce
document. La détente et la relâche de la pression pendant les pauses sont très
importantes pour un employé. Il est bien souvent interdit d’installer des jeux sur des
ordinateurs d’entreprises car ils sont souvent payants ou alors cela engendre des
distractions mal vues par la direction.
A cela, je réponds que le jeu, s’il est encadré dans des moments de pause,
permet une cohésion des employés et par conséquent amène une ambiance moins
stressante pour l’employé. L’entreprise PMSIpilot l’a bien compris et permet aux
employés qui le désirent d’utiliser leur poste de travail comme station de jeux.
Le Libre répond aussi au besoin qu’ont les employés de se détendre. La
communauté fournit plusieurs jeux vidéo multi-joueurs qui permettent aux employés
de créer des liens autres que professionnels. Parmi la multitude de jeux nous
pouvons par exemple parler de Sauerbraten qui est un jeu entièrement libre ne
nécessitant que peu de ressources de la part des ordinateurs ou bien Warsow qui lui
n’est pas totalement libre.
PORTE Loïc – Le Libre en entreprise – 2012 Page 41 sur 66
2. Les besoins des commerciaux
Les besoins du pôle commercial sont spécifiques à leur métier. Ils sont
chargés de la relation client et ils ont donc besoin de services afin d’assurer au mieux
leur tâche.
a) Gestion client
Une entreprise a rapidement besoin d’un outil afin de gérer ses clients. Un
outil qui permet de rentrer les informations les concernant, de pouvoir gérer plusieurs
affaires, de gérer les différents prospects, de pouvoir archiver et parcourir les
échanges qui ont eu lieu avec ces différentes personnes. Ce genre d’outil est appelé
un CRM.
Il existe plusieurs CRM libres comme Vtiger CRM, Hipergrate ou Creme CRM.
Nous étudierons le produit SugarCRM. Ce produit est développé en PHP et est
accessible à travers une interface Web ce qui lui permet d’être compatible avec tous
les systèmes.
Il est disponible sous trois versions. La version « Community Edition » qui est
la version libre sous licence GPL, la version « Professional » et la version
« Entreprise ». Ces deux dernières réutilisent le code de la version communautaire et
ajoutent des fonctionnalités mais elles ne sont pas sous licence libre.
Chez PMSIpilot la version Professional est utilisée mais la version
communautaire répond à la plupart des besoins que peut exprimer une entreprise. Il
PORTE Loïc – Le Libre en entreprise – 2012 Page 42 sur 66
possède une interface simple, complète et modulaire afin de gérer les besoins
clientèle de toute une entreprise.
Pour rendre le CRM encore plus fonctionnel il existe plusieurs outils qui
s’interfacent avec comme, par exemple, pour les mails. Plusieurs plugins à
destination des clients mails comme Thunderbird avec le plugin de la société
Assertiva. Ces différents plugins permettent d’archiver automatiquement une
conversation e-mail dans SugarCRM.
De plus SugarCRM possède un système d’API qui permet la connexion et le
développement d’interfaces complémentaires. A titre d’exemple, chez PMSIpilot une
interface de workflows permet d’utiliser les informations de SugarCRM afin de
générer différentes commandes à destination du service support. Ceci n’est qu’une
petite partie de l’intégration de ce CRM dans l’entreprise PMSIpilot.
Le CRM est une partie essentielle des ressources de l’entreprise, cette
ressource est locale et interne à l’entreprise. Cependant, lors de leur déplacement
les commerciaux et les formateurs peuvent avoir besoin d’accéder à de telles
ressources.
b) L’accès distant aux ressources
Il est important pour une entreprise d’avoir un accès distant sécurisé aux
ressources de l’entreprise. Un tel accès est dans la plupart des cas utilisé par les
commerciaux et les formateurs terrains. Mais il peut aussi être aussi utilisé par les
administrateurs systèmes pour une maintenance du parc informatique en cas d’alerte
de la supervision.
Pour cela l’utilisation d’un VPN (Virtual Private Network) est la solution la plus
simple. Cette solution permet à un ordinateur qui se trouve à l’extérieur du réseau de
se joindre de manière transparente ce réseau. La solution libre que nous utiliserons
ici se nomme OpenVPN.
OpenVPN est sous licence GNU/GPL v2, il est très apprécié par la
communauté. Il est extrêmement puissant grâce à sa configuration qui peut être
extrêmement poussée grâce à laquelle il peut être mis en place rapidement avec une
configuration très basique. Pour preuve nous verrons la configuration et l’adaptation
qui a été nécessaire pour répondre au besoin spécifique de PMSIpilot.
PMSIpilot a besoin d’une connexion distante pour ses formateurs terrain, ses
administrateurs réseaux ainsi que pour ses prestataires. De plus le service VPN se
doit d’être compatible avec tout système et d’utiliser la base utilisateur de l’Active
Directory. Les différents types d’utilisateurs ne doivent pas avoir accès aux mêmes
ressources et cela doit être paramétrable de manière simple.
PORTE Loïc – Le Libre en entreprise – 2012 Page 43 sur 66
Nous ne détaillerons pas ici l’installation du serveur d’OpenVPN car dans la
plupart des distributions GNU/Linux il est directement disponible dans les dépôts. Le
fichier de configuration que nous étudierons est disponible en annexe.
Premièrement nous devons spécifier aux clients les paramètres réseaux qui
sont nécessaires à la connexion et à l’utilisation du service VPN :
server 172.16.1.0 255.255.255.0
[…]
push "route 10.0.0.0 255.255.252.0" push "route 10.0.4.0 255.255.252.0"
push "dhcp-option DNS 10.0.0.19" push "dhcp-option DNS 10.0.0.1"
push "dhcp-option DOMAIN abc-objectif.local"
Grâce à ces quelques lignes nous spécifions au futur client le réseau des
clients VPN (172.16.1.0) et que toutes les connexions à destination des réseaux
10.0.0.0/22 et 10.0.4.0/22 doivent passer par le VPN. On spécifie aussi les
paramètres DNS qui permettent l’utilisation des noms de domaines internes
directement sur le client.
Maintenant il faut connecter OpenVPN avec l’Active Directory et pour cela
nous utiliserons un plugin PAM : pam_ldap. Une fois ce plugin installé nous ajoutons
une configuration à PAM (/etc/pam.d/openvpn) qui lui spécifie un fichier de
configuration. Ce dernier fichier de configuration contient les paramètres de l’Active
Directory mais surtout nous pouvons spécifier un groupe d’utilisateurs qui aura le
droit de se connecter :
pam_groupdn cn=VPN,ou=Security Groups,ou=MyBusiness,dc=abc-objectif,dc=local
pam_member_attribute member
Une fois un utilisateur ajouté à ce groupe, il aura la possibilité de se
connecter. Nous utilisons un groupe car nous ne souhaitons pas que tous les
employés puissent se connecter à ce VPN. La problématique qu’il reste est le filtrage
des ressources par rapport à l’utilisateur.
Pour le filtrage des ressources il n’existe pas de logiciel prêt-à-l’emploi mais
grâce à un petit script il est très facile de s’interfacer avec OpenVPN. Nous
utiliserons des règles directement implémentées dans le pare-feu par le biais de
règles iptables afin de spécifier les différentes règles.
Nous commencerons par ajouter les différentes règles au système :
PORTE Loïc – Le Libre en entreprise – 2012 Page 44 sur 66
*nat
:PREROUTING ACCEPT [60856:8675120] :POSTROUTING ACCEPT [36293:2446495] :OUTPUT ACCEPT [36293:2446495] -A POSTROUTING -s 172.16.0.0/23 -j MASQUERADE COMMIT # Completed on Mon Oct 17 16:41:35 2011 # Generated by iptables-save v1.4.7 on Mon Oct 17 16:41:35 2011 *filter :INPUT ACCEPT [0:0] :FORWARD DROP [0:0] :OUTPUT ACCEPT [76:10356] :LOG_AND_DROP - [0:0] :VPN - [0:0] :VPN_commerciaux - [0:0] :VPN_fullaccess - [0:0] :VPN_telephonie - [0:0] […] -A FORWARD -s 172.16.0.0/23 -j VPN -A FORWARD -d 172.16.0.0/23 -j ACCEPT -A LOG_AND_DROP -j LOG --log-prefix "[IPTABLES DROP] :" -A LOG_AND_DROP -j DROP -A VPN -p tcp -m tcp --dport 53 -j ACCEPT -A VPN -p udp -m udp --dport 53 -j ACCEPT -A VPN_commerciaux -d 10.0.0.4/32 -p tcp -m tcp --dport 80 -j ACCEPT -A VPN_commerciaux -d 10.0.0.4/32 -p tcp -m tcp --dport 443 -j ACCEPT […]
-A VPN_commerciaux -d 10.0.0.4/32 -p tcp -m tcp --dport 5222 -j ACCEPT -A VPN_commerciaux -d 10.0.0.0/8 -j LOG_AND_DROP -A VPN_commerciaux -j ACCEPT -A VPN_fullaccess -j ACCEPT -A VPN_telephonie -d 10.0.4.1/32 -p tcp -m tcp --dport 3128 -j REJECT --reject-with icmp-port-unreachable -A VPN_telephonie -d 10.0.4.1/32 -p tcp -m tcp --dport 80 -j REJECT --reject-with icmp-port-unreachable -A VPN_telephonie -d 10.0.4.0/22 -j ACCEPT -A VPN_telephonie -j LOG_AND_DROP COMMIT
Concrètement, avec ces différentes règles on crée trois groupes :
VPN_commerciaux, VPN_fullaccess et VPN_telephonie. Dans ces différents groupes
on ajoute des règles qui limitent l’accès au réseau. Par exemple le groupe
VPN_telephonie qui est à destination du prestataire téléphonique n’a accès qu’au
réseau 10.0.4.0, à l’exception de l’IP 10.0.4.1 sur les ports 3128 et 80. En effet le
prestataire n’a aucun besoin d’avoir accès à d’autres ressources qui peuvent être
critiques pour une entreprise. Il faut donc bien limiter les accès de chacun par rapport
à leurs besoins. Les tentatives d’accès non autorisées seront ajoutées à un journal et
seront bloquées.
Pour ajouter le client correct dans le bon groupe d’accès il faut s’interfacer
avec OpenVPN pour cela nous utiliserons la directive « learn-adress » dans le fichier
de configuration d’OpenVPN. Cette directive permet d’exécuter un script avec
comme paramètres :
Opération – "add", "update", ou "delete" qui signifient l’ajout, la mise à
jour ou la suppression de l’adresse du client.
Adresse – L’adresse du client.
Utilisateur – Le nom de l’utilisateur concerné.
Le script écrit pour PMSIpilot est disponible en annexe (learnscript.sh). Ce
script permet d’ajouter les utilisateurs dans le groupe du pare feu par rapport à
PORTE Loïc – Le Libre en entreprise – 2012 Page 45 sur 66
l’appartenance aux différents groupes dans l’Active Directory. Ce script nous permet
aussi d’être prévenus par email lorsqu’un prestataire se connecte sur le VPN.
Voici un graphique représentant le service une fois mis en place.
8 Graphique OpenVPN
Pour finir il ne reste plus qu’à fournir les informations de connexion aux clients.
Il existe des clients pour tous les systèmes d’exploitation. Le point commun reste les
informations qui leur sont nécessaires pour se connecter, à savoir un fichier de
configuration et le certificat du serveur. Et voilà, Le Libre a permis à nos employés
sur le terrain de pouvoir accéder aux ressources de l’entreprise !
3. Les besoins du pôle technique
Les membres des différentes équipes techniques ont eux aussi des besoins
très particuliers. Ces besoins sont encore plus spécifiques pour les équipes de
développement qui ont besoin de travailler de manière collaborative et qui ont des
besoins de tests que l’on peut qualifier de nécessaires.
a) Gestion de projets
La gestion de projets n’est pas chose aisée surtout lorsque ces projets
commencent à avoir une taille conséquente ce qui est le cas chez PMSIpilot. Un outil
de gestion de projets efficace est un besoin émis par toutes les entreprises qui
développent des logiciels. Beaucoup d’outils libres et propriétaires permettent de
PORTE Loïc – Le Libre en entreprise – 2012 Page 46 sur 66
gérer simplement des projets complexes. Pour répondre à ces problématiques, nous
suivrons l’évolution de ces outils au sein de PMSIpilot.
L’outil utilisé historiquement pour la gestion de projets a été « Trac ». Trac est
un outil libre sous licence BSD développé en python et accessible à travers une
interface Web. Trac permet la gestion d’un projet à travers quelques fonctionnalités.
Une gestion de feuille de route est disponible dans Trac, elle est aussi
appelée « roadmap ». Cette roadmap permet de rapidement voir l’évolution d’un
projet mais aussi de le planifier dans le temps. Une roadmap est constitué de jalons
ou « milestones ».
Une autre fonction importante de la gestion de projets : le rapport de bug. Le
rapport de bug est essentiel car il permet d’avoir une base des améliorations à
apporter et ainsi pouvoir intégrer ces différentes améliorations dans les différents
jalons et ainsi avoir une visibilité sur la direction que prend le projet.
Trac possède aussi un wiki ce qui apporte plusieurs utilités. Si le projet et le
trac sont publics, ce wiki permet d’expliquer le principe du projet, son installation ou
son utilisation ce qui permet aux utilisateurs d’avoir une documentation claire
directement sur le site du projet. Si le projet est interne ce wiki peut servir de base de
connaissance ou de réponse aux questions fréquentes sur le projet.
L’intégration des sources du projet est disponible dans Trac grâce à
l’intégration de SVN. Il est possible de parcourir les sources du projet directement
depuis l’interface.
Trac possède aussi un système de plugins assez complet qui lui permet
d’étendre ses fonctionnalités. Malgré cela, ce système ne convient pas à PMSIpilot
car Trac est orienté mono-projet et n’est pas compatible Git nativement. C’est
pourquoi PMSIpilot s’est tourné vers Redmine.
Redmine n’est pas très différent de Trac. Il est sous licence GNU GPL v2. Il
est développé en Ruby et possède les mêmes fonctionnalités que Trac mais ajoute
aussi quelques différences. Principalement il intègre le support des multi-projets car
si Trac suffisait au début de PMSIpilot les logiciels ont rapidement eu besoin de
projets annexes. De plus il intègre nativement l’utilisation d’une base LDAP pour les
utilisateurs.
Redmine est plus tourné du côté de la gestion de projets internes que Trac qui
lui est utilisé pour la gestion de projets publics et souvent libres. Dans les deux cas le
Libre permet de gérer convenablement de petits comme de très gros projets.
Voici quelques chiffres ainsi qu’un graphique issu des données du Redmine
de PMSIpilot qui exprime la nécessité d’un tel système :
24788 - Nombre total d’ouvertures de tickets
PORTE Loïc – Le Libre en entreprise – 2012 Page 47 sur 66
22973 – Nombre total de fermetures de tickets
9. Nombre de tickets
Redmine s’intègre aussi avec des gestionnaires de source comme SVN, CVS
ou GIT.
b) Gestion des sources
Un outil de gestion de sources est indispensable lorsque plusieurs
développeurs travaillent sur la même application. De plus, ce genre d’outil versione le
code ce qui nous permet d’avoir un historique et la possibilité de revenir à une
version antérieure. Grâce à ce type d’outil nous avons la possibilité de séparer le
projet en plusieurs branches ce qui permet, lorsque un projet se sépare en plusieurs
parties, de garder un tronc commun. Les branches sont utiles afin de pouvoir
développer de nouvelles fonctionnalités en étant isolé ce qui permet de ne pas
impacter les autres par le développement en cours.
Il existe plusieurs solutions libres qui permettent un travail collaboratif pour les
développeurs. Anciennement on utilisait des dépôts subversion (SVN). Subversion
est sous licence Apache et possède toutes les fonctionnalités afin de gérer le code
facilement. Il possède un serveur central sur lequel les utilisateurs vont venir
récupérer, modifier et renvoyer le code. Le SVN possède quelques manques de
flexibilité surtout en ce qui concerne la fusion entre plusieurs branches.
Dernièrement un nouveau gestionnaire de sources est arrivé : GIT. Il est sous
licence GNU GPL v2 et est développé par, entre autres, Linus Torvalds qui est le
fondateur du noyau Linux. La première version date de 2005 et a été rapidement
adoptée par les développeurs grâce à sa flexibilité et son principe décentralisé. Nous
n’expliquerons pas ici le fonctionnement en détail de GIT car cela mériterait une
œuvre complète. Sachez néanmoins que GIT permet très simplement de créer des
branches, de les fusionner, de changer de version, etc.
PORTE Loïc – Le Libre en entreprise – 2012 Page 48 sur 66
c) Gestion des tests
Lorsqu’un développement est fait on ne peut pas l’intégrer au produit en
production directement, il faut d’abord le tester. C’est pourquoi les entreprises par
l’intermédiaire des équipes de développement ont un besoin d’intégration continue.
L’intégration continue permet de tester fréquemment le code et ainsi de
remonter et de corriger les erreurs rapidement. Les problèmes d’intégration avec le
système de production sont détectés et cela évite les erreurs sur les infrastructures
des clients.
Pour répondre à ce besoin, l’outil Jenkins sous licence MIT peut être utilisé.
Cet outil permet, grâce à une interface Web, de lancer des tests que ce soient des
tests d’import de données, des tests unitaires, des tests de mises à jour, etc. Ces
différents tests peuvent être lancés sur une branche précise d’un dépôt GIT ce qui
permet de toujours tester la dernière version du code.
Ce genre d’outil est bien souvent installé sur un serveur avec une
configuration de production afin de limiter les erreurs remontées dues à
l’environnement. Il arrive, comme c’est le cas chez PMSIpilot, qu’un seul serveur ne
suffise plus face à la taille de l’application et au nombre de tests à effectuer. C’est
pourquoi il est possible avec Jenkins d’utiliser des serveurs esclaves qui vont
permettre d’exécuter des tests. Cela évite d’installer un Jenkins complet avec ses
propres jeux de tests sur chaque serveur et surtout d’avoir une seule interface pour
tous les contrôler. Cela permet aussi de distribuer les tests sur le premier esclave
disponible.
Pour mieux comprendre voici un graphique expliquant le fonctionnement
(simplifié) de Jenkins ainsi qu’une capture d’écran d’une partie de l’interface.
10. Jenkins
PORTE Loïc – Le Libre en entreprise – 2012 Page 49 sur 66
Pour information, voici quelques chiffres correspondant à l’utilisation de
Jenkins chez PMSIpilot :
6 à 8 serveurs de tests dont 2 masters
o 1 master par projet distinct
4 branches GIT testées chaque nuit
o Branche « Production »
o Branche « Prochaine Version »
o 1 branche par équipe
322 heures de tests au total
d) Virtualisation
Il arrive souvent que des machines virtuelles soient nécessaires afin de tester
différentes solutions sous différents OS. Pour cela l’utilisation de VirtualBox peut être
nécessaire. VirtualBox est disponible sous plusieurs versions dont la version OSE qui
est sous licence GPL.
VirtualBox OSE permet de créer et d’utiliser des machines virtuelles ainsi que
de créer des snapshots. Ces snapshots sont des images à un instant T qui
permettent de revenir à cet état après modification.
VirtualBox demande des ressources que n’ont pas forcément les machines
des utilisateurs. Il est tout à fait possible de l’installer sur un serveur et de
l’administrer grâce à un projet libre très bien réalisé qui se nomme phpVirtualBox.
PhpVirtualBox est sous GNU GPL v3 et est conçu pour gérer les machines
virtuelles d’un serveur à travers une interface Web. Ce projet reprend l’interface du
client lourd de VirtualBox ainsi que la quasi-totalité des fonctionnalités. Attention tout
de même à ne pas confondre cette solution avec un hyperviseur. Cette solution est à
destination des petites structures. Si le besoin est plus grand, l’utilisation d’un
hyperviseur complet sera nécessaire, comme par exemple Xen ou KVM.
e) Travail collaboratif
Il arrive de temps à autre que le besoin de partager un document ou une
partie de code avec d’autres afin d’expliciter une problématique se fasse sentir. Pour
cela on trouve quelques outils en ligne comme pastebin.com qui permet de coller du
texte et de diffuser le lien à ceux que l’on souhaite.
En entreprise on ne peut utiliser ce type de solution car souvent ce que l’on
veut diffuser aux autres est confidentiel. Ce type d’outil existe en libre et permet une
installation en interne. Ce logiciel se nomme Paste et est sous GNU GPL v2. Paste
possède quelques petites fonctionnalités comme la coloration syntaxique ou la
possibilité de limiter dans le temps les différents postes.
Le fait qu’il soit libre nous a permis de modifier le code source pour pré remplir
automatiquement le champ du propriétaire du poste par le nom de l’utilisateur de la
PORTE Loïc – Le Libre en entreprise – 2012 Page 50 sur 66
machine en utilisant une simple requête SQL qui interroge la base de données de
GLPI par rapport à l’IP qui s’est connectée.
Cet outil est limité car il n’est pas interactif du point de vue de l’employé avec
qui le poste a été partagé. En effet si cet employé souhaite montrer comment corriger
le code qui lui a été partagé il est obligé de recréer un poste à son tour. Pour obtenir
cette interactivité, un autre outil est à disposition : Etherpad-lite
Etherpad-lite est un éditeur de texte collaboratif en ligne. Il est sous licence
Apache v2. Ce petit éditeur permet d’éditer à plusieurs un même fichier texte qui peut
être un exemple de code. Dans cet outil un chat entre les personnes connectées au
poste est disponible. Le document est automatiquement versioné, on peut donc
revenir en arrière facilement.
Grâce à quelques plugins on peut étendre ces fonctionnalités comme la
coloration syntaxique, l’invitation par e-mail ou la gestion d’envoi de fichiers. Ce
genre d’outil peut donc servir pour les développeurs à demander de l’aide sur du
code ou de bloc-note collaboratif.
Le Libre est une bibliothèque assez complète de logiciels qui peuvent
répondre à la plupart des besoins aussi grands ou petits soient-ils. Il n’est plus limité
aux besoins des développeurs mais est ouvert à beaucoup de domaines comme on
a pu le voir avec les CRM. Suite à cette démonstration de plusieurs outils libres, on a
pu constater que ce genre d’outil répond tout à fait à plusieurs besoins que peut
exprimer une entreprise.
D. Le Libre jusqu’au client
Les produits libres ne sont pas forcément utilisés uniquement pour répondre à
des problématiques internes à l’entreprise. On peut tout à fait utiliser les logiciels
libres avec un produit final à destination du client.
Nous prendrons pour exemple concret l’utilisation du Libre dans le produit final
de PMSIpilot. L’application se nomme elle aussi PMSIpilot. Cette application se
présente sous la forme d’une interface Web et est développée en PHP qui est une
technologie libre reposant sous la licence PHP.
Le framework PHP Symfony est utilisé par l’application PMSIpilot. Ce
framework est sous licence MIT. Il permet, entre autres, l’utilisation du modèle MVC,
un système avancé de template et de routing ainsi qu’un système de cache avancé
et une couche ORM avec l’utilisation de Propel. Pour résumer, Symfony fournit un
grand nombre de fonctionnalités pour créer et maintenir un projet simplement.
Le projet PMSIpilot utilise de nombreuses librairies libres afin de garantir une
expérience utilisateur simple et complète. Pour commencer on peut citer le plugin
JavaScript JQuery qui est sous licence MIT ou GPL. Il peut tout à fait être intégré à
des projets commerciaux. Cette librairie ajoute beaucoup de fonctionnalités au
langage JavaScript et est requis par de nombreux autres plugins.
PORTE Loïc – Le Libre en entreprise – 2012 Page 51 sur 66
Le projet Arbor fait partie des librairies nécessitant JQuery. Cette librairie sous
licence MIT permet de générer des arbres graphiques dynamiques. L’utilisation de ce
genre de librairie rend l’application plus dynamique et vivante. Voici une liste non
exhaustive des différents plugins libres utilisés dans l’application PMSIpilot :
PHPExcel (LGPL) : Génération, modification et lecture de fichiers Excel
wkhtmltopdf (LGPL) : Conversion de fichiers html en fichiers PDF
TinyMCE (LGPL) : Editeur WYSIWYG
Excanvas (Apache License v2) : Etend les fonctionnalités d’Internet
Explorer
Swfobject (MIT) : Intégrateur de technologie Flash
L’utilisation de librairies libres peut faire gagner un temps considérable de
développement et entraîner par conséquent une réduction des coûts. De plus le
résultat obtenu est souvent le résultat de plusieurs années de travail et est de grande
qualité. On peut aussi constater que toutes les licences utilisées sont de type non
« copyleft » ce qui permet de les intégrer dans un projet commercial sans pour autant
passer ce projet sous licences libre.
Le projet PMSIpilot est un projet Web. Par conséquent l’utilisation du serveur
HTTP est nécessaire. Le logiciel Apache est utilisé pour diffuser les différentes pages
du projet. Le projet Apache est sous la licence du même nom. Ce serveur HTTP
figure parmi les plus utilisés dans le monde. Il est extrêmement robuste et
configurable. Il compte de nombreux modules disponibles qui permettent de changer
jusqu’au mode de fonctionnement du serveur Apache.
Les données de PMSIpilot nécessitent une base de données fiable et robuste.
C’est pourquoi pour le moment la base de données MySQL est utilisée. Ce serveur
de base de données est très flexible et permet l’utilisation de bases de données
relationnelles. De plus, plusieurs outils de gestion de ce logiciel sont disponibles pour
MySQL comme par exemple PhpMyAdmin qui permet l’administration d’un serveur
MySQL directement depuis une interface Web ou encore l’outil mysqldump qui
permet de sauvegarder des bases de données très simplement. La licence de
MySQL dépend de son utilisation. Dans notre cas, MySQL n’est pas sous licence
libre. C’est une des raisons qui fait qu’actuellement PMSIpilot étudie l’utilisation du
serveur de base de données PostgreSQL.
PMSIpilot est fourni directement avec un système d’exploitation préconfiguré.
Ce système est la distribution GNU Linux Mandriva dans sa version 2009.0. Utiliser
un système d’exploitation libre permet d’économiser le prix de licence et par
conséquent de pouvoir vendre le produit fini à moindre coût.
L’utilisation d’une distribution GNU Linux a aussi pour conséquence une
utilisation moindre des ressources. En effet ce type de système d’exploitation ne
consomme souvent pas beaucoup de ressources et peut être dépourvu d’interface
PORTE Loïc – Le Libre en entreprise – 2012 Page 52 sur 66
graphique ce qui permet aux ressources d’être principalement dédiées aux différents
services utilisés par le logiciel.
Un autre avantage de l’utilisation d’une distribution GNU Linux comme base
pour le logiciel PMSIpilot est l’adaptabilité de ce dernier. En effet l’installation de ce
dernier a pu être modifiée afin d’effectuer une installation ou une migration
automatique du logiciel. Pour apporter une autre preuve de l’adaptabilité d’une
distribution GNU Linux prenons un exemple qui est arrivé à PMSIpilot :
PMSIpilot vend ses logiciels expressément accompagnés de certains modèles
de serveurs DELL, or ce dernier a changé les caractéristiques d’un périphérique qui
n’était plus compatible avec le système actuel. Il a alors suffit à PMSIpilot, dans un
premier temps, de changer le noyau Linux par un noyau incluant le pilote mpt2sas.
Cette solution n’a été que temporaire et n’a pas été retenue. Au final PMSIpilot a fait
appel à un prestataire qui a intégré ce driver dans le noyau actuel.
Le Libre n’est donc pas du tout incompatible avec un projet propriétaire et peut
permettre une baisse des coûts ainsi qu’une adaptabilité appréciable. Il est juste
important de prendre connaissance des différentes licences entourant les projets que
l’on souhaite intégrer.
PORTE Loïc – Le Libre en entreprise – 2012 Page 53 sur 66
IV. Le rendu de l’entreprise au Libre Le Libre n’est pas qu’une énorme ressource de logiciels et de ressources. Il
s’agit surtout d’une communauté qui interagit afin d’évoluer. Il existe plusieurs
possibilités pour interagir avec cette communauté.
A. Bug report
Le rapport de bug est une des façons les plus communes de participer au
Libre. Cela peut souvent paraître inutile mais c’est indispensable afin de maintenir un
logiciel stable. Chaque logiciel utilise son propre système de rapport de bug.
Cela peut être simplement un système de mail ou une page sur un réseau
social tel que Facebook comme le fait Ulteo. Cette solution évite l’installation et la
maintenance d’une plateforme spécifique mais empêche l’utilisateur de l’application
d’avoir accès aux bugs en cours de traitement et par conséquent ce système
n’empêche pas les doublons de rapports de bugs ni de fournir une base de
connaissance pour l’utilisateur.
Pour avoir un système de « bug tracking » avancé, plusieurs plateformes
existent, par exemple Redmine ou Trac que l’on a déjà vues un peu plus haut. Ces
différents systèmes de bug report ne sont pas forcément prévus pour un projet de
grande ampleur mais sont largement suffisants dans la plupart des projets. Il existe
aussi des systèmes libres conçus à cette fin comme Bugzilla.
Bugzilla est sous licence MPL (Mozilla Public License). Ce projet est basé sur
une interface Web. Il est très simple d’utilisation et paramétrable. Bugzilla est utilisé
par de nombreux projets libres comme la distribution Mageia qui est actuellement
testée dans l’entreprise PMSIpilot.
Le rapport de bug est la manière la plus simple et constructive de participer
aux logiciels libres. Il ne demande pas de connaissance particulière comme le
développement ni de contribution financière. Par conséquent, cette méthode de
participation est accessible à tout le monde mais n’est seule en son genre.
B. Apport financier
Pour participer aux logiciels libres, il est tout à fait possible de de fournir un
apport financier. Ce financement peut se présenter sous plusieurs formes :
Un don
Un support
Une inscription à une association
Le don est la solution la plus simple et la plus commune dans le Libre pour
participer et soutenir un projet libre. Il est souvent question de petites sommes et les
méthodes de paiement sont assez diverses.
PORTE Loïc – Le Libre en entreprise – 2012 Page 54 sur 66
Les projets libres de plus grande ampleur sont souvent des sociétés à part
entière qui fournissent leurs logiciels librement mais possèdent un support payant.
Dans la plupart des cas, cette solution est la solution préférée des entreprises car un
support est souvent utile dans le milieu professionnel. A titre d’exemple, PMSIpilot a
eu payé le support pour le système Mandriva.
Plusieurs associations qui ont pour but de promouvoir et défendre le Libre
existent. L’adhésion à ces différentes associations leur permet d’organiser des
conférences, des groupes de travail, des « install party » etc. Parmi ces associations,
on retrouve notamment l’April dont est membre PMSIpilot. Le fait de devenir membre
montre que l’entreprise ou le particulier supporte les logiciels libres et apporte aussi
une visibilité supplémentaire.
C. Diffusion du savoir
Une des grandes forces des logiciels libres est l’abondance de différents
supports écrits par des personnes utilisant les outils libres et qui souhaitent partager
leurs connaissances. Ces différents écrits peuvent prendre plusieurs formes. Il se
présentent communément sous la forme de blogs techniques.
Ces différents blogs présentent des articles qui peuvent avoir plusieurs utilités.
L’article peut présenter un nouvel outil que l’auteur souhaite faire connaître ou une
mise à jour d’un produit existant. Il peut aussi apporter des instructions techniques à
la mise en place d’un outil ou de couples d’outils. Ceci est une des raisons qui fait
que ce document ne présente pas complètement les installations des différents
outils.
Ces blogs sont souvent maintenus par des particuliers mais certaines
entreprises en possèdent aussi, ce qui permet d’avoir un point de vue professionnel
sur les thèmes abordés. PMSIpilot possède un blog de ce type (pmsipilot.org) où l’on
peut voir des articles approfondis sur différents sujets comme l’utilisation de Jenkins
ou différentes astuces à destination des administrateurs systèmes.
PORTE Loïc – Le Libre en entreprise – 2012 Page 55 sur 66
11. pmsipilot.org
Le blog n’est pas la seule solution à la diffusion du savoir. Des conférences
sont souvent organisées par divers organismes. Les conférenciers sont souvent des
personnes bénévoles et passionnées par ce qu’elles présentent. Ce genre de
conférence apporte une visibilité à la fois pour le conférencier et pour l’entreprise.
D. L’apport de nouveaux outils
Cette section n’est pas accessible à tout le monde car elle est spécifique à un
savoir-faire, à savoir le développement. Il n’est pas rare pour des administrateurs
systèmes de développer des scripts ou logiciels plus ou moins évolués pour gérer
leur parc. Il est aussi fréquent que les développeurs modifient une librairie ou créent
une API afin de se connecter à différents services. Nous analyserons quelques outils
soumis à licence libre par PMSIpilot pour mieux comprendre les différentes
possibilités d’outil.
1. NagvisRackConstructor
NagvisRackConstructor est un petit outil que j’ai développé en Perl sous
licence « Beerware » qui est une licence aussi courte que permissive avec une petite
touche d’humour. Le Perl apporte une flexibilité au niveau de l’édition du code et des
systèmes qui l’exécutent.
Ce script sert à construire des cartes Nagvis qui est un outil de cartographie
pour Nagios. Ce script est né du fait que le constructeur de cartes intégré à Nagvis
n’est pas tellement adapté pour faire des actions répétitives. Ce script permet de
construire des baies virtuelles et d’ajouter des éléments dedans. Ces différents
éléments sont alors couplés au serveur Nagios qui en affiche l’état. Une fois la carte
PORTE Loïc – Le Libre en entreprise – 2012 Page 56 sur 66
générée il est alors possible d’un simple coup d’œil de voir l’état des serveurs à
l’intérieur des baies et de savoir quel serveur physique a un problème.
Ce projet est entièrement paramétrable que ce soit par rapport aux éléments
que l’on peut ajouter très simplement par le biais de leur image correspondante ou
de leurs positions dans les différentes baies.
Voici un exemple de carte que génère le script :
12. NagvisRackConstructor
2. Gpol
Gpo-for-Linux est un petit outil en cours de développement sous licence
GNU/GPL v3 qui permet d’exécuter différents scripts distants au boot et au login des
distributions Linux. Ces différents scripts sont hébergés sur une plateforme Web,
cette plateforme permet aussi d’administrer Gpol en créant, modifiant et supprimant
des scripts ou en les affectant à certaines machines et/ou certains utilisateurs.
Cet outil peut par exemple servir à diffuser le proxy au poste GNU/Linux ou
bien d’empêcher des utilisateurs de se connecter sur telle ou telle machine selon
l’heure qu’il est, etc.
PORTE Loïc – Le Libre en entreprise – 2012 Page 57 sur 66
13. GPOL Interface
Il est composé de la partie manager qui est un projet symfony et aussi d’une
partie cliente qui permet de le connecter au manager. Cette partie cliente est
installable sur la plupart des distributions GNU Linux et nécessite juste l’exécution
d’un script. Une fois ce script exécuté, les informations de la machine sont envoyées
au manager à chaque boot et les nouveaux utilisateurs seront enregistrés à chaque
connexion.
3. Github
L’exemple le plus simple pour voir ce qu’une entreprise peut offrir à la
communauté est de se rendre sur Github. Github est une plateforme d’hébergement
de code basé sur Git. Plus précisément regardons la page de PMSIpilot sur Github.
Plusieurs projets sont disponibles :
Jenkins-php-api : API pour Jenkins
Crew : outil de revue de code pour Git
Pflow : PMSIpilot Flow pour les projets Git
jquery-highchartTable-plugin : plugin jQuery pour convertir les tableaux
HTML en graphiques HighCharts
Jenkins-Khan : Jenkins dashboard
La plupart de ces projets sont sous la licence libre MIT et sont utilisés en
interne chez PMSIpilot. Ils sont d’abord développés pour répondre à un réel besoin
de l’entreprise et mis sous licence libre afin de pouvoir être réutilisés et modifiés par
quiconque le souhaite pour répondre à son propre besoin.
Une entreprise peut tout à fait participer au Libre et cela de plusieurs façons
comme nous venons de le voir. Le fait de contribuer au Libre n’apporte aucune
contrainte bien au contraire car des développeurs extérieurs peuvent apporter des
PORTE Loïc – Le Libre en entreprise – 2012 Page 58 sur 66
ajouts de fonctionnalités à notre outil interne et cela sans aucun coût pour
l’entreprise. Attention tout de même à ne pas tout mettre sous licence libre. En effet,
dans certaines situations les licences libres peuvent être dangereuses. Par exemple
mettre une licence libre sur les produits de PMSIpilot permettrait à un client d’acheter
un produit et de le rediffuser gratuitement à tous les clients potentiels. Il n’est pas
impossible pour une entreprise de diffuser leurs logiciels sous licence libre mais cela
entraîne une refonte complète du « business model ».
PORTE Loïc – Le Libre en entreprise – 2012 Page 59 sur 66
V. Conclusion De nos jours, des outils très complets sont issus du Libre. Les différents
logiciels ne sont plus uniquement destinés à des particuliers et ont tout à fait leur
place en entreprise. Les outils libres offrent plusieurs avantages par rapport aux
autres. Premièrement, les coûts de licence sont souvent réduits à zéro ce qui est non
négligeable surtout pour les petites entreprises. Ensuite les logiciels libres possèdent
une communauté d’utilisateurs qui permet l’évolutivité des produits mais font aussi
office de support bénévole.
Nous avons démontré par l’exemple que le Libre a tout à fait ça place en
entreprise et cela au même titre que les logiciels propriétaires. Il permet de répondre
à beaucoup de besoins que peuvent exprimer les entreprises de toutes tailles.
Il est important de noter qu’il est tout à fait possible pour une entreprise
d’utiliser entièrement des logiciels libres. Cependant, les logiciels libres ne
remplissent pas tous les besoins que peuvent exprimer les entreprises. Il ne faut pas
utiliser des logiciels libres car ils sont libres mais car ils répondent à un besoin.
Le Libre est avant tout une philosophie de partage et de générosité. Il est
souvent considéré à tort comme une grande bibliothèque de logiciels à sens unique
alors qu’il est très simple de participer.
PORTE Loïc – Le Libre en entreprise – 2012 Page 60 sur 66
VI. Glossaire FSF : Free Software Foundation
IHM : Interface Homme-Machine
ACL : Access Control List
SVN : Subversion
PXE : Preboot Execution Environment
API : Application Programing Interface
VPN : Virtual Private Network
SNMP : Simple Network Management Protocol
PORTE Loïc – Le Libre en entreprise – 2012 Page 61 sur 66
VII. Liens http://www.gnu.org/philosophy/free-sw.html
http://www.glpi-project.org
http://www.ocsinventory-ng.org
http://www.monitoring-fr.org
http://www.fullyautomatednagios.org/
http://www.squid-cache.org/
http://doc.ubuntu-fr.org
http://www.crm-france.com/
http://www.pmsipilot.org
http://wikipedia.org/
http://arborjs.org/
http://jquery.com/
http://bibabox.fr/
PORTE Loïc – Le Libre en entreprise – 2012 Page 62 sur 66
VIII. Annexes
(1) Fichier pressed 1. # Préconfigurer la locale seule dÉfinit la langue, le pays et la locale. 2. #d-i debian-installer/locale string fr_FR 3. 4. # Les valeurs peuvent être préconfigurées individuellement. 5. d-i debian-installer/language string fr 6. d-i debian-installer/country string FR 7. d-i debian-installer/locale string fr_FR.UTF-8 8. 9. # Keyboard selection. 10. # Disable automatic (interactive) keymap detection. 11. d-i console-setup/ask_detect boolean false 12. #d-i console-setup/modelcode string pc105 13. d-i console-setup/layoutcode string fr 14. # To select a variant of the selected layout (if you leave this out, the 15. # basic form of the layout will be used): 16. #d-i console-setup/variantcode string dvorak 17. 18. #Proxy 19. 20. d-i mirror/http/hostname string 10.0.0.37 21. d-i mirror/http/directory string /iso/ubuntu-11.04-amd64/ 22. d-i mirror/http/proxy string
23. d-i mirror/http/proxy string http://10.0.0.35:3128 24. 25. # créer compte root 26. d-i passwd/root-login boolean true 27. # Ne pas créer de compte d'utilisateur. 28. d-i passwd/make-user boolean false 29. 30. #Le mot de passe de root 31. d-i passwd/root-password-crypted password $1$mczysd.I$baKKV28.gUgxb. 32. 33. # Cette commande permet de rÉgler l'horloge matÉrielle sur UTC : 34. d-i clock-setup/utc boolean true 35. d-i time/zone string Europe/Paris 36. d-i clock-setup/ntp boolean true 37. 38. tasksel tasksel/first multiselect ubuntu-desktop 39. 40. # Valeurs autorisÉes : none, safe-upgrade, full-upgrade 41. d-i pkgsel/upgrade select none 42. 43. #d-i grub-installer/only_debian boolean true 44. 45. d-i preseed/late_command string cd /target/root && wget http://10.0.0.37/iso/script-install/start.sh
&& chmod +x start.sh
PORTE Loïc – Le Libre en entreprise – 2012 Page 63 sur 66
(2) Script start.sh (version coupé) 1. […]
2. ############Config######### 3. domainName="ABC-OBJECTIF.LOCAL" 4. domainPrefix="ABC-OBJECTIF" 5. domainAdminLogin="" 6. sudoAdminGroup="admin_linux" 7. ipWebserv='10.0.0.37' 8. ############SCRIPT######### 9. […] 10. #apt-autocopmletion 11. echo "source /etc/bash_completion" > /root/.bashrc 12. 13. #Proxy 14. echo -e "$VERT Ajout du proxy $NORMAL" 15. wget http://$ipWebserv/iso/script-install/files/profile.d/proxy.sh -O /etc/profile.d/proxy.sh 16. chmod +x /etc/profile.d/proxy.sh 17. 18. #UpdateManager 19. […] 20. 21. #Desactiver la mise a jour vers d'autre version 22. echo -e "$VERT Desactivation des upgrades majeurs $NORMAL" 23. echo '[DEFAULT] 24. Prompt=never' > /etc/update-manager/release-upgrades || echo -e "$ROUGE erreur $NORMAL" 25. 26. #depot par defaut 27. echo -e "$VERT Ajout des dépots par default $NORMAL" 28. [….] 29. #Add PMSIPILOT repository 30. echo "deb http://10.0.0.37/apt natty main" >> /etc/apt/sources.list 31. wget -q http://10.0.0.37/apt/key/mygpgkey_pub.gpg -O- | sudo apt-key add - 32. 33. #install ssh 34. echo -e "$VERT Update des dépots $NORMAL" 35. apt-get update >> log.log || echo -e "$ROUGE erreur $NORMAL"
36. 37. echo -e "$VERT Instalation de ssh $NORMAL" 38. apt-get install ssh -y >> log.log || echo -e "$ROUGE erreur $NORMAL" 39. 40. #copy pubkey 41. echo -e "$VERT Ajout de la clé public $NORMAL" 42. wget http://$ipWebserv/iso/script-install/files/key.pub -O /tmp/key.pub >> log.log 43. (mkdir -p /root/.ssh/ && touch /root/.ssh/authorized_keys && cat /tmp/key.pub >>
/root/.ssh/authorized_keys ) || echo -e "$ROUGE erreur $NORMAL" 44. 45. 46. #VNC 47. echo -e "$VERT Configuration de vnc $NORMAL" 48. […] 49. 50. #Installation de likewise 51. […] 52. while [ $domainOk -lt 1 ]; do 53. domainjoin-cli join --userDomainPrefix $domainPrefix $domainName $domainAdminLogin
$domainAdminPassword && domainOk=2 54. […] 55. 56. done 57. #Config Likewise 58. […] 59. /opt/likewise/bin/lwconfig --file ./lwconf.conf 60. 61. #Ajout d'un groupe en tant que root 62. echo -e "$VERT Configuration de sudo et polkit: $NORMAL" 63. echo "%$domainPrefix\\\\$sudoAdminGroup ALL=(ALL) ALL" >> /etc/sudoers 64. echo "[Configuration]" > /etc/polkit-1/localauthority.conf.d/55-pmsipilot.conf 65. pol="AdminIdentities=unix-group:admin_linux;" 66. OK=0 67. while [ $OK -lt 1 ]; do 68. echo -n -e "Entrer l'utilisateur admin : $NORMAL"
PORTE Loïc – Le Libre en entreprise – 2012 Page 64 sur 66
69. read user
70. if [[ $(getent passwd | cut -d ":" -f 1 |grep $user |wc -l) == 1 ]] 71. then 72. #ajout à sudo 73. echo "$domainPrefix\\\\$user ALL=(ALL) ALL" >> /etc/sudoers 74. #ajout à polkit 75. pol=$pol"unix-user:$user;" 76. echo -e "$VERT Utilisateur ajouté $NORMAL" 77. else 78. echo -e "$ROUGE ERROR : Utilisateur inconnu $NORMAL" 79. fi 80. […] 81. done 82. 83. #Partage Réseaux 84. echo -e "$VERT Montage des partages automatique $NORMAL" 85. apt-get install pmsishare -y 86. 87. #mise a jour & installation des différents paquets 88. echo -e "$VERT Mise a jour et installation des différents paquets : $NORMAL" 89. apt-get install gajim git pmsi-ocsinventory-agent libreoffice-l10n-fr -y 90. apt-get upgrade -y >> log.log 91. 92. #Crontab 93. […] 94. 95. #Ajout des favoris Mozilla
96. echo -e "$VERT Ajout des favoris Mozilla : $NORMAL" 97. wget http://$ipWebserv/iso/script-install/files/mozilla.tar.gz -O /etc/skel/mozilla.tar.gz && tar -C
/etc/skel -xvf /etc/skel/mozilla.tar.gz && rm -f /etc/skel/mozilla.tar.gz 98. 99. #modification du prompt 100. […] 101. #envoi des infos 102. […] 103. #Modification des dns 104. […] 105. #Trim 106. […] 107. 108. #reboot 109. […]
PORTE Loïc – Le Libre en entreprise – 2012 Page 65 sur 66
(3) Fichier de configuration OpenVPN 1. port 1193
2. proto tcp 3. dev tun 4. 5. ca /etc/openvpn/keys/ca.crt 6. cert /etc/openvpn/keys/server.crt 7. key /etc/openvpn/keys/server.key 8. dh /etc/openvpn/keys/dh1024.pem 9. 10. server 172.16.1.0 255.255.255.0 11. ifconfig-pool-persist ipp.txt 12. 13. client-to-client 14. 15. keepalive 10 120 16. comp-lzo 17. max-clients 100 18. 19. persist-key 20. persist-tun 21. 22. status /var/log/openvpn-status.log 23. log-append /var/log/openvpn.log 24. 25. verb 4 26. 27. client-cert-not-required 28. username-as-common-name 29. plugin /usr/lib/openvpn/openvpn-auth-pam.so openvpn 30. 31. push "route 10.0.0.0 255.255.252.0" 32. push "route 10.0.4.0 255.255.252.0" 33. 34. push "dhcp-option DNS 10.0.0.19" 35. push "dhcp-option DNS 10.0.0.1"
36. 37. push "dhcp-option DOMAIN abc-objectif.local" 38. 39. script-security 2 40. learn-address /etc/openvpn/script/learnscript.sh 41. 42. status-version 3 43. status openvpn-status-tcp.log 44. duplicate-cn
PORTE Loïc – Le Libre en entreprise – 2012 Page 66 sur 66
(4) Learnscript.sh 45. #!/bin/bash
46. ######################### Config ############################ 47. 48. ip=$2 49. user=$3 50. AdHost="10.0.0.19" 51. AdUser="cn=USER,ou=SBSUsers,ou=Users,ou=MyBusiness,dc=abc-objectif,dc=local" 52. AdPass="MDP" 53. AdUsers="ou=SBSUsers,ou=Users,ou=MyBusiness,dc=abc-objectif,dc=local" 54. [email protected] 55. 56. grp_prefix="VPN_" 57. ###########Don't touch ############### 58. d=$(date) 59. echo "$d $@" >> /var/log/openvpn.user.log 60. 61. echo 1 > /proc/sys/net/ipv4/ip_forward 62. case $1 in 63. add) 64. Adgroup=$(ldapsearch -h $AdHost -x -D "$AdUser" -b "$AdUsers" -w $AdPass -LLL
"(sAMAccountName=$user)" memberOf|sed '/^dn/d'|sed '/^$/d'|sed 's/memberOf:\ //g') 65. oldIFS=$IFS 66. IFS=$'\n' 67. for grp in $Adgroup 68. do 69. grp_name=$( echo "$grp" |awk -F "," '{print $1 }' | awk -F "=" '{print $2}' ) 70. nb=$( echo $grp_name | sed "/^$grp_prefix/d" |wc -l ) 71. if [[ $nb == 0 ]] 72. then 73. /sbin/iptables -A FORWARD -s $ip -j $grp_name 74. if [[ $grp_name == "VPN_telephonie" ]] 75. then 76. echo "Connection au VPN telephonie avec l'utilisateur $user/$ip a $(date)" | mail
-s "[VPN] Telephonie" $email_tel 77. fi
78. fi 79. done 80. IFS=$oldIFS 81. ;; 82. update) 83. $0 delete $2 84. $0 add $2 $3 85. ;; 86. delete) 87. 88. ##Supression des références à la chaine 89. oldIFS=$IFS 90. IFS=$'\n' 91. numbers= 92. for line in $(/sbin/iptables -L FORWARD --line-number) 93. do 94. src=$(echo $line |awk -F" " '{print $5}') 95. num=$(echo $line |awk -F" " '{print $1}') 96. 97. if [[ $src == $ip ]] 98. then 99. numbers=$(echo "$num $numbers") 100. fi 101. done 102. IFS=$oldIFS 103. for num in $numbers 104. do 105. /sbin/iptables -D FORWARD $num 106. done 107. ;; 108. esac