Le Libre en entreprise - BiBaBoX | Partage de...

67
Le Libre en entreprise L’évolution d’une entreprise à travers le Libre PORTE Loïc - 2012

Transcript of Le Libre en entreprise - BiBaBoX | Partage de...

Le Libre en entreprise

L’évolution d’une entreprise à travers le

Libre

PORTE Loïc - 2012

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