Vous êtes sur la page 1sur 38

TSRITE 2009 FOAD

Rapportdestage
CentreHospitalier

Table des matires


Remerciements.....................................................................................................................................3 Objectif du stage...................................................................................................................................4 L'entreprise...........................................................................................................................................5 Historique.........................................................................................................................................5 La structure actuelle.........................................................................................................................5 Le service informatique...................................................................................................................6 Spcifications.......................................................................................................................................8 Environnement de travail.................................................................................................................8 L'existant..........................................................................................................................................8 Besoins et contraintes......................................................................................................................8 Squid...........................................................................................................................................8 Egroupware.................................................................................................................................9 Mise en uvre....................................................................................................................................10 Proxy..............................................................................................................................................10 Planning prvisionnel ...............................................................................................................10 Mise en uvre...........................................................................................................................10 Squid................................................................................................................................10 Sarg..................................................................................................................................13 Squidguard.......................................................................................................................16 Problmes rencontrs : ........................................................................................................20 Annexes : .............................................................................................................................20 eGroupware....................................................................................................................................21 Schma fonctionnel : ................................................................................................................21 Planning previsionnel................................................................................................................21 Mise en uvre...........................................................................................................................21 Configuration de openldap...................................................................................................22 Problmes rencontrs : ........................................................................................................25 Conflit de schma openldap............................................................................................25 Configuration de felamimail : .........................................................................................27 Prparation de la migration des utilisateurs.........................................................................28 Cration du carnet d'adresses principal...........................................................................28 Importation des agendas Lotus Notes..............................................................................28 Importation des carnet d'adresse Lotus Notes.................................................................29 Exportation des mails depuis LotusNotes dans eGroupware..........................................33 Importation mail depuis roundcube.................................................................................33 Annexes................................................................................................................................34 Procdure de migration serveur : .......................................................................................................35 Sur Revy:.......................................................................................................................................35 Sur Revnew:...................................................................................................................................35

Remerciements
Je tiens remercier particulirement les personnes suivantes pour leur prcieuse collaboration et leur apport technique sans qui, le bon droulement de ce stage n'aurait pas pu avoir lieu :

Objectif du stage
La formation Technicien Suprieur des Rseaux Informatiques et Tlcommunication d'Entreprise effectue l'AFPA de Langueux se conclue par un stage en entreprise se droulant du 28 septembre au 20 novembre 2009 au Centre Hospitalier de Le but de ce stage est dans un premier temps, la mise en place d'un nouveau proxy. Ce proxy doit permettre un enregistrement du trafic sur 1 an comme l'impose la loi, avec un systme simplifi de visualisation des logs. Il doit galement pouvoir filtrer les sites sensibles. Le second projet consiste installer, paramtrer et dployer le groupware eGroupware qui devra permettre d'unifier le systme de messagerie pour tous les utilisateurs ainsi que d'avoir une administration centralise et supprimer les clients de messageries lourds de type outlook et LotusNotes. Une contrainte importante est la possibilit de migrer convenablement les client Lotus, incluant les emails, les agendas et les carnets d'adresses.

L'entreprise
L'hospitalisation publique tient en France une place considrable. Au cours du vingtime sicle, les besoins en matire de sant n'ont cess d'voluer. La dcouverte de nouvelles pathologies, l'volution des murs en matire d'hygine et de soins ont entrain une progression continue du nombre de consultations, des techniques et des dpenses. Ainsi, un million d'actes mdicaux sont recenss chaque jour en France. Ils sont rpartis pour la plupart entre des mdecins gnralistes, les cliniques et essentiellement les hpitaux.

Historique
Le centre hopitalier de fait partie intgrante du patrimoine . Aux alentour de 1987, les locaux d'origines furent dclars vtustes et les principaux services de soins furent dplacs vers les nouveaux btiments construits entre 1987 et 1996 sur la partie haute du complexe. Les maisons de retraites occupent encore aujourd'hui certaines anciennes structures sur le site de l'hpital. L'administration (dont fait partie le service informatique) est loge dans un de ces btiments. Les autres services occupent les nouveaux locaux.

La structure actuelle
Rpondant au statut d'tablissement public de sant, le centre hospitalier de est dot de l'autonomie financire et juridique. Il est dirig par un conseil d'administration qui se compose de reprsentants administratifs et mdicaux et que prside le Maire de . Le conseil est comptent au niveau de la politique gnrale de l'tablissement et des aspects essentiels de la vie de l'tablissement, qu'il s'agisse du budget, des grands travaux, des emprunts ou des effectifs. Il existe nanmoins une seconde instance de direction en la personne du directeur nomm par le ministre de la sant aprs avis du prsident du conseil d'administration. Il reprsente le pouvoir excutif au sein de l'hpital L'hpital emploie environ 800 personnes (dont une soixantaine de mdecins).

45 40 35 30 25 20 15 10 5 0 administratif Secrtaire medical medico technique Ouvrier et technique service Infirmier

Les services de l'hpital sont actuellement rpartis en 4 catgories indispensables au bon fonctionnement de l'tablissement : Les services administratifs qui regroupent le service du personnel, les services conomiques et financiers, le service informatique et le direction Les services logistiques qui comprennent les services techniques, les ateliers, la cuisine, la blanchisserie, les services d'entretien. Les services de soins constitus de la chirurgie, la cardiologie, la mdecine interne, la pneumologie, les soins continus, la gyncologie obsttrique, la gastroentrologie, le moyen sjour, le long sjour et la maison de retraite. Les services mdicaux techniques qui regroupent le bloc opratoire, l'anesthsiologie, les urgences, la radiologie et l'chographie, le laboratoire, la pharmacie centrale, le DIM (Dpartement d'information Mdicale) et la kinsithrapie. C'est pour cela qu'au fil des annes, le Centre Hospitalier s'est dot d'un rseau tlphonique et informatique dvelopp. Comme la plupart des hpitaux, il possde une liaison internet trs haut dbit de manire pouvoir communiquer avec les autres tablissements de la rgion. Ainsi on s'oriente de plus en plus vers des collaborations distance par visioconfrence. Les principaux hpitaux du secteur sont quips de stations de visioconfrences permettant des runions entre le personnel soignant d'tablissements spars par plusieurs dizaines de kilomtres.

Le service informatique
Le service informatique est un sous-ensemble du service administratif. Les locaux de ce service se situent dans le btiment de l'administration qui est spar des services de soins. Le service informatique dispose de 2 salles : Une salle serveurs et les bureaux. Le service informatique de l'hpital fut cr en 1986 l'arrive de DP. C'est partir de ce moment que l'ensemble de l'tablissement a commenc se doter petit petit d'une assistance informatique la gestion. Depuis, le parc ne cesse d'voluer. 6

Le service informatique dispose d'une autonomie de dcision et travail en collaboration avec une structure rgionale d'information hospitalire. Cette structure, le SIB (Syndicat Inter-hospitalier de Bretagne) est un centre de traitement, d'dition et de faonnage. Il assure un rle d'tude et de conseil dans le choix et la ralisation de progiciels informatiques, il propose plusieurs filire adaptes la taille des hpitaux. Le SIB est quip d'un matriel informatique puissant. Le service informatique est actuellement compos de 5 personnes : DP: responsable du service informatique depuis 1986, il est galement responsable du stage dcrit dans ce rapport. LJ : Informaticien entr au service informatique depuis mai 1988. Il s'occupe du developpement d'applications internes. SQ : Technicien Rseau entr au service informatique depuis aout 2000. LP : Technicien Rseau entr au service informatique depuis mai 2009. BV : Technicien de support informatique entr dans le service en janvier 2009. A eux cinq ils assurent la mise en place et le suivi des diffrentes applications et systmes d'exploitations utiliss, la maintenance du rseau, son volution et l'assistance aux utilisateurs. Le personnel du service informatique doit tre trs mobile. En effet, les utilisateurs sont rpartis entre le btiment administratif et les diffrents services de soins. Ils s'occupent galement de la maintenance du parc informatique et du dveloppement de logiciels internes (besoins particuliers et ponctuels, personnalisation de certaines fonctionnalits, etc). Le manque de personnel limitant le temps consacr au dveloppement, le service fait rgulirement appel des stagiaires. C'est dans dans le bureau du service informatique que s'est droul le stage. Un PC est rserv aux stagiaires qui transitent dans ce bureau. Il s'avre que c'est un endroit en activit constante. Dans la mesure o la quasi totalit des services sont quips de matriels informatiques, il y a toujours des dpannages effectuer, que ce soit en se dplaant ou distance via une prise de contrle de la machine avec VNC.

Spcifications
Environnement de travail
Le parc informatique est compos d'environ 400 postes. Bien que la majorit des serveurs soient sous Unix, il y a une grande htrognit des services. Pour supporter le proxy et le groupware, une nouvelle machine a t acquise. Ses caractristiques sont : Xeon Quad Core 8 Go de RAM Disque dur 350Go RAID1 Cette machine ne se situe pas encore sur le rseau de production, mais sur le rseau de test. Je travaillerai directement dessus via une prise de contrle distance SSH. Schma logique : Annexe 1

L'existant
Trois solutions de messageries cohabitent actuellement. LotusNotes 5 pour une partie des utilisateurs (80 licences), Outlook pour la majorit des utilisateurs et enfin roundcube est utilis dans le laboratoire et la maison de retraite ce qui implique des systmes d'authentifications diffrents pour chacune de ses solutions. Ceci complique la maintenance du systme global de messagerie tant au niveau de la redirection des mails suivant les utilisateurs qu'au niveau de l'ajout d'un nouvel utilisateur selon son service. Le proxy actuel est netscape proxy server. Utiliser depuis plusieurs annes celui ci ne permettait pas d'avoir un suivi des logs ni une authentification des utilisateurs. Suite aux modifications des lois concernant les fournisseurs d'accs internet (dont l'hpital fait parti puisqu'il fournit ce service ses utilisateurs) stipulant que le trafic doit tre conserv pendant 12 mois, il est devenu ncessaire de mettre jour l'ancien proxy et d'y modifier toutes la configuration ou d'en installer un nouveau.

Besoins et contraintes Squid


Les utilisateurs devront pouvoir s'authentifier avant d'accder internet. L'authentification se fera via un serveur LDAP qui est dj en production mais trs peu utilis. Pour faciliter la lecture des logs en cas de problme, un analyseur de log avec interface http devra tre mis en place. Enfin, les sites sensibles (pornographie, vido, tlchargement illgaux) devront tre filtrs. Le Proxy impos est Squid. Le choix des logiciels tiers pour le filtrage et l'analyse des logs est libre.

Egroupware
Egroupware devrait permettre d'unifier la messagerie, les agendas et les carnets d'adresses de tout le personnel. La condition principale qui peut autoriser son dploiement est qu'on puisse y importer les emails, agendas et carnets d'adresses venant des solutions de messageries utilises actuellement. On devra galement procder un test de non rgression afin de s'assurer que les utilisateurs disposeront toujours des mmes options qu'auparavant. L'authentification se fera via LDAP comme pour le proxy et le carnet d'adresses y sera galement stock.

Mise en uvre
Proxy Planning prvisionnel
Prise en main de la machine distante. Installation de Squid. Modification du fichier de configuration. Inclure les acl pour tlcharger les mise jour windows en transparence (sans authentification) Inclure le script squid pour utiliser une authentification LDAP Inclure les acl pour n'autoriser que le groupe 'Internet' accder internet. Installation de sarg sarg ne ncessite aucune configuration pour tre fonctionnel Installation de Squidguard Tlchargement du fichier de blacklists Modification du fichier de configuration pour bloquer les sites souhaits. Gnration des fichiers db Modification du fichier de configuration de Squid pour lui demander de rediriger les url vers squidguard Cration de la page de redirection de Squidguard. Automatisation de la mise jour des blacklists.

Mise en uvre
Squid

Installation de Squid : [root@revnew]$yuminstallsquid

10

Fichier /etc/squid/squid.conf : http_port3128 #Onnemetpasencachelespagesrsultantsderequtescgi hierarchy_stoplistcgibin? aclQUERYurlpath_regexcgibin\? cachedenyQUERY aclapacherep_headerServer^Apache broken_vary_encodingallowapache access_log/var/log/squid/access.logsquid #Onemuleleslogsd'apachepourfaciliterleurlecture emulate_httpd_logon #Niveaudedebogage debug_optionsALL,6 #Paramtrepourl'authentificationldap auth_parambasicprogram/usr/lib64/squid/squid_ldap_authv3D "cn=Manager,dc=,dc=fr"wpasswordbou=users,dc=,dc=frf (&(uid=%s))UuserPasswordldap://194.146.14.200:389 auth_parambasicchildren5 auth_parambasicrealmSquidproxycachingwebserver auth_parambasiccredentialsttl2hours authenticate_ttl1hour authenticate_ip_ttl0seconds #GroupeldapayantaccsaInternet external_acl_typeInetGroup%LOGIN /usr/lib64/squid/squid_ldap_groupv3D"cn=Manager,dc=,dc=fr" wpasswordb"ou=Groups,dc=,dc=fr"f "(&(objectclass=posixgroup)(cn=%a)(memberuid=%v))" ldap://194.146.14.200:389 aclInetAccessexternalInetGroupInternet refresh_pattern^ftp: 1440 20% 10080 refresh_pattern^gopher: 1440 0% 1440 refresh_pattern. 0 20% 4320 #ACLpourautoriserlesmisesjourwindowssansdemander #d'authentification aclwindowsupdatedstdomainwindowsupdate.microsoft.com aclwindowsupdatedstdomain.update.microsoft.com aclwindowsupdatedstdomaindownload.windowsupdate.com aclwindowsupdatedstdomainredir.metaservices.microsoft.com aclwindowsupdatedstdomainiamges.metaservices.microsoft.com aclwindowsupdatedstdomainc.microsoft.com aclwindowsupdatedstdomainwww.download.windowsupddate.com 11

aclwindowsupdatedstdomainwustat.windows.com aclwindowsupdatedstdomaincrl.microsoft.com aclwindowsupdatedstdomainsls.microsoft.com aclwindowsupdatedstdomainproductactivation.one.microsoft.com aclwindowsupdatedstdomainntservicepack.microsoft.com aclpasswordproxy_authREQUIRED aclallsrc0.0.0.0/0.0.0.0 aclmanagerprotocache_object acllocalhostsrc127.0.0.1/255.255.255.255 aclto_localhostdst127.0.0.0/8 aclSSL_portsport443 aclCONNECTmethodCONNECT aclwuCONNECTdstdomainwww.update.microsoft.com aclwuCONNECTdstdomainsls.microsoft.com #ApplicationdesACL http_accessallowmanagerlocalhost http_accessallowCONNECTwuCONNECT http_accessallowwindowsupdate http_accessdeny!Safe_ports http_accessdenyCONNECT!SSL_ports http_accessallowlocalhost http_accessallowInetAccess http_accessdenyall http_reply_accessallowall icp_accessallowall visible_hostnamerevnew..fr coredump_dir/var/spool/squid #OnredirigelesURLverssquidguard redirect_program/usr/bin/squidGuardc/etc/squid/squidguard.conf

12

Sarg

Sarg est un visualiseur de log d'accs squid. Il est lanc quotidiennement, hebdomadairement et mensuellement via des script cron. Suivant le cron qui le lance, le script crit dans /var/www/sarg/daily, weekly ou monthly. Si sarg est lanc manuellement, il crit alors les rsultats dans /var/www/sarg/ONE-SHOT. Aprs avoir rcupr le RPM sur le site du projet sarg, celui ci est install pour pouvoir passer la configuration. /etc/sarg/sarg.conf languageFrench access_log/var/log/squid/access.log graphsyes title"ProxySquid,Rapportd'Acces" font_size12px header_font_size12px title_font_size14px background_colorwhite text_bgcolorlavender title_colorgreen logo_imagenone logo_text"" image_size8045 background_imagenone output_dir/var/www/sarg/ONESHOT resolve_ipyes user_ipno date_formate overwrite_reportno records_without_useridip mail_utilitymail topsites_num100 topsites_sort_orderCONNECTD index_sort_orderD show_successful_messageno show_read_statisticsyes external_css_file/var/www/sarg/sarg.css 13

Test de sarg Visualisation dans un navigateur la page http://revy/sarg/

La premire page propose de slectionner le type de visualisation. ONE-SHOT contient les pages gnres lors d'un lancement manuel du script, entre 2 crons

Vue daily

Dtail d'une vue daily

14

Dtails d'un utilisateur

Vue Weekly

15

Squidguard

SquidGuard est un programme qui prend en argument l'adresse d'un site internet. Cette adresse est ensuite compare avec une liste dans une base de donnes. Si l'adresse fournie en arguments correspond une des adresses de la base de donnes, alors l'accs au site web est bloqu. Sinon, l'accs est autoris. Squidguard possde plusieurs catgories de sites sensibles (pornographie, jeux, audio/video, piratage) et il est possible de choisir quelles catgories doivent tre bloques. Installation de Squidguard [root@revnew]$yuminstallsquidguard Fichier de configuration de Squidguard /etc/squid/squidguard.conf # #CONFIGFILEFORSQUIDGUARD # dbhome/var/lib/squidguard/db logdir/var/log/squid/ srcall{ ip0.0.0.0 } destinationpornographie{ urllistadult/urls domainlistadult/domains } destinationagressif{ urllistagressif/urls domainlistagressif/domains } destinationaudiovideo{ urllistaudiovideo/urls domainlistaudiovideo/domains } destinationdrogues{ urllistdrugs/urls domainlistdrugs/domains } destinationforums{ urllistforums/urls domainlistforums/domains } 16

destinationjeux{ urllistgambling/urls domainlistgambling/domains } destinationhackers{ urllisthacking/urls domainlisthacking/domains } destinationredirecteurs{ urllistredirector/urls domainlistredirector/domains } destinationviolence{ urllistviolence/urls domainlistviolence/domains } destinationwarez{ urllistwarez/urls domainlistwarez/domains }

acl{ default{ pass!pornographie!agressif!audiovideo!drogues !forums!jeux!hackers!redirecteurs!violence!warez redirecthttp://192.168.128.254/cgi bin/squidGuard.cgi Pour crer la base de donnes de sites bloquer, il est ncessaire de disposer d'une liste de ces sites sensibles. Pour cela, l'universit de Toulouse met disposition une liste de sites black-lists pour squidguard. Tlchargement db ftp://ftp.univ-tlse1.fr/pub/reseau/cache/squidguard_contrib/blacklists.tar.gz Installation db cd /var/lib/squidguard/db tar xvzf blacklists.tar.gz mv blacklists/* . Chown squid:squid ../* Gnration des fichier .db squidguard -C all Redmarrage de squid 17

Pour gagner du temps et ne pas avoir faire les mises jour de la blacklist manuellement, j'ai propos l'criture d'un script. Ce script est plac dans un cron qui sera lanc tous les mois. Il envoie galement un mail lorsque la mise jour se termine afin de savoir si celle ci s'est bien droule ou non. #!/bin/bash #Scriptdemiseajourdelalistedefiltragesquidguard. #Tlchargel'archive,ladcompresseetrgnrelesfichiersdb. # squidconf="/etc/squid/squidguard.conf" repfiltre="/var/lib/squidguard/db" tmp="/tmp" logfile="/var/log/majsquidguard.log" date=`date` blacklistsdl="ftp://ftp.univ tlse1.fr/pub/reseau/cache/squidguard_contrib/blacklists.tar.gz" rmf$tmp/blacklists.tar.gz #Onenvoieladatedansleslogs echoe"\n\n`date`DbutMiseajour">>$logfile #Rcuprationdelablacklistssurlesitedel'universitde Toulouse cd$tmp echo"`date`Tlchargementde$blacklistsdl">>$logfile wgetnv$blacklistsdl>>$logfile2>&1||exit$? #Ontestl'existencedufichier$tmp/blacklists.tar.gz #Siilexiste:onledcompressedanslerpertoireadquat # onrgnrelesfichiers.dbdesquidguard #onmodifielespropritairesdesfichiers #onprocdeaunrechargementdelaconfigurationdesquid #enfin,onsupprimelefichierblacklists.tar.gzdu #dossierdetlchargement #Siiln'existepas,onsortavecuneerreuretonl'critdans #leslogs if[f"$tmp/blacklists.tar.gz"] then echo"`date`ExtractiondeL'archive">>$logfile tarxzf$tmp/blacklists.tar.gzC$repfiltre>>$logfile|| exit$? echoe"`date`Archiveextraiteavecsuccs\n`date` Gnrationdesnouveaufichiers.db">>$logfile squidguardc$squidconfCalld$repfiltre>/dev/null 2>&1||exit$? echo"`date`Fichiersdbgnrs">>$logfile chownsquid:squid$repfiltreR echo"`date`ReconfigurationdeSquid">>$logfile squidkreconfigure echo"`date`Squidreconfigure">>$logfile rmf$tmp/blacklists.tar.gz 18

echo"`date`Miseajourblackliststerminesavec succs">>$logfile echo"Lamiseajourdesquidguardarussiele`date`" >/tmp/mailmajsquidguard mails"MajSquidguard::Succs"postmaster</tmp/mail majsquidguard rmf/tmp/majmailsquidguard exit0 else echo"$dateErreurdemiseajourdesblacklists">> $logfile echo"Lamiseajourdesquidguardachouele`date`" >/tmp/mailmajsquidguard mails"MajSquidguard::chec"postmaster</tmp/mail majsquidguard rmf/tmp/majmailsquidguard exit1 fi

19

Problmes rencontrs :

Proxy Transparent : On souhaite pouvoir configurer le proxy comme transparent afin de ne pas avoir configurer manuellement tous les navigateurs. On tente donc d'ajouter une rgle de prerouting NAT sur le routeur principal pour rediriger les requtes sur le port 80 vers l'ip 192.168.128.254:3128 Cette configuration ne fonctionne pas. En effet, du aux limitations de TCP/IP, il est impossible de faire de l'authentification avec du DNAT. En effet, la machine cliente est persuade de traiter avec le serveur web et non avec le proxy. Sarg Sarg en 64bit plante lors de chaque cron en erreur de segmentation. On installe donc la version i386 et les dpendance i386 qui vont avec : dpendance de sarg : gd dpendance de gd : libXpm Ces 2 dpendances permettent de gnrer des fichiers images (jpg, png, gif) pour amliorer l'interface utilisateur lors de la navigation web.

Annexes :

Rdaction d'un dossier technique l'usage des techniciens : Voir annexe 2

20

eGroupware Schma fonctionnel :

21

Planning previsionnel
Installation de Apache et test de son bon fonctionnement Installation de php Installation de mysql et cration de l'utilisateur egroupware et de la base de donne correspondante. Installation de Cyrus Installation de egroupware Configuration de egroupware via la page web ddie. Configuration des droits OpenLDAP Cration des utilisateurs de test pour egroupware Test des fonctionnalits de egroupware (mail, carnet d'adresses, agenda) Test d'importation des agendas, mails et carnets d'adresses depuis lotus Test d'importation des mails depuis outlook express Cration du carnet d'adresses principal (disponible en lecture pour tous les utilisateurs) Test de non rgrssion criture du manuel utilisateur Migration des premiers utilisateurs

Mise en uvre
Installation de apache. Configuration du service httpd avec php et mysql. Sendmail pr-configur Installation et configuration de Cyrus en suivant la documentation. Installation de egroupware. Pour cela, on dcompacte l'archive dans /var/www/egroupware Puis on se rend l'adresse http://ip_du_serveur/egroupware qui nous renvoie vers une page de configuration.

22

Configuration de openldap

slapd.conf : # #Seeslapd.conf(5)fordetailsonconfigurationoptions. #ThisfileshouldNOTbeworldreadable. # include/etc/openldap/schema/core.schema include/etc/openldap/schema/cosine.schema include/etc/openldap/schema/inetorgperson.schema include/etc/openldap/schema/evolutionperson.schema #include/etc/openldap/schema/nis.schema include/etc/openldap/schema/rfc2307bis.schema include/etc/openldap/schema/samba.schema include/etc/openldap/schema/hopital.schema allowbind_v2 pidfile/var/run/openldap/slapd.pid argsfile/var/run/openldap/slapd.args #Loaddynamicbackendmodules: #modulepath/local/libexec/openldap moduleloadback_bdb.la moduleloadback_ldap.la moduleloadback_ldbm.la 23

moduleloadback_passwd.la moduleloadback_shell.la loglevel32 accesstodn.one="ou=Users,dc=,dc=fr" attrs=entry,sn,mail,cn,givenName,telephoneNumber,uid,objectClass byanonymousread accesstodn.one="ou=Groups,dc=,dc=fr" attrs=cn,memberUid,objectClass byanonymousread accesstodn.one="ou=People,dc=,dc=fr" attrs=entry,sn,mail,cn,givenName,telephoneNumber byanonymousread include/etc/openldap/acl_addressbooks.conf accessto* by*peername.ip=192.168.128.254read accessto* by*none ################################################################## ##### #BDBdatabasedefinitions ################################################################## ##### databasebdb suffix"dc=,dc=fr" rootdn"cn=Manager,dc=,dc=fr" rootpwpassword directory/var/lib/ldap indexobjectClasseq Fichier acl_addressbooks.conf : #Accsaucarnetd'adressepersonneldesutilisateurs #Autoriserlalectureducarnetd'adresseparl'utilisateuret #l'critureparl'administrateur accesstodn.regex="^cn=([^,]+),ou=personal,ou=contacts,ou=([^,] +),dc=,dc=fr$" attrs=entry bydn.regex="uid=$1,ou=$2,dc=,dc=fr"read bydn.regex="cn=adminplain,ou=$2,dc=,dc=fr"write 24

byusersnone #Autoriserlesutilisateursajouterdescontactsdansleur carnetd'adressepersonnel. #Ncessitel'accsencriturel'attributENTRY... accesstodn.regex="cn=([^,]+),ou=personal,ou=contacts,ou=([^,] +),dc=,dc=fr$" attrs=children bydn.regex="uid=$1,ou=$2,dc=,dc=fr"write byusersnone #etl'entreenfant accesstodn.regex="cn=([^,]+),ou=personal,ou=contacts,ou=([^,] +),dc=,dc=fr$" attrs=entry,@inetOrgPerson,@evolutionPerson bydn.regex="uid=$1,ou=$2,dc=,dc=fr"write byusersnone #Accsauxcarnetsd'adressedegroupes #Lammechosepourlesgroupes accesstodn.regex="^cn=([^,]+),ou=shared,ou=contacts,ou=([^,] +),dc=,dc=fr$" attrs=entry bygroup.expand="cn=$1,ou=groups,ou=$2,dc=,dc=fr"read bydn.regex="uid=adminplain,ou=users,dc=,dc=fr"write bydn.regex="uid=queseb,ou=Users,dc=,dc=fr"write byusersnone accesstodn.regex="cn=([^,]+),ou=shared,ou=contacts,ou=([^,] +),dc=,dc=fr$" attrs=children bydn.regex="uid=adminplain,ou=users,dc=,dc=fr"write bydn.regex="uid=queseb,ou=users,dc=,dc=fr"write bygroup.expand="cn=$1,ou=groups,dc=,dc=fr"read byusersnone accesstodn.regex="cn=([^,]+),ou=shared,ou=contacts,ou=([^,] +),dc=,dc=fr$" attrs=entry,@inetOrgPerson,@evolutionPerson bydn.regex="uid=adminplain,ou=users,dc=,dc=fr"write bydn.regex="uid=queseb,ou=users,dc=,dc=fr"write bygroup.expand="cn=$1,ou=groups,dc=,dc=fr"read byusersnone
Problmes rencontrs : Conflit de schma openldap

Le manuel d'installation de egroupware prcise qu'il ncessite le schma rfc2307bis.schema. Le schma actuel utilis est nis.schema (en fait rfc2307.schema). Ces 2 schmas diffrent par la dfinition de certaines classes d'objets. En effet, dans nis.schema, la classe d'objet posixGroup est dfinie comme STRUCURAL et la classe 25

d'objet groupOfNames est AUXILIARY. Ces structures sont inverses dans rfc2307bis.schema. Ceci implique une incompatibilit entre les groupes crs dans la base LDAP par egroupware. Les messages d'erreurs concernent la construction des groupes d'utilisateurs. Il va donc falloir travailler sur le schma ldap lui mme et sur les dfinitions des groupes d'utilisateurs. Les groupes d'utilisateurs ont t construits de cette manire : dn:cn=Utilisateurs,ou=Groups,dc=,dc=fr structuralObjectClass:posixGroup entryUUID:42b7453a4838102e848c1518a0b6c338 creatorsName:cn=Manager,dc=,dc=fr createTimestamp:20091008092527Z sambaSID:S1521256763563424513999501540212239513 gidNumber:513 sambaGroupType:2 objectClass:posixGroup objectClass:sambaGroupMapping objectClass:top cn:Utilisateurs entryCSN:20091008093703Z#000018#00#000000 modifiersName:cn=Manager,dc=,dc=fr modifyTimestamp:20091008093703Z Il a fallut modifier manuellement la base ldap ainsi que core.schema Pour modifier la base on arrte le serveur pour stopper toute modification de celle ci : $killallslapd On rcupre la base sous forme de fichier ldif : $cd/tmp $slapcatn1c>exportbase.ldif $cpexportbase.ldifimportbase.ldif On modifie la base ldap suivant les besoins. Ici, pour chaque dfinitions de groupe, on remplace structuralObjectclass: posixGroup par structuralObjectclass: groupOfNames on ajoute galement l'objectclass groupOfNames dans la structure des groupes. Exemple de modification de la base pour un groupe. dn:cn=Utilisateurs,ou=Groups,dc=,dc=fr structuralObjectClass:groupOfNames entryUUID:42b7453a4838102e848c1518a0b6c338 creatorsName:cn=Manager,dc=,dc=fr createTimestamp:20091008092527Z sambaSID:S1521256763563424513999501540212239513 gidNumber:513 sambaGroupType:2 26

objectClass:posixGroup objectClass:sambaGroupMapping objectClass:top objectclass:groupOfNames cn:Utilisateurs entryCSN:20091008093703Z#000018#00#000000 modifiersName:cn=Manager,dc=,dc=fr modifyTimestamp:20091008093703Z On modifie galement core.schema pour le faire correspondre aux besoins Avant objectclass(2.5.6.9NAME'groupOfNames' DESC'RFC2256:agroupofnames(DNs)' SUPtopAUXILIARY MUST(member$cn) MAY(businessCategory$seeAlso$owner$ou$o$ description)) Aprs : objectclass(2.5.6.9NAME'groupOfNames' DESC'RFC2256:agroupofnames(DNs)' SUPtopSTRUCTURAL MUSTcn MAY(member$businessCategory$seeAlso$owner$ou$o $description)) Sans ces modifications, openldap refusait les oprations sur les groupes (ajout d'un utilisateur par exemple) car egroupware y insrait l'objectclass groupOfNames qui entrait en conflit avec posixGroup. Une fois les modifications termines, on se rend dans /var/lib/ldap (dfinie par la directive directory dans slapd.conf). On peut ensuite importer la base modifie : $mkdirsauvegardebdb $mv*.bdbsauvegardebdb/ $slapaddn1l/tmp/importbase.ldif

27

Configuration de felamimail :

Felamimail est le module email de eGroupware. Par dfaut, felamimail envoie le nom de compte ldap comme login d'identification cyrus. Cependant, les comptes ldap et les compte mails ne sont pas les mmes. Compte ldap : 3 lettres Nom + 3 lettres Prnom Compte mail : prenom.nom Pour faire envoyer les bons paramtres a cyrus par felamimail, il a t dcid de modifier directement le fichier php. L'autre solution aurait t de travailler avec les alias (/etc/aliases) mais ceci aurait ncessit de maintenir ce fichier jour chaque ajout d'utilisateurs. modification de /var/www/egroupware/emailadmin/inc/class.emailadmin_bo.inc.php Modifier la ligne : $icServer>loginName=$data['imapLoginType']=='standard'? $GLOBALS['egw_info']['user']['account_lid']:$GLOBALS['egw_info'] ['user']['account_lid'].'@'.$data['defaultDomain']; en $icServer>loginName=$data['imapLoginType']=='standard'? $GLOBALS['egw_info']['user']['firstname'].'.'.$GLOBALS['egw_info'] ['user']['lastname']:$GLOBALS['egw_info']['user'] ['account_lid'].'@'.$data['defaultDomain']; Ceci permet de ne pas envoyer l'account id pour l'authentification cyrus, mais prenom.nom.

28

Prparation de la migration des utilisateurs

Cration du carnet d'adresses principal

Insrer tous les utilisateurs de la base ldap dans le carnet d'adresses default : Pour cela, un script a t crit. Celui ci permet de rcuprer la base ldap actuelle dans un fichier de format ldif puis de le modifier Script : #!/bin/bash if[f/tmp/addpeople.ldif] thenrmf/tmp/addpeople.ldif fi foriin`seq1390` doldapsearchxb"uid=$i,ou=People,dc=,dc=fr" "(objectClass=inetOrgPerson)"D"cn=Manager,dc=,dc=fr"w passwordHldap://194.146.14.200LLLt>>/tmp/addpeople.ldif done; sed's/ou=People/cn=default,ou=shared,ou=contacts,ou=Users/' /tmp/addpeople.ldif>/tmp/addpeoplesed.ldif ldapmodifyaf/tmp/addpeoplesed.ldifD"cn=Manager,dc=,dc=fr" wpasswordh194.146.14.200x exit0

Importation des agendas Lotus Notes

Lotus Notes R5 ne permet pas l'export des agendas en format iCal ou CSV. Aprs de multiples recherches sur internet, le plugin ical export from Lotus Notes. a t trouv Aprs installation du plugin, on peut exporter l'agenda au format iCal et enfin l'importer dans eGroupware. Test avec agenda peu remplis OK Test avec gros agenda Problme de mise en page. Les champs vides ou tronqus (saut de ligne) provoquent une erreur d'importation. Corrig par un script VB qui modifie les champs concerns.

29

Importation des carnets d'adresses Lotus Notes

Lotus Notes ne permet pas l'export des carnets d'adresses au format CSV. Aprs une recherche dur Internet, nous avons pu trouver export any view to excel. Ce code, insrer dans Lotus Notes ouvre directement une vue des contacts du carnet d'adresses dans Excel. Ce qui nous intresse ici est le fichier .csv cr la racine de C:. On rcupre ce fichier et on l'importe dans eGroupware. Procdure d'ajout du code : Ouvrir le carnet d'adresses Lotus Notes. Aller dans Create Agent Nom : ExportCSV When should this agent run : Manually from Actions menu Which document should it act on. Selected document. Run : Lotus Script

Code :

SubInitialize DimworkspaceAsNotesUIWorkspace DimuiviewAsNotesUIView DimviewAsNotesView DimcolumnAsNotesViewColumn DimviewentriesAsNotesViewEntryCollection DimviewnavAsNotesViewNavigator DimviewentryAsNotesViewEntry DimsessionAsNotesSession DimdbAsNotesDatabase DimdcAsNotesDocumentCollection DimdocAsNotesDocument DimentryvaluesAsVariant,handleAsVariant,wbookAsVariant,wsheetAs Variant,viewcolumnsAsVariant DimcurrententryAsString,currentprocessAsString,viewnameAsString, filenameAsString DimcolumnheadingsAsString,columnvaluesAsString,columntitleAsString DimcounterAsInteger,xAsInteger,yAsInteger,slashposAsInteger,spacepos AsInteger DimhyphenposAsInteger,filenumAsInteger,mycounterAsInteger,commaposAs Integer OnErrorGotoprocesserror 'setobjects currentprocess="settingobjects" Setworkspace=NewNotesUIWorkspace Setuiview=workspace.CurrentView Setview=uiview.View Setviewnav=view.CreateViewNav() Setsession=NewNotesSession Setdb=session.CurrentDatabase 'getthecurrentview'snameandreplaceallbackslasheswithahyphen currentprocess="gettingtheviewnameandreplacingbackslasheswithhyphens" viewname=view.Name slashpos=Instr(viewname,"\") Ifslashpos>0Then DoWhileslashpos>0 Mid(viewname,slashpos)=""

30

slashpos=Instr(viewname,"\") Loop EndIf 'nowreplaceallforwardslasheswithahyphen currentprocess="replacingallforwardslashesintheviewnamewithhyphens" slashpos=Instr(viewname,"/") Ifslashpos>0Then DoWhileslashpos>0 Mid(viewname,slashpos)="" slashpos=Instr(viewname,"/") Loop EndIf 'reduceviewnametoamaximumof31charactersbutkeepwholewordsonly(cut atfirstspaceorhyphenencountered) currentprocess="truncatingtheviewnameto31characters(wholewordsonly)" IfLen(viewname)>31Then viewname=Right(viewname,31) spacepos=Instr(viewname,"") hyphenpos=Instr(viewname,"") Ifspacepos<hyphenposThen viewname=Right(viewname,Len(viewname)spacepos) Else viewname=Right(viewname,Len(viewname)hyphenpos) EndIf EndIf 'collecttheselecteddocuments currentprocess="collectingtheselecteddocuments" Setdc=db.UnprocessedDocuments 'checkthatdocumentshavebeenselectedatall currentprocess="checkingthatdocumentswereselectedatall" Ifdc.count=0Then Msgbox"Youmustselectthedocumentsyouwishtoexport.PressCTRL+Atoselect alldocuments",0+48,"Error!" ExitSub EndIf 'ifdocumentshavebeenselectedcreatetextfile currentprocess="creatingatextfileforoutput" filenum=Freefile() filename="c:\"&viewname&".csv" OpenfilenameForOutputAsfilenum 'createheaderrowintextfile currentprocess="recreatingthecolumnnamesasheaderinthetextfile" viewcolumns=view.Columns Setcolumn=viewcolumns(Lbound(viewcolumns)) columnheadings=column.Title Forx=(Lbound(viewcolumns)+1)ToUbound(viewcolumns) Setcolumn=viewcolumns(x) columnheadings=columnheadings&","&column.Title Next Print#filenum,columnheadings 'accesseachselecteddocumentinturn currentprocess="startingtoprocesseachdocumentinturn" Setdoc=dc.GetFirstDocument mycounter=0 counter=1 Do

31

counter=counter+1 currentprocess="accessingtheviewentrycorrespondingtothecurrent document" 'gettheviewentrycorrespondingtothecurrentselecteddocument Setviewentry=viewnav.GetEntry(doc) IfviewentryIsNothingThen Print#filenum,"DocumentID"&doc.UniversalID&_ "appearsundermultiplecategories.Unabletoexport,pleasetransferthedata manually." Else Redimentryvalues(0) entryvalues=viewentry.ColumnValues IfIsarray(entryvalues)Then currentprocess="creatingeachcolumnvalueinitsrespectivecell" 'createeachcolumnvalueinitsrespectivecell columnvalues=entryvalues(Lbound(entryvalues)) Fory=(Lbound(entryvalues)+1)ToUbound(entryvalues) currentprocess="replacinganycommaintheentrywithasemicolon" 'seekandreplacecommasinentry currententry=entryvalues(y) commapos=Instr(currententry,",") Ifcommapos>0Then DoWhilecommapos>0 Mid(currententry,commapos)=";" commapos=Instr(currententry,",") Loop entryvalues(y)=currententry EndIf columnvalues=columnvalues&","&entryvalues(y) Next currentprocess="writingthecurrentviewentrytothefile" Print#filenum,columnvalues EndIf EndIf 'reportinghowmanydocumentsofhowmanyintotalhavebeenexportedsofar currentprocess="reportingprogressinstatusbar" mycounter=mycounter+1 Print"Exporting"&Cstr(mycounter)&"/"&dc.Count&"documents." currentprocess="accessingthenextselecteddocumentinthelist" 'getthenextselecteddocument Setdoc=dc.GetNextDocument(doc) LoopUntil(docIsNothing) currentprocess="closingthefile" Closefilenum 'createExcelsheet currentprocess="creatinganExcelspreadsheet" Sethandle=CreateObject("Excel.Application") handle.visible=True handle.Workbooks.Open(filename) Setwsheet=handle.Application.Workbooks(1).Worksheets(1) 'formatspreadsheet currentprocess="formattingthespreadsheet" wsheet.Name=viewname wsheet.Cells.Font.Size=8 wsheet.Rows("1:1").Select wsheet.Rows("1:1").Font.Bold=True wsheet.Cells.EntireColumn.Autofit

32

'returntocellA1fortidyness wsheet.Range("A1").Select currentprocess="terminatingtheexportjob" ExitSub processerror: IfErr=208Then Msgbox"ItappearsyoudonothaveMicrosoftExcelonyourcomputer."&_ "Althoughtheywon'tbedisplayedonscreentheexporteddataarestill available"&_ "in"&filename,0+64,"Warning!" Else Msgbox"Error"&Err&"occurredwhilst"&currentprocess&",execution aborted.",0+48,"Error!" EndIf ExitSub EndSub

Aprs sauvegarde, on se retrouve avec une action ExportCSV dans le menu Actions

33

Exportation des mails depuis LotusNotes dans eGroupware.

Pas de solution simple d'exportation. La seule solution trouve est d'installer Outlook connector pour domino. Ceci permet a outlook d'tre configur en tant que client lotus. On ajoute ensuite un compte supplmentaire dans outlook avec les informations du compte imap Cyrus. On procde ensuite un dplacement des emails depuis lotus vers le serveur imap. On retrouve instantanment ses emails dans eGroupware.

Importation mail depuis roundcube.

Utilisation du logiciel imapsync qui permet de synchroniser 2 serveurs imap. Cration d'un script pour un gain de temps lors de la migration. Ce script lit le fichier listuser qui contient les nom d'utilisateurs et leur mot de passes sous cette forme : user1,password1 user2,password2 #!/bin/bash foruserin`cutd,f1listuser` do pass=`catlistuser|grep$user|cutd,f2` imapsyncsyncinternaldatesnoauthmd5host1 revyuser1$userpassword1$passhost2revnewuser2$user password2$pass imapsyncsyncinternaldatesprefix2INBOX/ noauthmd5host1revyuser1$userpassword1$passhost2 revnewuser2$userpassword2$pass done exit0

34

Annexes

criture d'une documentation technique et d'une documentation utilisateurs pour egroupware Doc technique : Voir annexe 3 Doc utilisateur : Voir annexe 4

35

Procdure de migration serveur :


Sur Revy:
Rcuprer /etc/passwd et lui appliquer le script le tri. Un certains nombre d'utilisateurs ont dj t cr sur l'ancien serveur et on souhaiterai les conserver. On ne conservera que les utilisateurs qui possdent une adresse email et on crera un fichier passwd.suppr qui contient les utilisateurs qu'on ne souhaitent pas conserver mais qui possdent une adresse email (root, http, bin )

#!/bin/bash foriin`cutd:f1passwd.old` doif[f/var/spool/mail/$i] thengrep$ipasswd.suppr>>/dev/null if[$?=0] thenecho`grep$i:passwd.old`>>passwd.bad elseecho`grep$i:passwd.old`>>passwd.good fi elseecho`grep$i:passwd.old`>>passwd.bad fi done exit0 [root@revy]$scppasswd.goodroot@revnew:/root/ Rcuprer /var/spool/mail/* et transfrer vers revnew

[root@revnew]$scprplogin@revy:/var/spool/mail/*/var/spool/mail Rcuprer /etc/aliases et /etc/mail/virtusertable

[root@revnew]$scpplogin@revy:/etc/aliases/etc/ [root@revnew]$scpplogin@revy:/etc/mail/virtusertable/etc/mail

Sur Revnew:
appliquer pwconv sur passwd.good pwconv est un utilitaire GNU utilis pour transformer un seul fichier passwd en 2 fichiers passwd et shadow

cd/root mv/etc/passwd/etc/passwd.save mv/etc/shadow/etc/shadow.save cppasswd.good/etc/passwd pwconv mv/etc/passwd/etc/passwd.new mv/etc/shadow/etc/shadow.new cp/etc/passwd.save/etc/passwd 36

cp/etc/shadow.save/etc/shadow cat/etc/passwd.new>>/etc/passwd cat/etc/shadow.new>>/etc/shadow Modifier le nom de la machine et son IP Egroupware Aller dans setup, configuration et installation, modifier la configuration actuelle. Modifier les information d'htes et Paramtres du serveur de messagerie. Dans le panneau d'administration, modifier les IP des paramtre de messagerie dans emailadmin Apache httpd.conf. Modifier l'ip de virtualhost Squid squid.conf. visible_hostname squidguard.conf. Redirect openldap slapd.conf peername.ip. Modifier l'ip (sur revnew et sur intra) slapd.cond (intra) modifier l'ip pour la rplication reboot Rsultat :

Aprs reboot, apache demande la passphrase ssl pour egroupware. Une des solutions existante est de modifier le fichier /etc/httpd/conf.d/ssl.conf afin de modifier la ligne SSLPassPhraseDialog builtin (qui demande la passphrase SSL lors du dmarrage du service httpd) par SSLPassPhraseDialog exec:/etc/httpd/bin/startapachessl. Ceci envoi au programme pass en argument les arguments <nomserveur:port> et <typedecryptage> Script startapachessl : #!/bin/bash if[$#=2] then if[$1="egroupware.revy:443"] then if[$2="RSA"] thenecho"passphrase" fi fi elseexit1 fi chmod 100 startapachesssl chown root startapachesssl

37

Conclusion
Ce stage m'a permis de mieux comprendre le rle d'un technicien rseau dans une entreprise. Il est de prime abord trs important de s'intgrer dans l'quipe en place afin de permettre une meilleur mutualisation des connaissances, ce qui est profitable l'employ (stagiaire), qui peut moindre frais augmenter ses comptences et l'entreprise qui gagne du temps dans la ralisation de ses projets. La technologie qui a pos le plus de contrainte est LDAP. Ne disposant pas de connaissance dans ce domaine, il m'a fallut effectuer beaucoup de recherche afin de dterminer quelle pouvait tre la source des problmes rencontrs. Cette base LDAP avait t construite par un ancien stagiaire aujourd'hui employ dans l'hpital dont les connaissances au niveau de la structure mme de LDAP m'ont permises de rsoudre plus rapidement certains problmes et notamment acqurir une comptences supplmentaire. J'ai galement pu remarquer qu'il est important de connatre un langage de script afin d'automatiser les taches qui peuvent l'tre. Mes comptences en bash ont t apprcies lors de ce stage, en particulier pour les transferts de mails entre compte imap (imapsync) et pour la cration du carnet d'adresses par dfaut de egroupware. Les diffrents techniciens du services informatiques ont accept de jouer le jeu en tant les premiers testeurs de egroupware. Ils ont pu me faire part de leur retour d'expriences afin d'amliorer l'intgration du logiciel. Bien que le dploiement n'tait pas prvu dans mes 8 semaines de stage, cette mutualisation des comptences m'a permis de terminer la mise en place d'egroupware en avance et ainsi de le dployer dans quelques services de l'hpital.

38