Vous êtes sur la page 1sur 343

LINUX

Prparation la certification LPIC-2 (examens LPI 201 et LPI 202)

SbastienBOBILLIER

Rsum
Les examens LPI 201 et LPI 202 sont les deux examens qui permettent dobtenir la certification LPIC-2 Advanced Level Linux Professional .
Ce programme de certification du Linux Professional Institute est de plus en plus reconnu par les recruteurs qui voient dans cette certification un
pr-requis lembauche ou laccession un poste dadministrateur.
Les examens LPI 201 et 202 prouvent aux professionnels que vous maitrisez ladministration avance dun systme Linux quelle que soit la
distribution : ils sanctionnent une comptence pratique en termes d'administration d'un rseau de petite ou moyenne taille (administration des
services rseaux courants, gestion de la scurit du rseau et des changes).
Pour vous aider prparer efficacement cette certification, ce livre couvre tous les objectifs officiels de la dernire version de lexamen, tant dun
point de vue thorique que dun point de vue pratique. Il a t rdig en franais (il ne sagit pas dune traduction) par un formateur professionnel
reconnu, galement consultant, certifi Linux. Ainsi, les savoir-faire pdagogique et technique de lauteur conduisent une approche claire et
visuelle, dun trs haut niveau technique.
Chapitre par chapitre, vous pourrez valider vos acquis thoriques, laide dun grand nombre de questions-rponses (110 au total) mettant en
exergue aussi bien les lments fondamentaux que les caractristiques spcifiques aux concepts abords.
Chaque chapitre sachevant par des travaux pratiques (32 au total) vous aurez les moyens de mesurer votre autonomie. Ces manipulations
concrtes, au-del mme des objectifs fixs par lexamen, vous permettront de vous forger une premire exprience significative et dacqurir de
vritables comptences techniques sur des mises en situations relles.
cette matrise du produit et des concepts, sajoute la prparation spcifique la certification : vous pourrez accder gratuitement 1 examen
blanc en ligne, destin vous entraner dans des conditions proches de celles de lpreuve.
Les chapitres du livre :
Descriptif - Introduction Gestion du stockage Dmarrage du systme Gestion du rseau local Authentification des utilisateurs Partages
de fichiers Rsolutions de noms DNS Serveur web Apache Messagerie Protection des rseaux Scurisation du trafic Compilation des
applications et du noyau Linux

L'auteur
Aprs avoir t Administrateur Systmes et Rseaux, Sbastien Bobillier volue depuis de nombreuses annes dans le monde de la
formation. Aujourdhui Consultant Formateur chez Global Knowledge, spcialiste des systmes Linux, il accompagne rgulirement des
candidats la certification LPI et ce livre est le fruit de toute son exprience dans le domaine.

Ce livre numrique a t conu et est diffus dans le respect des droits dauteur. Toutes les marques cites ont t dposes par leur diteur respectif. La loi du 11 Mars
1957 nautorisant aux termes des alinas 2 et 3 de larticle 41, dune part, que les copies ou reproductions strictement rserves lusage priv du copiste et non destines
une utilisation collective, et, dautre part, que les analyses et les courtes citations dans un but dexemple et dillustration, toute reprsentation ou reproduction intgrale,
ou partielle, faite sans le consentement de lauteur ou de ses ayants droit ou ayant cause, est illicite (alina 1er de larticle 40). Cette reprsentation ou reproduction, par
quelque procd que ce soit, constituerait donc une contrefaon sanctionne par les articles 425 et suivants du Code Pnal. Copyright Editions ENI
Ce livre numrique intgre plusieurs mesures de protection dont un marquage li votre identifiant visible sur les principales images.

ENI Editions - All rights reserved - Samuel CASAL

- 1-

Prparation la Certification LINUX LPIC2 examens LPI 201 et LPI


202
LesexamensLPI201etLPI202sontlesdeuxexamensquipermettentdobtenirlacertificationLPIC2"Advanced
Level Linux Professional". Ce programme de certification du Linux Professional Institute est de plus en plusreconnu
par les recruteurs qui voient dans cette certification un prrequis lembauche ou laccession un poste
dadministrateur.
Les examens LPI 201 et 202 prouvent aux professionnels que vous matrisez ladministration avance dunsystme
Linux quelle que soit la distribution : ils sanctionnent une comptence pratique en termes dadministration dun
rseaudepetiteoumoyennetaille(administrationdesservicesrseauxcourants,gestiondelascuritdurseauet
deschanges).
Pourvousaiderprparerefficacementcettecertification,celivrecouvrelesobjectifsofficielsdontlalisteestdonne
enannexe.Ilsediviseen12chapitrescomportantchacunlorganisationciaprs :

Une dfinition des objectifs atteindre : permet dexposer prcisment les comptences donnes par le
chapitreunefoisceluicivalid.
Unepartiecoursthoriques:permetdedfinirlestermesetconceptsabordsetdeschmatisersousforme
dunfilconducteurlesdiffrentspointsassimiler.
Unepartie validation des acquisproposesousformedequestions/rponses(110autotal).Cesquestions
mettentenexergueaussibienleslmentsfondamentauxquelescaractristiquesspcifiquesauxconcepts
abords.Lapartierponsesreprendlesquestionsposesavecdesrponsesrdigespourchacunedelles.
Lestravauxpratiques:ilspermettentdillustrerprcismentcertainespartiesducoursetvousdonnentaussi
les moyens de mesurer votre autonomie. Ces manipulations concrtes, audelmmedesobjectifsfixspar
lexamen, vous permettront de vous forger une premire exprience significative et dacqurir de vritables
comptencestechniquessurdesmisesensituationsrelles.

Pourlaprparationspcifiquelexamen,vouspouvezaccdergratuitement1examenblancenligneladresse
http://www.edieni.com afin de vous entraner dans conditions proches de celles de lpreuve. Sur ce site, chaque
questionposesinscritdanslespritdelacertificationet,pourchacune,lesrponsessontsuffisammentcommentes
pourcontrleretidentifiervosultimeslacunes.

ENI Editions - All rights reserved - Samuel CASAL

- 1-

LacertificationLPI
1.Intrtdelacertification
Lunivers Open Source fourmille de personnes aux comptences diverses et aux bases plus ou moins solides. Les
gourous sont innombrables sur internet, et les travaux raliss par certains amateurs sont bluffants, parfois
suprieurscequefontdessalarisspcialistesdudomaine.
Lesentreprisespourraienttreraviesdecettemassedecomptencesdisponible,etembaucherparfoismmebas
prix ces utilisateurs passionns. Le problme, cest que cette comptence sacquiert souvent en autodidacte, sans
beaucoup de mthode, et frquemment en dehors de tout cadre professionnel, ce qui empche les candidats de
mettreenavantleurstatsdeservicesenentreprise.Enoutre,lapprentissageautodidactenesefaitpasparamour
dulogiciel(quoique),etlesutilisateursamateursontsouventunevisiontrsparcellairedelachose,centresurleurs
centresdintrtpersonnels.
Les programmes de certification ont pour objet de valider une comptence, indpendamment de tout parcours
universitaireouscolaire.Ilsvisentsanctionnerunniveauconcret,etencequiconcernelacertificationLPI,vrifier
quelecandidataunevisiontransversaledusujet,sansimpassemanifestesuraucundessujetstraits.

2.LacertificationLPIenquelquespoints
LeprogrammedecertificationLPIestleprincipalprogrammedecertificationLinuxmultidistributionsetindpendant
detoutditeur.IlestconuparunecommunautdeprofessionnelsdumondeLinuxetdeformateurs.Lesexamens
sontconuspoursanctionnertouteimpassesurundessujetstests.Onpeutlesprsenterdanstouslescentresde
testagrsPearsonVUEouPrometric.
Le programme de certification LPI est reconnu par de nombreux diteurs et professionnels du secteur comme IBM,
Novell,IntelouHP.IlestenoutreunprrequisdautresprogrammesdecertificationscommeUbuntuoualiment
pardautresditeurscommeSuse.cejour,ondnombreplusde85000certifisLPIdanslemondeavecplusde
250000examensprsents.

3.LeprogrammedelacertificationLPI
a.Niveau1
Le niveau 1 de la certification LPI sobtient en passant les deux examens LPI 101 et 102. Il sanctionne une
connaissancedebase(cequineveutpasdirequecestfacile)dessystmesLinux,descommandesdebaseetdu
shell. On peut considrer ces comptences comme un prrequis toute volution srieuse dans ladministration
dessystmesLinux.LacquisitiondescomptenceslieslacertificationLPINiveau1neconduitpaslautonomie
compltesurlesujet,maisunbonniveaudeconfortdanslexcutiondetchesencadres.

b.Niveau2
Le niveau 2 de la certification LPI sobtient en passant les deux examens LPI 201 et 202. Il sanctionne une
comptence pratique en terme dadministration dun rseau de taille petite ou moyenne, sur ladministration des
services rseau courants. La gestion de la scurit du rseau et des changes est galement traite. Un
administrateursystmeetrseauxcertifiLPIniveau2estautonomedansladministrationdesonrseauetses
machines.

c.Niveau3
Leniveau3delacertificationLPIsobtientenpassantlexamenLPI301,auquelonpeutadjoindrecinqexamensde
spcialisationnumrots302306traitantdesenvironnementsmixtes,delascurit,delahautedisponibilitet
delavirtualisation,destechnologiesinternet,etenfindelamessagerie.LacertificationLPIniveau3estprsente
parLPIcommeleniveauultimedelacertificationLinux.

4.Lepassagedexamen
LepassagedunecertificationLPIlaissesouventungotamer.Ladifficultdesquestionssembleinsurmontable,et
ENI Editions - All rights reserved - Samuel CASAL

- 1-

on est souvent tent de penser que cette certification injuste ne sanctionne pas rellement une comptence mais
pluttlacapacitdapprendreparc urlensembledespagesdemanueldescommandesLinux.Naturellement,cette
prouessentantpaslaportedtreshumainslaviesocialeordinaire,ilfaudrachercherailleurslesclsdela
russite.
Commedanstouslesquestionnaireschoixmultiples,ilconvientdabordencasdincertitudedliminerlesrponses
fantaisistes, la bonne rponse se trouve alors souvent dans une liste rduite deux ou trois propositions. Par
ailleurs,ilfautsesouvenirquelepassagedelacertificationLPIreposedunepartsuruneconnaissancethorique,
maisaussi,etsurtout,surunecomptencepratiquelonguementacquisesurlessystmesLinux.Dansleprincipe,on
se forme, on passe quelques annes administrer des systmes en production, et on passe la certification pour
prouver quon a assimil un savoirfaire. Il est vident que a nest pas possible pour tout le monde, et pour
beaucoup, notamment sur le march du travail hexagonal, la certification est plutt vue comme le moyen de
dcrocherlemploiquiapporteralexpriencevritable.Cettequationapparemmentinsolublepeuttoutdemmese
rsoudre, et cet ouvrage est l pour vous y aider. Simplement, il ne suffira pas davoir ralis lensemble des
exercices et travaux pratiques, mais il faudra aussi les avoir digrs. Cestdire quil faudra avoir compris les
conceptssousjacents,lintrtdescommandesemployes,ettrecapabledelesemployerendehorsducontexte
desexercices.
SionnapassouslamainuneinfrastructureLinuxenproductionpoursentraner,unebonneapprocheconsistelire
celivreetraliserlestravauxpratiquesquiclturentchaquechapitre.Dansunpremiertemps,onserassureen
constatant que tout fonctionne normalement (si on suit scrupuleusement les indications, tous les exercices
fonctionnent). En effet, il est trs important de ne pas se dcourager : la certification LPI suppose que lon soit
laiseavectouslesconceptsetcommandes,unelecturedmotiveetlapprentissagesansconvictiondecommandes
admises mais non comprises ne suffira pas. Une fois rassrn par la ralisation russie des exercices, on peut
recommencerlalecture,approfondirlespointsobscurs,etsenhardiressayerdesvariantespourlesexercices.Des
possibilitsouvertesserontlaissesdanslestravauxpratiques,librevousdelesraliser.
cejour,lesexamensLPIsepassenttoujoursenanglais,etilestrecommanddavoirunebonneconnaissancede
langlaistechnique.

- 2-

ENI Editions - All rights reserved - Samuel CASAL

Celivre
1.Lesinformationstechniques
CelivreviseessentiellementprparerlacertificationLPI.Soncontenutechniqueestdoncorientdanscesens.
Certains dtails fonctionnels ou certaines commandes exposes ici sont aujourdhui un peu dsuets, mais la
certificationLPIexigeleurconnaissance.
La certification LPI niveau 2 sanctionne des candidats disposant dune excellente connaissance pratique des
systmes Linux et des services applicatifs courants. Les questions sont parfois pigeuses, justement pour vrifier
que le candidat possde une exprience concrte de ladministration et quil sest dj trouv dans des situations
particulires en marge du fonctionnement courant "quand tout va bien". On trouvera donc ici les explications, les
connaissances,etautantquepossiblelesastucesquunelonguepratiquedevraitapporter.
LesinformationssurlescommandesetapplicationsLinuxsontbienentendupubliquesetlargementdisponibles,ne
seraitce que par le manuel en ligne. Les syntaxes des commandes exposes ici ne prsentent que les options
vritablementimportantes :soitparcequellessontutilisescourammentenproduction,soitparcequelesobjectifs
spcifiquesLPIlesrendentparticulirementimportantes.Lecandidatpeutdonc,aumoinsdansunpremiertemps,se
concentrersurlesconnaissancesessentielles.

2.Lestravauxpratiques

Lestravauxpratiquesproposssappuientsurunenvironnementmixtecomposdedeuxserveursetdunestation
detravailLinux.LepremierdesserveursserainstallavecunedistributionDebian,etlautreavecunedistribution
CentOS,quialavantagedtretrsprochedessystmesRedHat,toutentantbeaucoupplusfacileseprocurer.
LastationdetravailserainstallepartirdunedistributionUbuntu.
Lors dunexercicesurlinstallation dun gestionnaire de dmarrage, un live CD DSL (Damn Small Linux) sera utilis
ponctuellement.
LesmachinesaurontcommenomdhtealphapourleserveurDebian,betapourleserveurCentOS,etstationpour
la station de travail Ubuntu. Leurs adresses IP devront se trouver dans votre plan dadressage et sont sans
importancepourlaralisationdesexercices,letouttantderestercohrent.Lesadressesutilisespourlestravaux
pratiques seront 192.168.200.101 pour le serveur alpha, 192.168.200.102 pour le serveur beta, et une adresse
quelconquedanslemmesousrseaupourlastationdetravail.vousderemplacercesadressesparvosadresses
choisies.
Lenvironnement de travail est virtualis pour permettre le montage facile dune maquette raliste sans avoir
dployerunmatrielconsidrable.Lavirtualisationagalementlavantagedepermettrederaliserdesoprations
lourdessurlestockagemoindrecot.LelogicieldevirtualisationchoisiestVirtualBoxOSE,quialavantagedtre
disponiblegratuitement,etdepouvoirsinstalleraussibiensurlespostesdetravailWindowsqueLinux.Ladaptation

ENI Editions - All rights reserved - Samuel CASAL

- 1-

unautrelogicieldevirtualisationnedevraitpasprsenterdedifficultmajeure.
Sivoussouhaiteztravaillerdansunenvironnementrel,lestravauxpratiquessonttrsfacilementadaptables,avec
trois postes de travail dont un en double carte, un switch et quelques cbles rseau. Quelques disques durs
supplmentairesserontalorsncessaires.
Quelquesoitlenvironnementchoisi,unaccsinternetestncessairelaralisationdelaplupartdesexercices.

- 2-

ENI Editions - All rights reserved - Samuel CASAL

Prparationdestravauxpratiques
1.Tlchargementdeslogiciels
LelogicieldevirtualisationVirtualBoxesttlchargeableladressesuivante :

http://www.virtualbox.org/wiki/Downloads.
LimageisodeladistributionDebianesttlchargeableladressesuivante :

http://www.debian.org/CD/netinst. La version "net install" de la distribution est lgre et les composants


additionnelssinstallerontlademande.
LimageisodeladistributionCentOSesttlchargeableladressesuivante :

http://mirror.centos.org/centos/5/isos.TlchargezlaversionDVD.
LimageisodeladistributionUbuntuesttlchargeableladressesuivante :

http://www.ubuntu.com/desktop/getubuntu/download.
LimageisodeladistributionDSLesttlchargeableladressesuivante :

http://www.damnsmalllinux.org/download.html.
Lestravauxpratiquessontralisspartirdelaversion3.1.6deVirtualBox,versionLenny(5)pourDebian,version
5 pour CentOS, et version Lucid Lynx (10.04) pour Ubuntu. Lutilisation de versions diffrentes ne devrait pas
bouleverser le droulement des exercices. DSL peut tre utilis dans sa dernire version disponible et peut tre
remplacparnimportequelautreliveCDsincessaire.
Il est souvent prfrable de choisir les versions 32 bits des systmes (i386) pour travailler en environnement
virtualis.

2.Gestiondessupportsvirtuels
a.lmentsncessaires

ImageisodunsystmeCentOS.

ImageisodunsystmeDebian.

ImageisodunsystmeDSL.

ImageisodunsystmeUbuntu.

LogicielVirtualBoxinstall.

b.Manipulations

DepuislinterfaceVirtualBox,droulezlemenuFichieretchargezleGestionnairedesupportsvirtuels.

Danslegestionnairedesupportsvirtuels,cliquezsurlongletImagedisqueoptique.

CliquezsurAjouter.

ENI Editions - All rights reserved - Samuel CASAL

- 1-

ChoisissezlefichierisodusystmeDebian.

Rptezloprationpourlesautresfichiersimages.

3.Installationduserveuralpha
a.lmentsncessaires

LogicielVirtualBoxinstall.

b.Crationdelamachinevirtuelle

DepuislinterfaceVirtualBox,cliquezsurNouveaupourlancerlassistantdecrationdemachinevirtuelle.
DanslcranNomdelamachinevirtuelleettypedesystmedexploitation,tapezalphadanslechampNom,
slectionnezLinuxcommeSystmedexploitation,etDebiancommeVersion.
Danslcran Mmoire, rglez laTaille de la mmoire vive de base au moins 128 Mo. Cette valeur doit tre
suffisante pour une installation sans interface graphique. Si vous choisissez dinstaller un serveur X, il faudra
naturellementaugmenterlammoireenconsquence.

DanslcranDisquedurvirtuel,laissezlesparamtrespardfaut.

DanslcranTypedeconteneurdisquedur,conservezlechoixpardfaut.

Dans lcran Disque virtuel, emplacement et taille, conservez le choix par dfaut. La taille de 8 Go affiche
noccuperapasrellementvotredisquedur.
DanslcranRcapitulatif,cliquezsurTerminer.

c.Personnalisationdelamachinevirtuelle

DanslinterfaceVirtualBox,slectionnezvotremachinevirtuelledanslepanneaudegauche.

Danslepanneaudedroite,cliquezsurlelienStockage.

DanslcranSupports/ArborescenceStockage,cliquezsurlecdrom(vide).

DanslcranSupports/Attributs,droulezlemenuLecteuroptiqueetchoisissezlecdromvirtuelDebian.Validez.

DanslinterfaceVirtualBox,slectionnezvotremachinevirtuelledanslepanneaudegauche.

Danslepanneaudedroite,cliquezsurlelienRseau.

DanslafentreRseau,modifiezleModedaccsrseauenAccsparpont.Validez.

d.Dmarragedelamachinevirtuelleetinstallationdusystme

- 2-

DanslinterfaceVirtualBox,slectionnezvotremachinevirtuelledanslepanneaudegauche.

CliquezsurleboutonLancerpourdmarrerlamachinevirtuelle.

Cliquezsurlcrandelamachinevirtuelledmarrepourcapturerlasourisetleclavier.
ENI Editions - All rights reserved - Samuel CASAL

DanslInstallerbootmenu,choisissezInstall.

DanslcranChooselanguage,choisissezFrench.

DanslcransuivantChooselanguage,conservezlechoixFrance.

DanslcranChoisirladispositionduclavier,conservezlechoixFranais.

DanslcranConfigurerlerseau,effacezlechoixpardfautettapezalpha.

DanslcransuivantConfigurerlerseau,choisissezContinuersansrenseignerlenomdedomaine.

DanslcranPartitionnerlesdisques,choisissezAssistutiliserundisqueentier.

DanslcransuivantPartitionnerlesdisques,choisissezleseuldisqueprsent.

Dans lcransuivant Partitionner les disques,choisissez Tout dans une seule partition(recommandpourles
dbutants).
Dans lcran suivant Partitionner les disques, choisissez Terminer le partitionnement et appliquer les
changements.
DanslcransuivantPartitionnerlesdisques,validezlaconfigurationdudisqueenslectionnantOui.
Dans lcran Crer les utilisateurs et choisir les mots de passe, tapez password comme Mot de passe du
superutilisateur.Confirmezlemotdepasse.
Dans lcran Crer les utilisateurs et choisir les mots de passe, tapez toto comme Nom complet du nouvel
utilisateur.
DanslcranCrerlesutilisateursetchoisirlesmotsdepasse,tapeztotocommeIdentifiantpourlecompte
utilisateur.
DanslcranCrerlesutilisateursetchoisirlesmotsdepasse,tapezpasswordcommeMotdepassepourle
nouvelutilisateur.Confirmezlemotdepasse.
Dans lcranConfigurer loutil de gestion des paquets, choisissez France comme Pays du miroir de larchive
Debian.
Dans lcran Configurer loutil de gestion des paquets, choisissez un miroir quelconque comme Miroir de
larchiveDebian.
DanslcranConfigurerloutildegestiondespaquets,renseignezaubesoinleMandataireHTTP(videdansla
plupartdescas).
DanslcranConfigurationdepopularitycontest,slectionnezlechoixNonpourrefuserlenvoidestatistiques
surlutilisationdespaquets.
DanslcranSlectiondeslogiciels,dslectionnezEnvironnementgraphiquedebureauetconservezSystme
standard.
DanslcranInstallerleprogrammededmarrageGRUBsurundisquedur,confirmezlinstallationdeGRUBsur
lesecteurdamorage.

DanslcranConfigurationdeconsolesetup,slectionnezContinuerpourvaliderlafindelinstallation.

Aprs linstallation, retirez le cdrom virtuel en le dslectionnant dans le menu Priphriques/Priphriques


ENI Editions - All rights reserved - Samuel CASAL

- 3-

optiquesdelamachinevirtuelle.

4.Installationduserveurbeta
a.lmentsncessaires

LogicielVirtualBoxinstall.

b.Crationdelamachinevirtuelle

DepuislinterfaceVirtualBox,cliquezsurNouveaupourlancerlassistantdecrationdemachinevirtuelle.
Danslcran Nom de la machine virtuelle et type de systme dexploitation, tapezbetadanslechampNom,
slectionnezLinuxcommeSystmedexploitation,etRedHatcommeVersion.
DanslcranMmoire,rglezlaTailledelammoirevivedebase256Mo.Sivotresystmehtenepeutpas
fournir autant de mmoire, vous pouvez diminuer cette valeur et choisir ensuite de ne pas installer dinterface
graphique.

DanslcranDisquedurvirtuel,laissezlesparamtrespardfaut.

DanslcranTypedeconteneurdisquedur,conservezlechoixpardfaut.

Dans lcran Disque virtuel, emplacement et taille, conservez le choix par dfaut. La taille de 8 Go affiche
noccuperapasrellementvotredisquedur.
DanslcranRcapitulatif,cliquezsurTerminer.

c.Personnalisationdelamachinevirtuelle

DanslinterfaceVirtualBox,slectionnezvotremachinevirtuelledanslepanneaudegauche.

Danslepanneaudedroite,cliquezsurlelienStockage.

DanslcranSupports/ArborescenceStockage,cliquezsurlecdrom(vide).

Dans lcran Supports/Attributs, droulez le menu Lecteur optique et choisissez le cdrom virtuel CentOS.
Validez.

DanslinterfaceVirtualBox,slectionnezvotremachinevirtuelledanslepanneaudegauche.

Danslepanneaudedroite,cliquezsurlelienRseau.

DanslafentreRseau,modifiezleModedaccsrseauenAccsparpont.Validez.

d.Dmarragedelamachinevirtuelleetinstallationdusystme

- 4-

DanslinterfaceVirtualBox,slectionnezvotremachinevirtuelledanslepanneaudegauche.

CliquezsurleboutonLancerpourdmarrerlamachinevirtuelle.

Cliquezsurlcrandelamachinevirtuelledmarrepourcapturerlasourisetleclavier.

ENI Editions - All rights reserved - Samuel CASAL

Danslcrandinstallation,tapezEntrepourlancerlinstallation.

DanslcranCDfound,slectionnezSkippourviterlavrificationdudisquedur.

DanslcranWhatlanguage...,slectionnezFrench.

Dans lcran Veuillez slectionner le clavier de votre systme, slectionnez Franais (latin1) ou un autre
clavieradapt.
DanslcranAvertissement,choisissezOuipourvaliderlinitialisationdelatabledespartitions.
Dans lcran Linstallation requiert le partitionnement de votre disque dur..., conservez le choix par dfaut,
sansimportancesurundisqueneuf.

DanslcranAvertissement,choisissezOuipourvaliderlasuppressiondespartitions.

DanslcranPriphriquesrseau,cliquezsurditerpourmodifierlaconfigurationdelacarterseau.

Danslcranditerlinterface,dslectionnezActivezlesupportIPv6.PourlaconfigurationIPv4,slectionnez
ConfigurationmanuelleetindiquezuneadresseIPdevotresubnetconnectinternet.Danstouslesexercices,
nous utiliserons ladresse 192.168.200.102 que vous remplacerez par une adresse compatible avec votre
espacedadressage.

DanslasectionNomdhte,indiquezlenomdhtemanuellement.Leserveursappellerabeta.

DanslcranParamtresDivers,indiquezvotrepasserellelocaleetleserveurDNSdevotrefournisseurdaccs.

Danslcrandegestiondufuseauhoraire,dslectionnezHorlogesystmeenUTCetconservezlalocalisation
Europe/Paris.
Danslcrandegestiondu motdepasseroot,indiquezpasswordcommemotdepasse.
Dans lcran de gestion des paquets logiciels, cochez la slection Server et slectionnez Personnaliser
maintenant.
Dans la section Dveloppement, cochez les slections Bibliothques de dveloppement, Dveloppement de
logicielGnome,DveloppementdulogicielXetOutilsdedveloppement.

e.Personnalisationdusystmeinstall

Aprsredmarragedusystme,cliquezsurAvancerdanslcrandebienvenue.

DanslcranParefeu,slectionnezDsactiv.Passezoutrelavertissement.

DanslcranSelinux,slectionnezDsactiv.Passezoutrelavertissement.

DanslcranDateetheure,modifiezsincessairelheuredusystme.

DanslcranCrerunutilisateur,crezuncompteutilisateurtotoaveclemotdepassepassword.

DanslcranCarteson,testezsivouslesouhaitezlacartesondusystmevirtuel.

Terminezlassistantetredmarrezlesystme.

Aprs linstallation, retirez le cdrom virtuel en le dslectionnant dans le menu Priphriques/Priphriques


optiquesdelamachinevirtuelle.

ENI Editions - All rights reserved - Samuel CASAL

- 5-

5.Installationdelastationdetravail
a.lmentsncessaires

LogicielVirtualBoxinstall.

b.Crationdelamachinevirtuelle

DepuislinterfaceVirtualBox,cliquezsurNouveaupourlancerlassistantdecrationdemachinevirtuelle.
DanslcranNomdelamachinevirtuelleettypedesystmedexploitation,tapezstationdanslechampNom,
slectionnezLinuxcommeSystmedexploitation,etUbuntucommeVersion.
DanslcranMmoire,rglezlaTailledelammoirevivedebase256Mo.Sivotresystmehtenepeutpas
fournirautantdemmoire,vouspouvezdiminuercettevaleuretchoisirdinstallerunsystmemoinsgourmand
enressourcescommexubuntu.

DanslcranDisquedurvirtuel,laissezlesparamtrespardfaut.

DanslcranTypedeconteneurdisquedur,conservezlechoixpardfaut.

Dans lcran Disque virtuel, emplacement et taille, conservez le choix par dfaut. La taille de 8 Go affiche
noccuperapasrellementvotredisquedur.
DanslcranRcapitulatif,cliquezsurTerminer.

c.Personnalisationdelamachinevirtuelle

DanslinterfaceVirtualBox,slectionnezvotremachinevirtuelledanslepanneaudegauche.

Danslepanneaudedroite,cliquezsurlelienStockage.

DanslcranSupports/ArborescenceStockage,cliquezsurlecdrom(vide).

Dans lcran Supports/Attributs, droulez le menu Lecteur optique et choisissez le cdrom virtuel Ubuntu.
Validez.

DanslinterfaceVirtualBox,slectionnezvotremachinevirtuelledanslepanneaudegauche.

Danslepanneaudedroite,cliquezsurlelienRseau.

DanslafentreRseau,modifiezleModedaccsrseauenAccsparpont.Validez.

d.Dmarragedelamachinevirtuelleetinstallationdusystme

- 6-

DanslinterfaceVirtualBox,slectionnezvotremachinevirtuelledanslepanneaudegauche.

CliquezsurleboutonLancerpourdmarrerlamachinevirtuelle.

Cliquezsurlcrandelamachinevirtuelledmarrepourcapturerlasourisetleclavier.

DanslcranInstall,slectionnezFranaisdanslepanneaudegaucheetcliquezsurInstallerUbuntu.

ENI Editions - All rights reserved - Samuel CASAL

DanslcranEmplacementgographique,vrifiezlheureetlefuseauhoraire.

DanslcranDispositionduclavier,vrifiezleclavierpropos.

DanslcranPrparationdelespacedisque,slectionnezTouteffaceretutiliserledisqueentier.

Dans lcranIdentit, dites que vous vous appeleztoto et que votre mot de passe est password. Modifiez le
nomdelordinateurenstation.
DanslcranPrtinstaller,cliquezsurInstallerpourdmarrerlinstallation.
Aprs linstallation, retirez le cdrom virtuel en le dslectionnant dans le menu Priphriques/Priphriques
optiquesdelamachinevirtuelle.

e.ConfigurationdeladresseIPdelastation

Dans la station de travail Ubuntu, dveloppez le menu Systme, puis Prfrences, et choisissez Connexions
rseaux.
DanslafentreConnexionsrseau,cliquezsurAjouter.
DanslafentreModificationdelaconnexionfilaire1,renseignezlechampNomdelaconnexionaveclavaleur
Fixeeth0.
DanslongletParamtresIPv4,choisissezlaMthode :Manuel.AjoutezuneadresseetrenseignezladresseIP
avecuneadressedevotreplandadressage.Utilisezvotrepasserellepardfaut,etutilisezleserveurDNSde
votrefournisseurdaccs.Appliquezvotreconfiguration.
Aubesoin,cliquezsurlicnedegestionderseaupourchoisirlaconnexionFixeeth0.

LecompteroottantdsactivpardfautsurlessystmesUbuntu,touteslescommandesncessitantdes
prrogativesdadministrateurdevronttreprcdesdelacommandesudo.

6.Ajoutdepriphriquesupplmentaireunemachineexistante
Les manipulations suivantes ne sont pas raliser immdiatement. Certains exercices ncessiteront lajout de
matrielsurcertainesmachinesvirtuelles.

a.Ajoutdedisquedur(sata)
Lajout de disque dur se passe en deux tapes : la cration de disque dans le gestionnaire de supports, et
laffectationdecedisquelamachinevirtuelle.

b.Crationdunnouveaudisquedur

DepuislinterfaceVirtualBox,droulezlemenuFichieretchargezleGestionnairedesupportsvirtuels.

Danslegestionnairedesupportsvirtuels,cliquezsurlongletDisquesdurs.

CliquezsurNouveau.

DanslcranTypedeconteneurdisquedur,conservezlechoixpardfaut.

Dans lcran Disque virtuel, emplacement et taille, donnez un nom facilement identifiable votre fichier de

ENI Editions - All rights reserved - Samuel CASAL

- 7-

disquedurconservezlavaleurdelataillepardfaut.Lataillede2Goaffichenoccuperapasrellementvotre
disquedur.

Validezetterminezlassistant.

c.Affectationdudisquedurlamachinevirtuelle

DanslinterfaceVirtualBox,slectionnezvotremachinevirtuelledanslepanneaudegauche.

Danslepanneaudedroite,cliquezsurlelienStockage.

Dans lcran Supports/Arborescence Stockage, cliquez sur le bouton dajout de contrleur. Choisissez un
contrleurdetypeSATA.
SouslasectionContrleurSATA,cliquezsurleboutondajoutdedisque
Lassistantprendlepremierdisquedisponibledanslegestionnairedesupportsvirtuels,ilfautdoncslectionner
ledisqueajout,etdanslepanneauAttributs,droulerlemenuDisquedurpourchoisirlebonsupport.

d.Ajoutdecarterseau
Chaque machine virtuelle dispose en quelque sorte de quatre cartes rseau dont seule la premire est active.
Ajouterunecarterevientdoncactiverunecartedjprinstalle.

e.Activationdelacarterseausurlamachinevirtuelle

- 8-

DanslinterfaceVirtualBox,slectionnezvotremachinevirtuelledanslepanneaudegauche.

Danslepanneaudedroite,cliquezsurlelienRseau.

SlectionnezlongletCarte2etcochezActiverlacarterseau.

Choisissezlemodedaccsrseauenfonctiondevosbesoins.

ENI Editions - All rights reserved - Samuel CASAL

Prrequisetobjectifs
1.Prrequis
LesconnaissancesacquiseslorsdelacertificationLPIniveau1,notamment:

Avoirdesnotionsdebasesurlesfilesystemsetlestablesdinodes.
ConnatrelepartitionnementordinairedesdisquesdePC.
Utilisationbasiquedelutilitairefdisk.
Connaissancesommairedustockagesurbandemagntique(/dev/st*,/dev/nst*etmt).

2.Objectifs
lafindecechapitre,vousserezenmesurede:

Connatrelesdiffrencesprincipalesdesdiffrentsformatsdefilesytems.
Connatrelesfilesystemsvirtuels.
Creretvrifierunfilesystem.
Creretgrerunespacedeswap.
Grerlemontageautomatiquedefilesystemsaudmarrage.
Configurerunautomontage.
Connatrelefonctionnementduserviceudev.
Configurerundisqueduravechdparm.
Archiverdesdonnes.
Copierousynchroniserdesdonnesavecrsync.
ConnatrelesprincipauxniveauxdeRAID.
CreretgrerdesdisquesenRAIDlogiciel.
Creretexploiterdesvolumeslogiques.
tendreetrduiredesvolumeslogiques.
Raliserunvolumelogiquedesnapshot.

ENI Editions - All rights reserved - Samuel CASAL

- 1-

Gestionetconfigurationdessystmesdefichier
1.Gestiondessystmesdefichiers
a.Lessystmesdefichierscourants
Un systme dexploitation est dans la plupart des cas install sur un disque dur ou priphrique de stockage
assimil.Sionregardedetrsprsundisquedurneuf,onconstatequesonespacedestockageestconstitudune
suite doctets sans aucune forme dorganisation. Pour exploiter convenablement tout ou partie de cet espace de
stockage, il convient de le segmenter dans un premier temps, cest le partitionnement, puis de crer sur les
partitionsexploiterunsystmedefichiers.
Lesystmedefichiersertorganiserunespacedestockagebrut,commeunepartitiondedisquepourystocker
des donnes. Si le terme courant est souvent le formatage de lespace de stockage, on parle souvent en
environnementLinuxdecrationdefilesystem.
Le terme filesystem (en anglais) fait lobjet dune convention dutilisation frquente qui sera reprise dans cet
ouvrage. On parle de filesystem lorsquilsagit dun systme de fichier attach un priphrique de stockage
unique,etonparleradesystmedefichierspourdsignerlespacedestockageorganis,quilsoitcomposdun
oudeplusieursfilesystem.
Ilexisteplusieurstypesdefilesystem,dontlespluscourantsenenvironnementLinuxsontext,reiserfsetxfs.Leur
connaissanceestncessairepourlepassagedelacertificationLPI.
ext
ext est le filesystem historique des systmes Linux. Il existe actuellement trois versions de filesystem ext en
production.ext2estlaversionhistorique,ext3estunevolutiondeext2quiluiajouteunjournaldetransactions,et
ext4 est une dernire volution qui quipe les systmes les plus rcents et qui vise pallier les limites de lext3
(taillemaximumdefichiersportede2traoctetspourext316traoctetspourext4parexemple).
Lejournaldetransactionsprsentenext3etext4permetdacclrernotablementlesvrificationssurlessystmes
defichiersetlarcuprationencasdecrash.
reiserfs
Reiserfs est un filesystem journalis qui offre pour certaines oprations des performances un peu meilleures que
ext3. Reiserfs se posait dailleurs en concurrent de ext sa cration. Ancien systme de fichier par dfaut des
distributionsSuse,reiserfsestaujourdhuienvoiederarfaction.Onluireprocheselonlesconditionsdemploisune
certainefragilitouunmanquedeperformancesglobales.
xfs
xfs est le filesystem historique des serveurs unix IRIX. Il a t plac sous licence GPL en 2000. De bonnes
performances ainsi que le support des trs gros espaces de stockages (8 exaoctets de taille maximum pour le
filesystemcontre16et32teraoctetspourreiserfsetext3)enfontunfilesystemintressant.

b.Lessystmesdefichiersvirtuelsoupseudofilesystems
Unfilesystemcourantapourobjetdepermettrelexploitationdunespacedestockagephysiqueparunutilisateur
oudesapplications.IlexistetoutefoissurlessystmeLinuxdesfilesytemvirtuelsquinontderalitquenmmoire
sans occupation despace sur le disque. Ils sont simplement visibles lutilisateur sans exploiter un quelconque
espacedisque.LesfilesystemsconnatrepourlacertificationLPIsontprocetsys.
proc
Lefilesystemvirtuelproc,gnralementmontsouslerpertoire/procpermetdevisualiserdeslmentssystmes
lislagestiondesprocessusparlenoyau.procmontreaussiuncertainnombredinformationssystmesliesau
matriel.
Visualisationdesinformationsduprocesseur
On observe ici les informations techniques lies au microprocesseur employ. Notez par exemple la vitesse relle de
lhorloge au moment de lexcution de la commande, qui atteste de la bonne gestion de lnergie sur un systme peu
sollicit.

ENI Editions - All rights reserved - Samuel CASAL

- 1-

toto@serveur:~$ cat /proc/cpuinfo


processor : 0
vendor_id : AuthenticAMD
cpu family
: 15
model
: 75
model name
: AMD Athlon(tm) 64 X2 Dual Core Processor 4200+
stepping : 2
cpu MHz
: 1000.000
cache size
: 512 KB
physical id
: 0
siblings : 2
core id
: 0
cpu cores : 2
apicid
: 0
initial apicid : 0
fpu : yes
fpu_exception
: yes
cpuid level
: 1
wp : yes
flags
: fpu vme de pse tsc msr pae mce cx8 apic sep mtrr
pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ht syscall nx
mmxext fxsr_opt rdtscp lm 3dnowext 3dnow rep_good extd_apicid pni
cx16 lahf_lm cmp_legacy svm extapic cr8_legacy
bogomips : 1999.89
TLB size : 1024 4K pages
clflush size
: 64
cache_alignment
: 64
address sizes
: 40 bits physical, 48 bits virtual
power management
: ts fid vid ttp tm stc
sys
Le filesystem virtuelsys,gnralementmontsouslerpertoire/syspermetdevisualiserdeslmentssystmes
lisauxpriphriques.
Visualisationdecapacitshotplugdundisquedur
Denombreuxpseudofichiersde/procet/sysontuncontenulimitunseulcaractre.Ici0pourindiquerqueledisque
sdanestpasenfichablechaud.
toto@serveur:~$ cat /sys/block/sda/removable
O

c.Crationdesfilesystems
Lesfilesystemssontcrsparladministrateursurdesespacesdestockagesbruts,historiquementdespartitionsde
disque.Ilssontensuitevrifis,ponctuellementparladministrateurouintervallesrguliersautomatiquementpar
lesystme.Lacrationdefilesystemsefaithistoriquementaveclacommandemkfs.
Syntaxedelacommandemkfs
mkfs -t type device

mkfs:optionsetparamtres
ttype

Prcisiondutypedefilesystemcrer.Valeursconnatre:ext2,ext3,reiserfs,xfs.

device

Fichierspcialenmodeblocquidsignelepriphriquesurlequelcrerlefilesystem.

d.Vrificationdesfilesystems
Lavrificationdunfilesystemconsisteessentiellementenlavrificationdecohrenceentrelatabledesinodesdu

- 2-

ENI Editions - All rights reserved - Samuel CASAL

filesystemetlesblocsdedonnescorrespondants.Cestdirequepourchaqueinode,onvrifieraquelesblocsde
donnes rfrencs par cet inode sont bien prsents, en nombre et quantit annoncs. Pour les filesystem
journaliss, une optionfobligeunevrificationcompltedunfilesystemsemblantpropre,commeparexempleun
filesystemquinauraitpassubidoprationdcrituredepuissadernirevrificationrussie.
Lavrificationdefilesystemsefaitaveclacommandefsck.
Syntaxedelacommandefsck
fsck -t type device

fsck:optionsetparamtres
ttype

Typedufilesystemvrifier.

device

Fichierspcialenmodeblocquidsignelepriphriquesurlequelsetrouvelefilesystem
vrifier.

e.Commandesspcialisesdesfilesystemsext
Les syntaxes indiques cidessus pour les commandes mkfs et fsck sont universelles et doivent fonctionner.
Toutefois,ilfautsavoirquecescommandesappellentenralitdessousprogrammes(mkfs.ext2parexemplepour
mkfstext2),etquilexisteparailleursdescommandesspcialisesquiproduirontlemmersultat(mke2fsestun
autrequivalentdemkfstext2).LaplupartdesquestionsdelacertificationLPIutilisentcettesyntaxecourante.
Contrairementlacommandefsck,e2fsckfonctionnepardfautenmodeinteractif.Pourunfonctionnement
enmodenoninteractif,elledoittreutiliseavecloptionp.Ellevrifiealorsautomatiquementlefilesystem
sansncessiterdinterventiondelutilisateur.

f.Crationdefilesystemext2ouext3
Lacommandemke2fspermetdecrerdirectementdesfilesystemsext.Leformatext2estutilispardfaut,mais
loptionj(journal)permetdecrerdesstructuresdefilesystemext3.
Crationdunfilesystemext2
mke2fs device
Crationdunfilesystemext3
mke2fs -j device
Odevicereprsentelefichierspcialenmodeblocquidsignelepriphriquesurlequelsetrouvelefilesystem
crer.

g.Affichageetmodificationdesfilesystemsext
Lacommandetune2fspermetdafficherlesparamtresdunfilesystemextetventuellementdenmodifiercertains.
Affichagedesparamtresdunfilesystemavectune2fs
tune2fs -l device
Odevice reprsentelefichierspcialenmodeblocquidsignelepriphriquesurlequelsetrouvelefilesystem
vrifier.
La diffrence entre le format ext2 et ext3 est la prsence ou non dun journal des transactions. La commande
tune2fspermetdajouterunjournalunfilesystemext2,etdoncdeleconvertirenext3.
Affichagedesparamtresdunfilesystemenext3

ENI Editions - All rights reserved - Samuel CASAL

- 3-

Notezquelamentionhas_journalfiguredanslasectionFilesystemfeatures,cequiindiqueunfilesystemdetypeext3.
alpha:/dev# tune2fs -l /dev/hda1
tune2fs 1.41.3 (12-Oct-2008)
Filesystem volume name:
<none>
Last mounted on:
<not available>
Filesystem UUID:
ff700a3b-b430-49a7-ae73-bd23f363a3fc
Filesystem magic number: 0xEF53
Filesystem revision #:
1 (dynamic)
Filesystem features:
has_journal ext_attr resize_inode
dir_index filetype needs_recovery sparse_super large_file
Filesystem flags:
signed_directory_hash
Default mount options:
(none)
Filesystem state:
clean
Errors behavior:
Continue
Filesystem OS type:
Linux
Inode count:
501952
Block count:
2004100
Reserved block count:
100205
Free blocks:
1656481
Free inodes:
477768
First block:
0
Block size:
4096
Fragment size:
4096
Reserved GDT blocks:
489
Blocks per group:
32768
Fragments per group:
32768
Inodes per group:
8096
Inode blocks per group:
506
Filesystem created:
Tue Aug 31 16:35:26 2010
Last mount time:
Wed Sep 1 13:26:17 2010
Last write time:
Wed Sep 1 13:26:17 2010
Mount count:
4
Maximum mount count:
34
Last checked:
Tue Aug 31 16:35:26 2010
Check interval:
15552000 (6 months)
Next check after:
Sun Feb 27 15:35:26 2011
Reserved blocks uid:
0 (user root)
Reserved blocks gid:
0 (group root)
First inode:
11
Inode size:
256
Required extra isize:
28
Desired extra isize:
28
Journal inode:
8
Default directory hash:
half_md4
Directory Hash Seed:
74c4ea07-489a-4b95-b6e7-94440eeb208f
Journal backup:
inode blocks
alpha:/dev#
Les utilitaires dumpe2fs, debugfs ou debugreiserfs permettent dobtenir davantage dinformations de bas
niveausurlesfilesystems.LeurconnaissancedtaillenestpasdemandepourlacertificationLPI.

Conversiondunfilesystemext2enext3avectune2fs
tune2fs -j device
Odevice reprsentelefichierspcialenmodeblocquidsignelepriphriquesurlequelsetrouvelefilesystem
modifier.

h.Dnominationdessystmesdefichiers
Certainsparamtresdessystmesdefichierssontmodifiablesaprsleurcration.Parmicesparamtres,certains
prennentdeplusenplusdimportancedanslessystmesLinuxmodernes,etsimplifieront(peuttre)lesoprations
demontage.Cesparamtressontlelabeletluuid.Ilspermettentdemonterlesfilesystemlocauxsansavoirles
dsigner par leur fichier de bloc spcial comme /dev/sdb1. Si cette volution nestpasforcmentvcuecommeun
progrs ni une simplification par tous, sa gnralisation ainsi que sa prsence dans les examens LPI rendent sa
- 4-

ENI Editions - All rights reserved - Samuel CASAL

connaissancencessaire.
Lelabeldesfilesystem
Comme son nom lindique, le label est une tiquette quon attribue au filesystem pour le dsigner de faon
confortable.Lelabeldoittreprcisparladministrateursoitlacrationdufilesystem,soitaprscoupavecune
commandedetuning.LessystmesdinspirationRedHatsontlesprincipauxutilisateursdulabel.
Ajoutdunlabelsurunfilesystemexistant
tune2fsLlabeldevice

Ajouteunlabelaupriphriquedestockagedevice.

reiserfstunellabeldevice

Ajouteunlabelaupriphriquedestockagedevice.

xfs_adminLlabeldevice

Ajouteunlabelaupriphriquedestockagedevice.

LUUIDdesfilesystem
LUUID, (Universally Unique Identifier) comme le label permet de dsigner un priphrique de stockage par un
identifiant plutt que par son fichier de bloc spcial (/dev/sdb1 par exemple). La diffrence avec le label est que
laffectationdeluuidestautomatiquelacrationdufilesystem.Ilpeutnanmoinstreraffectaprscoupparles
commandesdetuningdesfilesystems.Deplusenplusdesystmesgnralisentlexploitationdeluuid.Cestlecas
notammentdesdistributionsubuntu.
Si vous ne savez pas comment dterminer lUUID dun nouveau systme, nayez pas dinquitude, il est
gnralementcrdefaonalatoire,etsataille(128bits)estlegarantdesonunicit(probable).
Modificationdunuuidsurunfilesystemexistant
tune2fsUuuiddevice

AffectationdelUUIDuuidaupriphriquedestockagedevice

tune2fsUrandomdevice

AffectationdunUUIDalatoireaupriphriquedestockagedevice

tune2fsUtimedevice

AffectationdunUUIDbassurlheuredecrationaupriphriquede
stockagedevice

reiserfstuneuuuiddevice

AffectationdelUUIDuuidaupriphriquedestockagedevice

xfs_adminUuuiddevice

AffectationdelUUIDuuidaupriphriquedestockagedevice

Dans le tableau cidessus, device reprsente le fichier spcial en mode bloc qui reprsente le priphrique
hbergeantlefilesystemsurlequelonintervient.Parexemple/dev/sda3.

2.Gestionduswap
a.Pourquoileswapetenquellequantit?
Leswapoummoirevirtuelleestunespacedestockageexploitpourpalierunmanquedemmoirephysiquesur
lesystme.Quandlammoirephysiquevientmanquerpourlesapplications,unepartiedesinformationsstockes
enmmoireetnayantpasfaitlobjetduneutilisationrcenteestdplacesurlespacedeswap,librantainside
lespace pour les applications qui ont un besoin immdiat de mmoire. Si des applications ont besoin des
informationsquionttbasculessurlespacedeswap,lemcanismedeswapestnouveauengagpourlibrer
encoredelespaceenmmoirephysique,espacedanslequellesdonnesswappesnouveauncessairesseront
restituespourexploitationparlesapplications.
Ilnefautpassetrompersurlutilisationquidoittrefaiteduswap.Enfonctionnementordinaire,unserveurouune
stationsetravailLinuxnedevraitpasavoirswapper.Lagrandepoqueduswaptaitcelleolammoirecotait
si cher quil fallait trouver pour lquipement dun serveur un compromis entre le cot dun systme et les
performancesquilpouvaitoffrir.Aujourdhui,lescotsrelativementbasdelammoirefontquunsystmenedevrait
avoirswapperquen cas de surconsommation accidentelle de mmoire. Le swap est donc en quelque sorte une
mmoire de secours qui vite de planter un serveur en attendant la mise en adquation entre les besoins en
mmoireetlesressourcesdisponibles.
Laquantitdeswapestsouventsujettecautionetselonlesauteurs,lessourcesetlespoques.Ilestdifficileau
momentdelinstallationnonautomatiquedunsystmedefaireunchoixserein.Unconsensussemblesedterminer
autourdevaleurscomprisesentreuneetdeuxfoislaquantitdeRAM.Detoutefaon,lesinstallationspardfaut
ENI Editions - All rights reserved - Samuel CASAL

- 5-

desdistributionsproposentgnralementlacrationdunespacedeswapautomatiquement.Pouruneinstallation
surmesure,lesvaleurscourantes(unedeuxfoislaRAM)sontparfaitementacceptables,etdansledoute,lespace
disquetantaussitrsbonmarch,ilvautmieuxsurdimensionner.

b.Optimisationduswap
Le swap est optimisable en quantit et en qualit. Il peut arriver que le swap ait t sousdimensionn
linstallation:parexemple,oninstallesurunserveurexistantuneapplicationquiexigeunecertainequantitdeRAM
etunswapdixfoissuprieurlexistant.
Parailleurs,leswappeuttredplacversunespacedisqueplusrapide:unSANouunebaiededisquercenteet
doncplusrapidequelesystmedisqueinitialestinstalle,etlexploitationduswappourraittreplusrapidesurces
systmesdestockage.
Pourcesraisons,ilpeuttreutiledecrerunnouvelespacedeswap,quisajouteraousesubstitueralespace
initial.
Naturedelespacedeswap
Le swap peut tre constitu de plusieurs espaces de stockage qui sont des partitions ou des fichiers. Dans la
mesure o le noyau accdera directement et exclusivement aux partitions de swap, les performances seront
meilleuresquavecunfichierdeswapolefilesystemreprsenteunintermdiairesupplmentaireverslestockage
physique.
Sileswapestplacsurunepartition,elledoitavoirtcredetype82avecunoutildepartitionnementadquat
(fdisk Linux par exemple). Si cest un fichier, il doit simplement tre accessible en permanence sur un filesystem
toujoursmont.
Crationdelespacedeswap
Pour pouvoir tre exploit, lespace de swap doit tre prpar, un peu comme on crerait un filesystem sur un
espace de stockage brut. Cette prparation se fait avec la commande mkswap, et elle peut tre applique aussi
bienunepartitionquunfichierdetailledtermine.
Syntaxedelacommandemkswap
mkswap espace_stockage
Oespace_stockagereprsentelemplacementphysiquedelespacedeswapdontladnominationpeutsefairede
diffrentesfaons:
Dsignationspossiblesdesespacesdestockagepourlacommandemkswap
/chemin/fichier

Structurelefichierafinquilpuissetreexploitentantquespacede
swap.

/dev/device

Structurelespacedestockagedsignparlefichierspcialenmodebloc
afinquilpuissetreexploitentantquespacedeswap.

LLABEL

StructurelespacedestockagedsignparlelabelLABELafinquilpuisse
treexploitentantquespacedeswap.

UUUID

StructurelespacedestockagedsignparluuidUUIDafinquilpuisse
treexploitentantquespacedeswap.

Exploitationduswap
Unefoislespacedeswapcr,ildoittrerenduaccessibleaunoyauparlacommandeswapon.Lesystmesera
alorscapabledeswapperpartirdunouvelespacecr.
Syntaxedelacommandeswaponpouractiverunespacedeswap
swapon espace_stockage
Oespace_stockagereprsentelemplacementphysiquedelespacedeswapdontladnominationpeutsefairede
diffrentesfaons:
Dsignationspossiblesdesespacesdestockagepourlacommandeswapon
- 6-

ENI Editions - All rights reserved - Samuel CASAL

/chemin/fichier

Rendlefichierutilisablepourleswapparlenoyau.

/dev/device

Rendlespacedestockagedsignparlefichierspcialenmodebloc
utilisablepourleswapparlenoyau.

LLABEL

RendlestockagedontlelabelestLABELutilisablepourleswapparle
noyau.

UUUID

RendlestockagedontluuidestUUIDutilisablepourleswapparle
noyau.

Dsactivationdunespacedeswap
Sionsouhaitequelesystmearrtedexploiterunespacedeswap,ilfautleluisignifieraveclacommandeswapoff.
Syntaxedelacommandeswapoffpourdesactiverunespacedeswap
swapoff espace_stockage
Oespace_stockagereprsentelemplacementphysiquedelespacedeswapdontladnominationpeutsefairede
diffrentesfaons:
Dsignationspossiblesdesespacesdestockagepourlacommandeswapoff
/chemin/fichier

Arrtelexploitationdelespacedeswapsurlefichier.

/dev/device

Arrtelexploitationdelespacedeswapsurledevice.

LLABEL

Arrtelexploitationdelespacedeswapsurlestockagedontlelabelest
LABEL.

UUUID

Arrtelexploitationdelespacedeswapsurlestockagedontluuidest
UUID.

Visualisationdesespacesdeswap
Lensembledesespacesdeswapexploits,ainsiqueleurnature(fichieroupartition)peuventtreaffichsavecles
commandesswaponetswapoffvoquesprcdemment.
Syntaxedelacommandeswaponpourvisualiserlaconfigurationduswap
swapon -s
Exempledutilisationdelacommandeswapon
Lacommandeindiquelapartitionoulefichierutilis,lataillerserveetlaquantitdeswaputilise.
A:~# swapon -s
Filename
Type
/dev/hda5
partition

Size
409616

Used Priority
608 -1

Autrevisualisationduswap
Il est galement possible de visualiser la configuration du swap en consultant le contenu du fichier swap du filesystem
virtuel/proc.
toto@cuicui:~$ cat /proc/swaps
Filename
Type
/dev/sda3
-1

Size

Used

Priority
partition 10112908 2024

ENI Editions - All rights reserved - Samuel CASAL

- 7-

3.Montagedesfilesystems
a.Montageetdmontage
La commande mount permet de monter le filesytem dun priphrique de stockage sous un rpertoire local,
gnralementvide.Auminimum,ilfautfournircommeargumentlacommandemountlepriphriquehbergeantle
filesystem,etlerpertoirequiconstituerasonpointdemontage.
La commande umount ralise lopration inverse. Elle accepte comme argument le point de montage, ou le
priphriquephysiquedmonter.
Montagedunfilesystem
mount -t type_fs -o options device point_montage

commandemount :optionsetparamtres
type_fs

Facultatif :typedefilesystemmonter.

options

Facultatif :optionsdemontage.

device

Lepriphriquehbergeantunfilesystemmonter,sousformedefichier
spcialbloc.

point_montage

Lerpertoirequiserviradepointdancrageaufilesystemmont.

Les options les plus courantes sont ro (lecture seule), sync (critures synchrones sans passer par un cache
mmoire),etloop(montagededonnesdefichierspluttquedefilesystems).
Lemontagedunfilesystemavecloptionsyncpermetdesaffranchirdetouteformedecacheencrituresur
ledisque,etainsidefiabiliserlesoprationsdcriture.Lacommandesyncpermetdeviderponctuellement
lecachesurunfilesystemquinebnficiepasdecetteoptiondemontage.

Dmontagedunfilesystem
umount -O options device point_montage

commandeumount :optionsetparamtres
options

Facultatif :optionsdedmontage.

device

Facultatifsilepointdemontageestprcis :lepriphriquedmonter.

point_montage

Facultatifsilepriphriqueestprcis :lerpertoireservantdepointde
montagelibrer.

Les options les plus courantes sont f (force : forcer le dmontage) et l (lazy : dmontage paresseux qui sera
effectifquandtouteslesressourcesutilisespourlemontageaurontputrelibres.
Le dmontage dun filesystem est indispensable pour en effectuer la vrification avec la commande e2fsck. Le
filesystem mont sur / est par dfinition indmontable puisque toujours occup. Il est possible de forcer la
vrificationavantlemontagelorsdudmarragedepuislacommandeshutdown.
Vrificationdufilesystemracineavantmontage
shutdown -F -r now

b.Visualisationdesfilesystemsmonts
Lacommandemountsansargumentpermetdevisualiserlesfilesystemsmonts.

- 8-

ENI Editions - All rights reserved - Samuel CASAL

Par ailleurs, chaque montage russi provoque lcriture dune ligne correspondante dans le fichier /etc/mtab.
Laffichagedufichier/proc/mountsrenvoielammeinformation.

c.Fichierfstab
Le fichier /etc/fstab permet de dsigner des filesystems monter ou des espaces de swap activer
automatiquement au dmarrage. Accessoirement, il permet aussi de dsigner des filesystems ventuellement
montables, comme pour les priphriques amovibles par exemple. La syntaxe de la commande mount appele
ponctuellementenseraalorsfortementsimplifie.
Le fichier /etc/fstab doit comporter sur chaque ligne lensemble des lments ncessaires au montage dun
filesystem,savoirlepointdemontage,ladsignationdelespacedestockage,etlesoptionsdemontage.Pourles
espacesdeswap,ladsignationdupointdemontageserasansobjet.
Lefichier/etc/fstabestcomposduneligneparfilesystemmonter,chaquelignetantcomposedesixchamps
obligatoires.
Formattypedunelignededclarationdemontagedans/etc/fstab
fs

pointmontage

type

options

dump

fsck

Leschampssontsparspardesespacesoudestabulations.
Fichier/etc/fstab:formatdeslignesdedfinitiondesmontages
Numrode
champ

Champ

Dsignation

fs

Filesystem,dsignparsonfichierdeblocspcial,sonlabelouson
uuid.

pointmontage

Pointdemontage.

type

Typedefilesystem.Obligatoirementswappourleswap,autoou
typeeffectifdefilesystemdanslecascontraire.

options

Optionsdemontage.Enfait,lesoptionsadmisesparlacommande
mount.

dump

Facultatif.Silacommandedumpestutilisepourlasauvegardedu
systme,cechampdoittre1pourassurerlasauvegarde.Sinon,
savaleurpardfautest0.

fsck

Facultatif.Encasdevrificationautomatiquedesfilesystemau
dmarrage,indiquedansquelordrecettevrificationdoitsefaire.
Valeurobligatoirede1pourlefilesystemmontsur/,2pourles
autres.0pourquelavrificationnesoitjamaiseffectue.

Exempledefichier/etc/fstabsurUbuntu
Notezquelesdisquessontidentifisparleuruid.
# /etc/fstab: static file system information.
#
# <file system> <mount point>
<type> <options>
<pass>
proc
/proc
proc
defaults
# /dev/sda2
UUID=52200c0b-aee8-4ae0-9492-1f488051e4a3 /
relatime,errors=remount-ro 0
1
# /dev/sdb1
UUID=b0891c0e-1812-4d23-b77d-b861f7fd2713 /home
relatime,errors=remount-ro 0
2
# /dev/sda3

<dump>
0

0
ext3

ext3

ENI Editions - All rights reserved - Samuel CASAL

- 9-

UUID=ee7890fb-c312-406f-b100-669c97ee8d07 none
swap
sw
0
0
/dev/scd0
/media/cdrom0
udf,iso9660 user,noauto,exec,utf8
0
0
Exempledefichier/etc/fstabsurRedHat
Lesdisquessontidentifisparleurlabel.
LABEL=/
1 1
LABEL=/boot
1 2
/dev/hda3
0 0
/dev/cdrom
noauto,owner,kudzu,ro 0
/dev/fd0
noauto,owner,kudzu 0 0

ext3

defaults

/boot

ext3

defaults

swap

swap

defaults

/mnt/cdrom
0
/mnt/floppy

udf,iso9660
auto

Lacommandemountaestappeleaudmarragedunsystme.Cettecommandeprovoquelemontagedetousles
priphriques rfrencs dans le fichier /etc/fstab, lexception de ceux qui prsentent loption noauto dans le
quatrimechamp.

d.Automontage
Le montage peut tre une opration pnible raliser pour loprateur. Certaines fonctionnalits optionnelles
permettentdesaffranchirdansunecertainemesuredelaconnaissancedesfonctionsetcommandesdemontage.
Les bureaux graphiques Gnome ou KDE par exemple grent depuis longtemps le montage automatique des
priphriquesamoviblesinsrs.LacertificationLPIprvoitlaconnaissancedelautomontage,techniquequipermet
demonterlavoleunfilesystemenfonctiondelaccsquiyestfaitparlutilisateur.Lautomontageestenvoiede
rarfactionsurlespostesdetravailautonomes,maistrsefficacesurlessystmesdefichiersdistribus.

Configurationdelautomontage
Lautomontagesappuiesurdeuxfichiersdeparamtrage:lestablesdautomontage,etsurunservicequivrifieen
permanencesilestbesoinderaliserdesoprationsdemontage.
La premire table dautomontage, la table matresse est configure dans le fichier /etc/auto.master. Elle prcise

- 10 -

ENI Editions - All rights reserved - Samuel CASAL

lensembledesrpertoiressoumisautomontage,cestdirelesrpertoiresdanslesquelspourrontavoirlieudes
montagesautomatiquessiuneapplicationfaitappeluncontenudecerpertoire.Oncreradanscefichierautant
delignesquilyauraderpertoiressurveiller.
Formatdelatablematressedautomontage(/etc/auto.master)
repertoire

fic_sec

--option=valeur

Fichier/etc/auto.master:directivesetvariablesutilises
repertoire

Lerpertoiredanslequellesaccsserontsurveillspourvoirsilyalieu
deprocderaumontage.

fic_sec

Lefichierdetablesecondairequiprciselesmontagesraliserpourle
rpertoire.

option

Optionlielagestiondelautofs.Optioncouranteconnatre:timeout.
Lavaleurestalorslenombredesecondesavantledmontageencas
dinactivit.

Le nom des fichiers de table secondaire est libre, mme sil porte gnralement le prfixe auto. et se situe
dans/etc.Ilfaudraautantdefichierssecondairesquonenauradcritdanslatablematresse.Dansbiendescas,
une table secondaire unique est suffisante. Chaque table secondaire correspond au chargement dun dmon
indpendant.
Formatdefichierdunetablesecondaire
pmv

options

device

Fichierdetablesecondairedautomontage:directivesetvariables
pmv

Pointdemontagevirtuel:lerpertoirevirtueldontlaccsparune
applicationprovoqueralemontage.

options

Lesoptionsdemontage,prcdesparuntiretetsparespardes
virgules.

device

Lepriphriquemonter.

Gestionduservicedautomontage
Pourprendreencomptelanouvelleconfiguration,ilfaudraredmarrerleservice.Lescriptdelancementduservice
sappellegnralementautofs,etilestsitudans/etc/init.d.

Toutchangementdetablematressedoitsaccompagnerdunredmarrageduservice.

Redmarrageduservice
/etc/init.d autofs restart
Visualisationdelaconfiguration
/etc/init.d autofs status

Fonctionnementdelautomontage
Pourtesterlaconfigurationdevotreautomontage,suivezlestapessuivantes:

Crezlerpertoiredetravail.Necrezpaslespointsdemontage,ilsnedoiventpasexister.

Renseignezlesfichiersdeconfiguration.

ENI Editions - All rights reserved - Samuel CASAL

- 11 -

Redmarrezleservice.
Depuisleshell,positionnezvousenaveugledanslepointdemontagevirtuel,celuiquiestdcritdanslefichierde
tablesecondaire.
Vrifiezquelemontageabieneulieudefaontransparente.

4.Gestiondesdisquesdurs
Danslaplupartdessituations,lesconnaissancescourantessurladnominationcourantedesdisquesdurs(hda,sda)
sontsuffisantes,etonseconcentresurtoutsurlafaondelesexploitersousformedepartitionsouvolumeslogiques.
Il arrive toutefois quil soit ncessaire de paramtrer les disques durs du point de vue matriel, pour optimiser les
performancesoupourdtecterdesdfaillances.

a.Dterminationdesfichiersspciaux
Il y a quelque temps encore, les systmes Linux contenaient dans leur rpertoire /dev lensemble des fichiers
spciauxpourtouslespriphriquesgrablesparlenoyau.Aveclenoyau2.6estarrivleserviceudev,quiapour
tchedegrerdynamiquementlacrationdefichiersspciauxladcouvertedunpriphrique.
Du point de vue de lutilisateur ordinaire, le service udev travaille dans lombre et le mieux est de ne pas sen
soucier : les fichiers spciaux sont prsents quand on en a besoin et il ny a rien vouloir de plus. En revanche,
ladministrateur ou lutilisateur avanc peut crer des rgles comportementales qui permettent de dclencher des
actions en fonction dvnements lis au stockage. Lemplacement de ces rgles est prcis dans le fichier de
configuration de udev : /etc/udev/udev.conf. En labsence dinformation, cest la valeur par dfaut qui est
employe,savoir/etc/udev/rules.d.
Exempledergleudev
Dans cette configuration standard dune distribution Ubuntu, on voit (aprs quelques efforts dinterprtation) que le
systmegnredeslienssymboliquespourlesdiffrentesappellationscourantesdulecteurdemediaoptique.
root@serveur # cat /etc/udev/rules.d/70-persistent-cd-rules
ENV{ID_CDROM}=="?*", ENV{ID_PATH}=="pci-0000:00:14.1-scsi0:0:0:0", SYMLINK+="cdrom", ENV{GENERATED}="1"
ENV{ID_CDROM}=="?*", ENV{ID_PATH}=="pci-0000:00:14.1-scsi0:0:0:0", SYMLINK+="cdrw", ENV{GENERATED}="1"
ENV{ID_CDROM}=="?*", ENV{ID_PATH}=="pci-0000:00:14.1-scsi0:0:0:0", SYMLINK+="dvd", ENV{GENERATED}="1"
ENV{ID_CDROM}=="?*", ENV{ID_PATH}=="pci-0000:00:14.1-scsi0:0:0:0", SYMLINK+="dvdrw", ENV{GENERATED}="1"

b.Informationssurlespriphriquesdestockage
Grceauserviceudev,onnetrouveplusdanslerpertoire/devquelespriphriquesrellementprsentssurle
systme.Celaconstituenaturellementunpremierniveaudinformations.
La solution la plus simple pour obtenir plus de dtails est dexploiter la commande dmesg qui consigne tous les
messagesrenvoysparlenoyaudepuissondmarrage.Onditquelacommandedmesgaffichele ringbufferdu
noyau.
Utilisationdedmesgpouridentifierlesdisquesdurs
Ilestvivementrecommanddefiltrerlasortiedelacommandedmesg,cellecitantparnatureassezbavarde.
alpha:~# dmesg
[
0.000000]
[
3.136965]
[
3.822425]
selected PIO4
[
3.822677]
[
4.575784]

- 12 -

| grep [sh]d
Kernel command line: root=/dev/hda1 ro quiet
hda: VBOX HARDDISK, ATA DISK drive
hda: host max PIO4 wanted PIO255(auto-tune)
hda: UDMA/33 mode selected
hdc: VBOX CD-ROM, ATAPI CD/DVD-ROM drive

ENI Editions - All rights reserved - Samuel CASAL

[
5.275977] hdc: host max PIO4 wanted PIO255(auto-tune)
selected PIO4
[
5.275977] hdc: UDMA/33 mode selected
[
7.203721] hda: max request size: 128KiB
[
7.203728] hda: 16777216 sectors (8589 MB) w/256KiB Cache,
CHS=16644/16/63
[
7.204020] hda: cache flushes supported
[
7.204020] hda: hda1 hda2 < hda5 >
[
7.234912] hdc: ATAPI 32X DVD-ROM drive, 128kB Cache
[
7.257272] Driver sd needs updating - please use bus_type methods
[
7.257525] sd 0:0:0:0: [sda] 4194304 512-byte hardware sectors
(2147 MB)
[
7.257620] sd 0:0:0:0: [sda] Write Protect is off
[
7.257627] sd 0:0:0:0: [sda] Mode Sense: 00 3a 00 00
[
7.257769] sd 0:0:0:0: [sda] Write cache: enabled, read cache:
enabled, doesnt support DPO or FUA
(...)
Rcuprationdinformationssurunpriphriqueparlacommandeudevadm
Le service udev peut aussi nous fournir des informations prcieuses par le biais de sa commande dadministration
udevadm.
alpha:~# udevadm info --query=all --name=/dev/hda
P: /block/hda
N: hda
S: block/3:0
S: disk/by-id/ata-VBOX_HARDDISK_VBf92d3e4d-7faf607b
S: disk/by-path/pci-0000:00:01.1-ide-0:0
E: ID_TYPE=disk
E: ID_MODEL=VBOX_HARDDISK
E: ID_SERIAL=VBf92d3e4d-7faf607b
E: ID_REVISION=1.0
E: ID_BUS=ata
E: ID_PATH=pci-0000:00:01.1-ide-0:0
Surveillancedvnementsparlacommandeudevmonitor(ouudevadmmonitor)
Onpeutsurveillerquasimententempsrellesvnementssystme.
toto@ubuntu:~$ udevmonitor
monitor will print the received events for:
UDEV - the event which udev sends out after rule processing
KERNEL - the kernel uevent
KERNEL[1276268963.339194] change
/devices/pci0000:00/0000:00:14.1/host4/target4:0:0/4:0:0:0 (scsi)
KERNEL[1276268963.339804] change
/devices/pci0000:00/0000:00:14.1/host4/target4:0:0/4:0:0:0/block/sr0 (block)
(...)
Visualisationdesparamtresdepriphriquesaveclsdev
Lacommandelsdevpermetdercuprerdesinformationssurlespriphriquesreconnus,notammentlesvaleursDMA,
IRQetI/O.Cesvaleurssontluesdanslesfichiers/proc/interrupts,/proc/ioports,et/proc/dma.
toto@ubuntu:~$ lsdev
Device
DMA
IRQ I/O Ports
-----------------------------------------------0000:00:01.1
0170-0177 01f0-01f7 0376-0376 03f6-03f6
d000-d00f
0000:00:03.0
d020-d03f
0000:00:04.0
d040-d05f
0000:00:05.0
d100-d1ff d200-d23f
82801AA-ICH
5
ACPI
4000-4003 4004-4005 4008-400b 4020-4021
ENI Editions - All rights reserved - Samuel CASAL

- 13 -

ata_piix
d000-d00f
cascade
eth0
floppy
vga+
toto@ubuntu:~$

14 15
4
2

2
10
6

0170-0177

01f0-01f7

0376-0376

03f6-03f6

03f2-03f2 03f4-03f5 03f7-03f7


03c0-03df

Rcuprationdinformationsdurpertoire/dev/disk
Enfin,ontrouvesouslerpertoire/dev/diskleslmentsdestockageapparaissantselonlafaondontilssontreconnus
etidentifisparlesystme.
root@serveur:/dev/disk$ ls
by-id by-label by-path by-uuid
root@serveur:/dev/disk$ cd by-uuid
root@serveur:/dev/disk/buy-uuid$ ls
52200c0b-aee8-4ae0-9492-1f488051e4a3 B0F82CDCF82CA318
b0891c0e-1812-4d23-b77d-b861f7fd2713 ee7890fb-c312-406f-b100-669c97ee8d07
root@serveur:/dev/disk/by-uuid$ file *
52200c0b-aee8-4ae0-9492-1f488051e4a3: symbolic link to `../../sda2
b0891c0e-1812-4d23-b77d-b861f7fd2713: symbolic link to `../../sdb1
B0F82CDCF82CA318:
symbolic link to `../../sda1
ee7890fb-c312-406f-b100-669c97ee8d07: symbolic link to `../../sda3
root@serveur:/dev/disk/by-uuid$

c.Gestiondesperformancesavechdparm
Lacommandehdparmpermetdeconsulteretconfigurerdenombreuxparamtresdudisquedur,certainsdailleurs
dangereuxpourledisque.
Visualisationdesparamtresfonctionnelsavechdparm
alpha:~# hdparm /dev/hda
/dev/hda:
multcount
= 0 (off)
IO_support
= 0 (default)
unmaskirq
= 0 (off)
using_dma
= 1 (on)
keepsettings = 0 (off)
readonly
= 0 (off)
readahead
= 256 (on)
geometry
= 16644/16/63, sectors = 16777216, start = 0
Si le matriel le supporte, les paramtres fonctionnels du disque peuvent tre modifis avec loption approprie
suivie dun paramtre numrique, en gnral 0 ou 1. Les options les plus courantes sont c (activation ou
dsactivationdelaccs32bitsaudisque)et d(activationoudsactivationdelaccsDMA).Uneoptiondemande
sansvaleurnumriqueassocieentrainelaffichagedelavaleurcourante.
Consultationdelaccs32bits
alpha:~# hdparm -c /dev/hda
/dev/hda:
IO_support
= 0 (default)
Consultationpuissuppressiondelalectureanticipe
alpha:~# hdparm -a /dev/hda
/dev/hda:
readahead
= 256 (on)
alpha:~# hdparm -a 0 /dev/hda
/dev/hda:
setting fs readahead to 0

- 14 -

ENI Editions - All rights reserved - Samuel CASAL

readahead

0 (off)

Visualisation,activationetdsactivationdelaccsDMA
alpha:~# hdparm -d /dev/hda
/dev/hda:
using_dma
= 0 (off)
alpha:~# hdparm -d 1 /dev/hda
/dev/hda:
setting using_dma to 1 (on)
using_dma
= 1 (on)
alpha:~# hdparm -d 0 /dev/hda
/dev/hda:
setting using_dma to 0 (off)
using_dma
= 0 (off)
Une autre commande : sdparm, moins courante permet une communication de bas niveau avec les
priphriquesSCSI,parexemplepourraliserleurdsactivationpourretraitchaud.

d.Gestiondesdfaillancesmatrielles
Nousavonsvuquelacommandefsckpermettaitdevrifierlacohrencedunfilesystem.Siuneincohrenceestdue
un problme de gestion de lcriture (arrt lectrique lors dune opration dcriture), fsck peut essayer de
rcuprertantbienquemallasituationetunefoisrsolu,leproblmepeuttreoubli.Enrevanche,ladfaillance
physiquedundisque,lieundfautdelasurfacemagntiqueparexemple,doittretraitedefaonadquate
pourvitertouteconsquenceultrieure.Lacommandebadblocksrfrencelesblocsphysiquementdfectueuxsur
un disque ou une partition. La liste des blocs dfectueux est envoye sur la sortie standard, mais il est courant
dutiliserunfichierquiseraexploitableparlesprogrammese2fsckoumke2fs.Danscecas,ilfautprciserlataille
desblocsemployspourvitertoutennui.Silebutestsimplementdevrifierlabsencededfautsurledisque,la
commandebadblockspeuttreutilisesansaucuneoption.
Dtectiondesblocsenerreuravecbadblocks
badblocks -b taille_blocks -o fichier_sortie
O taille_blocks reprsente la taille des blocs du systme de fichiers et fichier_sortie le fichier qui consignera
lensembledesblocsaltrs.

ENI Editions - All rights reserved - Samuel CASAL

- 15 -

Sauvegardes
LagestiondelasauvegarderevtbiendesaspectssurlessystmesLinux.Desoutilshistoriquesquigraientdansle
meilleur des cas un lecteur de bande local jusquaux outils modernes sophistiqus et aux logiciels de sauvegarde
commerciaux, lventail est large. Lessentiel est de connatre les moyens disponibles, et dadapter sa stratgie de
sauvegardesesbesoinsenfonctiondutempsetdelargentquonestprtinvestirdanslasauvegarde.

1.Lesutilitairesdarchivage
Les utilitaires darchivage permettent de raliser les sauvegardes les plus simples, et grce cette simplicit, sans
doutelesplusfiables.Leurprincipeestsimple:ellesenvoientunensembledefichiers(engnralunearborescence
derpertoires)versunfichier,quilsagissedunfichierordinaireoudunfichierspcialquidsigneunpriphriquede
stockage.

a.Lacommandetar
La commende tar, dusage universel dans les environnements Linux est connatre absolument. Sa richesse
fonctionnelle peut impressionner, mais si la commande tar prsente de trs nombreuses options, moins dune
dizainesontutilisesdanslaplupartdessituations.
Syntaxedelacommandetarpourcrerunearchive
tar action compression verbosit -f fichier_archive rpertoire
Syntaxedelacommandetarpourlisterouextraireunearchive
tar action compression verbosit -f fichier_archive

Commandetar:optionsetparamtres
action

Creunearchive.Ilfautalorsindiquerendernierparamtrelerpertoire
partirduquellarchiveestcre.

Listelecontenudunearchiveexistante.

Extraitlecontenudunearchiveexistantedanslerpertoirecourant.

compression

Pasdecompressionsurlarchivemanipule.
z

Compressionauformatgzipdelarchivemanipule.

Compressionauformatbz2delarchivemanipule.

verbosit

Pasdeverbosit,affichageminimum.
v

Verbosit,affichagedtaill.

fichier_archive

Lefichierquireoitouhbergelarchive.Cefichierpeuttreunfichier
spcialenmodeblocouenmodecaractres.Aujourdhuipresque
toujoursunfichierordinaire.

rpertoire

Danslecadredunecrationdarchive,dsignelerpertoirepartir
duquellarchiveestcre.

Mme si a nest pas une obligation, il est dusage daffecter une extension .tar aux fichiers contenant une
archivetar,suivieduneextensionlieaumodedecompression.gzou.bzip2.
Dans un usage de la commande tar des fins de sauvegarde, on dirigera larchive de sauvegarde vers un
priphriqueamovibleouversunespacedestockagedistant.

ENI Editions - All rights reserved - Samuel CASAL

- 1-

Exempledutilisationdelacommandetar
Dans cet exemple, on cre une archive tar compresse partir dun rpertoire, on efface le rpertoire, puis on le
restorepartirdelarchive.
A:~# ls
trucs
A:~# # remarque : cration de larchive
A:~# tar czf sauvegarde.tar.gz trucs
A:~# ls
sauvegarde.tar.gz trucs
A:~# # remarque : destruction du rpertoire trucs
A:~# rm -r trucs
A:~# ls
sauvegarde.tar.gz
A:~# # remarque : restauration de larchive
A:~# tar xzf sauvegarde.tar.gz
A:~# ls
sauvegarde.tar.gz trucs
A:~#
Si la commandetar est employe pour crer une archive sur bande magntique et non sur disque, il est
recommanddenepasutiliserdoptiondecompression.Leformatcompressempcheraitunercupration
partielledesdonnesencasdedtriorationdelabande.

b.Lacommandecpio
La commande cpio dont lusage tend disparatre en environnement Linux permet de raliser des archives non
compressesdunensembledefichiersetrpertoires.
cpio est dun usage particulirement non intuitif, et nest en gnral utilis que dans des cas spcifiques. Le
problmedecpiovientdecequecettecommandenacceptepasquonluidsigneleslmentssauvegarderen
tantqueparamtrecommelefaitlacommandetar.Ilfautluiindiquerceslmentssousformedelistedefichiers
sursonentrestandard.Demme,touteslesmanipulationsensortiesefontparredirectiondelasortiestandard.
Si la commande cpio a survcu malgr ces handicaps dun autre temps, cest justement grce ces limitations
syntaxiques : la liste de fichiers sauvegarder est presque toujours fournie par redirection du rsultat dune
commandefind.Or,noussavonsdepuisleniveau1LPIquelacommandefindestcapabledefairedesrecherches
extrmementprcisessurdetrsnombreuxcritres.Cestdoncdanslescasolonveutfairedessauvegardestrs
slectivesquelonutiliseracpio.
Syntaxedelacommandecpiopourcrerunearchive
find rpertoire critre -print | cpio options > fichier_archive
Syntaxedelacommandecpiopourlisterouextraireunearchive
cpio options < fichier_archive

Commandecpio:optionsetparamtres
rpertoire

Lerpertoiredebasepartirduquelsefaitlarecherche.

critre

Critresderechercheselonlasyntaxedelacommandefind.

options

- 2-

Modecopyout.Indiquequonestenmodedecrationdarchive.Exclusif
desoptionsiett.

Associeloptioni,listelecontenudunearchiveexistante.Exclusifde
loptiono.

Modecopyin.Indiquequonestenmodedextractionoudeconsultation
darchive.Exclusifdeloptiono.

ENI Editions - All rights reserved - Samuel CASAL

v
fichier_archive

Facultatif:rendlacommandebavarde.
Lefichier(spcialouordinaire)quirecevralarchive.

Exempledutilisationdelacommandecpio
Silestindispensabledesavoirutiliserlacommandetarnaturellement,onpeutraisonnablementnepassesouvenirdela
syntaxecpio.
A:~# ls
trucs
A:~# # remarque : cration de larchive
A:~# find trucs -print | cpio -o > archive.cpio
1 block
A:~# ls
archive.cpio trucs
A:~# # remarque : destruction du rpertoire trucs
A:~# rm -rf trucs
A:~# # remarque : restauration de larchive
A:~# cpio -i < archive.cpio
1 block
A:~# ls
archive.cpio trucs
A:~#

2.Leslogicielsdesauvegarde
a.AMANDA
AMANDA:AdvancedMarylandAutomaticNetworkDiskArchiverestunesolutiondesauvegardecreinitialementpar
luniversitduMarylandsouslicenceBSD.Disponiblesouslicencecommunautaire(gratuite)oucommerciale,AMANDA
permetdesauvegarderlocalementouenrseau,surdisquesousurbandes,lesdonnesdessystmesLinux/Unix
ouWindows.

b.Bacula
BaculaestunesolutiondesauvegardesouslicenceGPLquipermetdesauvegarderlocalementouenrseau,sur
disquesousurbandes,lesdonnesdessystmesLinux/UnixouWindows.

c.BackupPC
BackupPCestunesolutiondesauvegardesouslicenceGPLquipermetdesauvegarderlocalementouenrseau,sur
disquesousurbandes,lesdonnesdessystmesLinux/UnixouWindows.

d.Leslogicielscommerciaux
La plupart des grands diteurs de logiciels de sauvegarde supportent, souvent en option, la sauvegarde des
systmesLinux.Ilfaudraalorsinstallersurchaquesystmeunagentdesauvegardequipermettraderenvoyerles
donnesversleserveurdesauvegarde.

3.Duplicationetsynchronisationdedonnes
a.Copiebinaireavecdd
Lacommandedecopieblocblocddpermetderaliserdescopiesdebasniveaudunpriphrique.Elleestutilise
notamment pour la duplication de disques durs, mais aussi pour la cration dimagesbinairesdepriphriquesde
stockage.
ENI Editions - All rights reserved - Samuel CASAL

- 3-

Syntaxegnriquedelacommandedd
dd if=entre of=sortie bs=taille_blocs count=nombre_blocs

Commandedd:optionsetparamtres
entre

Lefichiercopier.Gnralementunfichierspcialenmodebloc.

sortie

Lefichierverslequelcopier.Fichierspcialenmodeblocoufichierordinaire.

taille_blocs

Facultatif.Dsignelatailledesblocscopier.

nombre_blocs

Facultatif.Lenombredeblocscopier.Sileparamtreestomis,lacopiesarrte
dsquellenestpluspossible.

Utilisationdelacommandeddpourunecopiededisquedur
Copiedudisquesdbversledisquesdc.
root@serveur# dd if=/dev/sdb of=/dev/sdc
root@serveur#
Utilisationdelacommandeddpourraliserlimageisoduncdrom
Lefichierisognrestgravableparnimportequellogicielouutilisabledansunemachinevirtuelle.
root@serveur# dd if=/dev/cdrom of=/home/toto/image.iso
root@serveur#
Utilisationdelacommandeddpoureffacerphysiquementuneclusb
Effacement physique de tous les blocs dune cl usb vue comme le priphrique sdd. Attention, les donnes ne sont
rcuprablesparaucunmoyensimple.Nevoustrompezpasdedisque!
root@serveur# dd if=/dev/zero of=/mnt/sdd
root@serveur#
Utilisationdelacommandeddpourcrerunfichiervidede100 Mo
Commandeddutilisepourrecevoirunespacedeswap,ougnrerdegrosfichierspourdestestsdecopie.
root@serveur# dd if=/dev/zero of=/home/toto/fichiervide bs=1024 count=100000
root@serveur#

b.Gnrationdefichierisoavecmkisofs
Les fichiers iso sont des images binaires de cdrom ou dvdrom. Les images iso sont montables par la commande
mount,gravablesparnimportequellogicieldegravure,etexploitablesdepuislesmachinesvirtuellesoellessont
vues comme un cdrom. Il peut tre utile de gnrer des images iso partir dune arborescence de fichiers et
rpertoireslacommandemkisofsestlpoura.
Syntaxedelacommandemkisofs
mkisofs -J -o image rpertoire

Commandemkisofs:optionsetparamtres

- 4-

ENI Editions - All rights reserved - Samuel CASAL

Facultatif :gnredesenregistrementsJolietenplusdelastructuredenoms
iso9960.AmliorelacompatibilitaveclessystmesWindows.

oimage

Lefichierisoquiseragnr.Gnralementaveclextension.iso.

rpertoire

Lerpertoirepartirduquellimageisoseragnre.

Exempledutilisationdelacommandemkisofs
Lefichierisognrpeuttregravdirectementparnimportequellogicieldegravure.
bob@cuicui:~/Temp$ ls
data
bob@cuicui:~/Temp$ mkisofs -o imgcd.iso data
I: -input-charset not specified, using utf-8 (detected in locale settings)
Total translation table size: 0
Total rockridge attributes bytes: 0
Total directory bytes: 8192
Path table size(bytes): 50
Max brk space used 23000
178 extents written (0 MB)
bob@cuicui:~/Temp$ ls
imgcd.iso data
bob@cuicui:~/Temp$ file imgcd.iso
imgcd.iso: ISO 9660 CD-ROM filesystem data CDROM

bob@cuicui:~/Temp$
mkisofs est le nom historique de la commande permettant de crer des fichiers iso. Toutefois, cette
commande a t renomme rcemment en genisoimage, et mkisofs est prsent sur les distributions
rcentessousformedeliensymboliqueversgenisoimage.
Limageisoainsignreestunfichieruniqueaprioriinsondablehorsdesonexploitationparunlogicieladapt.En
fait,ilestpossibledemonterlefichierimagecommesilsagissaitdunpriphriqueordinaire.
Montagelocalduneimageiso
mount -o loop fichier_image point_montage
O fichier_image reprsente limage iso monter, et point_montage le rpertoire qui recevra ce montage. Loption
loopestindispensablepourlemontagedunfichierimage.

c.Synchronisationdedonnesavecrsync
Danslecadredesstratgiesdeprservationdesdonnes,ilpeuttreutilederpliquerdesdonnesdunserveur
sur un autre, soit afin de garantir une disponibilit gographique de donnes identiques, soit pour se prserver
dunedfaillancedundisqueduroudunserveur.Lacommandersyncremplitcetofficemerveille.
rsync propose plusieurs modes de fonctionnement, mais le plus courant dans le cadre de synchronisation de
donnesestdedisposerdunservicersyncsurunserveur,etdeplanifierdessynchronisationsrguliresdepuisles
machinescontenantlesdonnesrpliquer.
Configurationdunserveurrsync
La configuration se fait par le biais de deux fichiers : le fichier /etc/default/rsync quil faudra modifier, et le
fichier/etc/rsyncd.confquilfaudracrer.
Modificationdufichier/etc/default/rsync
RSYNC_ENABLE=true
Ceparamtrepermetledmarrageautomatiqueoumanueldersyncentantqueservice.
Crationdufichier/etc/rsyncd.conf

ENI Editions - All rights reserved - Samuel CASAL

- 5-

uid = utilisateur
read only = false
[instance]
path = rpertoire

Fichier/etc/rsyncd.conf:directivesetparamtres
utilisateur

Lecompteaunomduquellesoprationsdcrituresserontralisessurleserveur.

readonly=false

Indispensablepourqueleservicepuissecriresurledisque.

instance

Nomauchoix,ilyauraautantdinstancesquedeclientsrpliquer.Cenomsera
reprissurleclientlorsdelademandedesynchronisation.

rpertoire

Lerpertoiredanslequellesdonnessynchronisesserontcrites.Lecompte
utilisateuremploydoitavoirdesdroitsdcrituresurcerpertoire.

Ilfaudraaprsconfigurationrelancerleservicersyncparlesmoyenshabituels.
/etc/init.d/rsync restart

Synchronisationdesdonnesdepuisunclient
Lasynchronisationseferalademandeoudepuisunetcheplanifieaveclacommandersync.
Syntaxedelacommandersyncpourunesynchronisationponctuelle
rsync -av --delete /rpertoire/ ip_serveur::instance

Commandersync:optionsetparamtres
a

Modearchive :rpliquelesdonneslidentique,enprservantnotammentles
permissionsetlespropritaires.

Facultatif :afficheledtaildechaqueopration.Permetdevisualiserlaprogression
delasynchronisation.

delete

Copiemiroir:lesdonneseffacessurleclientlesontaussisurleserveur.

rpertoire

Lerpertoiredesdonneslocalesdupliquer.

instance

Lenomdelinstanceparamtredans/etc/rsyncd.confsurleserveur.

Synchronisationscurisededonnesavecrsync
Silasynchronisationdedonnesdoitsefaireenenvironnementhostile,ilestpossibledesenremettreSSHpour
le transport des donnes. Dans ce mode de fonctionnement, le dmon rsync ne sexcute pas sur le serveur, et
lexcutableestlanclavoleparSSHpourtouteconnexionentrante.
Synchronisationscuriseavecrsync
rsync -av --delete -e ssh rpertoire
utilisateur@adresse_serveur:/chemin_cible

rsyncavecssh :optionsetparamtres

- 6-

Modearchive :rpliquelesdonneslidentique,enprservantnotammentles
permissionsetlespropritaires.

Facultatif :afficheledtaildechaqueopration.Permetdevisualiserlaprogression

ENI Editions - All rights reserved - Samuel CASAL

delasynchronisation.
delete

Copiemiroir:lesdonneseffacessurleclientlesontaussisurleserveur.

rpertoire

Lerpertoiredesdonneslocalesdupliquer.

utilisateur

Lecompteutilisateurexistantsurlamachineciblequiserautilispourlasession
ssh.

adresse_serveur

AdresseIPduserveurcible.

chemin_cible

Rpertoireciblepourlasynchronisationdedonnessurlamachinecible.

Exempledesynchronisationscurise
Lacommandersyncpermetdecrerunmiroirentredisquessursystmesdiffrentspeudefrais.
[root@beta data]# rsync -av --delete -e ssh /root/data
root@192.168.200.106:/root/svg
root@192.168.200.106s password:
building file list ... done
created directory /root/svg
data/
data/deux/
data/deux/fichier2
data/trois/
data/un/
data/un/fichier1
sent 50047 bytes received 88 bytes 14324.29 bytes/sec
total size is 49785 speedup is 0.99
[root@beta data]#
[root@beta data]# rm -rf un
[root@beta data]# rsync -av --delete -e ssh /root/data
root@192.168.200.106:/root/svg
root@192.168.200.106s password:
building file list ... done
deleting data/un/fichier1
deleting data/un/
data/
sent 109 bytes received 26 bytes 38.57 bytes/sec
total size is 35964 speedup is 266.40
[root@beta data]#

ENI Editions - All rights reserved - Samuel CASAL

- 7-

RAID
LeRAIDpourRedundantArrayofIndependentDisks(Ensembleredondantdedisquesindpendants)estunetechnologie
dexploitationdesdisquesdursquipermetdutiliserunespacedestockagerpartisurplusieursdisquesphysiquesavec
pourobjectifdaugmenterlesperformances,latolranceauxpannes,oulesdeux.Sicettetechnologieestnormalement
greparlematrieldansdesbaiesdedisquesoudesSAN,ilestnanmoinspossibledesenremettreLinuxpoursa
ralisation.Danscettehypothse,lenoyauLinuxaurasadispositionplusieursdisquesdurs,etorganiseralesblocs
dedonnessurcesdisquespourprsenterdespartitionslogiquesquirecevrontlesfilesystem.
Nous ne parlons ici que des RAID grs logiciellement par le noyau Linux. Dans le cas dun serveur en
production, il est probable que le RAID sera gr par un contrleur matriel. Dans cette hypothse, le
contrleurprsenteraausystmedesunitslogiques(LUN)quiserontvuescommedespartitionsordinaires,etle
systmesemoquerabienalorsdesavoirsilecontrleurfaitduRAIDounon.

1.LesprincipauxniveauxdeRAID
a.LeRAID0
LeRAID0apourobjectifexclusiflarapiditdaccsauxdonnes,etnegrepaslatolrancedepanne.Ilesttrs
important de savoir quen RAID 0, la dfaillance du moindre des lments entraine la perte totale des volumes
exploits.LeprincipeduRAID0estderpartirlesinformationscrireenblocs,etdcrirelesblocsenmmetemps
surlesdisquesphysiquesquicomposentlevolumeRAID.
LespaceexploitablesurunvolumeenRAID0estgallasommedesespacesdisquesutiliss.

b.LeRAID1
Le RAID 1, contrairement au RAID 0 ne cherche absolument pas amliorer les performances, mais uniquement
scuriserlesdonnes.DansleRAID1,chaqueblocdedonnesestdupliquetcritenautantdexemplairesquilya
dedisquesdanslevolumeRAID.Ainsi,siundisquevientdfaillir,lesdonnesrestentdisponibles.
LespaceexploitablesurunvolumeenRAID1estgallespacedisponiblesurundisque.

c.LeRAID5
LeRAID5cumulelesavantagesduRAID0etduRAID1.Ondoitdisposerdaumoinstroisdisquespourleconfigurer.
LorsduneoprationdcrituresurunvolumeRAID5,desblocsdedonnessontcritssurchacundesdisquesqui
composentlevolume,lexceptiondunblocdeparitsurundisquequisedduitpartirdesblocsdedonnespar
un"ouexclusif".Encasdedfaillancedundisque,lesblocsdedonnesmanquantsserontrecalculsenralisantun
"ouexclusif"detouslesblocsrestants,donnesetparit.
LespaceexploitablesurunvolumeenRAID5estgallasommedesespacesdisquesutilissmoinsunetmoinsun
ventueldisquedesecours(spare).

2.ConfigurationduRAID
a.CrationduvolumeRAID
Les volumes RAID se configurent assez facilement avec la commande mdadm. Il faudra disposer de plusieurs
espacesdestockages,disquesdursentiersoupartitions,dterminerleniveaudeRAIDsouhait,etchoisirlenom
ounumroduvolumecrer.
La commande mdadm trouve sa configuration, notamment lordre de scanner toutes les partitions trouves
dans /proc/partitions dans son fichier de configuration /etc/mdadm/mdadm.conf. Il nest gnralement pas
ncessairedemodifierlaconfigurationpardfaut.
SyntaxedelacommandemdadmpourlacrationouladsactivationdevolumeRAID
mdadm action volume -l niveau -n nombre_disques stockages

ENI Editions - All rights reserved - Samuel CASAL

- 1-

Crationdevolumeavecmdadm:optionsetparamtres
action

C:creunvolumeRAID.
S:dsactiveunvolumeetlibrelesressources.

volume

Lefichierdebloccrerpourreprsenterlenouveauvolume.Souvent/dev/mdx,
maispeuttreunnomquelconque.

niveau

ValeurduniveaudeRAID,gnralement0,1ou5.

nombre_disques

Nombredespacesdestockageemployer,suividesfichiersdeblocsreprsentant
cesespaces.

stockages

Lespriphriquesdestockagessparspardesespacesetdsignsparleurfichier
spcialbloc.

Exempledecrationdevolumeraid1surDebian
Onexploitedeuxdisquesdurs/dev/sdbet/dev/sdcpourcrerunvolumeRAID1
root@serveur# mdadm -C /dev/md0 -l 1 -n 2 /dev/sdb /dev/sdc
mdadm: array /dev/md0 started
root@serveur#

b.VrificationdunvolumeRAID
CestencorelacommandemdadmquivanouspermettredeconnatrelanaturedunvolumeRAIDinconnu.
VrificationdevolumeRAID
mdadm -D volume
OvolumeestlefichierspcialdepriphriqueenmodeblocquireprsentelevolumeRAID.
ExempledevrificationdunvolumeRAID
Il est important de connatre et dutiliser les commandes de diagnostic pour une bonne gestion et documentation du
stockage.
# mdadm -D /dev/md0
A:~# mdadm -D /dev/md0
/dev/md0:
Version : 00.90
Creation Time : Wed Jan 13 22:52:26 2010
Raid Level : raid5
Array Size : 4194176 (4.00 GiB 4.29 GB)
Used Dev Size : 2097088 (2048.28 MiB 2147.42 MB)
Raid Devices : 3
Total Devices : 3
Preferred Minor : 0
Persistence : Superblock is persistent
Update Time
State
Active Devices
Working Devices
Failed Devices
Spare Devices

:
:
:
:
:
:

Wed Jan 13 22:54:49 2010


clean, degraded, recovering
2
3
0
1

Layout : left-symmetric
Chunk Size : 64K

- 2-

ENI Editions - All rights reserved - Samuel CASAL

Rebuild Status : 90% complete


UUID : a20a3883:3badc821:e24ccd6d:eee2883d (local to host A)
Events : 0.4
Number
0
1
3

Major
8
8
8

Minor
0
16
32

RaidDevice
0
1
2

State
active sync
/dev/sda
active sync
/dev/sdb
spare rebuilding
/dev/sdc

Lefichier/proc/mdstatdonneaussidesinformationssurltatdesdisquesRAIDsurunsystmeLinux.
Exempledefichier/proc/mdstat
LefichiermdstatfournitunaffichagesynthtiquedesvolumesRAIDetdesdisqueslecomposant.
Personalities : [raid0]
md0 : active raid0 sdb[1] sda[0]
4194176 blocks 64k chunks
unused devices: <none>

c.ExploitationdesvolumesRAID
Unefoislesvolumescrsparlacommandemdadm,ilssontdsignsparleurfichierdeblocspcialetsupporteront
lacrationdunfilesystemainsiquelemontage,quilsoitmanuelouappeldepuislefichier/etc/fstab.

ENI Editions - All rights reserved - Samuel CASAL

- 3-

LogicalVolumeManager
Le systme de partitionnement traditionnel des disques impose certaines limitations comme un nombre de partitions
limitquatre,etlecaractreobligatoirementcontigudelespacepartitionn.Sidenombreuxutilitairespermettentde
redimensionnerlespartitionslavole,ilresteimpossibledtendreunepartitionavecdelespacenoncontigu,par
exemple sur un autre disque dur. Pour pallier ces limitations, la plupart des diteurs de systmes dexploitation ont
proposdesgestionsdespacesdisqueplusoumoinspropritaires,commelesdisquesdynamiquespourWindowsou
les volumes NSS chez Novell. Pour les systmes Linux, la solution sappelle Logical Volume Manager (gestionnaire de
volumeslogiques).Lesvolumeslogiquespermettentdecrerunnombreillimitdevolumes,delestendrevolont,y
comprispartirdespacesetrouvantsurdesdisquesetdescontrleursdiffrents.
Il est dusage de conserver les termes anglais lorsquon parle dlments LVM, cela aidera notamment se souvenir
facilementdescommandesdexploitation.Certainslments,commelesLogicalVolumesquisupportentunetraduction
facileetnaturelleinfirmentnanmoinscetusage.

1.Architecturedesvolumeslogiques

UnearchitectureLVMsecomposedePV :PhysicalVolumes,VG :VolumeGroupsetdeLV :LogicalVolumes.


Un volume logique est lquivalent fonctionnel dune partition traditionnelle, il est identifi par un fichier spcial en
modebloc,etsupporteragnralementunfilesystemenvuedunmontage.
Les Logical Volumes sont composs de blocs de donnes, puiss dans une couche dabstraction appele Volume
Group,ellemmealimentepardesespacesdestockagebruts(disquesoupartitions)appelsPhysicalVolumes.
DansunearchitectureLVMbasesurplusieursvolumesphysiques,ladfaillancedumoindredentreeuxrend
tous les volumes logiques qui en dpendent inoprants. Il conviendra donc de ne crer des volumes
physiquesquedepuisdesvolumestolrancedepannecommedeslmentssoumisRAID,quilsoitlogicielou
matriel.

2.CommandesLVM
LescommandesdegestiondesLVMsontconstruitesselonunprfixelilobjetquonveutgrer,etunsuffixeselon
lactionentreprendre.
ConstructiondescommandesLVM
ENI Editions - All rights reserved - Samuel CASAL

- 1-

prfixe

suffixe

pv

create

CrationdunlmentLVM.

vg

extend

ExtensiondunVGoudunLV.

lv

reduce

RductiondunVGoudunLV.

display

AffichagedesinformationsdunlmentLVM.

a.Crationdeslments
OncommenceraparcrerlesPV(physicalvolumes)partirdespacesdestockage.Ilpeutsagirdedisquesentiers,
oudepartitionstraditionnelles,dontletypeauratmodifi8e.IlestnoterquelaconstructiondePVpartirde
partitionstraditionnellesestgnralementrservedesbesoinsdetest,etquunusageenproductionpourdes
volumesdedonnessappuiepresquetoujourssurdesdisquesentiers.
Crationdesvolumesphysiques
Lesvolumesphysiquessontcrsaveclacommandepvcreate.
Syntaxedelacommandepvcreate
pvcreate device
Odevice reprsentelefichierspcialblocsquihbergelevolumephysique,disqueoupartition.
Crationdugroupedevolumes
Lesgroupesdevolumessontcrsaveclacommandevgcreate.
Syntaxedelacommandepvcreate
vgcreate nom_vg pv_device

vgcreate:optionsetparamtres
nom_vg

Nomdugroupedevolume.Valeurauchoix.

pv_device

Fichierspcialblocsquihbergeleoulespvquialimententlevg.

Legroupedevolumeainsicrapparatrasousformederpertoiredunomdugroupedevolumecr,directement
sous/dev.Attention,cerpertoirenapparatrarellementquelorsquunpremiervolumelogiqueseracrpartir
dugroupedevolume.
Crationduvolumelogique
Les volumes logiques sont crs avec la commande lvcreate. On peut crer autant de volumes logiques que lon
veuttantquilrestedelespacedisponibledansleVolumeGroup.
Syntaxedelacommandelvcreate
lvcreate -L taille -n nom_lv nom_vg

lvcreate:optionsetparamtres

- 2-

taille

Tailleduvolumelogique,sousformedevaleurnumriquedirectementsuiviede
lunit.

nom_lv

Nomduvolumelogique.Valeurauchoix.

ENI Editions - All rights reserved - Samuel CASAL

nom_vg

Nomdugroupedevolumepartirduquellevolumelogiqueseracr.

Levolumelogiqueainsicrapparatrasousformedefichierspcialenmodeblocsdanslerpertoireportantlenom
desongroupedevolumessous/dev.Cestcefichierspcialquiseraemploylorsdesoprationsdemontage.

b.DiagnosticsLVM
LesarchitecturesLVMsontsouventdroutantes,dufaitdugrandnombredoprationsncessairespourarriverla
cration dun volume logique. De plus, si on se figure assez bien ce que peut tre un volume physique, la nature
abstraitedugroupedevolumelerenddifficileapprhender.Pourcesraisons,ilestessentieldesefaireuneide
prcisedelensembledeslmentsutilissdansunearchitectureLVMetdelesdocumenterconsciencieusement.Par
chance, les outils de diagnostics LVM sont prcis, et ils permettent chaque tape de vrifier le bon droulement
desoprations.
Affichagedesinformationsdevolumephysique
Les informations dtailles de tous les volumes physiques prsents sur un systme seront affiches par la
commandepvdisplay.Sivousprfrezlaconcision,vouspouvezessayerpvs.
Exempledutilisationdelacommandepvdisplay
Ilestimportantdidentifierlesvolumesphysiquesaveclacommandepvdisplay.Lutilitairefdiskindiqueraitundisquesans
tabledespartitionsetlaisseraitpenserquonestenprsencedundisquevierge.
A:~# pvdisplay
"/dev/sdb" is a new physical volume of "2,00 GB"
--- NEW Physical volume --PV Name
/dev/sdb
VG Name
PV Size
2,00 GB
Allocatable
NO
PE Size (KByte)
0
Total PE
0
Free PE
0
Allocated PE
0
PV UUID
UHSnwO-EKMh-QbDn-1qj0-f7Az-KKkx-3XcyZz
A:~#
Exempledutilisationdelacommandepvs
Lessentielendeuxlignes.
A:~# pvs
PV
/dev/sdb
A:~#

VG

Fmt Attr PSize PFree


lvm2 -2,00G 2,00G

Affichagedesinformationsdegroupesdevolumes
Lesinformationsdtaillesdetouslesgroupesdevolumesprsentssurunsystmesontaffichesparlacommande
vgdisplay.Sivousprfrezlaconcision,vouspouvezessayervgs.
Exempledutilisationdelacommandevgdisplay
Laffichagedesdtailsdesgroupesdevolumepermetdeconnatrelatailletotaledisponibledesgroupes.
A:~# vgdisplay
--- Volume group --VG Name
System ID
Format
Metadata Areas
Metadata Sequence No
VG Access

vg1
lvm2
1
1
read/write

ENI Editions - All rights reserved - Samuel CASAL

- 3-

VG Status
MAX LV
Cur LV
Open LV
Max PV
Cur PV
Act PV
VG Size
PE Size
Total PE
Alloc PE / Size
Free PE / Size
VG UUID
A:~#

resizable
0
0
0
0
1
1
2,00 GB
4,00 MB
511
0 / 0
511 / 2,00 GB
D6QwUK-Lltf-uGg5-vH8r-ZmaK-dU0L-Lyyu3T

Exempledutilisationdelacommandevgs
A:~# vgs
VG
#PV #LV #SN Attr
VSize VFree
vg1
1
0
0 wz--n- 2,00G 2,00G
A:~#
Affichagedesinformationsdevolumeslogiques
Lesinformationsdtaillesdetouslesvolumeslogiquesprsentssurunsystmeserontaffichesparlacommande
lvdisplay.Pourlaconcision,essayezlvs.
Exempledutilisationdelacommandelvdisplay
A:~# lvdisplay
--- Logical volume --LV Name
/dev/vg1/data1
VG Name
vg1
LV UUID
Ll7105-aLpz-axKC-Hcuq-pPSq-QZaK-8h5PLC
LV Write Access
read/write
LV Status
available
# open
0
LV Size
400,00 MB
Current LE
100
Segments
1
Allocation
inherit
Read ahead sectors
auto
- currently set to
256
Block device
253:0
A:~#
Exempledutilisationdelacommandelvs
A:~# lvs
LV
VG
data1 vg1
A:~#

Attr
LSize
Origin Snap%
-wi-a- 400,00M

Move Log Copy%

Convert

c.Extensiondevolumelogique
Undesprincipauxavantagesdesvolumeslogiquesestlextensionfaciledesvolumeslogiques.Nousavonsvuquun
volume logique est constitu de Logical Extents fournis par un objet Volume Group. Si des Logical Extents sont
encore disponibles dans le Volume Group, il est alors facile dtendre le Logical Volume partir de ces Logical
Extents.Enclair,silrestedelespacenonaffectdanslegroupedevolume,onpeutlajouterunvolumelogique
djcr.Danslecascontraire,ilfaudradabordtendreleVolumeGroupenyajoutantunouplusieursPhysical
Volumes.
ExtensiondunVolumeGroup
Lextension dun Volume Group se fait partir de Physical Volume(s) avec la commande pvextend. Les Physical
- 4-

ENI Editions - All rights reserved - Samuel CASAL

Volumessontalorscrscommeprcdemmentaveclacommandepvcreate.
Syntaxedelacommandevgextend
vgextend nom_vg pv_device

vgcreate:optionsetparamtres
nom_vg

Nomdugroupedevolumetendre.

pv_device

FichierspcialblocsquihbergeleoulesPVquialimententleVG.

ExtensiondunLogicalVolume
LextensiondunLogicalVolumesefaitaveclacommandelvextend.
Syntaxedelacommandelvextend
lvextend -L taille lv

lvcreate:optionsetparamtres
taille

Tailleduvolumelogiquetendu,sousformedevaleurnumriquedirectementsuivie
delunit.Silatailleestprcdedunsigne+,cettetaillesajoutecelleduvolume
existant.

lv

Volumelogiquetendre,dsignparsonfichierspcialenmodeblocs.

UnLogicalVolumenestquunespacedestockage,indpendammentdufilesystemquiyestappos.Encas
dextensionduLogicalVolume,ilfaudraprvoirdtendreaussilefilesytempourpouvoirexploiterlespace
supplmentaire.

d.RductiondeLV
LarductiondeslmentsLVMestpossible,mmesicegenredeman uvreesttoujoursdlicateetdoittrebien
maitrise.
RductiondunLogicalVolume
Larductiondunvolumelogiquesefaitaveclacommandelvreduce.LesLogicalExtentsontretirsdslexcution
delacommandeettouteslesdonnessytrouvantsontperdues.Touteslesprcautionsdevrontdonctreprises
pourviterdespertesdedonnes.
RductiondunLV
lvreduce -L taille lv

lvreduce:optionsetparamtres
taille

Tailleretirerduvolumelogiquetendu,sousformedevaleurnumrique
directementsuiviedelunit.

lv

Volumelogiquerduire,dsignparsonfichierspcialenmodeblocs.

RductiondunVolumeGroup
UnVolumeGrouppeuttrerduitparlacommandevgreduce.
RductiondunVG

ENI Editions - All rights reserved - Samuel CASAL

- 5-

vgreduce vg pv

vgreduce :optionsetparamtres
vg

Legroupedevolumerduire.

pv

Le(oules)volumesphysiquesretirerdugroupedevolumes.

3.Exploitationdesvolumeslogiques
a.Donnessurlesvolumeslogiques
UnefoislesLogicalVolumescrs,ilfautpourlesexploiteryapposerunfilesystem.Ilfautbiencomprendrequedun
point de vue fonctionnel, les volumes logiques sont le strict quivalent des partitions traditionnelles directement
cres avec fdisk, et de type Linux. La dmarche sera donc strictement identique celle employe en
partitionnementtraditionnel,sicenestquelefichierspcialenmodeblocseraceluiduLogicalVolume.
Exempledecrationdunfilesystemext3surunLV
Les volumes logiques supportent la cration de filesystem comme les partitions traditionnelles. Notez le fichier de bloc
spcialsouslequellevolumelogiqueestreconnu.
A:~# mke2fs -j /dev/vg1/lv99
mke2fs 1.41.3 (12-Oct-2008)
tiquette de systme de fichiers=
Type de systme dexploitation : Linux
Taille de bloc=1024 (log=0)
Taille de fragment=1024 (log=0)
25688 i-noeuds, 102400 blocs
5120 blocs (5.00%) rservs pour le super utilisateur
Premier bloc de donnes=1
Nombre maximum de blocs du systme de fichiers=67371008
13 groupes de blocs
8192 blocs par groupe, 8192 fragments par groupe
1976 i-noeuds par groupe
Superblocs de secours stocks sur les blocs :
8193, 24577, 40961, 57345, 73729
criture
Cration
criture
fichiers

des tables di-noeuds : complt


du journal (4096 blocs) : complt
des superblocs et de linformation de comptabilit du systme de
: complt

Le systme de fichiers sera automatiquement vrifi tous les 31 montages ou


aprs 180 jours, selon la premire ventualit. Utiliser tune2fs -c ou -i
pour craser la valeur.
A:~#
Demme,ilserancessairepourexploitercefilesystemdemonterlevolumelogique,quecesoitdefaonmanuelle
ouparlebiaisdufichier/etc/fstab.
Exempledemontagedevolumelogique
A:/mnt# mount /dev/vg1/lv99 /mnt/data99
A:/mnt#

b.ExploitationdusnapshotLVMpourlessauvegardes
LanaturesoupleetvolutivedesLVMlesrendparfaitementaptesstockerdegrandsvolumesdedonnes.Or,un
problmercurentseposelorsdelasauvegardedecesgrosvolumesdedonnes.Eneffet,letempsncessairela
sauvegardeinterditsouventderaliserlesoprationshorsligne.Lasolutionestapporteparlafonctionnalitde

- 6-

ENI Editions - All rights reserved - Samuel CASAL

snapshot(instantan)disponiblesurlesarchitecturesLVM.
Onraliselesnapshotduvolumelogiquesauvegarderalorsquilestmontetenexploitation,etoneffectuela
sauvegardesurlesnapshotquiestunecopieconformeduvolumelogiqueaumomentprcisoilatralis.Il
fautbiencomprendrequunsnapshotnestpasunoutildesauvegardeentantquetel,maisunmoyenauservice
dunestratgiedesauvegarde.
Ralisationdusnapshot
Lesnapshotsefaitaveclacommandelvcreate.Unsnapshotestdoncunvolumelogiquepartentire,etilpourra
tremontetexploitencasdebesoin.
Il faudra dterminer la taille du snapshot lors de sa cration. Le volume logique de snapshot ne stocke
physiquement que les diffrences entre le volume en production (celui qui a t snapshot) et le volume de
snapshot.Sil nyapasdcrituresralisessurlevolumeenproduction,laconsommationenespacedestockage
pour le snapshot sera quasi nulle. Si toutes les donnes sont modifies sur le volume en production, le snapshot
exploiteraphysiquementunespacedisquedelordredeceluiconsommparlevolumededonnesaumomentdu
snapshot.Lespaceexploitparlesnapshotpourratresurveillaveclacommandelvdisplay.
Syntaxedelacommandelvcreatepourlacrationdesnapshot
lvcreate -L taille -s -n nom_snapshot lv_origine

lvcreatepoursnapshot:optionsetparamtres
Ltaille

Tailledusnapshotcrer.

Optionquiindiquequoncreunsnapshotdevolumelogique,etnonunvolume
logiqueordinaire.

nnom_snapshot

Lenomduvolumedesnapshot.Ilestrecommanddavoiruneconventionde
dnominationexplicite.

lv_origine

Lenomduvolumelogiqueenproductionpartirduquellesnapshotseraralis.

Exempledecrationdesnapshot
Lesnapshotestunvolumelogiquepresquecommelesautres.
A:/mnt# lvcreate -L 1G -s -n clicclac /dev/vg1/data1
Logical volume "clicclac" created
A:/mnt#
Exempledevisualisationdelespacedisquerellementoccupparunsnapshot
Danslexemplecidessous,lesdonnesnontpastmodifiessurlevolumedorigineentrelelvcreatesetlelvdisplay.
Onobservedonclavaleur"Allocatedtosnapshot"0%.
A:/mnt# lvdisplay /dev/vg1/clicclac
--- Logical volume --LV Name
/dev/vg1/clicclac
VG Name
vg1
LV UUID
xyakf0-2zMf-B3qG-S9gT-KTqw-ZJI3-W06GWi
LV Write Access
read/write
LV snapshot status
active destination for /dev/vg1/data1
LV Status
available
# open
0
LV Size
1,49 GB
Current LE
381
COW-table size
1,00 GB
COW-table LE
256
Allocated to snapshot 0,00%
Snapshot chunk size
4,00 KB
Segments
1
Allocation
inherit
Read ahead sectors
auto

ENI Editions - All rights reserved - Samuel CASAL

- 7-

- currently set to
Block device
A:/mnt#

256
253:1

Danscedeuximeexemple,desdonnesonttajoutessurlevolumedorigine,obligeantlesystmeconserverdeux
versions : les donnes snapshotes, disponibles pour la sauvegarde, et les donnes nouvelles crites sur le disque et
affectesauvolumeenproduction.Lavaleur"Allocatedtosnapshot"estdsormais1,45 %.
A:/mnt/data1# lvdisplay /dev/vg1/clicclac
--- Logical volume --LV Name
/dev/vg1/clicclac
VG Name
vg1
LV UUID
xyakf0-2zMf-B3qG-S9gT-KTqw-ZJI3-W06GWi
LV Write Access
read/write
LV snapshot status
active destination for /dev/vg1/data1
LV Status
available
# open
0
LV Size
1,49 GB
Current LE
381
COW-table size
1,00 GB
COW-table LE
256
Allocated to snapshot 1,45%
Snapshot chunk size
4,00 KB
Segments
1
Allocation
inherit
Read ahead sectors
auto
- currently set to
256
Block device
253:1
A:/mnt/data1#
Sauvegardedesdonnessnapshotes
DupointdevuedesLVM,ilnyaplusrienfaire.Lesdonnessontdisponibles,figesdansletempsaumomento
lesnapshotatralis,etellessontsauvegardablesparnimportequelmoyenusuel.
Exempledesauvegardedesdonnessnapshotes
Danscetexemple,onmontelevolumelogiquedesnapshotdansunrpertoire/mnt/clicclac,etonraliseunearchivetar
compressedesdonnesquelenstockesurunpriphriqueUSB.
A:/mnt# mkdir clicclac
A:/mnt# mount /dev/vg1/clicclac clicclac
A:/mnt# ls clicclac
bigfile.tar etc growingfile lost+found midfile.tar usr
A:/mnt# tar czf /media/usb/svg_snap.tgz /mnt/clicclac
tar: Suppression de / au dbut des noms des membres
A:/mnt#

- 8-

ENI Editions - All rights reserved - Samuel CASAL

Validationdesacquis:questions/rponses
Testezvosconnaissancesenrpondantauxquestionssuivantes.Cesquestionsnappellentpastoujoursdesrponses
dfinitives. Les questions poses en certification, bien quabordant les mmes sujets, seront pour la plupart poses
sous forme de questionnaire choix multiples, ou bien demanderont une rponse courte, tape en toutes lettres au
clavier.

1.Questions
1 Pourquoiestilncessairedecrerunfilesystempourexploiterunespacedestockagesurdisque?
2 Combiendespacedisquelesfilesystemsvirtuelsoupseudofilesystemspeuventilsoccuper?
3 LesUUIDserventidentifierformellementunsystmedefichiers.Quigarantitleurunicit?
4 Commentestoptimiselcriturededonnessurunsystmedisquelent?
5 Pourquoiestildifficiledevrifierlacohrencedufilesystemracinemontsur/?
6 Enquoilacommandelsdevestelledpendantedepseudofilesystems?
7 Pourquoilesoptionsdecompressiondelacommandetardevraientellestrerservesauxsauvegardessur
disque?
8 Lacopieduncdromparlacommandeddpourlaralisationduneimageisoncessitetellequelecdromsoit
mont?
9 CombiendedisquesdurssontncessairespourraliserunRAID5?
10 QuelleestladiffrenceentreunepartitionetunvolumelogiqueLVM?

2.Rponses
1 Pourquoiestilncessairedecrerunfilesystempourexploiterunespacedestockagesurdisque?
Parcequecestlefilesystemquipermetdorganiserlespacedestockage.Sanslui,unepartitionouunvolumelogique
nestquune suite doctetssansaucunsens.Lefilesystemgrelesnomsdefichiersetlemplacementphysiquedes
espaces de stockage. Une bande magntique est un exemple despace de stockage sans filesystem : les donnes y
sontforcmentcontigus,etilnestpaspossibledemodifierunfichier.Ilfautleffaceretlercrire.
2 Combiendespacedisquelesfilesystemsvirtuelsoupseudofilesystemspeuventilsoccuper?
Aucun.Commeleurnomlindique,lesfilesystemsvirtuelsnontpasdexistencephysique.Ilsdemeurentenmmoire,
etsontmontssurunrpertoiredusystmedefichiersrel.
3 LesUUIDserventidentifierformellementunsystmedefichiers.Quigarantitleurunicit?
Le hasard. LUUID est, sur des systmes de plus en plus nombreux, la faon naturelle de dsigner un systme de
fichiers. Mme si les UUID peuvent tre affects ou modifis linitiative de ladministrateur, ils sont en gnral
renseignsautomatiquementlacrationdesystmesdefichiersetlehasardsur128bitsestleseulgarantdeleur
unicit.
4 Commentestoptimiselcriturededonnessurunsystmedisquelent?
Parunecritureasynchrone:lesdonnescritessurledisquesontdabordenregistresenmmoire,puisplustard
crites physiquement sur le disque. Ce mode de fonctionnement, utilis par dfaut dans le cadre dun montage
ordinairenevapassansrisque.Lesdonnessontconsidrescommeenregistresdefaonsreparlesapplications,
etdoncparlutilisateur.Encasdepannedecourant,lesdonneseninstancedcriturecontenuesenmmoiresont
perdues.
5 Pourquoiestildifficiledevrifierlacohrencedufilesystemracinemontsur/?
Parce que les commandes de vrification sexcutent sur des filesystems dmonts. Le filesystem racine contient
nombre dexcutables en cours de fonctionnement sur un systme actif, et souvent les commandes de vrification
ellesmmes. Il est donc impossible de le dmonter puisque les programmes en cours dexcution interdisent cette
opration.Lasolutionestdoncdeforcerlavrificationauredmarrage,avantquelefilesystemnesoitmont.Soiten
modifiant les compteurs de vrification priodique avec la commande e2fsck, soit en forant la vrification depuis la
commandeshutdownavecloptionF.
6 Enquoilacommandelsdevestelledpendantedepseudofilesystems?
Parcequelacommandelsdevcommebeaucoupdautrestrouvelesinformationsdontelleabesoindansdesfichiersde
pseudofilesystems(/proc/interrupts,/proc/ioports,et/proc/dma).Ceciillustrequelpointlespseudofilesystemssont
richeseninformationsutiles.
7 Pourquoilesoptionsdecompressiondelacommandetardevraientellestrerservesauxsauvegardessur
ENI Editions - All rights reserved - Samuel CASAL

- 1-

disque?
Parce que la compression des donnes les rend plus difficiles exploiter en cas de perte partielle. Or, les bandes
magntiqueshistoriquementutilisesaveclacommandetarprsentaientsouventdeszonesfaiblementmagntises
quilesexposaientdespertespartielles.Danscescirconstances,labsencedecompressionlimitaitlaperteauxseuls
fichierstouchsparlazonefaible.
8 Lacopieduncdromparlacommandeddpourlaralisationduneimageisoncessitetellequelecdromsoit
mont?
Non. Le filesystem doit tre mont sil faut copier des fichiers dtermins. Or, la commande dd copie des blocs de
donnessanscomprendreleurcontenu.Ellemanipuledirectementlematrieletnondesfichiers.Enconsquence,il
nestpasncessairequelecdromsoitmontpourenraliseruneimage.
9 CombiendedisquesdurssontncessairespourraliserunRAID5?
Aumoinstrois.Deuxpourlesdonnesetuntroisimepourlaparit.Siundisquederechange(spare)estinclusdans
la configuration, ce nombre passe quatre : deux disques de donnes, un disque de parit, et un disque prt
remplacerunautredisquedfaillant.
10 QuelleestladiffrenceentreunepartitionetunvolumelogiqueLVM?
Celadpend.Dunpointdevuefonctionnelaucun:lesdeuxseverrontaffecterunfilesystemetserontmontssurun
rpertoire. Toutefois, seul le volume logique pourra tre agrandi en cas de besoin (par la commande lvextend). Cet
agrandissement ne modifiera nanmoins pas le filesystem qui devra tre rorganis par une commande de
redimensionnementdefilesystem(resize2fs).

- 2-

ENI Editions - All rights reserved - Samuel CASAL

Travauxpratiques
1.Exploitationdunespacedeswapsurfichier
Onprvoitlinstallationsurlamachinealphaduneapplicationdegestiondedocumentationextrmementgourmande
en mmoire vive. Le budget permettant lachat de mmoire supplmentaire pour le fonctionnement confortable de
cette application ne sera pas dbloqu avant quelques mois. On vous demande en consquence de faire en sorte
queleserveurpuissesupporterlachargesansplantage,mmesilesperformancesdoiventsentrouverdgrades.
Vousdcidezdoncdecrerunespacedeswapsupplmentaire.

a.Crationdunfichierdeswap
Commandesutiles

cat

chmod

dd

file

mkswap

swapon

Manipulations
1.

Affichezleswapexploit.

2.

Crezlaracinedusystmeunfichierde512 Moaveclacommandedd(sivotre
systmehtemanquededisque,choisissezunevaleurplusfaible).

3.

Empchezlesregardsindiscretsdeconsulterlecontenudecefichier.

4.

Structurezlefichierpourquilsoitexploitableenespacedeswapparlenoyau.

5.

Vrifiezaveclacommandefilequeloprationsestbienpasse.

Rsumdescommandesetrsultatlcran
Affichageduswapcourant :
alpha:~# cat /proc/swaps
Filename
/dev/hda5
alpha:~# swapon -s
Filename
/dev/hda5
alpha:~#

Type

Size

Used

Priority
partition 369452 0 -1

Type

Size

Used

Priority
partition 369452 0 -1

Crationdunfichierde512Molaracine :
alpha:~# dd if=/dev/zero
524288+0 enregistrements
524288+0 enregistrements
536970912 bytes (537 MB)
alpha:~#
alpha:~# file /swap
/swap: data

of=/swap bs=1024 count=524288


lus
crits
copied, 8,31308 s, 63,1 MB/s

ENI Editions - All rights reserved - Samuel CASAL

- 1-

alpha:~# ls -lh /swap


-rw-r--r-- 1 root root 512M ao 31 22:26 /swap
alpha:~#
Gestiondesdroitssurlefichier :
alpha:~# chmod 600 /swap
alpha:~# ls -lh /swap
-rw------- 1 root root 512M ao 31 22:26 /swap
alpha:~#
Structurationdufichier :
alpha:~# mkswap /swap
Setting up swapspace version 1, size = 536866 kB
no label, UUID=61bbc852-9a4c-4911-9c79-323beddc6389
alpha:~#
Vrification :
alpha:~# file /swap
/swap: Linux/i386 swap file (new style), version 1 (4K pages),
size 131071 pages, no label, UUID=61bbc852-9a4c-4911-9c79-323beddc6389
alpha:~#

b.Activationdelespacedeswap
Commandesutiles

cat

swapon

Manipulations
1.

Faitessavoiraunoyauquildoitexploitercenouvelespacedeswap.

2.

Vrifiezquelenoyauabienprisencomptelenouvelespace.

Rsumdescommandesetrsultatlcran
Activationdelespacedeswap :
alpha:~# swapon /swap
alpha:~#
Vrificationpardeuxcommandesdiffrentes :
alpha:~# swapon -s
Filename
/dev/hda5
/swap
alpha:~# cat /proc/swaps
Filename
/dev/hda5
/swap
alpha:~#

Type

Size Used Priority


partition 369452 588 -1
file 524280 0 -2

Type

Size Used Priority


partition 369452 588 -1
file 524280 0 -2

c.Rfrencementdansfstab
Commandesutiles

- 2-

ENI Editions - All rights reserved - Samuel CASAL

cat

reboot

shutdown

swapon

vi

Manipulations
1.

Ajoutezdanslefichierfstabunelignerfrenantlenouvelespacedeswap.

2.

Redmarrezlesystme.

3.

Vrifiezlapriseencomptedunouvelespace.

Rsumdescommandesetrsultatlcran
Fichier/etc/fstabmodifi:
# /etc/fstab: static file system information.
#
# <file system> <mount point>
<type> <options>
proc
/proc
proc
defaults
/dev/hda1
/
ext3
errors=remount-ro
/dev/hda5
none
swap
sw
/dev/hdc
/media/cdrom0
udf,iso9660 user,noauto
/dev/fd0
/media/floppy0
auto
rw,user,noauto

<dump>
0
0
0
1
0
0
0
0
0
0

<pass>

# Ajout du nouvel espace de swap


/swap

none

swap

sw

Vrificationaprsredmarrage :
alpha:~# cat /proc/swaps
Filename
/dev/hda5
/swap
alpha:~#

Type

Size
Used
Priority
partition 369452 0
-1
file
524280 0
-2

2.ConfigurationdundisqueenRAID0
Noncontentedutiliserbeaucoupdemmoire,lapplicationprvuencessiteunespacedestockageperformantsans
obligationdefiabilit.VousenvisagezalorsdecrerunvolumelogiqueenRAID0.
Ajoutez deux disques durs virtuels SATA de 2 Go la machine alpha selon la procdure vue en introduction. Ces
disquesdevraienttrevusparlesystmeentantque/dev/sdaet/dev/sdb.

a.InstallationdelagestionRAID
Surleserveuralpha,installezlesoutilsdegestionRAIDentapantlacommandesuivante :
apt-get install mdadm
Silassistantvousproposedesoptionsdepersonnalisation,accepteztousleschoixpardfaut.

b.Inventairedesdisquesinstalls

ENI Editions - All rights reserved - Samuel CASAL

- 3-

Commandesutiles

dmesg

ls

Manipulations
1.

Danslerpertoire/dev,listeztousleslmentscommenantparhdousd.

2.

Consultezleringbufferdunoyaupourvrifierquelesdisquesontbient
reconnusaudmarragedunoyau.

3.

Identifiezledisquesystme(celuiquidoittrepartitionn)etlesdeuxdisquesajouts.

4.

Constatezlaprsencedanslerpertoire/devdedeuxfichiersspciauxenmodebloc
sdaetsdb.

Rsumdescommandesetrsultatlcran
Affichagedesfichiersspciauxde/devcommanantparhdousd:
alpha:~# cd /dev
alpha:/dev# ls [hs]d*
hda hda1 hda2 hda5
alpha:/dev#

hdc

sda

sdb

c.CrationdudisqueRAID
Commandesutiles

cat

ls

mdadm

Manipulations
1.

CrezundisqueRAID0souslenommd0.

2.

VrifiezlaprsencedudisqueRAIDcrpardeuxmoyensdiffrents.

Rsumdescommandesetrsultatlcran
CrationdudisqueRAID0 :
alpha:/dev# mdadm -C /dev/md0 -l 0 -n 2 /dev/sda /dev/sdb
mdadm: array /dev/md0 started.
alpha:/dev#
VrificationdelaprsencedudisqueRAID0partroismoyensdiffrents :
alpha:/dev# ls /dev/md0
/dev/md0
alpha:/dev# cat /proc/mdstat
Personalities : [raid0]
md0 : active raid0 sdb[1] sda[0]
4194176 blocks 64k chunks
unused devices: <none>
alpha:/dev# mdadm -D /dev/md0
/dev/md0:

- 4-

ENI Editions - All rights reserved - Samuel CASAL

Version
Creation Time
Raid Level
Array Size
Raid Devices
Total Devices
Preferred Minor
Persistence

:
:
:
:
:
:
:
:

00.90
Wed Sep 1 13:31:52 2010
raid0
4194176 (4.00 GiB 4.29 GB)
2
2
0
Superblock is persistent

Update Time
State
Active Devices
Working Devices
Failed Devices
Spare Devices

:
:
:
:
:
:

Wed Sep
clean
2
2
0
0

1 13:31:52 2010

Chunk Size : 64K


UUID : 678f9e3e:f92b3780:1b3376be:99c3df95 (local to host alpha)
Events : 0.1
Number
0
1
alpha:/dev#

Major
8
8

Minor
0
16

RaidDevice State
0
active sync
1
active sync

/dev/sda
/dev/sdb

3.CrationetexploitationdunvolumelogiquesurledisqueRAID0
Le disque en RAID 0 tant cr, vous souhaitez lexploiter comme support dun volume logique. Cette solution est
cellequioffriraleplusdesouplessequantauxvolutionsfuturesdustockage.

a.InstallationdesoutilsdegestiondesLVM
Surleserveuralpha,installezlesoutilsdegestionLVMentapantlacommandesuivante :
alpha:/dev# apt-get install lvm2
Lecture des listes de paquets... Fait
Construction de larbre des dpendances
Lecture des informations dtat... Fait
Les paquets supplmentaires suivants seront installs :
dmsetup
Les NOUVEAUX paquets suivants seront installs :
dmsetup lvm2
0 mis jour, 2 nouvellement installs, 0 enlever et 0 non mis jour.
Il est ncessaire de prendre 393ko dans les archives.
Aprs cette opration, 1073ko despace disque supplmentaires seront utiliss.
Souhaitez-vous continuer [O/n] ?
Rception de : 1 http://security.debian.org lenny/updates/main lvm2 2.02.39-8 [355kB]
(...)

b.Crationduvolumelogique
Commandesutiles

lvcreate

lvdisplay

pvcreate

pvdisplay

ENI Editions - All rights reserved - Samuel CASAL

- 5-

vgcreate

vgdisplay

Manipulations
1.

CrezunPVpartirdevotredisqueRAID0.

2.

Vrifiez.

3.

CrezunVGappelvolgrpalimentparvotrePV.

4.

Vrifiez.

5.

CrezunLVde1GoappeldocumentationpartirdevotreVG.

6.

Vrifiez

Rsumdescommandesetrsultatlcran
CrationduPhysicalVolumepartirdudisqueRAID0 :
alpha:/dev# pvcreate /dev/md0
Physical volume "/dev/md0" successfully created
alpha:/dev#
Vrification :
alpha:/dev# pvdisplay
"/dev/md0" is a new physical volume of "4,00 GB"
--- NEW Physical volume --PV Name
/dev/md0
VG Name
PV Size
4,00 GB
Allocatable
NO
PE Size (KByte)
0
Total PE
0
Free PE
0
Allocated PE
0
PV UUID
mBhGL1-i7oD-tc1k-7VX3-CQ1r-Q0AT-jAEgtj
alpha:/dev#
CrationduVolumeGroupalimentparvotrePhysicalVolume:
alpha:/dev# vgcreate volgrp /dev/md0
Volume group "volgrp" successfully created
alpha:/dev#
Vrification :
alpha:/dev# vgdisplay
--- Volume group --VG Name
System ID
Format
Metadata Areas
Metadata Sequence No
VG Access
VG Status
MAX LV
Cur LV
Open LV
Max PV
Cur PV
Act PV
VG Size

- 6-

volgrp
lvm2
1
1
read/write
resizable
0
0
0
0
1
1
4,00 GB

ENI Editions - All rights reserved - Samuel CASAL

PE Size
Total PE
Alloc PE / Size
Free PE / Size
VG UUID

4,00 MB
1023
0 / 0
1023 / 4,00 GB
Dw1Qm8-BHeq-jNXN-uXVK-eaMF-gzA1-B7QwX8

alpha:/dev#
CrationduLogicalVolumededocumentation :
alpha:/dev# lvcreate -n documentation -L 1G volgrp
Logical volume "documentation" created
alpha:/dev#
Vrification :
alpha:/dev# lvdisplay
--- Logical volume --LV Name
VG Name
LV UUID
LV Write Access
LV Status
# open
LV Size
Current LE
Segments
Allocation
Read ahead sectors
- currently set to
Block device

/dev/volgrp/documentation
volgrp
xIYS6m-mq88-13br-wbp7-sp5B-iN2b-wA1GEk
read/write
available
0
1,00 GB
256
1
inherit
auto
256
253:0

alpha:/dev#

c.Crationdefilesystem
Commandesutiles

mke2fs

tune2fs

Manipulations
1.

Crezunfilesystemdetypeext2survotrevolumelogique.

2.

Finalement,nonmodifiezlepluttenunfilesystemext3.

3.

Affectezluilelabeldocumentation.

4.

Vrifiez.

Rsumdescommandesetrsultatlcran
Crationdufilesystemext2 :
alpha:/dev# mke2fs /dev/volgrp/documentation
mke2fs 1.41.3 (12-Oct-2008)
tiquette de systme de fichiers=
Type de systme dexploitation : Linux
Taille de bloc=4096 (log=2)
Taille de fragment=4096 (log=2)
65536 i-noeuds, 262144 blocs
13107 blocs (5.00%) rservs pour le super utilisateur
Premier bloc de donnes=0

ENI Editions - All rights reserved - Samuel CASAL

- 7-

Nombre maximum de blocs du systme de fichiers=268435456


8 groupes de blocs
32768 blocs par groupe, 32768 fragments par groupe
8192 i-noeuds par groupe
Superblocs de secours stocks sur les blocs :
32768, 98304, 163840, 229376
criture des tables di-noeuds : complt
criture des superblocs et de linformation de comptabilit du systme de
fichiers : complt
Le systme de fichiers sera automatiquement vrifi tous les 29 montages ou
aprs 180 jours, selon la premire ventualit. Utiliser tune2fs -c ou -i
pour craser la valeur.
alpha:/dev#
Finalement,ext3 :
alpha:/dev# tune2fs -j /dev/volgrp/documentation
tune2fs 1.41.3 (12-Oct-2008)
Cration de li-noeud du journal : complt
Le systme de fichiers sera automatiquement vrifi tous les 29 montages ou
aprs 180 jours, selon la premire ventualit. Utiliser tune2fs -c ou -i
pour craser la valeur.
alpha:/dev#
Affectationdunlabeldocumentation :
alpha:/dev# tune2fs -L "documentation" /dev/volgrp/documentation
tune2fs 1.41.3 (12-Oct-2008)
alpha:/dev#
Vrification :
alpha:/dev# tune2fs -l /dev/volgrp/documentation | grep name
Filesystem volume name:
documentation
alpha:/dev#

d.Montagedufilesystem
Commandesutiles

cat

mkdir

mount

umount

Manipulations
1.

Montezvotrefilesystemenlectureseulesousunrpertoire/documentation.

2.

Vrifiez.

3.

Dmontezle.

4.

Ajoutezuneligneaufichierfstabafinquevotrefilesystemsoitmontautomatiquement
audmarrage.

5.

Vrifiezlavaliditdevotresyntaxesansredmarrerlesystme.

Rsumdescommandesetrsultatlcran

- 8-

ENI Editions - All rights reserved - Samuel CASAL

Crationdupointdemontageetmontagedufilesystem :
alpha:/dev# mkdir /documentation
alpha:/dev# mount -o ro /dev/volgrp/documentation /documentation
alpha:/dev#
Vrificationselontroismthodesdiffrentes :
alpha:/dev# mount
/dev/hda1 on / type ext3 (rw,errors=remount-ro)
tmpfs on /lib/init/rw type tmpfs (rw,nosuid,mode=0755)
proc on /proc type proc (rw,noexec,nosuid,nodev)
sysfs on /sys type sysfs (rw,noexec,nosuid,nodev)
udev on /dev type tmpfs (rw,mode=0755)
tmpfs on /dev/shm type tmpfs (rw,nosuid,nodev)
devpts on /dev/pts type devpts (rw,noexec,nosuid,gid=5,mode=620)
/dev/mapper/volgrp-documentation on /documentation type ext3 (ro)
alpha:/dev#
alpha:/dev# cat /proc/mounts
rootfs / rootfs rw 0 0
none /sys sysfs rw,nosuid,nodev,noexec 0 0
none /proc proc rw,nosuid,nodev,noexec 0 0
udev /dev tmpfs rw,size=10240k,mode=755 0 0
/dev/hda1 / ext3 rw,errors=remount-ro,data=ordered 0 0
tmpfs /lib/init/rw tmpfs rw,nosuid,mode=755 0 0
tmpfs /dev/shm tmpfs rw,nosuid,nodev 0 0
devpts /dev/pts devpts rw,nosuid,noexec,gid=5,mode=620 0 0
/dev/mapper/volgrp-documentation /documentation ext3 ro,errors=continue,data=ordered 0 0
alpha:/dev#
alpha:/dev# cat /etc/mtab
/dev/hda1 / ext3 rw,errors=remount-ro 0 0
tmpfs /lib/init/rw tmpfs rw,nosuid,mode=0755 0 0
proc /proc proc rw,noexec,nosuid,nodev 0 0
sysfs /sys sysfs rw,noexec,nosuid,nodev 0 0
udev /dev tmpfs rw,mode=0755 0 0
tmpfs /dev/shm tmpfs rw,nosuid,nodev 0 0
devpts /dev/pts devpts rw,noexec,nosuid,gid=5,mode=620 0 0
/dev/mapper/volgrp-documentation /documentation ext3 ro 0 0
alpha:/dev#
Dmontagedufilesystem :
alpha:/dev# umount /documentation
alpha:/dev#
Fichier/etc/fstabmodifi :
# /etc/fstab: static file system information.
#
# <file system> <mount point>
<type> <options>
proc
/proc
proc
defaults
/dev/hda1
/
ext3
errors=remount-ro
/dev/hda5
none
swap
sw
/dev/hdc
/media/cdrom0 udf,iso9660 user,noauto
/dev/fd0
/media/floppy0 auto
rw,user,noauto

0
0
0
0
0

<dump>
0
1
0
0
0

<pass>

# Ajout du nouvel espace de swap


/swap

none

swap

sw

# Montage du volume de documentation


/dev/volgrp/documentation

/documentation

ext3

ro

Vrification :
alpha:/dev# mount -a

ENI Editions - All rights reserved - Samuel CASAL

- 9-

alpha:/dev# cat /proc/mounts


rootfs / rootfs rw 0 0
none /sys sysfs rw,nosuid,nodev,noexec 0 0
none /proc proc rw,nosuid,nodev,noexec 0 0
udev /dev tmpfs rw,size=10240k,mode=755 0 0
/dev/hda1 / ext3 rw,errors=remount-ro,data=ordered 0 0
tmpfs /lib/init/rw tmpfs rw,nosuid,mode=755 0 0
tmpfs /dev/shm tmpfs rw,nosuid,nodev 0 0
devpts /dev/pts devpts rw,nosuid,noexec,gid=5,mode=620 0 0
/dev/mapper/volgrp-documentation /documentation ext3
ro,errors=continue,data=ordered 0 0
alpha:/dev#

4.Extensionduvolumelogique
peinelevolumecr,onvousannoncequelespacedestockageprvu(1Go)atsousdimensionn.Ilfaudrait
pluttdisposerde3Go.Vousvousflicitezdavoirprfrlesvolumeslogiquesauxpartitionstraditionnelles.

a.AgrandissementduLV
Commandesutiles

df

lvdisplay

lvextend

Manipulations
1.

Vrifiezlatailleduvolumelogique.

2.

Vrifiezlatailledufilesystemmont.

3.

Passezlatailleduvolumelogiquedocumentation3Go.

4.

Vrifiezlatailleduvolumelogique.

5.

Vrifiezlatailledufilesystemmont.

Rsumdescommandesetrsultatlcran
Vrificationdelatailleduvolumelogique :
alpha:/dev# lvdisplay /dev/volgrp/documentation
--- Logical volume --LV Name
/dev/volgrp/documentation
VG Name
volgrp
LV UUID
xIYS6m-mq88-13br-wbp7-sp5B-iN2b-wA1GEk
LV Write Access
read/write
LV Status
available
# open
1
LV Size
1,00 GB
Current LE
256
Segments
1
Allocation
inherit
Read ahead sectors
auto
- currently set to
256
Block device
253:0
Vrificationdelatailledufilesystemmont :
alpha:/dev# df -h

- 10 -

ENI Editions - All rights reserved - Samuel CASAL

Sys. de fich.
Tail. Occ. Disp. %Occ. Mont sur
/dev/hda1
7,6G 1,3G 6,0G 17% /
tmpfs
62M
0
62M
0% /lib/init/rw
udev
10M 616K 9,4M
7% /dev
tmpfs
62M
0
62M
0% /dev/shm
/dev/mapper/volgrp-documentation
1008M
34M 924M
4% /documentation
alpha:/dev#
Augmentationdelatailleduvolumelogique3Go :
alpha:/dev# lvextend -L 3G /dev/volgrp/documentation
Extending logical volume documentation to 3,00 GB
Logical volume documentation successfully resized
alpha:/dev#
Vrificationdelatailleduvolumelogique :
alpha:/dev# lvdisplay
--- Logical volume --LV Name
VG Name
LV UUID
LV Write Access
LV Status
# open
LV Size
Current LE
Segments
Allocation
Read ahead sectors
- currently set to
Block device

/dev/volgrp/documentation
volgrp
xIYS6m-mq88-13br-wbp7-sp5B-iN2b-wA1GEk
read/write
available
1
3,00 GB
768
1
inherit
auto
256
253:0

alpha:/dev#
Vrificationdelatailledufilesystemmont :
alpha:/dev# umount /documentation
alpha:/dev# mount /documentation
alpha:/dev#
alpha:/dev# df -h
Sys. de fich.
Tail. Occ. Disp. %Occ. Mont sur
/dev/hda1
7,6G 1,3G 6,0G 17% /
tmpfs
62M
0
62M
0% /lib/init/rw
udev
10M 616K 9,4M
7% /dev
tmpfs
62M
0
62M
0% /dev/shm
/dev/mapper/volgrp-documentation
1008M
34M 924M
4% /documentation
alpha:/dev#
LevolumelogiqueestpasstroisGo,maislefilesystemmont,prisonnierdesastructurerestefigsataille
dorigine.

b.Agrandissementdufilesystem
Commandesutiles

e2fsck

mount

resize2fs

umount
ENI Editions - All rights reserved - Samuel CASAL

- 11 -

Manipulations
1.

Dmontezlefilesystem.

2.

Vrifiezsonintgrit.

3.

Redimensionnezleaveclacommanderesize2fs.

4.

Montezleetvrifiezlanouvelletaille.

Rsumdescommandesetrsultatlcran
Dmontagedufilesystemetvrificationdesonintgrit :
alpha:/dev# umount /documentation
alpha:/dev# e2fsck /dev/volgrp/documentation
e2fsck 1.41.3 (12-Oct-2008)
documentation : propre, 11/65536 fichiers, 12644/262144 blocs
alpha:/dev#
Redimensionnementdufilesystem :
alpha:/dev# resize2fs /dev/volgrp/documentation
resize2fs 1.41.3 (12-Oct-2008)
Resizing the filesystem on /dev/volgrp/documentation to 786432 (4k) blocks.
Le systme de fichiers /dev/volgrp/documentation a maintenant une taille de 786432 blocs.
alpha:/dev#
Montagedufiletvrificationdesataille :
alpha:/dev# mount /documentation
alpha:/dev# df -h | grep docu
/dev/mapper/volgrp-documentation
3,0G
34M
alpha:/dev#

- 12 -

2,8G

2% /documentation

ENI Editions - All rights reserved - Samuel CASAL

Prrequisetobjectifs
1.Prrequis
LesconnaissancesacquiseslorsdelacertificationLPIniveau1,notamment:

Affichagedesprocessusetdeleursidentifiants.
ditiondefichiers.

2.Objectifs
lafindecechapitre,vousserezenmesurede:

ComprendreleprocessusdedmarragedunsystmeLinux.
Comprendrelusagedesniveauxdexcution.
Grerlelancementdeservicesenfonctionduniveaudexcution.
Connatrelexistenceetlerleduscriptrc.local.
Changerdeniveaudexcutionsurunsystmedmarr.
ModifierunfichierdeconfigurationdeGRUB.
Ajouterinteractivementuneoptionponctuelleaunoyauaudmarrage.
RinstallerGRUBsurunsystmedfaillant.
Passerenmodesingleparplusieursmoyens.

ENI Editions - All rights reserved - Samuel CASAL

- 1-

Leprocessusinitetlesniveauxdexcution
1.Lesniveauxdexcution
LefonctionnementdunsystmeLinuxestrgipardesniveauxdexcution.Mmesiceconceptapparatdavantage
aujourdhui comme un hritage du pass que comme un rel outil dadministration dun poste de travail ou dun
serveurLinux,saconnaissanceestindispensableunebonnegestiondusystme.
Toutdabord,ilfautadmettrequunsystmeLinuxesttoujoursdansunniveaudexcutionquelquesoitsonactivit,
quilsagissedunserveurapacheentrainderpondreunerequte,oudunserveurneufencoredanssoncarton.
Lagestiondesniveauxdexcutionconsisteradterminerqueldoittrelecomportementdusystmequandilentre
dansunniveaudonn.

a.Questcequunniveaudexcution?
Pourfairesimple,unniveaudexcutionestunniveaufonctionneldanslequelonauradterminlalistedesservices
arrter ou dmarrer. Quand un systme entre dans un niveau dexcution, il regarde sil doit arrter et/ou
dmarrerdesservices.

b.Lesniveauxdexcutionpossibles
Leniveau0
Leplussimple:lesystmeestarrt.Attention,celanesignifiepasqueceniveaunedoitpastreconfigur,ilfaut
tout de mme grer ce qui se passe quand le systme entre en niveau 0, cest dire quels sont les services
arrterquandonteintphysiquementunemachine.
Leniveau1ousingle
Unniveauunpeuparticulier:ilestrservauxoprationsdemaintenanceetnepermetquuneseuleconnexion,
celleducompteroot.Deplus,laplupartdesservicessontarrtsdansceniveau,cequisignifiequelesystmea
uneactivitminimum.Cestparfaitpourladministrateurquisouhaiteeffectuerdesoprationsdemaintenancesans
interfreraveclaproduction.
Leniveau2
Surlaplupartdessystmes,ceniveaunestpasutilis.Ilestlaissladispositiondeladministrateurquipourra
tablirpartirdeceniveauunmodedefonctionnementparticulieravecseulementcertainsservicesdmarrs.
Sur les systmes Debian et drivs (Ubuntu par exemple), ce niveau est en revanche le niveau fonctionnel par
dfaut.
Leniveau3
Sur la plupart des systmes, le niveau 3 est fonctionnel, cestdire que tous les services sont dmarrs, mais
linterfacegraphiquenestpasdisponible.
Leniveau4
Surlaplupartdessystmes,ceniveaunestpasutilis.Ilestlaissladispositiondeladministrateurquipourra
tablirpartirdeceniveauunmodedefonctionnementparticulieravecseulementcertainsservicesdmarrs.
Leniveau5
Sur la plupart des systmes, le niveau 5 est fonctionnel, cestdire que tous les services sont dmarrs, et
linterfacegraphiqueestdisponible.
SurlessystmesDebianetdrivs(Ubuntuparexemple),ceniveaunestpasutilisengnral.
Leniveau6
Temporaire par dfinition, le niveau 6 est celui dun systme en train de redmarrer. La configuration du niveau 6
consisteradoncdterminerquelsservicesdoiventtrearrtsauredmarragedusystme.Aprsleredmarrage,
unnouveauniveaudexcutionsappliquera(engnralleniveaupardfaut)etlesservicesassocisceniveau
serontdmarrs.

ENI Editions - All rights reserved - Samuel CASAL

- 1-

c.Quidcidedecequonmetdanslesdiffrentsniveaux?
Danslimmensemajoritdescas,cestladfinitioninitialedesniveauxdexcutionquiestexploite.Cestdireque
le gestionnaire de la distribution (Ubuntu, Mandriva, Red Hat, etc.) choisit ce qui doit se passer dans chacun des
niveauxdexcutiondonn,etladministrateurdusystmefaitavec.
Toutefois, il peut arriver que ladministrateur du systme prfre grer lui mme la configuration de ses niveaux
dexcution.Ilpeutalorschoisirquelniveaufonctionnelcorrespondchacundesniveauxdexcutionetquelssont
lesservicesassocis.chaqueniveaudexcutioncorrespondalorsunensembledeservices.

2.Configurationduprocessusinit
Nousavonsparljusqu prsent des niveaux dexcution comme dune liste de services arrter ou dmarrer. La
question estmaintenant de savoir comment le systme va prendre connaissance de son niveau dexcution et des
servicesquiysontrfrencs.

a.Lepremierprocessusdmarrsurlesystme
Sionregardequelssontlesprocessussexcutantsurlesystme,ontrouveenpremirepositionleprocessusinit.
IlporteunPPIDinhabituel(0),etilestlepredenombreuxautresprocessus.
Lesprocessus
Denombreuxprocessusontlenumro1commePPID.
[root@beta ~]# ps -ef
UID
PID PPID
root
1
0
root
2
1
root
3
1
root
4
1
root
5
1
root
6
1
root
7
1
root
10
7
root
11
7
[root@beta ~]#

|
C
0
0
0
0
0
0
0
0
0

head
STIME
09:07
09:07
09:07
09:07
09:07
09:07
09:07
09:07
09:07

TTY
?
?
?
?
?
?
?
?
?

TIME
00:00:12
00:00:00
00:00:00
00:00:00
00:00:09
00:00:00
00:00:00
00:00:04
00:00:00

CMD
init [5]
[migration/0]
[ksoftirqd/0]
[watchdog/0]
[events/0]
[khelper]
[kthread]
[kblockd/0]
[kacpid]

Ceprocessusestlepremierlancauchargementdunoyau.Ilavidemmentunrleprivilgi,etsoncomportement
estrgiparunfichierdeconfiguration:/etc/inittab.

b.Lefichierinittab
Selon les distributions, le fichier /etc/inittab revt des contenus trs diffrents, mais sa structure est toujours la
mme.
Structuredufichier/etc/inittab
identifiant:niveau:mode_action:commande

Fichier/etc/inittab:structuredunelignededfinition

- 2-

identifiant

Chanealphanumriquedunoudeuxcaractres.Identifielaligne.Pasdautres
contraintesquedviterdavoirdeuxlignesaveclemmeidentifiant.

niveau

Leoulesniveauxdexcution(enchiffres)pourlesquelslaligneestpertinente.

mode_action

choisirparmiquelquesmotscls,dfinitlafaondontlacommandeduquatrime
champseraexcute.

commande

Lacommandeexcuterau(x)niveau(x)dfini(s)dansledeuximechampselonle

ENI Editions - All rights reserved - Samuel CASAL

modedactiondutroisimechamp.
Modesdactionscourants

initdefault:unpeuparticulier,initdefaultnergitpaslafaondontlacommandeduquatrimechampsera
excute.Dailleurs,quandlemodedactionestinitdefault,lequatrimechampestvide.initdefaultnesert
enfaitqudfinirleniveaudexcutiondusystmepardfaut.
sysinit : sert excuter des scripts linitialisation du systme, indpendamment du niveau dexcution.
Pourcetteraison,sysinitnadmetpasdevaleurpourledeuximechamp.
wait:excutelacommandeduquatrimechamp(souventunscript),etattendlafindecetteexcutionpour
passerauxlignessuivantesdufichierinittab.
respawn:excutelacommandeduquatrimechamp,etlaissetournerleprocessuslarrireplan.Passe
ensuite aux lignes suivantes du fichier inittab. Si le processus appel par la commande sarrte, init le
relancerasystmatiquement.

FichierinittabdunedistributionRedHat
Lescommentairesonttsupprimspourdesraisonsdelisibilit.
id:5:initdefault:
si::sysinit:/etc/rc.d/rc.sysinit
l0:0:wait:/etc/rc.d/rc 0
l1:1:wait:/etc/rc.d/rc 1
l2:2:wait:/etc/rc.d/rc 2
l3:3:wait:/etc/rc.d/rc 3
l4:4:wait:/etc/rc.d/rc 4
l5:5:wait:/etc/rc.d/rc 5
l6:6:wait:/etc/rc.d/rc 6
ca::ctrlaltdel:/sbin/shutdown -t3 -r now
pf::powerfail:/sbin/shutdown -f -h +2 "Power Failure; System Shutting Down"
pr:12345:powerokwait:/sbin/shutdown -c "Power Restored; Shutdown Cancelled"
1:2345:respawn:/sbin/mingetty tty1
2:2345:respawn:/sbin/mingetty tty2
3:2345:respawn:/sbin/mingetty tty3
4:2345:respawn:/sbin/mingetty tty4
5:2345:respawn:/sbin/mingetty tty5
6:2345:respawn:/sbin/mingetty tty6
x:5:respawn:/etc/X11/prefdm -nodaemon

c.Rappelssurlelancementdesservices
SurunsystmeLinux,lesservicessontlancspardesscriptsnormalissquirpondentaumoinsdeuxconditions:

Ilssetrouventtousdanslerpertoire/etc/init.d(ousontdisponiblescetemplacementsousformedelien
symbolique).
Ilsadmettenttouslesparamtresstartetstoppourlelancementetlarrtduservice.

Syntaxeuniverselledegestiondeservice
/etc/init.d/nom action
Gestiondeservicesaveclacommandeservice
service nom action

Gestiondeservice :paramtres
nom

Lenomduservicegrer.
ENI Editions - All rights reserved - Samuel CASAL

- 3-

action

startoustoppourdmarrerouarrterleservice.statusestaussiuneoption
courammentsupportequiindiqueltatduservice.

Lacommandeservice,quandelleestdisponible,peuttreconsidrecommeprfrablecarellelanceleserviceen
saffranchissant autant que possible de lenvironnement ambiant (pwd et variables). Le service est ainsi dmarr
dansunenvironnementplusneutre.
Formatstandarddunscriptdegestiondeservice
#!/bin/bash
case $1 in
start)
# commande de lancement du service
;;
stop)
# commande darrt du service
;;
esac

d.Liensentrelesniveauxdexcutionetlesservices
Sionregardelefichier/etc/inittab,ontrouveunesectioncontenant7lignescommandantpourchacundesniveaux
dexcutionunscript/etc/init.d/rcenmodewait.Nousnedtailleronspaslefonctionnementdecescriptici,mais
retenons simplement quil commande lexcutiondechaquefichierdurpertoire /etc/rcn.d(ntantlenumrodu
niveau dexcution)avecleparamtre start si la premire lettre du nom du fichier est unS, et avec le paramtre
stopsilapremirelettredunomdufichierestunK.Chacundesfichiersde/etc/rcn.destunliensymboliquevers
un script de lancement de service de /etc/init.d et cette construction permet de dire quels services doivent tre
dmarrsouarrtspourchacundesniveauxdexcution.
Selonlesdistributions,ilsepeutquelesscriptsrcetlesrpertoiresrcn.dsoientplacsdesemplacements
diffrents. La cohrence est assure par la bonne gestion des chemins dans les scripts systmes et la
crationdelienssymboliquesquandcestncessaire.
Ceslienspeuventtrecrsmanuellementaveclacommandeln.
Crationdeliensdegestiondeservicesaveclacommandeln
Cesliensdoiventtrecrspourchacundesniveauxdexcutionspossibles.
cd /etc/rcx.d
ln -s ../init.d/service Cnnservice

Liendelancementdeservices :paramtres
x

Leniveaudexcutionpourlequelonveutgrerledmarrageoularrtduservice.

Commutateurdedmarrage(S)oudarrt(K).

nn

Numrodordredeuxchiffres.Lescriptseragrplusoumoinsttparrapportaux
autresdummeservice.

service

Nomduservicegrer.

e.Gestiondesniveauxdexcution
Lacommanderunlevelindiqueleniveaudexcutionencours.
Affichageduniveaudexcution
runlevel

- 4-

ENI Editions - All rights reserved - Samuel CASAL

Lacommandetelinitpermetdechangerchaudleniveaudexcutiondunsystme.
Changementdeniveaudexcution
telinit niveau
Oniveaureprsenteleniveaudexcutiondanslequelonsouhaiteplacerlesystme.
Gestionduniveaudexcution
Lechangementchauddeniveaudexcutionnedevraittreralisquesurunsystmedontonconnatlaconfiguration.
alpha:~# runlevel
N 2
alpha:~# telinit 3
alpha:~#
alpha:~# runlevel
N 3
alpha:~#
Ponctuellement,leniveaudexcutionchargerpeutaussitrefourniaunoyauentantqueparamtrelors
de son chargement. Le choix du niveau dexcution peut donc aussi se faire depuis le gestionnaire de
dmarrageenplaantsimplementleniveausouhaitsurlalignedechargementdunoyau.

f.Commandesdegestionsdesliensdeservices
Lescommandesupdaterc.detchkconfigpermettentdesaffranchirdelagestioncontraignantedesliensdappels
deservicesselonlesniveauxdexcution.Lesdeuxcommandesnesontpasdisponiblessurtouslessystmes,etil
se peut mme que la cration manuelle de liens soit la seule solution fonctionnelle. Dans tous les cas, il est
pdagogiquement intressant de vrifier laction de ces commandes sur les liens en place dans les
rpertoires/etc/rcn.d.
Crationdesliensdegestiondeservices
update-rc.d service defaults
chkconfig --add service
Oservicereprsentelenomduserviceprsentdanslerpertoire/etc/init.d.Leparamtredefaultsimpliqueque
leserviceseradmarrdanslesniveauxfonctionnelspardfaut,etarrtdanslesniveauxnonfonctionnels(0pour
systmearrt,1pourlemodemaintenance,et6pourunemachineencoursderedmarrage.)
Suppressiondesliensdegestiondeservices
update-rc.d service remove
chkconfig --del service
Vrificationdestatsdunserviceselonlesniveaux
chkconfig --list service
Exempledutilisationdelacommandechkconfig
La commande chkconfig permet aussi bien la cration de liens que la visualisation des services selon les niveaux
dexcution.
[root@beta ~]# ls /etc/rc5.d/*nfs
ls: /etc/rc5.d/*nfs: No such file or directory
[root@beta ~]# chkconfig --add nfs
[root@beta ~]# ls /etc/rc5.d/*nfs
/etc/rc5.d/K20nfs
ENI Editions - All rights reserved - Samuel CASAL

- 5-

[root@beta ~]# chkconfig --list nfs


nfs
0:off
1:off
2:off
[root@beta ~]#

3:off

4:off

5:off

6:off

Exempledutilisationdelacommandeupdaterc.d
alpha:/etc/init.d# ls /etc/rc2.d/*cron
ls: ne peut accder /etc/rc2.d/*cron: Aucun fichier ou rpertoire de ce type
alpha:/etc/init.d# update-rc.d cron defaults
Adding system startup for /etc/init.d/cron ...
/etc/rc0.d/K20cron -> ../init.d/cron
/etc/rc1.d/K20cron -> ../init.d/cron
/etc/rc6.d/K20cron -> ../init.d/cron
/etc/rc2.d/S20cron -> ../init.d/cron
/etc/rc3.d/S20cron -> ../init.d/cron
/etc/rc4.d/S20cron -> ../init.d/cron
/etc/rc5.d/S20cron -> ../init.d/cron
alpha:/etc/init.d# ls /etc/rc2.d/*cron
/etc/rc2.d/S20cron
alpha:/etc/init.d#

g.Scriptindpendantduniveaudexcution :rc.local
Unefoistouslesscriptslisauniveaucourantexcuts,undernierscript :rc.localestexcut.
Scriptrc.localsurunedistributionubuntu
Prtservir...
#!/bin/sh -e
#
# rc.local
#
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will "exit 0" on success or any other
# value on error.
#
# In order to enable or disable this script just change the execution
# bits.
#
# By default this script does nothing.
exit 0
Un script /etc/rc.boot peut se rencontrer sur certains systmes anciens. Il est galement appel par le
processusinit.

3.Utilisationdesniveauxdexcution
QuellequesoitladistributionLinux,ladministrateuratoujourssadispositiondesniveauxdexcutiondisponibles
non utiliss par dfaut. Bien entendu, il ne sert rien de configurer des niveaux dexcution pour le plaisir. Dans
limmense majorit des cas, le systme prvoit un niveau fonctionnel par dfaut, et tout le fonctionnement en
productionvasefaireauseindeceniveau.Dansquelquescasparticulierstoutefois,ladministrateurpeutchoisirde
configurercertainsniveauxpourdesbesoinsfonctionnelsparticuliers,etchaqueniveaudexcutioncorrespondraun
modedefonctionnementduserveur,avectoutoupartiedesservicesdmarrs.
En jouant sur les liens contenus dans les rpertoires rcn.d,etenremplaantleKdelapremirelettreparunSou
inversement,onprovoque,pourleniveaudexcutiondonn,ledmarrageoularrtduservice.Ainsi,siunservice
donnestappelparunlienKenniveau3etunlienSenniveau4,ladministrateurpourraendmarrantsonsystme
dansundecesdeuxniveauxchoisirleniveaufonctionneldusystme.
On peut se demander quelle est limportance du numro dordre situ derrire le S ou le K. Les scripts sont traits
danslordreoleshelllesprsente,etcesontlescaractresalphanumriquesdunomdulienquidterminentlordre
- 6-

ENI Editions - All rights reserved - Samuel CASAL

delancementoudarrtdesscripts.Laseulecontraintepourlaffectationdecenumroestdonclemomentauquelle
scriptdoittrelanc.Siunserviceestdpendantdunautre,lescriptlancerendernierdoitalorsavoirunnumro
dordresuprieuraupremier.
Les niveaux dexcution ntant plus gure utiliss en tant quoutils dadministration, les arrts de services
sontsouventmalgrspardfaut.Ilconvientsionsouhaiteutiliserlesniveauxdexcutioncommelments
de gestion dun systme dinventorier prcisment quels sont les services qui doivent dmarrer et quels sont les
servicesquidoiventsarrterchaquechangement.

ENI Editions - All rights reserved - Samuel CASAL

- 7-

Dmarrageetchargementdunoyau
1.LegestionnairededmarrageGRUB
SileprocessusinitestlepremierselancersurunsystmeLinux,cestquelenoyaulappellesystmatiquementau
dmarrage.Restetrouverquilancelenoyau:cestlerledugestionnairededmarrage.
Le gestionnaire de dmarrage est un petit programme se trouvant gnralement sur le MBR (Master Boot Record)et
dont la fonction est de provoquer le chargement du noyau. Il faut pour cela quil connaisse lemplacement du fichier
noyau(etsapartitiondappartenance),etlapartitionquiseramontesur/,laracinedusystmedefichiers.
Si de nombreux programmes existent pour remplir cette fonction, GRUB (GRand Unified Boot loader) est celui quon
retrouveaujourdhuisurlaquasitotalitdesdistributionsLinux.Legestionnairededmarrageleplusrpanduavant
GRUBtaitLILO(LInuxLOader).LILOaffichaitsesquatrelettresaudmarrageaugrdesonchargementetonsavait
ainsi,encasdchec,jusquolesystmeavaitpualler.

a.ConfigurationdeGRUB
GRUB lit sa configuration dans un fichier /boot/grub/menu.lst. Pour lancer le noyau, ce fichier rfrence certains
lments.Selonlessystmes,laconfigurationprincipalepeutaussisefairedansunfichier/boot/grub/grub.conf.
Lefichiermenu.lstnestalorsquunlienverscefichier.
Formattypedunesectiondedclarationdenoyaudansmenu.lst
title titre
root partition_noyau
kernel /chemin/noyau ro root=partition_slash options
initrd /chemin/image_modules

Fichier/boot/grub/menu.lst
titre

SiGRUBdoitproposerlechoixentreplusieurschargementsdenoyaux,lasection
titrepermetdidentifierlenoyauquonvacharger.

partition_noyau

Lapartitionhbergeantlenoyau,auformat(hdx,y)oxreprsentelenumrode
disquedur,etylenumrodelapartition.Lanumrotationcommencezro.

noyau

Lefichierexcutabledunoyau.Exprimparrapportlapartitiondsigneparle
paramtreroot.

partition_slash

Lapartitionquiseramontesous/,dsigneauformatLinuxtraditionnel
(/dev/hda1),oubiensousformedelabelouencoredUUID.

options

Certainesoptions,sparespardesespacesmodifiantlecomportementdunoyau.
Optioncourante :ro(readonly)

image_modules

Lefichierimagequipermetdemonterunramdiskcontenanttouslesmodulesdu
noyaucharger.Exprimparrapportlapartitiondsigneparleparamtreroot.

Exempledemenu.lstsurubuntu
Notezquelespriphriquessontreprsentsparlesuuid.
default
timeout

0
10

title
kernel
initrd
quiet

Ubuntu 9.10, kernel 2.6.31-16-generic


/boot/vmlinuz-2.6.31-16-generic root=UUID=52200c0b-aee8-4ae0-9492-1f488051e4a3 ro quiet splash
/boot/initrd.img-2.6.31-16-generic

ENI Editions - All rights reserved - Samuel CASAL

- 1-

La directive default dans le fichier de configuration de GRUB indique le noyau charger en labsence daction de
lutilisateur,ettimeoutindiqueauboutdecombiendetempschargerlenoyaupardfaut.
Loptionropourlemontagedelapartitionracine(cellequiseramontesurslash)permetdexcuterlesoutilsde
diagnosticsansdommagedurantlaphasededmarrageencasdedfaillancedufilesystem.Loptionquietempche
lenoyaudtretropbavardaudmarrage.
En cas de besoin, la commande rdev permet de vrifier quel est la partition monte sur /. Historiquement, cette
commande permettait aussi sur les architectures i386 de patcher une image de noyau en crivant les valeurs
spcifiquesreprsentantlapartitionadquate.Cettecommandenedevraittreutilisequendernierressort.
Dterminationdelapartitionracineavecrdev
alpha:~# rdev
/dev/hda1 /
alpha:~#

b.LefonctionnementdeGRUB
GrubproposeaudmarragelechargementdunoyaudusystmeLinux.Siplusieursversionsdenoyaucoexistent,
GRUB proposera simplement la liste des noyaux dmarrer. Cette liste est affiche partir dun ensemble de
dclarations de noyaux ou systmes amorables dans le fichier /boot/grub/menu.lst. Pour lutilisateur, il suffit
dattendrequelquessecondespourobtenirlechargementdunoyaudclarpardfautdanslefichiermenu.lst,ou
biendeslectionneraveclesflchesdedirectionetlatouche[Entre]lenoyaucharger.

ChoixdunoyaudmarreravecGRUB

2.UtilisationdeGRUBenmodeinteractif
a.ditiondessectionsdjprsentes
Siladclarationdunnoyaudanslefichier/boot/grub/menu.lstnestpasconformenosattentes(erreursdesaisie
lacrationdufichier,besoinsspcifiques),GRUBoffreuneparticularittrsapprciable:ldition interactive des
sectionsdjprsentesdanslefichierdeconfiguration.Ilsuffitpourcelapendantlapriodedetemporisationavant
chargementdunoyaudesepositionnersurlasectionmodifier,etdetaperlatouchee.GRUBpassealorsenmode
dition,etvousprsenteleslignesdelasectiondedclarationdenoyautrouvesdanssonfichierdeconfiguration.
Vous pouvez alors vous dplacer sur chacune de ces lignes, et choisir de les modifier avec un nouvel appui sur la
touchee.Lorsquevoustessatisfaitdevosmodifications,vouspouveztenterlechargementdunoyauparunappui
sur la touche b (boot). Ce mode de fonctionnement reprsente sans aucun doute un des avantages majeurs de
GRUB.Eneffet,ilestdsesprantdesetrouverfaceunsystmequinapluslesmoyensdedmarreretdenavoir

- 2-

ENI Editions - All rights reserved - Samuel CASAL

aucunepossibilitdinteraction.

b.Chargementdunnoyaunonlist
SionnedisposepasdentresmodifierdansGRUB(encasdepertedufichiermenu.lstparexemple),ilestpossible
dindiquer directement au gestionnaire de dmarrage lensemble des lments ncessaires. Il suffira pendant la
priodedetemporisationdappuyersurlatouchecpourouvriruneinviteinteractive.
Ilfaudraensuitetaperuneuneleslignesquigrentlechargementdunoyau,tellesquellesseraientnormalement
configuresdanslefichier/boot/grub/menu.lst.
Procduredechargementdunnoyaunonlist:

TapercpendantlatemporisationdeGRUB.
Taperroot(hdx,y)oxreprsentelenumrodedisqueetylenumrodelapartitionhbergeantlenoyau.(la
numrotationcommencezro)
Taperkernel/chemin/noyauroot=partitionroquietopartitionestlapartitiondevanttremontesous/,
identifiesoitparsonfichierspcialenmodeblocssous/dev,soitparsonlabel,soitparsonuuid.

Taperinitrd/chemin/imageoimageestlefichierimagedemoduleprsentenprincipeaveclefichiernoyau.

Taperenfinbootpourprovoquerlechargementdevotrenoyau.

Exempledechargementmanueldunnoyau:
c (pendant la temporisation avant dmarrage)
root (hd0,0)
kernel /boot/vmlinuz-2.6.26-2-686 root=/dev/hda1 ro quiet
initrd /boot/initrd.img-2.6.26-2-686
boot
Ilvasansdirequecettedmarchesupposeuneconnaissanceprciseduplandepartitionnementdusystme,ainsi
que des noms des fichiers noyaux et images. Lacquisition de ces lments ne posera pas de problme si on est
capablededmarrerdunefaonouduneautre,maisservleraplusproblmatiquedanslecascontraire.Dansces
conditions,larcuprationdeceslmentsdevrasefaireviaunsystmetiers,unlivecdparexemple.

3.RinstallationdeGRUB
a.Rinstallationsimpledepuisunsystmeactif
LacommandegrubinstallpermetderinstallerGRUBsurunsystmeavecbeaucoupdefacilit.Cettemthodenest
en revanche pas toujours efficace et fonctionne idalement chaud, juste aprs une suppression accidentelle du
gestionnairededmarrageparexemple.
InstallationdeGRUBavecgrubinstall
grub-install --root-directory=rep_noyau disque_cible

grubinstall :optionsetparamtres
rep_noyau

Facultatif :silenoyaunestpassurlefilesystemprincipal,dsignelerpertoire
montosetrouvelenoyau.

disque_cible

LefichierdeblocspcialquireprsenteledisquesurleMBRduquelGRUBdoittre
install.

b.Rinstallationdepuisunsystmenondmarrable

ENI Editions - All rights reserved - Samuel CASAL

- 3-

La solution la plus fiable pour rinstaller un gestionnaire de dmarrage GRUB sur un systme qui ne peut plus
dmarrerconsistechargersurlordinateurunlivecdetderaliserlarinstallationdeGRUBdepuiscelivecd.La
distribution choisie pour le livecd importe peu, Knoppix ou Ubuntu feront trs bien laffaire. Il suffit ensuite, aprs
treentrdanslemodeinteractifdeGRUB(ilsuffitdetapergrubdepuisunterminal)deprciserledisquequidevra
recevoirlegestionnairededmarrage,etdelancerlacommandesetupquiraliseralinstallationproprementditedu
gestionnaire.
InstallationdeGRUB

Depuisunterminaldulivecdactif,chargezGRUBenmodeinteractifentapantgrub.
DansleshellGRUB,prcisezlapartitionquihbergelefichiernoyauentapantroot(hdx,y)oxreprsentele
numrodudisqueetylenumrodepartition,lanumrotationcommenantzro.

Tapezensuitesetup(hdx)oxreprsentelenumrodudisquesurlequelGRUBdoittreinstall.

TapezquitpourquitterlemodeinteractifdeGRUB.

Selon le cas, vrifiez ou crez le fichier /boot/grub/menu.lst afin quil rfrence correctement le ou les noyaux
charger.

4.Maintenanceetmodesingle
a.Passageenmodesingleplanifi
Lemodesinglepermetderaliserdesoprationsdemaintenancesurunsystme.Danscemodedefonctionnement,
seulelaconnexionducompterootestpossible,etpresqueaucunservicenestdmarr.Lesystmeestdoncdans
un tat le plus stable possible, et aucune interaction malencontreuse nest redouter car ladministrateurtravaille
seul.
Passageenmodesingle
telinit 1

b.Ouverturedunshellencasdchecaudmarrage
Ilestpossibledepasserunparamtreaunoyauluiindiquantunprocessusdmarrer.Siceprocessusestunshell,
ilpermetdouvrirunesessioninteractiveetdemodifierlesfichierslocauxetdmarrermanuellementdesservices.
IlsuffitdditerlalignechargeantlenoyaudansGRUBetdajouterleparamtreinit=/bin/bash.
Ouverturedunshelldirectementaudmarrage
kernel fichier_noyau root=fs_racine ro init=/bin/bash
O fichier_noyau reprsente le noyau normalement charg, et fs_racine, le systme de fichiers racine normalement
charg.Seulleparamtreinit=/bin/bashdoittreajoutlalignedecommande.
Procduredouverturedeshellaudmarrage

- 4-

Dmarrerphysiquementlesystme.

Modifierlechargementpardfautentapantlatoucheedepuislalistedessystmesdisponibles.

Ajouterleparamtreinit=/bin/bashlafindelalignekernel.

Chargerlenoyauentapantlatoucheb.

ENI Editions - All rights reserved - Samuel CASAL

Lappel dun shell directement depuis le noyau permet daccder au systme sans avoir sauthentifier.
Cetteprocduremontresilentaitbesoinquelaccsphysiqueunemachinesensibledoittoujourstre
protg. Il est certes possible de protger GRUB de ldition par un mot de passe, mais laccs par un mdia
amovibleaufilesystemresteundanger.

ENI Editions - All rights reserved - Samuel CASAL

- 5-

Validationdesacquis:questions/rponses
Testezvosconnaissancesenrpondantauxquestionssuivantes.Cesquestionsnappellentpastoujoursdesrponses
dfinitives. Les questions poses en certification, bien quabordant les mmes sujets, seront pour la plupart poses
sous forme de questionnaire choix multiples, ou bien demanderont une rponse courte, tape en toutes lettres au
clavier.

1.Questions
1 Quelleestladiffrenceentreunservice,undmonetunniveaudexcution?
2 Lesscriptsdegestiondeservicesadmettentsouventlesparamtresrestartetreload.Lequeldecesdeux
paramtresconsommelemoinsderessourcessystmelorsdesonappel?
3 Quelscriptindpendantdesniveauxdexcutionesttoujoursexcutaudmarragedunsystmeaprstous
lesscriptslisauniveaudexcutioncourant?
4 Quelestlersultatlcrandelacommandedmesg?
5 PourlaconfigurationdugestionnairededmarrageGRUB,lesdistributionsdinspirationDebianprivilgientle
fichier/boot/grub/menu.lstalorsquelessystmesdorigineRedHatprfrentlefichier/etc/grub.conf.Comment
lacohrenceestellemaintenuepourquelegestionnairededmarrageGRUBretrouvetoujourssa
configurationdanslemmefichier?
6 Quelestlemplacementusuelpourpositionnerungestionnairededmarrage?
7 Quelestlintrtduparamtrero(readonly)gnralementpassaunoyauparlegestionnairedebootqui
indiquequelechargementdunoyaudoitsefaireenlectureseule?
8 Quelparamtrepassaunoyaulorsdesondmarragepermetdaccderausystmedefaonrudimentaire
dansunquivalentdumodesingle?
9 Lacommandetelinitpermetdechangerdeniveaudexcutionsurunsystmeenfonctionnement.Quefautil
fairepourquunniveaudexcutiondonnsoitchargdirectementaudmarrage?
10 Pourquoilacopiedelintgralitdesfichiersdundisquesystmesurledisqueduneautremachinenesuffit
ellepaslarendrefonctionnelle?

2.Rponses
1 Quelleestladiffrenceentreunservice,undmonetunniveaudexcution?
Undmonestuntermetirdelanglaisdaemonquireprsenteunservice.Unserviceestunprogrammersidentqui
sexcutesurunserveur,prtgrerdesvnementssurlesystme.Unniveaudexcutionestuntatfonctionnel
dun serveur dans lequel plus ou moins de services doivent tre en cours dexcution ou arrts. Un dmon et un
service reprsentent donc la mme chose, et un niveau dexcution dcrit ltat dans lequel doivent se trouver les
servicesdisponiblessurlesystme.
2 Lesscriptsdegestiondeservicesadmettentsouventlesparamtresrestartetreload.Lequeldecesdeux
paramtresconsommelemoinsderessourcessystmelorsdesonappel?
Leparamtrerestartappliquunscriptdegestiondeserviceexcutelquivalentdunstoppuisdunstart.Leoules
processussontdoncarrts,puisrelancsenrelisantleslmentsdeconfiguration.Leparamtrereloadenrevanche
maintientlesprocessusencoursdexcution,maisleurfaitreprendreencomptedynamiquementleurconfiguration,
gnralementenenvoyantauprocessusunsignal1(hup).
3 Quelscriptindpendantdesniveauxdexcutionesttoujoursexcutaudmarragedunsystmeaprstous
lesscriptslisauniveaudexcutioncourant?
Le script rc.local est systmatiquement excut au dmarrage, aprs tous les scripts lis au niveau dexcution
courant.Ladministrateurpeutyintgrertoutecommandequidoittreexcuteaudmarrageindpendammentdu
niveaudexcution.
4 Quelestlersultatlcrandelacommandedmesg?
Lacommandedmesgaffichetouslesmessagesquelenoyauauraitpuafficherdepuissondmarragesilavaitdispos
dun terminal actif ou dun fichier journal sur un filesystem mont. En labsence de ces lments (au dmarrage, le
noyau na rien de tout cela), le noyau maintient en mmoire son journal dvnements dans ce quon appelle en
anglaisle"kernelringbuffer".Lacommandedmesgenvoiesoncontenusurlasortiestandard.
5 PourlaconfigurationdugestionnairededmarrageGRUB,lesdistributionsdinspirationDebianprivilgientle
fichier/boot/grub/menu.lstalorsquelessystmesdorigineRedHatprfrentlefichier/etc/grub.conf.Comment
lacohrenceestellemaintenuepourquelegestionnairededmarrageGRUBretrouvetoujourssa
configurationdanslemmefichier?

ENI Editions - All rights reserved - Samuel CASAL

- 1-

Par un lien symbolique. Lhistoire dunix et de Linux est pleine de particularits lies une distribution ou un
dveloppeuralternatifs.Pourresterenconformitaveclesusages,lepassoulesrglesposix,lusagedesliensest
gnralis. Les liens symboliques sont prfrs car un lien matriel nest pas capable de rfrencer un lment en
dehorsdesonfilesystem,etilnestpascertainquelesfichiersprfrsetlesfichiersnormalisssoientsurlemme
filesystem.
6 Quelestlemplacementusuelpourpositionnerungestionnairededmarrage?
LeMasterBootRecord(MBR).Unemplacementdudisquedursituavantlatabledespartitionsetluenpremierparle
BIOSestlemplacementprivilgipourungestionnairededmarrage.
7 Quelestlintrtduparamtrero(readonly)gnralementpassaunoyauparlegestionnairedebootqui
indiquequelechargementdunoyaudoitsefaireenlectureseule?
Encasdeproblmesurlapartitionquicontientlenoyau,lesoutilsdediagnosticspeuventsexcutersansdommage
surdeslmentsaccdsenlectureseule.
8 Quelparamtrepassaunoyaulorsdesondmarragepermetdaccderausystmedefaonrudimentaire
dansunquivalentdumodesingle?
Leparamtreinit=permetdespcifierquelexcutabledoittrelancdirectementaprslechargementdunoyau.Si
cet excutable est un shell, alors le systme dmarre et excute un shell indpendamment de tout service. Cest
galementunefaondaccderunsystmedontonaperdulemotdepasse.
9 Lacommandetelinitpermetdechangerdeniveaudexcutionsurunsystmeenfonctionnement.Quefautil
fairepourquunniveaudexcutiondonnsoitchargdirectementaudmarrage?
Modifierlefichierinittab.Ilcontientunelignededfinitionduniveaudexcutionpardfautannonceparlemotcl
initdefault.
10 Pourquoilacopiedelintgralitdesfichiersdundisquesystmesurledisqueduneautremachinenesuffit
ellepaslarendrefonctionnelle?
ParcequelenoyauLinuxdoittreappelparungestionnairededmarrage,lequelsetrouveendehorsdespartitions
dedisque,etnestdoncpascopiableparlesoutilsdegestiondefichiersordinaires.

- 2-

ENI Editions - All rights reserved - Samuel CASAL

Travauxpratiques
1.Crationdunniveaudexcutionsurmesureavecapplicationsspcifiques
Ilnestpas(plus)dusageenproductiondegrerdesniveauxdexcutionpersonnaliss.Cetteoprationconstitue
nanmoinsuntrsbonexercicepourlacomprhensiondesniveauxdexcution.

a.Dfinitiondesbesoinsfonctionnels
Des besoins applicatifs particuliers apparaissent. Vous pensez que la gestion des de ces services par niveaux
dexcutionestlameilleurerponsecesbesoins.
VotreserveurAdoittrefonctionnelavecsesservicesusuelsdmarrsdanssonniveaudexcutionpardfaut,et
disposerdesmmesservicesavecenplusledmarrageduneapplicationspcifiquedansunniveaupersonnalis.
Afindepouvoirsurveillerlapplicationnouvellequandelleserainstalle,vousenvisagezdecreruneapplicationde
surveillancedelammoire.
CommeleniveaupardfautdesserveursDebianestleniveau2,vousleconserverezcommeniveaupardfaut,et
vouspersonnaliserezleniveau3afinquelapplicationspciale(etenattendantvotreapplicationdesurveillance)y
soitsystmatiquementdmarre.

b.Crationdelapplicationspcifique
Voussouhaitezdisposerdansunniveaudexcutiondonndenregistrementspriodiquesdelaconsommationde
mmoire sur le serveur. Vous crerez le programme provoquant lenregistrement priodique des donnes en
mmoire,ainsiquesonscriptdelancementnormalis.Crezdanslerpertoire/opt/scriptsaveclditeurdevotre
choixlefichiersurveillememsuivant:
#!/bin/bash
while true
do
maintenant=$(date "+%H:%M:%S - ")
echo -n $maintenant >> /var/log/surveillemem.log
grep Dirty /proc/meminfo >> /var/log/surveillemem.log
sleep 30
done
Commandesutiles

chmod

tail

vi

Manipulations
1.

Rendezcefichierexcutable.

2.

Crezdanslerpertoire/etc/init.dunscriptnormalisdelancementdeservicepour
lapplicationsurveillemem.

3.

Rendezcefichierexcutable.

4.

Testezlebonfonctionnementduprogrammeenlanantleservicecorrespondant.

5.

Laisseztournerquelquesminutes.

6.

Vrifiezlecontenudufichier/var/log/surveillemem.log.

Rsumdescommandesetrsultatlcran

ENI Editions - All rights reserved - Samuel CASAL

- 1-

Fichiersurveillemem :
#!/bin/bash
while true
do
maintenant=$(date "+%H:%M:%S - ")
echo -n $maintenant >> /var/log/surveillemem.log
grep Dirty /proc/meminfo >> /var/log/surveillemem.log
sleep 30
done
Modificationdesdroitssurlefichiersurveillemem :
alpha # ls -l /opt/scripts
-rw-r--r-- 1 root root 187 2010-07-13 15:31 surveillemem
alpha # chmod a+x /opt/scripts/surveillemem
alpha # ls -l /opt/scripts
-rwxr-xr-x 1 root root 187 2010-07-13 15:33 surveillemem
Script/etc/init.d/surveillememdelancementdeservicepourgrerlapplicationsurveillemem :
#!/bin/bash
case $1 in
start)
/opt/scripts/surveillemem &
;;
stop)
pkill surveillemem
;;
esac
Modificationdesdroitssurlefichierdegestiondeservice :
alpha # ls -l /etc/init.d/surveillemem
-rw-r--r-- 1 root root 102 2010-07-13 15:37 surveillemem
alpha # chmod a+x /etc/init.d/surveillemem
alpha # ls -l /etc/init.d/surveillemem
-rwxr-xr-x 1 root root 187 2010-07-13 15:37 surveillemem
Essaiduservice:
alpha # /etc/init.d/surveillemem start
alpha # tail -f /var/log/surveillemem.log
18:13:25 -Dirty :
15 kB
18:13:55 -Dirty :
228 kB
18:14:25 -Dirty :
224 kB
18:14:55 -Dirty :
65 kB
( Ctrl - C )
alpha # pgrep -l surveillemem
2203 surveillemem
alpha # /etc/init.d/surveillemem stop
alpha # pgrep -l surveillemem
alpha #

c.Modificationduniveaupersonnalis
Crerunniveaudefonctionnementpersonnalisrevientsassurerquelesservicesvoulusdansceniveauseront
correctementappelsaudmarragedusystme.Ilsuffitpourceladefaireensortequelerpertoirercn.d(onest
leniveaudexcutionquelonsouhaiteparamtrercontienneunliendontlenomcommenceparS(enmajuscule),
et dont la cible soit le script de service normalis dans /etc/init.d. Le mcanisme dinitialisation du systme
dexploitationsechargeradappelertouslesfichiersdercn.ddontlapremirelettreestunSavecleparamtre
start .Comme ces fichiers sont en fait des liens vers les scripts de dmarrage des services et que ces services
doiventrpondreauparamtrestartendmarrant,chaquelienprovoquerabienlelancementduservice.
Commandesutiles

- 2-

ENI Editions - All rights reserved - Samuel CASAL

ln

Manipulations
1.

Crezunliendarrtdelapplicationenniveau0(toutestarrtenniveau0).

2.

Crezunliendarrtdelapplicationenniveau1(aucuneapplicationsuperflueen
niveau1).

3.

Crezunliendarrtenniveau2(notrescnarioneprvoitpasquelapplicationsoit
excuteenniveau2).

4.

Crezunliendedmarrageenniveau3(leniveautroisestleniveaufonctionnel
completaveclapplicationsurveillemem).

5.

Crezunliendedmarrageoudarrtpourlesniveaux4et5(cesniveauxntantpas
utilissdanslescnario,lafonctiondulienapeudintrt).

6.

Crezunliendarrtenniveau6(touteslesapplicationssontarrteslorsdun
redmarrage).

Rsumdescommandesetrsultatlcran
Crationduliendarrtenniveau0 :
alpha:~# cd /etc/rc0.d
alpha:/etc/rc0.d# ln -s ../init.d/surveillemem K05surveillemem
alpha:/etc/rc0.d#
Crationduliendarrtenniveau1 :
alpha:/etc/rc0.d# cd ../rc1.d
alpha:/etc/rc1.d# ln -s ../init.d/surveillemem K05surveillemem
alpha:/etc/rc1.d#
Crationduliendarrtenniveau2 :
alpha:/etc/rc1.d# cd ../rc2.d
alpha:/etc/rc2.d# ln -s ../init.d/surveillemem K05surveillemem
alpha:/etc/rc2.d#
Crationduliendedmarrage enniveau3 :
alpha:/etc/rc2.d# cd ../rc3.d
alpha:/etc/rc3.d# ln -s ../init.d/surveillemem S95surveillemem
alpha:/etc/rc3.d#
Crationdeslienspourlesniveaux4et5 :
alpha:/etc/rc3.d#
alpha:/etc/rc4.d#
alpha:/etc/rc4.d#
alpha:/etc/rc5.d#
alpha:/etc/rc5.d#

cd
ln
cd
ln

../rc4.d
-s ../init.d/surveillemem K05surveillemem
../rc5.d
-s ../init.d/surveillemem K05surveillemem

Crationduliendarrtenniveau6 :
alpha:/etc/rc5.d# cd ../rc6.d
alpha:/etc/rc6.d# ln -s ../init.d/surveillemem K05surveillemem
alpha:/etc/rc6.d#

d.Changementdeniveaudexcutionchaud
Nayant pas modifi le niveau dexcution par dfaut, le systme doit dmarrer en niveau 2. Vous dcidez de
changerdeniveaudexcutionchaudpourvrifierquelelancementduserviceestbieniniti.

ENI Editions - All rights reserved - Samuel CASAL

- 3-

Commandesutiles

pgrep

reboot

runlevel

shutdown

telinit

Manipulations
1.

Redmarrezlamachine.

2.

Vrifiezquelapplicationsurveillememnesestpaslanceaudmarrage.

3.

Vrifiezleniveaudexcutioncourantaprsdmarrage.

4.

Commandezausystmedepasserauniveaudexcution3chaud.

5.

Vrifiezquelapplicationsurveillememestencoursdexcution.

6.

Repassezenniveau2.

Rsumdescommandesetrsultatlcran
Vrificationduniveauencours :
alpha:~# runlevel
N 2
alpha:~#
Vrificationdelanonexcutiondelapplicationtmoin(surveillemem) :
alpha:~# pgrep -l surveillemem
alpha:~#
Changementchaudduniveaudexcution :
alpha:~# telinit 3
INIT : Switching to runlevel: 3
alpha:~#
Vrificationduniveauencours:
alpha:~# runlevel
2 3
alpha:~#
Vrificationdelexcutiondelapplicationtmoin(surveillemem):
alpha:~# pgrep -l surveillemem
2193 surveillemem
alpha:~#
Retourauniveau2 :
alpha:~# telinit 2
INIT : Switching to runlevel: 2
alpha:~#

e.Suppressiondesliens

- 4-

ENI Editions - All rights reserved - Samuel CASAL

Votreresponsableapplicatifvousinformequelapplicationdployerauneconsommationmmoirefixede32ko.
Du,vousdcidezalorsdesupprimerlesliensdegestiondeservice.Nevoussouvenantplusdelacommandequi
permetdeffacerunliensymbolique,vousvoustournezversunecommandedirectedegestiondeservice.
Commandeutile

updaterc.d

Manipulations
1.

Supprimeztouslesliensdesrpertoiresrcn.dsansutiliserlacommanderm(lescript
contenudansinit.dtanttoujoursprsent,ilsepeutquelacommandeemployeait
desscrupules.Faiteslencessaire).

Rsumdescommandesetrsultatlcran
Suppressiondesliensdegestiondeservice :
alpha:/etc/rc3.d# update-rc.d surveillemem remove
update-rc.d: /etc/init.d/surveillemem exists during rc.d purge (use -f to force)
alpha:/etc/rc3.d# update-rc.d -f surveillemem remove
Removing any system startup links for
/etc/init.d/surveillemem ...
/etc/rc0.d/K05surveillemem
/etc/rc1.d/K05surveillemem
/etc/rc2.d/K05surveillemem
/etc/rc3.d/S95surveillemem
/etc/rc4.d/K05surveillemem
/etc/rc5.d/K05surveillemem
/etc/rc6.d/K05surveillemem
alpha:/etc/rc3.d#

2.RinstallationdeGRUBaprscorruption
Ilpeutarriverquelegestionnairedebootsoitcorrompuoucrasparaccident.Unpeuinquietcetteide,vous
dcidezdevousentranerrinstallerGRUBsurunsystmequienestdpourvu.
Dans un premier temps, vous copierez lintgralit des donnes de la machine alpha (systmes et donnes
dapplications)surundisquedurquenousappelleronsclonehd.Vouscrerezensuiteunenouvellemachinevirtuelle
qui exploitera ce disque, mais qui sera naturellement incapable de dmarrer. Enfin, vous installerez GRUB sur ce
disqueafinqueledmarragepuisseavoirlieunormalement.

a.Copiedesdonnesdudisque
Commandesutiles

cp

dmesg

grep

mkdir

mke2fs

mount

Manipulations

ENI Editions - All rights reserved - Samuel CASAL

- 5-

1.

AjoutezledisquedurIDEclonehdlamachinevirtuellealpha.Poursimplifierla
manipulationetvitertouteinteractionmalencontreuse,supprimezlecontrleuretles
disquesSATA.

2.

AjoutezlimageDSL.isoentantquecdromdelamachinealpha.

3.

DmarrezlamachinealphaenbootantsurlelivecdDSL(loptiondedmarrage"dsl
lang=fr2"permetdavoirunclavierfranaisetdedmarrersansinterfacegraphique).

4.

DepuisunterminalsurDSL,interrogezleringbufferdunoyaupourvoirsilesdeux
disquesonttreconnus.

5.

Crezunepartitionde1gigasurledeuximedisquedur.

6.

Crezunfilesystemext3surcettepartition.

7.

Crezdeuxrpertoires/unet/deuxdanslefilesystemdusystmevirtuel.

8.

Montezlefilesystemdupremierdisquedur(systmedealpha)sur/un.

9.

Montezlefilesystemduseconddisquedur(nouveaudisqueclonehd)sur/deux.

10.

Copiezlesdonnesdupremierdisquesurlesecond.Utilisezuneoptionquiprserve
touslesattributsdesfichiers,entreautresdatesetpermissions.

11.

Arrtezlamachinevirtuelle.

Rsumdescommandesetrsultatlcran
Dtectiondesdisques :
[~]# dmesg | grep hd
<6>
ide0: BM-DMA at 0xd000-0xd007, BIOS settings: hda:DMA, hdb:DMA
<6>
ide1: BM-DMA at 0xd008-0xd00f, BIOS settings: hdc:DMA, hdd:pio
<4>hda: VBOX HARDDISK, ATA DISK drive
<4>hdb: VBOX HARDDISK, ATA DISK drive
<4>hdc: VBOX CD-ROM, ATAPI CD/DVD-ROM drive
<4>hda: attached ide-disk driver.
<6>hda: 16777216 sectors (8590 MB) w/256KiB Cache, CHS=1044/255/63
<4>hdb: attached ide-disk driver.
<6>hdb: 4194304 sectors (2147 MB) w/256KiB Cache, CHS=520/128/63
<6> hda: hda1 hda2 < hda5 >
<6> hdb: unknown partition table
<4>hdc: attached ide-scsi driver.
Crationdelapartition :
[~]#
fdisk /dev/hdb
Device contains neither a valid DOS partition table, nor Sun, SGI or OSF disklabel
Building a new DOS disklabel. Changes will remain in memory only,
until you decide to write them. After that, of course, the previous
content wont be recoverable.
Warning: invalid flag 0x0000 of partition table 4 will be corrected by w(rite)
Command (m for help): p
Disk /dev/hdb: 2147 MB, 2147483648 bytes
128 heads, 63 sectors/track, 520 cylinders
Units = cylinders of 8064 * 512 = 4128768 bytes
Device Boot

Start

End

Blocks

Id

System

Command (m for help): n


Command action
e
extended
p
primary partition (1-4)
p
Partition number (1-4): 1
First cylinder (1-520, default 1):

- 6-

ENI Editions - All rights reserved - Samuel CASAL

Using default value 1


Last cylinder or +size or +sizeM or +sizeK (1-520, default 520): 400
Command (m for help): p
Disk /dev/hdb: 2147 MB, 2147483648 bytes
128 heads, 63 sectors/track, 520 cylinders
Units = cylinders of 8064 * 512 = 4128768 bytes
Device Boot
/dev/hdb1

Start

End
1

Blocks
Id System
1612768+ 83 Linux

400

Command (m for help): w


The partition table has been altered!
Calling ioctl() to re-read partition table.
Syncing disks.
Crationdufilesystemsurlapartition.
[~]# mke2fs -j /dev/hd1
mke2fs 1.34-WIP (21-May-2003)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
201760 inodes, 403192 blocks
20159 blocks (5.00%) reserved for the super user
First data block=0
13 block groups
32768 blocks per group, 32768 fragments per group
15520 inodes per group
Superblock backups stored on blocks:
32768, 98304, 163840, 229376, 294912
Writing inode tables: 0/13 1/13 2/13 3/13 4/13 5/13 6/13
11/13 12/13 done
Creating journal (8192 blocks): done
Writing superblocks and filesystem accounting information: done

7/13

8/13

9/13 10/13

This filesystem will be automatically checked every 22 mounts or


180 days, whichever comes first. Use tune2fs -c or -i to override.
Montagedespartitions.
[~]#
mkdir /un /deux
[~]#
mount /dev/hda1 /un
[~]#
mount /dev/hdb1 /deux
[~]#
ls /un
bin
cdrom
dev
media
opt
root
usr
vmlinuz
root
initrd.i
lost+found
mnt
srv
tmp
var
[~]# ls /deux
lost+found

home
selinux
data
proc

lib
sys
etc
sbin

home
selinux
data
proc

lib
sys
etc
sbin

Copiedesdonnes.
[~]# cp -a /un/* /deux
[~]#
ls /deux
bin
cdrom
media
opt
usr
vmlinuz
initrd.i
lost+found
srv
tmp

dev
root
root
mnt
var

Arrtdusystme.

ENI Editions - All rights reserved - Samuel CASAL

- 7-

[~]# shutdown -h now

b.Crationdelamachinevirtuelleclone
Crez une nouvelle machine virtuelle appele clone. Affectezlui le disque clonehd que vous aurez auparavant
retirdelamachinevirtuellealpha,etconserveztouteslesvaleurspardfaut.
Mettezlaenroute,etconstatezsonincapacitdmarrerbienquelledisposedundisquepartitionnavectous
lesfichierssystme.

c.InstallationdeGRUB
Commandesutiles

grub

grub :root

grub :setup

Manipulations
Affectez la machine virtuelle clone limage iso DSL et redmarrezla. Vous disposez alors dun shell root sur le
systmevirtuel.
1.

ChargezlinterfaceGRUB.

2.

Dfinissezlapartitiondontlefilesystemseramontsur/.

3.

InstallezGRUBsurledisquedur.

4.

QuittezGRUB.

Rsumdescommandesetrsultatlcran
[~]# grub
GRUB version 0.91

(640K lower / 3072K upper memory)

[ Minimal BASH-like line editing is supported. For the first word, TAB
lists possible command completions. Anywhere else TAB lists the possible
completions of a device/filename. ]
grub> root (hd0,0)
Filesystem type is ext2fs, partittion type 0x83
grub> setup (hd0)
Checking if "boot/grub/stage1" exists... yes
Checking if "boot/grub/stage2" exists... yes
Checking if "boot/grub/e2fs_stage1_5 (hd0)"... 17 sectors are embedded. succeeded
Running "install /boot/grub/stage1 d (hd0) (hd0)1+17 p
(hd(0,0)/boot/grub/stage 2 /boot/grub/menu.lst"... succeeded
Done.
grub>quit

d.Dmarrageetvrification
DconnectezlimageisoDSLetredmarrezlamachinevirtuelle.Ledmarragedoitnormalementsexcuter.

- 8-

ENI Editions - All rights reserved - Samuel CASAL

Prrequisetobjectifs
1.Prrequis
LesconnaissancesacquiseslorsdelacertificationLPIniveau1,notamment:

ConnaissancesgnralesrseauxetmodleOSI.
Connaissancessommairedudmonsyslog.

2.Objectifs
lafindecechapitre,vousserezenmesurede:

Configurerlerseaudunsystmeenlignesdecommandes.
Grerdesroutesstatiques.
Utiliserlesutilitairesdegestionarp.
Configurerlestcpwrappers.
ConnatrelescommandesdegestiondesrseauxWiFi.
Capturerdestramessurlerseau.
ConfigurerunserveurDHCPbasique.
ConfigurerunerservationDHCP.
ExploiterunclientDHCP.

ENI Editions - All rights reserved - Samuel CASAL

- 1-

Configurationdurseau
1.Configurationuniverselledurseau
Chaque distribution Linux essaye de faire en sorte que les paramtres rseau soient aussi faciles que possible
configurer.LebutestsouventdenepassouffrirdelacomparaisonavecWindows,etdefaireensortequelutilisateur
ait sa disposition une interface intuitive et facile configurer. Cette configuration se fait avec des utilitaires,
graphiquesounon,etdesfichiersdeconfigurationquelirontlesscriptsdelancementdurseau.
Indpendamment de ces lments de confort apports par les distributions ou les bureaux graphiques, on aura
toujours, quelle que soit la distribution et lenvironnement, les commandes de base permettant la configuration du
rseau,savoirladresseip,laroutepardfaut,etladressedesserveursDNS.Ladmarcheindiquecidessous,si
ellenestpaslaplusrapide(quoique),alavantagedeluniversalit.

a.Dterminationdelinterfacerseau
LessystmesLinuxutilisentunnomsymboliqueparinterfacerseau,quilsagisseduneinterfacerelleouvirtuelle,
ethernetouautre.Danslecascourantolesystmeestconnectunrseauethernetetnutilise quuneseule
carte,cettecarteseradsigneeth0.Onpourradterminerlalistedetouteslesinterfacesrseauxexistantsur
unsystme,configureounonparlacommandeifconfig.
Dterminationdesinterfacesrseauparlacommandeifconfig
ifconfig -a

b.AffectationdeladresseIP:ifconfig
Lacommandeifconfigadenombreuxusages,etelleestsurtoutconnuepourafficherlesadressesMACetIPpour
unsystmedjconfigur.Nanmoins,lacommandeifconfigpeutaussitreutilisepouraffecterdynamiquement
ladresseetlemasquedunemachine.
AffectationduneadresseIPaveclacommandeifconfig
ifconfig interface adresse_ip
ifconfig interface netmask masque
Mmesianestpaslepluscourantdesusages,ilestpossibledajouterunedeuximeadresseIPuneinterface
djconfigure.
AjoutduneadresseIPsecondaireuneinterface
ifconfig interface:sous-interface adresse_ip

Commandeifconfig:optionsetparamtres
interface

NomLinuxdelinterface.Parexempleeth0.

sousinterface

Nomarbitrairedelasousinterface.Chanedecaractresquelconque.

adresse_ip

AdresseIPaffecterlamachine.

masque

ValeurdumasquedesousrseauassociladresseIP.

c.ConfigurationduclientDNS:fichier/etc/resolv.conf
LesmachinesLinuxdisposentnativementdunclientDNSappelresolver.TouteapplicationfonctionnantsurLinux
etayantbesoindefaireunerequteDNSsappuierasurcecomposant.
Ilexploitelefichierdeconfigurationsimple/etc/resolv.confodoitsetrouverlarfrencedaumoinsunserveur

ENI Editions - All rights reserved - Samuel CASAL

- 1-

DNS
Formatsimplifidufichier/etc/resolv.conf
search domaine
nameserver adresse_ip

Fichier/etc/resolv.conf:directivesetvariablesutilises
search

Facultatif:indiquelesuffixederechercheemploysurleposteLinux.Permetdene
pastaperlintgralitdunomdedomainepleinementqualifi(FQDN)dansles
applications.Lefichier/etc/resolv.confadmetplusieursdomainesderecherches
prcissparsearch.

domaine

LeFQDNdudomaineconstituantlesuffixederecherche.

nameserver

IndiqueladresseIPduserveurDNSquiassureralesrsolutions.Le
fichier/etc/resolv.confadmetplusieursserveursDNSprcissparnameserver.

adresse_ip

AdresseIPduserveurDNSinterroger.

Certainesdocumentationsprconisentlusage de la commande hostnamedpourconnatrelesuffixeDNS


dunsystme.Ilsagitdusuffixeattachaunomdhte,etnonauclientDNS.Ilnestdoncpasconsultlors
desrsolutionsDNS.

d.Configurationdelapasserellepardfaut :route
LacommanderoutepermetdedfinirdesroutesstatiquessurunemachineLinux.Danslecadreduneconfiguration
simpleetponctuelle,onpourralutiliserpourdfinirlapasserellepardfaut.Ilsagiraenfaitdedclareruneroute
statiqueindiquantlaroutepardfaut.
Syntaxedelacommanderoutepourindiqueruneroutestatique
route add -net rseau_dest netmask masque gw ip_passerelle
Syntaxedelacommanderoutepourindiquerlapasserellepardfaut
route add -net 0.0.0.0 gw ip_passerelle
route add default gw ip_passerelle

Commanderoute:optionsetparamtres
add

Indiquequelonajouteuneroutelatablederoutage.

net

Indiquequeladestinationestunrseau.

rseau_dest

Lerseauatteindreparlaroutestatiquequonparamtre.

0.0.0.0

Laroutepardfaut.0.0.0.0reprsentetouslesrseauxpossibles.

gw

Annoncelavaleurdelapasserelle.

ip_passerelle

AdresseIPdelapasserelleutiliser.

default

quivalentnet0.0.0.0

masque

Lemasquedesousrseauassocilarouteajoute.

Un serveur Linux utilis en tant que routeur supporte aussi les principaux protocoles de routage. Le logiciel

- 2-

ENI Editions - All rights reserved - Samuel CASAL

historique routed supporte uniquement le protocole de routage RIP, alors que la suite logicielle plus moderne
quaggapermetdexploiterlaquasitotalitdesprotocolesderoutagesIP.

e.Configurationdunomdhte:hostname
Le nom dhte de la machine peut tre affect dynamiquement avec la commande hostname. Il permet aussi
dafficherlenomdhtedusystmesilestappelsansargument.
Syntaxedelacommandehostnamepouraffecterunnomdhte
hostname nom_hote
nom_hotereprsentantlenomquonsouhaiteaffecterausystme.
Attention, cette valeur est conserve en mmoire vive, et sera perdue ds que le systme redmarrera. Les
systmesordinairesenproductiondoiventdoncconservercettevaleurdansunfichierdeconfigurationquiestlu
chaque dmarrage. Ce fichier dpend de la distribution. Cest par exemple /etc/hostname pour les distributions
dorigine Debian, et /etc/sysconfig/network pour les distributions dorigine RedHat. Les scripts excuts au
dmarragedusystmesechargentdappeler la commandehostnameetrcuprentlavaleurdunomdusystme
danslefichier.
Exempledecontenudunfichier/etc/hostname
root@firmin:~$ cat /etc/hostname
firmin

2.Spcificitdesdistributions
Lesseulesrglesuniversellespourlaconfigurationdurseausontcellesdcritesdanslesparagraphesprcdents.
Les distributions Linux courantes ont nanmoins des procdures de configuration par scripts et fichiers de
configuration quon peut classer en deux grandes familles : celles dont la configuration rseau est situe dans le
rpertoire
/etc/network,
et
celles
dont
la
configuration
rseau
est
situe
dans
le
rpertoire/etc/sysconfig/networkscripts.

a.Configurationrseaudans/etc/network
CestlecasdesdistributionsDebianetdrives.Leslmentsdeconfigurationsontsitusdansunfichierauformat
simple:/etc/interfaces.
Formatdufichierdeconfiguration/etc.network/interfacespouruneadresseIPstatique
auto interface
iface interface inet static
address adresse_ip
netmask masque
gateway ip_passerelle
Formatdufichierdeconfiguration/etc.network/interfacespouruneadresseIPdynamique
auto interface
iface interface inet dhcp

Fichierinterfaces:optionsetparamtres
auto

Indiquequelinterfacedevratreactiveautomatiquementaudmarrage.

interface

Lenomlinuxiendelinterfaceconfigurer(exemple:eth0).

inet

IndiquequonvaaffecteruneadresseIpv4.

static

IndiquequeladresseIPconfigureserastatique.
ENI Editions - All rights reserved - Samuel CASAL

- 3-

adresse_ip

AdresseIPaffecterlinterface.

masque

Masquedesousrseauaffecterlinterface.

ip_passerelle

AdresseIPdelapasserellepardfaut.

dhcp

IndiquequeladresseIPconfigureseradynamiqueetobtenueparrequteDHCP.

Cesfichiersnontvidemmentaucuneactioneneuxmmes,ilssontappelsparlescriptdelancementduservice
rseau(engnral/etc/init.d/networking),lequelscriptinvoqueralacommande ifup(interfaceup)pouractiverles
interfacesavecleursparamtresrseau.

b.Configurationrseaudans/etc/sysconfig/networkscripts
CestlecasdesdistributionsRedHatetdrives.Leslmentsdeconfigurationsontsitusdansunfichierauformat
simpleparinterfacesitudanslerpertoire/etc/sysconfig/networkscripts.Cesfichiersonttousleprfixeifcfgsuivi
dunomdelinterfaceconfigurer.
FormatdufichierifcfginterfacepouruneadresseIPstatique
DEVICE=interface
BOOTPROTO=none
ONBOOT=yes
IPADDR=adresse_ip
NETMASK=masque
GATEWAY=ip_passerelle
FormatdufichierifcfginterfacepouruneadresseIPdynamique
DEVICE=interface
BOOTPROTO=dhcp
ONBOOT=yes

Fichierifcfg:optionsetparamtres
interface

LenomLinuxdelinterfaceconfigurer(exemple:eth0).

BOOTPROTO=dhcp

IndiquequeladresseIPconfigureseradynamiqueetobtenueparrequte
DHCP.

ONBOOT=yes

Indiquequelinterfacedevratreactiveautomatiquementaudmarrage.

adresse_ip

AdresseIPaffecterlinterface.

masque

Masquedesousrseauaffecterlinterface.

ip_passerelle

AdresseIPdelapasserellepardfaut.

Quelquesoitleformatdesfichiersdeconfigurationrseau,leparamtreprcisantladressedepasserelle
proximitdelaconfigurationduneinterfacepourraitfairepenserquelapasserelleestattachelinterface.
Orunepasserellepardfaut,quelquesoitlesystme,estuniqueetlielatablederoutagedusystmeetnon
unequelconqueinterface.

3.Autrescommandesetfichiersdegestiondurseau
Nousavonsvuquelesparamtresrseaupouvaienttreconfigursaveclesseulescommandesifconfigetroute.Il
existe nanmoins de nombreux autres utilitaires qui permettent dadministrer, configurer et diagnostiquer le
fonctionnementdurseau.

- 4-

ENI Editions - All rights reserved - Samuel CASAL

a.GestiondesadressesMACavecarp
ToutquipementrseauquiexploiteleprotocoleIPsurunrseauethernetesttenu,pourtablirlacorrespondance
entre les adresses IP et les adresses MAC, dutiliser le protocole ARP. Dans un fonctionnement dynamique, cas le
pluscourant,unemachineconnaissantladresseIPdesondestinatairemaisayantbesoinderenseignersonentte
MAC pour communiquer envoie un broadcast pour demander si quelquun sur le rseau possde ladresse IP en
question. Si la machine destinataire est porte de broadcast (cestdire dans le rseau local), elle rpond en
unicast et indique son adresse MAC. La rsolution ARP est alors ralise. Les correspondances tablies entre
adresses MAC et adresses IP sont conserves un certain temps en mmoire dans ce quon appelle le cache ARP.
Dans quelques cas particuliers, on peut aussi affecter de faon statique une correspondance entre adresse IP et
adresseMAC.
Lacommandearppermetdobserveretventuellementdegrerlesvaleurscontenuesdanscecache.
Syntaxedelacommandearppourobserverlecache
arp -n
Leparamtrennestpasobligatoire,maisildispenselesystmederaliserunerechercheDNSinversequiralentit
normmentlaffichage.
Syntaxedelacommandearppoureffaceruneentreducache
arp -d adresse_ip
Syntaxedelacommandearppouraffecterunevaleuraucache
arp -s adresse_ip adresse_mac
Oadresse_ipreprsenteladresseIPdelentrequelonsouhaitegrer,etadresse_macreprsenteladresseMAC
dune entre associer une adresse IP. Les adresses MAC sont exprimes sous forme doctets en hexadcimal
sparspardesdoublespoints.
Lusage courant est naturellement de laisser lintgralit des associations entre adresses MAC et adresses IP se
raliser dynamiquement. Si on souhaite nanmoins configurer un grand nombre dassociations statiques, il sera
intressantderenseignerunfichier/etc/ethers,etdappelerlacommandearpavecloptionf.
Formatdufichier/etc/ethers
adresse_mac1 adresse_ip1
adresse_mac2 adresse_ip2
...
adresse_macn adresse_ipn
Exploitationdelacommandearp
On utilise ici la commande arp pour afficher le contenu du cache arp avant et aprs activit. On affecte ensuite
manuellement une adresse MAC une adresse IP, puis on prend en compte le contenu du fichier /etc/ethers pour
configurerplusieursassociations.
alpha:~# arp -n
alpha:~# ping 192.168.199.1
PING 192.168.199.1 (192.168.199.1) 56(84) bytes of data.
(...)
alpha:~# arp -n
Address
HWtype HWaddress
Flags Mask Iface
192.168.199.1
ether
08:00:27:e4:07:62
C
eth0
alpha:~# arp -s 192.168.199.222 00:01:02:a1:b2:b3
alpha:~# arp -n
Address
HWtype HWaddress
Flags Mask Iface
192.168.199.222 ether
00:01:02:a1:b2:b3
CM
eth0
192.168.199.1
ether
08:00:27:e4:07:62
C
eth0
alpha:~# cat /etc/ethers
00:00:00:01:02:03 192.168.199.33
00:00:00:01:02:04 192.168.199.34
00:00:00:01:02:05 192.168.199.35

ENI Editions - All rights reserved - Samuel CASAL

- 5-

00:00:00:01:02:06 192.168.199.36
alpha:~# arp -f
alpha:~# arp -n
Address
HWtype HWaddress
192.168.199.222 ether
00:01:02:a1:b2:b3
192.168.199.33
ether
00:00:00:01:02:03
192.168.199.35
ether
00:00:00:01:02:05
192.168.199.34
ether
00:00:00:01:02:04
192.168.199.36
ether
00:00:00:01:02:06
192.168.199.1
ether
08:00:27:e4:07:62
alpha:~#

Flags Mask
CM
CM
CM
CM
CM
C

Iface
eth0
eth0
eth0
eth0
eth0
eth0

b.TCPWrappers
IlestpossibledegrerlesaccsunsystmeLinuxselonlesadressesIPoulesnomsdhtesdesclients.Onpeut
grerunelistedetousceuxquisontautoriss,oubienunelistedetousceuxquisontinterdits.Mmesiles
techniquesmodernesdintrusionetdepiratagerendentcetypedecontrledaccspresqueinsignifiant,celareste
tout de mme une forme de contrle rudimentaire qui peut dcourager les touristes. En outre, la certification LPI
exigelaconnaissancedecestechniquesdegestiondesaccs.
LimplmentationTCPWrappersutilisesurlessystmesLinuxsappuiesurlabibliothquelibwrap.
Lesdeuxfichierspermettantcecontrlesont/etc/hosts.allowpourlesclientsautoriss,et/etc/hosts.denypour
lesclientsnonautoriss.Ilssontlusparledmontcpdquiappliqueralescontrlesdaccsenconsquence.Depar
leurprincipedefonctionnement,cesfichiersdevraienttreutilissindpendamment :sionautorisecertainshtes
seconnecter,celasignifiequetouslesautressontinterdits,etdonclefichierdinterdictionperddesonintrt.Si
toutefois les deux fichiers taient prsents dur un systme, seul le fichier /etc/hosts.allow serait appliqu, et le
fichier/etc/hosts.denyseraitignor.
Formatdesfichiershosts.allowethosts.deny
service: clients

TCPWrappers :fichiersdecontrledaccs
service

Lenomduservicedontlaccsestcontrl.ALLestunevaleurcourantequi
reprsentetouslesservicesligibles.

clients

NomDNSouadresseIPdesclients.Plusieursvaleurspeuventtrerenseignes
sparespardesespaces.supportedenombreuxjokersetformats.ALLestune
valeurcourantequireprsentetouteslesadressesIP.

Exempledefichierhosts.allow
Notezlepremierexempledontladressesetermineparunpoint.Cettesyntaxeunpeuparticulirepermetdedsignerles
adressesdontlapartieprcdantlepointconcorde.
# Toutes les adresses commenant par 10.1 sont ligibles
ftp:10.1.
# Seule ladresse 172.12.5.28 peut se connecter
sshd: 172.12.5.28
# Toutes les adresses du rseau 192.168.1.0 peuvent se connecter
ALL: 192.168.1.0/255.255.255.0

4.ConfigurationWiFi
Les distributions et les bureaux graphiques fournissent des utilitaires graphiques pour ladministration des rseaux
WiFi dont lutilisation est intuitive. Nous allons donc voir ici comment configurer pas pas une connexion WiFi en
lignesdecommandes.Lesprincipauxoutilsserontifconfig,iwconfig,etiwlist.

a.DterminationdelinterfaceWiFi

- 6-

ENI Editions - All rights reserved - Samuel CASAL

Nous savons que la commande ifconfig a permet dobserver toutes les interfaces rseaux prsentes sur un
systme,mmesiellesnesontpasactives.UnecarteWiFidoitdoncforcmentsetrouverdanslalisterenvoye
par cette commande. Toutefois, si le systme comporte plusieurs cartes rseau, une commande spcifique nous
permettradaffinernotrechoix.
VisualisationdesinterfacesWiFiaveciwconfig
Touteslesinterfacesrenvoyantunerfrence802.11sontdesinterfacesWiFi.Danscetexemple,cestlacarteeth1.
toto@ubuntu:~$ iwconfig
lo
no wireless extensions.
eth0

no wireless extensions.

eth1

IEEE 802.11 Nickname:""


Access Point: Not-Associated
Link Quality:5 Signal level:0 Noise level:166
Rx invalid nwid:0 invalid crypt:0 invalid misc:0

vboxnet0

no wireless extensions.

b.Visualisationdesrseauxdisponibles
Lacommandeiwlistpermetdefairelinventairedesrseauxdisponibles.
Syntaxedelacommandeiwlistpourlavisualisationdesrseauxenvironnants
iwlist interface scan
OinterfaceestlenomdelacarterseauWiFi,etscanleparamtrequiindiquelanaturedelactionoprer.
Exempledescanaveciwlist
Danscetexemple,onvoitquedeuxrseauxsontdisponibles.LepremierestmisparunpointdaccsdontladresseMAC
est 00:0A:66:13:E7:01, fonctionnant en 802.11g (2,4 GHz et 54 Mb/s), et dont le SSID est pifou. Lencryption est
ralise en WPATKIP. Le deuxime provient dun point daccs dont ladresse MAC est CA:9D:2E:E6:B7:56, mettant
aussien802.11g,aveclessidhotspotetsansaucunescurit.
toto@ubuntu:~$ sudo iwlist eth1 scan
eth1
Scan completed :
Cell 01 - Address: 00:0A:66:13:E7:01
ESSID:"pifou"
Mode:Managed
Frequency=2.437 GHz (Channel 6)
Quality:5/5 Signal level:-50 dBm Noise level:-78 dBm
IE: WPA Version 1
Group Cipher : TKIP
Pairwise Ciphers (1) : TKIP
Authentication Suites (1) : PSK
Encryption key:on
Bit Rates:1 Mb/s; 2 Mb/s; 5.5 Mb/s; 11 Mb/s; 18 Mb/s
24 Mb/s; 36 Mb/s; 54 Mb/s; 6 Mb/s; 9 Mb/s
12 Mb/s; 48 Mb/s
Cell 02 - Address: CA:9D:2E:E6:B7:56
ESSID:"hotspot"
Mode:Managed
Frequency:2.427 GHz (Channel 4)
Quality:1/5 Signal level:-83 dBm Noise level:-84 dBm
Encryption key:off
Bit Rates:1 Mb/s; 2 Mb/s; 5.5 Mb/s; 11 Mb/s; 9 Mb/s
18 Mb/s; 36 Mb/s; 54 Mb/s; 6 Mb/s; 12 Mb/s
24 Mb/s; 48 Mb/s

ENI Editions - All rights reserved - Samuel CASAL

- 7-

c.Connexionunrseaunonscuris
Unefoislerseaudtermin,onpeutsyconnecterparlacommandeiwconfig.
Associationunrseausansfilouvert
iwconfig interface essid nom_ssid
Ointerface reprsente linterfacerseauWiFigreparlesystme,etnom_ssidlenomdurseauWiFi(Service
SetIdentifier)auquelonsouhaiteseconnecter.

- 8-

ENI Editions - All rights reserved - Samuel CASAL

Diagnosticrseau
1.Outilsdediagnosticsencoucherseau
a.ping
Laclbrecommandepingrendtoujoursdimmensesservices.EllepermetbienentendudetesterlaconnectivitIP
deboutenbout,detesterlarsolutionDNSnative,maisaussidobtenirdesinformationsplussubtiles,commepar
exemplelindicationquunerouteestinaccessible.
LacommandepingexploiteleprotocoleICMP(InternetControlMessageProtocol).
Exemplederponseauping
Dans cet exemple, la rponse au ping est diffrente selon que la route existe et que la machine cible du ping est
indisponible,ouquelarouteestinconnue.
A:~$ route
Table de routage IP du noyau
Destination
Passerelle
Genmask
Indic Metric Ref
Use Iface
192.168.200.0
*
255.255.255.0
U
1
0
0 eth0
A:~$ ping 172.17.18.19
connect: Network is unreachable
A:~$ route add -net 172.17.0.0 netmask 255.255.0.0 gw 192.168.200.254
A:~$ ping 172.17.18.19
PING 172.17.18.19 (172.17.18.19) 56(84) bytes of data.
From 172.17.18.19 icmp_seq=1 Destination Host Unreachable
From 172.17.18.18 icmp_seq=2 Destination Host Unreachable
A:~$

b.Indicateursdelacommanderoute
Lacommande route,utilisepourconfigurerdesroutesstatiques,fournitgalementdeslmentsdediagnostics.
Ellepermetdesavoirquelssontlesrseauxlocauxoudistants(accessiblesparunepasserelle),ouencoredevoir
quunerouteestrejeteparlenoyau.Cesinformationssontdonnesparlesindicateursdelacommanderoute.
Commanderoute :principauxindicateurs
U

Up :larouteestactiveetexploitable.

Host :lacibleestunhte(etnonunrseau).

Gateway :lacibleestaccessibleparunepasserelle.

Dynamic :larouteatconfigureparunprotocolederoutage.

Lenoyauarejetlaroute.

Exempledindicationsdelacommanderoute
Touteslesroutessontactivesetexploitables.
[root@beta ~]# route
Table de routage IP du noyau
Destination
Passerelle
10.1.2.3
192.168.200.200
192.168.199.0
*
192.168.200.0
*
169.254.0.0
*

Genmask
255.255.255.255
255.255.255.0
255.255.255.0
255.255.0.0

Indic
UGH
U
U
U

Metric
0
0
0
0

Ref
0
0
0
0

Use
0
0
0
0

ENI Editions - All rights reserved - Samuel CASAL

Iface
eth0
eth1
eth0
eth1
- 1-

default
[root@beta ~]#

192.168.200.254 0.0.0.0

UG

0 eth0

c.traceroute
Lacommandetraceroutecommelacommandepingpermetdetesterlaconnectivitavecunsystmedistant,mais
endonnantlensembledesrouteursquipermettentdacheminerlepaquet.Encasdeproblmedeconnectivit,on
peutdoncdterminerquelendroitlepaquetestbloquousestperdu.
Exempledutilisationdelacommandetraceroute
Dans cet exemple, on constate que pour atteindre la machine 192.168.199.10, il faut dabord passer par le routeur
10.8.0.1.
tata@stotion:~$ traceroute 192.168.199.10
traceroute to 192.168.199.10 (192.168.199.10), 30 hops max, 60 byte packets
1 10.8.0.1 (10.8.0.1) 44.928 ms 50.972 ms 51.015 ms
2 192.168.199.10 (192.168.199.10) 51.056 ms 51.112 ms 51.149 ms
tata@stotion:~$

2.Outilsdediagnosticsencouchestransportetapplication
a.netstat
Lacommandenetstatpermetdobserverlesconnexionstabliesaveclesystmelocal.Cesconnexionspeuventtre
detypeTCP,UDP,ousocket.LesconnexionsTCPetUDPsontengnraltabliesavecdessystmesdistants,alors
que les sockets sont des fichiers de type particuliers qui servent de point dchange entre des composants
applicatifssanspasserparlerseau.Parexemple,leserveurdaffichageXquitaitlorigineuneapplicationclient
serveurutiliseenrseauutilisedsormaisunsocketpourlescommunicationsentreleclientXetsonserveursitus
surlammemachine.
Dansunbutdediagnosticdufonctionnementrseau,onsintresseraprincipalementauxconnexionsTCPetUDP.
Syntaxedelacommandenetstatpourvoirlesconnexionsactives
netstat -n
Oloptionn,facultative,empchelarsolutioninversesurlesadressesIPetsurlesnumrosdeports.Laffichage
estplusrapide.
Observationdesprocessusresponsablesdeconnexionsrseau
netstat -p
Exempledutilisationdelacommandenetstat
Observons ici la commande netstat appele toutes les secondes pour surveiller la connexion avec une application du
systmelocal.Lexempleproposeunscriptcontenantuneboucleinfinieetdonttouteslescommandessontplacessur
uneseuleligne.Sionaunbesoinrptdecettecommandesouscetteforme,onauraintrtcrerunfichierdescript.
while true ; do clear ; netstat -an | head -20 ; sleep 1 ; done
Onpourrasortirdecetteboucleparlacombinaisondestouches[Ctrl]C.

b.nc
Lacommandencounetcatestunoutilquipermetdelireoucriredesdonnesautraversdeconnexionsrseau.
Parexemple,sionestconfrontuneapplicationquelconquequifonctionneenTCPsurleport1234etquonne
disposedaucunoutildediagnostic,ncpermetdtabliruneconnexionsurleportTCP/1234,denvoyerdesdonnes
brutes,etdobserverlarponseduserveur.

- 2-

ENI Editions - All rights reserved - Samuel CASAL

Syntaxedelacommandenc
nc -u adresse_ip port

Commandenc:optionsetparamtres
u

Facultatif.PrcisequelonsouhaitetravaillerenUDP.Siceparamtreestomis,
touteslesrequtessontfaitesenTCP.

adresse_ip

LadresseIPdelamachineaveclaquelleonsouhaitecommuniquer.

port

Leportparlequelonsouhaitesadresserlamachinedistante.

Exempledutilisationdencpourinterrogerunserveurweb
Dans cet exemple, le serveur interrog rpond bien en html au code http (GET /) qui lui demande dafficher sa page
daccueilpardfaut.Onvoitbieniciquelutilisationdencdesfinsdediagnosticncessiteuneconnaissanceprcisedes
protocolessousjacents.
toto@ubuntu:~$ nc 172.17.6.26 80
GET /
<html><body><h1>It works!</h1></body></html>
toto@ubuntu:~$

3.Diagnosticsetinformationsencoucheapplication
a.lsof
Lacommandelsofpermetdtablirlalistedesfichiersouvertspardesprocessussurunsystme.lsofexcutesans
optionsaffichesimplementlensembledesfichiersappartenanttouslesprocessusactifs.
Affichagedesfichiersouvertsparlacommandexeyes
LescolonneslesplusdirectementutilessontPID,USERetNAME.
A# lsof
COMMAND
xeyes
xeyes
xeyes
xeyes
xeyes
xeyes
xeyes
xeyes
xeyes
xeyes

| grep xeyes
PID USER FD
9584 toto cwd
9584 toto rtd
9584 toto txt
9584 toto mem
9584 toto mem
9584 toto mem
9584 toto mem
9584 toto mem
9584 toto mem
9584 toto mem

TYPE
DIR
DIR
REG
REG
REG
REG
REG
REG
REG
REG

DEVICE SIZE/OFF
8,3
12288
8,3
4096
8,3
20416
8,3
22568
8,3
39232
8,3 1170770
8,3
19008
8,3
22560
8,3
14488
8,3
97904

NODE
7258113
2
2366803
2362738
1966225
6463538
2146517
2364984
2364981
2364446

NAME
/tmp
/
/usr/bin/xeyes
/usr/lib/libXfixes.so.3.1.0
/usr/lib/libXcursor.so.1.0.2
/usr/lib/locale/fr_FR.utf8/LC_COLLATE
/lib/libuuid.so.1.3.0
/usr/lib/libXdmcp.so.6.0.0
/usr/lib/libXau.so.6.0.0
/usr/lib/libICE.so.6.3.0

b.Journauxsur/var/log/syslog&/var/log/messages
Les fichiers /var/log/syslog sur les distributions dorigine Debian et /var/log/messages sur les distributions
dorigine Red Hat concentrent lessentiel des remonts de journaux toutes applications confondues. Ils sont
alimentsparledmonsyslogdpourRedHatoursyslogdpourDebianetsincrmententchaquevnementsubit
ou provoqu par une application compatible syslog. Ainsi, les vnements associs au rseau, quils proviennent
dune application clientserveur ou de la gestion du rseau par le systme ellemme seront probablement
mentionnsdanscesfichiersjournaux.
SurlessystmesdorigineDebian,unfichier/var/log/deamon.logestspcifiquementrservauxjournauxdactivit
desservices.

ENI Editions - All rights reserved - Samuel CASAL

- 3-

Visualisationdesvnementsrelatifsauxcartesrseau
Lesjournauxreprsententlesprincipalessourcesdinformationencasdedysfonctionnementapplicatif.
toto@ubuntu:/tmp$ grep eth /var/log/syslog | head
Jun 24 19:21:08 ubuntu NetworkManager: <info> Activation (eth1)
starting connection Auto orange
Jun 24 19:21:08 ubuntu NetworkManager: <info> (eth1): device state change:
(reason 0)
Jun 24 19:21:08 ubuntu NetworkManager: <info> Activation (eth1) Stage 1 of
(Device Prepare) scheduled...
Jun 24 19:21:08 ubuntu NetworkManager: <info> Activation (eth1) Stage 1 of
(Device Prepare) started...
Jun 24 19:21:08 ubuntu NetworkManager: <info> Activation (eth1) Stage 2 of
(Device Configure) scheduled...
Jun 24 19:21:08 ubuntu NetworkManager: <info> Activation (eth1) Stage 1 of
(Device Prepare) complete.
Jun 24 19:21:08 ubuntu NetworkManager: <info> Activation (eth1) Stage 2 of
(Device Configure) starting...
Jun 24 19:21:08 ubuntu NetworkManager: <info> (eth1): device state change:
(reason 0)
Jun 24 19:21:08 ubuntu NetworkManager: <info> Activation (eth1/wireless):
connection Auto orange requires no security. No secrets needed.
Jun 24 19:21:08 ubuntu NetworkManager: <info> Activation (eth1) Stage 2 of
(Device Configure) complete.

3 -> 4
5
5
5
5
5
4 -> 5

4.Libpcapetlescapturesdepaquets
a.Labibliothquelibpcap
Pour rcuprer des informations prcises sur le fonctionnement rseau dune application, il arrive que lon doive
capturerdirectementlensembledeslmentsquipassentsurlerseau.Lesoutilspouryparvenirsontnombreux
surtouslessystmes.EnenvironnementLinux,cesoutilssappuientpourlaplupartsurlabibliothquelibpcapqui
fournituneinterfacedebasniveaunormalisepourlacapturedepaquets.libpcapatcrepartirdespremiers
dveloppements dune commande de capture appele tcpdump. Elle fut par la suite exploite par de nombreux
logicielsdanalyserseaudontleclbrewireshark.

b.tcpdump
tcpdumpestunoutilquienvoiesurlasortiestandard(lcran)uneinformationrsumedescapturesralisespar
lacarterseau.tcpdumptravaillantentempsrel(moyennantletempsdetraitementparleprogramme),ilestutile
pour surveiller directement lactivit rseau dune machine. Si on dirige les captures vers un fichier, alors les
informationscompltesdespaquetscapturessontconservesetutilisablespardautresoutilscompatiblesavecle
formatlibpcap.
Syntaxedelacommandetcpdump
tcpdump -w fichier -i interface -s fentre -n filtre

tcpdump :optionsetparamtres

- 4-

wfichier

Facultatif :pourenvoyerlersultatdelacaptureversunfichierauformatlibpcap.

iinterface

Facultatif :pourraliserlacapturedepuisuneinterfaceprcise.

sfentre

Facultatif :pourlimiterlatailledestramescaptures.Surtoututilisavecle
paramtre0(pasdelimite).

Facultatif :nepasremplacerlesvaleursnumriquespardesexpressionslittrales.

filtre

Dtermineletraficcapturer.Motsclsprincipaux :host,port,src,dest.

ENI Editions - All rights reserved - Samuel CASAL

Exempledutilisationdetcpdump
Lexemple cidessous nous montre des lments de trafic capturs la vole par tcpdump. Notez que la brivet des
informations proposes (ici des changes lis au Spanning Tree Protocol entre commutateurs) ne permet pas danalyse
profonde,maissurtoutdeconstaterdevisulanaturedesinformationschanges.
root@serveur:~$ tcpdump
tcpdump: verbose output suppressed,
listening on eth6, link-type EN10MB
10:07:59.961927
10:08:00.019503 STP 802.1d, Config,
8007.00:25:46:b4:3c:80.800c, length
10:08:02.034712 STP 802.1d, Config,
8007.00:25:46:b4:3c:80.800c, length
^C
3 packets captured
3 packets received by filter
0 packets dropped by kernel
root@serveur:~$

use -v or -vv for full protocol decode


(Ethernet), capture size 96 bytes
Flags [none], bridge-id
43
Flags [none], bridge-id
43

Cet exemple plus prcis envoie vers un fichier au format libpcap les requtes http vers un serveur ladresse IP
192.168.50.24.
root@serveur:~$ tcpdump -w fichier.cap -i eth0 -s 0 -n port 80 and host 192.168.50.24
root@serveur:~$

c.Wireshark
Wireshark (anciennement ethereal) est une application de capture de trames multiplateforme disponible
notammentsurlesenvironnementsWindowsetLinux.Wiresharksappuiesurlabibliothquelibpcapetpermetde
sauvegarderlesdonnescapturesceformatoudexploiterdescapturesfaitespardautresutilitaires.Wireshark
proposepourchacunedescapturesundcoupageselonlescouchesdumodleOSIdesinformationscaptures,ce
quiestlafoispratiqueettrspdagogique.
Procdurestandarddecaptureavecwireshark

LancezlapplicatifWireshark.

DanslemenuCapture,choisissezInterfaces.

ReprezlacarterseaulaquelleestassocievotreadresseIP.

CliquezsurStartpourlancerlacapture.

Visualisezlespaquetsencoursdecaptures.

ArrtezlacaptureencliquantsurStopdanslemenuCapture.

Exempledecapturedepaquetsavecwireshark
Notezlcrandivishorizontalemententroispanneaux:lepaquetanalyser,lesdtailscoucheparcouche,etlavaleur
hexadcimaledesinformationscaptures.Ici,onvoitquilsagitdunerequteDNSdetypeApourlarsolutiondunom
start.ubuntu.com.

ENI Editions - All rights reserved - Samuel CASAL

- 5-


Sur un rseau encombr, on risque dtre noy sous une avalanche de paquets capturs qui nont pas
forcment de rapport avec ce que lon cherche. On gagnera en visibilit en appliquant un filtre daffichage
(champFiltersurlcranprincipal).Cetteoprationalavantagedtrerversible(boutonClear).

- 6-

ENI Editions - All rights reserved - Samuel CASAL

ConfigurationautomatiqueavecDHCP
1.LeprotocoleDHCP
DHCP (Dynamic Host Configuration Protocol) est un protocole clientserveur qui a pour objet daffecter
automatiquementuneadresseIPainsiquedesparamtresfonctionnelsauxhtesdurseau.Ilestexploitpartout
quipementquinepeutpastreconfigurdefaonstatiqueparunadministrateurrseau.

a.Fonctionnement

Dcouvertedunserveur
LesclientsDHCPfontunerequtesurlerseaudanslespoirdetrouverunserveurDHCP.Cetterequteinitialene
peuttrequunbroadcast:lastationloriginedelarequteneconnatmmepassapropreadresse,ilestdonc
peuprobablequelleconnaisseparavanceladressedunserveurDHCP.
LespaquetsenvoyspourladcouverteportentlenomnormalisdeDHCPDISCOVER.
Premirerponseduserveur
SiunserveurDHCPprsentsurlerseauentendlarequtedunclient,illuiferaunepropositiondadresseetde
paramtresrseau.CommeleclientauquelleserveurdadresserpondnapasencoredadresseIP,cetterponse
seferagalementsousformedebroadcast.
LespaquetsenvoyspourlarponseduserveurportentlenomnormalisdeDHCPOFFER.
Acceptationdeloffre
LeclientDHCPsatisfaitdeloffrequiluiatfaite,valaccepter.cestade,cetterponsepourraittreenvisage
enunicastpuisqueleclientadjunepropositiondadresseIPetconnatcelleduserveur.Toutefois,cetchange
se fera encore en broadcast. En effet : si un deuxime serveur DHCP est en concurrence avec le premier pour
fourniruneadresse,cebroadcastdacceptationenvoyunautreserveurmaisreuparlesdeuxprtendantsfait
officedefindenonrecevoirpourleserveurnonchoisi.
LespaquetsenvoyspourlacceptationdeloffreduserveurportentlenomnormalisdeDHCPREQUEST.
Accusderceptionduserveur

ENI Editions - All rights reserved - Samuel CASAL

- 1-

Enfin, le serveur prend acte de laffectation de ladresse, et clos la transaction par un accus de rception. Le
serveurprofitedecedernierchangepourannoncerladuredelallocationdeladresse.Onappellecettedurele
bailDHCP,etsadurevarieselonlaconfigurationduserveurentrequelquesheuresetquelquesjours.
LespaquetsenvoyspouraccusderceptionportentlenomnormalisdeDHCPACK.

b.LeserviceDHCPsurlessystmesLinux
LeserviceDHCPleplusrpandusurlessystmesLinuxetceluiquilfautconnatrepourlacertificationLPIestle
service DHCP de lISC (Internet System Consortium). LISC est un organisme cr en 1994 pour veiller au
dveloppement et la prennit du serveur DNS BIND, dveloppement manant lorigine de luniversit de
Berkeley. ISC DHCP est un dveloppement original de lISC pour fournir une implmentation de rfrence de ce
protocole.
Le service est lanc par un script normalis dans /etc/init.d. Son nom varie selon les distributions et
implmentations.

2.Configurationduserveur
LessentieldelaconfigurationdunserveurDHCPISCsetrouvedanslefichier/etc/dhcpd.conf.
Onytrouveralesdirectivesdefonctionnement,lesoptionsgnralesduserveur,etladclarationdesressources
allouer.Chacunedeslignesdeparamtresdevraseterminerparunpointvirgule.

a.Lefonctionnementgnralduserveur
Directivesprincipalesdecomportementduserveurdansdhcpd.conf.
default-lease-time dure;
authoritative;
log-facility niveau;

dhcpd.conf:comportementduserveur
defaultleasetimedure

IndiqueladuredubailDHCPensecondes.

authoritative

Facultatif.Unclientquidemandelerenouvellementduneadressehors
plagedoityrenoncer.

logfacilitycible

Gestiondesjournaux:renvoielesvnementsversle"facility"cibledu
serveursyslog.

b.Lesparamtrestransmisauxclients
On peut dans le fichier de configuration dfinir des paramtres fonctionnels qui seront transmis aux clients. Ces
paramtressontannoncsparladirectiveoption.
Dclarationdoptionsdanslefichierdhcpd.conf
option
option
option
option

domain-name suffixe;
domain-name-servers serveurs_dns;
nis-domain domaine_nis;
nis-servers serveurs-nis;

dhcpd.conf:dclarationdoptions

- 2-

suffixe

SuffixeDNSpourlesclients.

serveur_dns

ServeurDNSutilisparlesclients.Siplusieursserveursdoiventtreproposs,les
valeurssontsparespardesvirgules.
ENI Editions - All rights reserved - Samuel CASAL

domaine_nis

Envoiederarfaction.DomaineNISpourlesclients.

serveurs_nis

Envoiederarfaction.ServeurNISutilisparlesclients.Siplusieursserveurs
doiventtreproposs,lesvaleurssontsparespardesvirgules.

c.Dclarationdeplagesdadresses
Lesadressesallouersontdfiniesdansuneouplusieurssections subnetdufichier dhcpd.conf.Auseindeces
sections, on trouvera en plus des plages dadresses les options DHCP qui seront envoyes avec les propositions
dadresses. Les options les plus courantes sont la passerelle par dfaut utiliser avec ladresse propose, ainsi
quelesserveursDNSutiliser.Lesoptionspeuventtredclaresendehorsouauseindessectionssubnet,elles
concernerontalorsselonlecaslensembledesadressesallouesouseulementcellesdusousrseau.Encasde
conflitentreoptions(lammeoptionestdclaredanslaconfigurationgnraleetdanslasectionsubnet),cest
loptiondusubnetquiprvaut.
Dclarationdesubnetdanslefichierdhcpd.conf
subnet reseau netmask masque {
range debut fin;
option routers routeur;
}

dhcpd.conf:dclarationdesubnet
reseau

Ladressederseaudanslequelsetrouverontlesadressesattribuer.

masque

Masqueassociaurseaugr.

debut

Dfinitiondelaplagedesadressesquiserontproposesauxclients.Lapremire
adressedelaplage.

fin

Dfinitiondelaplagedesadressesquiserontproposesauxclients.Ladernire
adressedelaplage.

routeur

Lapasserellepardfautassocieauxadressesproposes.

d.Paramtresspcifiquesunemachine
Il est possible daffecter spcifiquement une machine des options particulires. Cette machine fera alors lobjet
dunedclarationparticulireavecladirectivehost,unpeucommeonconfigureraitunsubnetuneseuleadresse.
OnpourrautilisercettemthodepouraffecterspcifiquementunhtedurseauuneadresseIPfixepourune
machine qui, bien que client DHCP, devrait systmatiquement utiliser la mme adresse. On peut par exemple
imaginer une imprimante rseau dont linterface de configuration peu confortable encourage la laisser en
configurationdynamique,etpourlaquellelarservationdhcpgarantiraitlattributiondeladressevoulue.
Rservationdadressedansdhcpd.conf
host machine {
hardware ethernet adresse-mac;
fixed-address adresse_ip;
option routers routeur;
option domain-name suffixe;
option domain-name-servers serveur_dns;
}

dhcpd.conf:configurationdhte
machine

Dclarationdeparamtrespourunhte.Silidentificationparadressemacest
ENI Editions - All rights reserved - Samuel CASAL

- 3-

utilise,lenommachineestsansimportance.
adressemac

LadresseMACdelhteconfigurer.

adresse_ip

AdresseIPdelhteencoursdeconfiguration.

e.Serveurplusieursinterfaces
Les serveurs DHCP possdant plusieurs interfaces rseau doivent restreindre leurs communications aux seules
cartes comptentes. Par exemple, si un serveur possde une interface configure en 10.11.12.1 et une autre en
192.168.200.1,etquilproposedesadressesdanslesubnet192.168.200.0,ilestvidentquilnedoitcouterles
requtesetproposerdesadressesquesurlinterfacecorrespondante(192.168.200.1).Ladifficultvientdeceque
cetlmentdeconfigurationnesetrouvepasdans/etc/dhcpd.confmaisdans/etc/defaults/dhcp3server.

f.Visualisationdesbauxdhcp
LeserveurDHCPconserveuneinformationsurchacundesbauxallousdansunfichier dhcpd.leasessetrouvant
danslerpertoire/var/lib/dhcp/.
Cefichierestaccessiblelaconsultationmaisnedevraitpastremodifi.
Exempledefichierdhcpd.leases
NotezleshorairesderenouvellementetdexpirationdubailDHCP.
lease {
interface "eth0";
fixed-address 192.168.1.51;
option subnet-mask 255.255.255.0;
option routers 192.168.1.254;
option dhcp-lease-time 864000;
option dhcp-message-type 5;
option domain-name-servers 194.2.0.20,194.2.0.50;
option dhcp-server-identifier 192.168.1.1;
renew 6 2010/07/10 14:55:34;
rebind 3 2010/07/14 14:33:58;
expire 4 2010/07/15 20:33:58;
}

3.Configurationduclient
LacommandedhclientpermetauxstationsclientesdeffectuerlesrequtesDHCP.Silacommandenestpaslance
manuellement par un administrateur, elle est appele par les scripts dinitialisation rseau. Si la station client ne
possdepasdadresseIP,elleeffectuetouteslestapesdelaprocdurederequteDHCP.Danslecascontraire,
elledemandeauserveurunrenouvellementdebail. dhclientpeutgalementtreutilisepourlibreruneadresse
affecteprcdemmentparunserveurDHCP.
Exempledutilisationdedhclientpourrequriruneadresse
NotezlestapesdelaffectationdadresseDHCPDISCOVER,DHCPOFFER,DHCPREQUESTetDHCPACK.
root@serveur# dhclient eth1
Internet Systems Consortium DHCP Client V3.1.3
Copyright 2004-2009 Internet Systems Consortium.
All rights reserved.
For info, please visit https://www.isc.org/software/dhcp/
Listening on
Sending on
Sending on
DHCPDISCOVER
DHCPOFFER of
- 4-

LPF/eth1/00:22:68:98:8a:da
LPF/eth1/00:22:68:98:8a:da
Socket/fallback
on eth1 to 255.255.255.255 port 67 interval 8
172.18.142.243 from 172.18.142.225
ENI Editions - All rights reserved - Samuel CASAL

DHCPREQUEST of 172.18.142.243 on eth1 to 255.255.255.255 port 67


DHCPACK of 172.18.142.243 from 172.18.142.225
bound to 172.18.142.243 -- renewal in 49 seconds.
root@serveur#
ExempledelibrationdadresseIP
OnconstateunpaquetDHCPRELEASEenvoylexcutiondelacommande.
root@serveur# dhclient -r eth1
There is already a pid file /var/run/dhclient.pid with pid 2735
killed old client process, removed PID file
Internet Systems Consortium DHCP Client V3.1.3
Copyright 2004-2009 Internet Systems Consortium.
All rights reserved.
For info, please visit https://www.isc.org/software/dhcp/
Listening on LPF/eth1/00:22:68:98:8a:da
Sending on
LPF/eth1/00:22:68:98:8a:da
Sending on
Socket/fallback
DHCPRELEASE on eth1 to 172.18.142.225 port 67
root@serveur#

4.AgentrelaisDHCP
Les changes DHCP se faisant par broadcast et les broadcasts ne passant pas les routeurs, les requtes DHCP
comme les rponses des serveurs nont aucune action en dehors du rseau local. La solution simple consiste
videmmentmettreunserveurDHCPsurchacundessegmentsoilssontncessaires.Toutefois,sionnesouhaite
utiliserquunseulserveurpourplusieursrseaux,ilexisteunesolution:lesagentsrelaisDHCP.

a.PrincipedurelaisDHCP
Lintgralit de la configuration DHCP, comprenant la dclaration de tous les subnets et toutes les plages
dadresses, locaux ou distant, se trouvera sur un serveur DHCP unique. Une partie des clients en revanche se
trouverasurunsegmentethernetdiffrent.Pourquelescommunicationspuissentstablirentrelesclientsdistants
et le serveur, lagent relais DHCP qui se trouvera lui aussi sur le segment devra traiter les broadcasts reus, et
relayer la requte sous forme dunicast vers le serveur DHCP. Les unicasts pouvant passer les routeurs,
linformation arrivera bon port. Le serveur DHCP rpondra alors sous forme dunicast destination de lagent
relais,etlagentrelaisenverraunbroadcastquiserarcuprparlastationcliente.
LeclientDHCPnapasconsciencedetraiteravecunagentrelais,maispensequunserveurDHCPrelestprsent
sursonsegment.

ENI Editions - All rights reserved - Samuel CASAL

- 5-

b.Configurationdelagentderelais
Lagent de relais est lanc de faon interactive par la commande dhcrelay. Sur la plupart des distributions, cette
commande est appele depuis un script de lancement de service, et ses paramtres de fonctionnement sont lus
dansunfichierdeconfiguration.
Syntaxedelacommandedhcrelay
dhcrelay -i interface adresse_serveur

dhcrelay:optionsetparamtres

- 6-

iinterface

Facultatif.Spcifielinterfaceparlaquellelagentderelaisseralcouteduserveur
DHCPetdesrequtesdesclients.

adresse_serveur

LadresseIPduserveurauqueltransmettrelesrequtesDHCP.

ENI Editions - All rights reserved - Samuel CASAL

Validationdesacquis
Testezvosconnaissancesenrpondantauxquestionssuivantes.Cesquestionsnappellentpastoujoursdesrponses
dfinitives. Les questions poses en certification, bien quabordant les mmes sujets, seront pour la plupart poses
sous forme de questionnaire choix multiples, ou bien demanderont une rponse courte, tape en toutes lettres au
clavier.

1.Questions
1 QuellecommandepermetdelieruneadresseIPsecondaireuneinterface?
2 Siunemachineadeuxinterfacesrseau,fautilconfigurerunedeuximepasserellepardfaut?
3 Quelintrtyatilrenseignerlefichier/etc/ethersquiassociedesadressesMACdesadressesIPetle
faireprendreencompteparlacommandearpf?
4 DanslecadredelusagedesTCPWrappersetdudmontcpd,commentlesconflitsventuelsentrelefichier
hosts.denyetlefichierhosts.allowsontilsrsolus?
5 LacommandeifconfigrenvoietelledesinformationssuruneconnexionWiFi?
6 Pourquoiestilfrquentdutiliserleparamtrenaveclescommandesarp,route,ounetstat?
7 Siunfichierouvertempcheledmontagedunfilesystem,commentpeutontrouverlenomdufichieren
questionetlutilisateurquilaouvert?
8 Pourquelusagelabibliothquelogiciellelibpcapsestelleimpose?
9 LarequteDHCPdunclientestenvoyesousformedebroadcastcarleclientneconnatpasladressedu
serveurDHCP.Pourquoilarponseduserveursefaitellesousformedebroadcastgalement?
10 SiunserveurDNSestannoncdanslaconfigurationgnraledunserveurDHCP,etquunautreserveurDNS
estannoncdansunesectionsubnet,quel(s)serveur(s)DNSobtiennentlesclientsdusubnet?

2.Rponses
1 QuellecommandepermetdelieruneadresseIPsecondaireuneinterface?
Cest la commande ifconfig, qui selon les paramtres utiliss, peut affecter entre autres, ladresse IP principale, le
masquedesousrseau,ladresseMAC,etuneadresseIPsecondairesilebesoinsenfaitsentir.
2 Siunemachineadeuxinterfacesrseau,fautilconfigurerunedeuximepasserellepardfaut?
Surtout pas. Si on dfinit deux passerelles par dfaut dans les fichiers de configuration des interfaces, les scripts
dinitialisationdurseaulisentcesdeuxparamtreslunaprslautre,etneretiennentqueledernier.Detoutefaon,
commesonnomlindique,lapasserellepardfautestutiliseendernierressortquandladestinationsetrouvesurun
rseaudontonneconnatpaslaroute.Or,latablederoutageestuniqueetindpendantedesinterfaces:lapasserelle
pardfautdoitdonctreunparamtreuniqueetindpendantdesinterfaces.
3 Quelintrtyatilrenseignerlefichier/etc/ethersquiassociedesadressesMACdesadressesIPetle
faireprendreencompteparlacommandearpf?
Silefichier/etc/ethersestrenseignetexploit,lesystmeconnatlesassociationsentreslesadressesMACetles
adresses IP qui sy trouvent. En consquence, toute communication avec lesdites adresses IP peut se faire
directement sans passer par une requte ARP. Le bnfice est absolument minime, les requtes ARP tant rapides,
petitesetenvolumeinsignifiantesparrapportlensembledutrafic.Onpeutytrouverunintrtentermedescurit
danslamesureoonvitelesbroadcastsliscesrequtes,etoonestdoncplusdiscretsurlerseau.
4 DanslecadredelusagedesTCPWrappersetdudmontcpd,commentlesconflitsventuelsentrelefichier
hosts.denyetlefichierhosts.allowsontilsrsolus?
Enprincipe,unseuldecesfichiersdevraitexister.Sicesthosts.allow,seulsleshtesmentionnsdanslefichiersont
autoriss, et si cest hosts.deny, tous sont autoriss sauf ceux du fichier. En cas de conflit, la solution la plus
restrictiveestapplique,etlefichierhosts.denyestignor.
5 LacommandeifconfigrenvoietelledesinformationssuruneconnexionWiFi?
Pasvraiment.Lacommandeifconfigdonneradesinformationssurtouteslesinterfacesprsentessurunsystme,y
compris les interfaces WiFi. En revanche, elle ne fournit aucune information relative au fonctionnement sans fil :
SSID,laqualitdusignaletlencryptage.Lacommandeiwconfigenrevancheestparfaitementcomptente.Ellepermet
dafficherlesinformationsrelativesuneconnexionWiFi,etmmedelaconfigurer.
6 Pourquoiestilfrquentdutiliserleparamtrenaveclescommandesarp,route,ounetstat?
Parcequildispenselacommandedefaireunersolutiondenominverse:cescommandesrcuprentenprincipedes
donnesnumriquesbrutes(adressesIP,adressesMACetnumrodeports).Or,pourdesraisonscosmtiques,elles
ENI Editions - All rights reserved - Samuel CASAL

- 1-

affichent par dfaut les noms correspondant ces donnes numriques, notamment le nom DNS ventuellement
associ une adresse IP manipule. Mais sil nexiste aucun enregistrement DNS pour ladresse en question, la
commandeessaieratoutefoisdenfairelarsolution,etnabandonneraquautimeoutduresolverDNS.Donc,pourun
lment de confort incertain (il nest pas sr que lutilisateur prfre les noms aux adresses), la commande perd
plusieurs secondes essayer des rsolutions sans espoir. Lusage de loption n dispense la commande de ces
recherchesfastidieuses,etdiminuedoncnotablementletempsderponse.
7 Siunfichierouvertempcheledmontagedunfilesystem,commentpeutontrouverlenomdufichieren
questionetlutilisateurquilaouvert?
Aveclacommandelsof,quidonnelesfichiersouverts,lenometlenumroduprocessusresponsable,etlenomde
lutilisateurpropritaireduprocessus.
8 Pourquelusagelabibliothquelogiciellelibpcapsestelleimpose?
Pour la capture de trames. Les applications qui lutilisent sont nombreuses et on peut citer notamment tcpdump et
wireshark. Une bibliothque ouverte permet des logiciels diffrents dutiliser le mme format de donnes, on peut
doncutilisertcpdumppourcapturerunchangeentredeuxmachines,wiresharkpourlobserverendtail,etunlogiciel
danalysepourreprerlestracescaractristiquesdunvirusparexemple.
9 LarequteDHCPdunclientestenvoyesousformedebroadcastcarleclientneconnatpasladressedu
serveurDHCP.Pourquoilarponseduserveursefaitellesousformedebroadcastgalement?
Tout simplement parce que le client ne dispose pas encore dune adresse IP, et quune adresse de destinataire est
indispensablepourraliserununicast.
10 SiunserveurDNSestannoncdanslaconfigurationgnraledunserveurDHCP,etquunautreserveurDNS
estannoncdansunesectionsubnet,quel(s)serveur(s)DNSobtiennentlesclientsdusubnet?
Celuidusubnet.Lesparamtresgnrauxsontprvuspoursappliquertoutclient,saufinformationcontrairedans
unesectionplusprcise.

- 2-

ENI Editions - All rights reserved - Samuel CASAL

Travauxpratiques
1.ConfigurationdunserveurDHCPsurleserveuralpha
Lesstationsdetravailsemultiplientsurlerseau,etlagestiondesadressesIPdevientproblmatique.Vousdcidez
dinstallerunserveurDHCP.

a.ConfigurationduneadresseIPfixepourleserveuralpha
Commandesetfichiersutiles

/etc/network/interfaces

/etc/resolv.conf

ifdown

ifup

vi

Manipulations
1.

ConfigurezleserveuralphaavecuneadresseIPfixe.Ladressedoittrepermanenteet
treconserveaprsredmarrage.Danslesexercices,onutiliseraladresse
192.168.200.101.

2.

VrifiezqueleresolverexploiteunserveurDNSvalide.

3.

VrifiezqueladresseIPestbienpriseencompte.

4.

Vrifiezquelapasserellepardfautestbienpriseencompte.

Rsumdescommandesetrsultatlcran
Fichier/etc/network/interfacesmodifi :
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).
# The loopback network interface
auto lo
iface lo inet loopback
# The primary network interface
allow-hotplug eth0
iface eth0 inet static
address 192.168.200.101
netmask 255.255.255.0
network 192.168.200.0
broadcast 192.168.200.255
gateway 192.168.200.254
Priseencomptedelanouvelleconfiguration :
alpha:~# ifdown eth0
alpha:~# ifdup eth0
alpha:~#

ENI Editions - All rights reserved - Samuel CASAL

- 1-

Fichier/etc/resolv.conf :
nameserver 194.2.0.20
nameserver 194.2.0.50
VrificationdeladresseIP :
alpha:~# ifconfig eth0
eth0
Link encap:Ethernet HWaddr 08:00:27:d1:b6:8f
inet adr:192.168.200.101 Bcast:192.168.200.255 Masque:255.255.255.0
adr inet6: fe80::a00:27ff:fed1:b68f/64 Scope:Lien
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:681 errors:0 dropped:0 overruns:0 frame:0
TX packets:379 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 lg file transmission:1000
RX bytes:64675 (63.1 KiB) TX bytes:51934 (50.7 KiB)
Interruption:10 Adresse de base:0xd020
alpha:~#
Vrificationdelaroutepardfautpardeuxcommandesdiffrentes :
alpha:~# netstat -nr
Table de routage IP du noyau
Destination
Passerelle
192.168.200.0
0.0.0.0
0.0.0.0
192.168.200.254
alpha:~# route -n
Table de routage IP du noyau
Destination
Passerelle
192.168.200.0
0.0.0.0
0.0.0.0
192.168.200.254
alpha:~#

Genmask
255.255.255.0
0.0.0.0

Indic
U
UG

MSS Fentre irtt Iface


0 0
0 eth0
0 0
0 eth0

Genmask
255.255.255.0
0.0.0.0

Indic Metric Ref


U
0
0
UG
0
0

Use Iface
0 eth0
0 eth0

b.Installationdespaquetagesapplicatifs
Surleserveuralpha,installezleserviceDHCPparlacommandesuivante :
apt-get install dhcp3-server
Acceptezlesoptionspardfaut.Siledmarrageduservicechoue,pasdinquitude.Leschosesirontmieuxaprs
configuration.
Surlastationdetravail,installezlelogicieldecapturedetrameswiresharkparlacommandesuivante :
sudo apt-get install wireshark

c.Configurationduservice
Directivesutiles

option

range

subnet

Manipulations

- 2-

1.

Danslefichier/etc/dhcp3/dhcpd.conf,dclarezunrseaucorrespondantvotre
adressederseau(192.168.200.0/24).

2.

Auseindusubnet,dclarezuneplagedadressesallantde192.168.200.50
ENI Editions - All rights reserved - Samuel CASAL

192.168.200.99.
3.

Auseindusubnet,dclarez192.168.200.254commeadressedepasserellepar
dfaut.

4.

Auseindusubnet,dclarezvotreserveurDNSactif.

5.

Configurezladuredesbauxpardfaut24h.

Rsumdescommandesetrsultatlcran
Fichier/etc/dhcp3/dhcpd.confmodifi(cettesectiondoittreajouteaucontenudjprsentdufichier) :
default-lease-time 86400;
subnet 192.168.200.0 netmask 255.255.255.0 {
range 192.168.200.50 192.168.200.99;
option routers 192.168.200.254;
option domain-name-servers 192.168.200.254;
}

2.ExploitationduserviceDHCP
a.Configurationdelastationdetravail
LastationUbuntudoitdjtreconfigureentantqueclientDHCP.Pourredemanderexplicitementuneadresse
IP, il suffit de cliquer sur licne reprsentant le rseau dans la barre dcran suprieure. Un clic sur Auto eth0
provoqueraunedemandedebailDHCP.
Vrifiezensuitequelastationabienobtenuuneadresseetquecetteadresseprovientbienduserveuralpha.(Il
peuttrencessairededsactiverunventuelserveurDHCPdjactifsurlerseau)
Rsumdescommandesetrsultatlcran
toto@station:~$ ifconfig eth0
eth0
Link encap:Ethernet HWaddr 00:22:25:d7:97:e6
inet adr:192.168.200.50 Bcast:192.168.200.255 Masque:255.255.255.0
adr inet6: fe80::222:15ff:fed7:97e6/64 Scope:Lien
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
Packets reus:301626 erreurs:0 :0 overruns:0 frame:0
TX packets:186828 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 lg file transmission:1000
Octets reus:325369697 (325.3 MB) Octets transmis:18332970 (18.3 MB)
Interruption:26 Adresse de base:0x4000
toto@station:~$ cat /var/lib/dhcp3/dhclient.leases
lease {
interface "eth0";
fixed-address 192.168.200.20;
option subnet-mask 255.255.255.0;
option routers 192.168.200.254;
option dhcp-lease-time 864000;
option dhcp-message-type 5;
option domain-name-servers 212.27.40.241,212.27.40.240;
option dhcp-server-identifier 192.168.200.254;
renew 6 2010/07/10 14:55:34;
rebind 3 2010/07/14 14:33:58;
expire 4 2010/07/15 20:33:58;
}
toto@station:~$

b.RservationduneadresseIPpouruneimprimante
La configuration de limprimante de lentreprise nest pas aise et de ce point de vue, le serveur DHCP sera le
bienvenu. Toutefois, pour des raisons videntes de confort dadministration, cette imprimante doit
systmatiquementobtenirlammeadresseIP.VousdcidezdoncderserveruneadresseIPpourlimprimante.
ENI Editions - All rights reserved - Samuel CASAL

- 3-

Directivesutiles

fixedaddress

hardware

host

option

Manipulations
1.

Danslefichier/etc/dhcp3/dhcpd.conf,dclarezunhtecorrespondantvotre
imprimante.

2.

Danslasectionhte,dclarezladresseMACdelimprimante.

3.

Danslasectionhte,dclarezladresseIP192.168.200.11pourlimprimante.

4.

Danslasectionhte,dclarezlapasserellepardfaut.

Extraitdufichierdhcpd.confaprsconfiguration
host printer1 {
hardware ethernet 00:12:34:56:78:9A;
fixed-ip-address 192.168.200.11;
option routers 192.168.200.254;
}

c.Capturedepaquetsdepuislastationdetravail:changesDHCP
Votre curiosit naturelle vous pousse regarder de plus prs les changes DHCP entre la station et le serveur.
Vousutiliserezpourcelalesoutilsstandarddecapturedetramestcpdumpetwireshark.
Commandesutiles

dhclient

tcpdump

wireshark

Manipulations
LesmanipulationssontralisersurlastationdetravailUbuntu.

- 4-

1.

Depuisunterminal,librezladresseIPprcdemmentobtenue.

2.

Depuisunautreterminal,capturezlespaquetschangssurlinterfaceeth0etsurles
ports67et68(changesDHCP).Utilisezlacommandetcpdumpaveclesprivilges
administrateur.

3.

Depuislepremierterminal,provoquezunerequteDHCP.

4.

Constatezlersultatlcrangrcelasortiestandarddelacommandetcpdump.

5.

Renouvelezlopration,maiscettefois,envoyezlersultatversunfichierdhcp.cap.

6.

Ouvrezcefichieravecwireshark.

7.

Observezlersultatdelacapture.

ENI Editions - All rights reserved - Samuel CASAL

Rsumdescommandesetrsultatlcran
Terminal1LibrationdeladresseIP :
toto@station:~$ sudo dhclient -r eth0
There is already a pid file /var/run/dhclient.pid with pid 1998
killed old client process, removed PID file
Internet Systems Consortium DHCP Client V3.1.2
Copyright 2004-2008 Internet Systems Consortium.
All rights reserved.
For info, please visit http://www.isc.org/sw/dhcp/
Listening on LPF/eth0/08:00:27:7b:c8:79
Sending on
LPF/eth0/08:00:27:7b:c8:79
Sending on
Socket/fallback
DHCPRELEASE on eth0 to 192.168.200.254 port 67
toto@ubuntu:~$ ifconfig eth0
eth0
Link encap:Ethernet HWaddr 08:00:27:7b:c8:79
adr inet6: fe80::a00:27ff:fe7b:c879/64 Scope:Lien
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
Packets reus:24315 erreurs:0 :0 overruns:0 frame:0
TX packets:6943 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 lg file transmission:1000
Octets reus:24613918 (24.6 MB) Octets transmis:482889 (482.8 KB)
Interruption:10 Adresse de base:0xd020
toto@station:~$
Terminal2Captureavectcpdump :
toto@station:~$ sudo tcpdump -i eth0 -n port 67 and port 68
tcpdump: WARNING: eth0: no IPv4 address assigned
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eth0, link-type EN10MB (Ethernet), capture size 96 bytes
toto@station:~$
Terminal1RequteDHCP :
toto@station:~$ sudo dhclient eth0
Internet Systems Consortium DHCP Client V3.1.2
Copyright 2004-2008 Internet Systems Consortium.
All rights reserved.
For info, please visit http://www.isc.org/sw/dhcp/
Listening on LPF/eth0/08:00:27:7b:c8:79
Sending on
LPF/eth0/08:00:27:7b:c8:79
Sending on
Socket/fallback
DHCPDISCOVER on eth0 to 255.255.255.255 port 67 interval 5
DHCPOFFER of 192.168.200.102 from 192.168.200.254
DHCPREQUEST of 192.168.200.102 on eth0 to 255.255.255.255 port 67
DHCPACK of 192.168.200.102 from 192.168.200.254
bound to 192.168.200.102 -- renewal in 329015 seconds.
toto@station:~$
Terminal2Rsultatdetcpdump :
(...)
12:06:59.003789 IP 0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP,
Request from 08:00:27:7b:c8:79, length 300
12:06:59.008562 IP 192.168.200.254.67 > 192.168.200.102.68: BOOTP/DHCP,
Reply, length 548
12:06:59.051798 IP 0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP,
Request from 08:00:27:7b:c8:79, length 300
12:06:59.056980 IP 192.168.200.254.67 > 192.168.200.102.68: BOOTP/DHCP,
Reply, length 548
12:06:59.842693 IP 192.168.200.101.67 > 192.168.200.50.68: BOOTP/DHCP,
Reply, length 300
[ Ctrl - C ]
5 packets captured
6 packets received by filter
ENI Editions - All rights reserved - Samuel CASAL

- 5-

0 packets dropped by kernel


toto@station:~$
Terminal1LibrationdeladresseIP :
toto@station:~$ sudo dhclient -r eth0
(...)
toto@station:~$
Terminal2Captureavectcpdumpetrsultatdansunficher :
toto@station:~$ sudo tcpdump -w dhcp.cap -i eth0 -n port 67 or port 68
tcpdump: listening on eth0, link-type EN10MB (Ethernet), capture size 96 bytes
[ Ctrl - C ]
toto@station:~$
Terminal1RequteDHCP :
toto@station:~$ sudo dhclient eth0
(...)
toto@station:~$
Observationdeschangesavecwireshark.

- 6-

ENI Editions - All rights reserved - Samuel CASAL

Prrequisetobjectifs
1.Prrequis
LesconnaissancesacquiseslorsdelacertificationLPIniveau1,notamment:

Connatrelastructuredufichier/etc/passwd.
Connatrelexistenceetleprincipedufichierhosts.

2.Objectifs
lafindecechapitre,vousserezenmesurede:

InterprteruneconfigurationNSS.
ComprendrelauthentificationmodulairePAM.
ConnatrelesprincipauxmodulesPAM.
ModifierlaconfigurationPAMpourpermettreunchangementdumodedauthentification.
ConnatreleformatdefichierLDIF.
InterrogerunannuaireLDAP.
GrerlesmotsdepassedansunannuaireOpenLDAP
AjouteroumodifierdeslmentsdunannuaireOpenLDAP.
ConfigurerlauthentificationdunsystmeLinuxsurunannuaireOpenLDAP.

ENI Editions - All rights reserved - Samuel CASAL

- 1-

volutiondelauthentification
1.LespremierssystmesUnixetlefichierpasswd
a.Motsdepassedanslefichier/etc/passwd
Depuisledbutdeleurexistence,lessystmesUnixutilisentlefichier /etc/passwdcommebasedecomptesdes
utilisateurs. Ce fichier est utilis naturellement pour les ouvertures de session sur le systme. Comme son nom
lindique encore, il contenait en plus des identifiants utilisateurs leurs mots de passe crypts. Si des lments
logiciels autres que louverture de session ont besoin des informations de compte (connexion ftp, ouverture de
sessiondistante,etc.),ilsvontgalementconsultercefichier.Danscettesituationoriginellesimple,onaaffaire
une base de compte unique et des applications multiples qui exploitent cette base de compte. Toutes les
applicationsdoiventreconnatreleformatdecettebasedinformation.

b.Motsdepassedanslefichier/etc/shadow
Aveclvolutiondestechniquesdattaquesdesmotsdepasse,lebesoinestvenudeplacerlesmotsdepassedans
un fichier non accessible aux utilisateurs ordinaires. Ils sont alors stocks dans un fichier/etc/shadow ferm aux
utilisateurs. Les paramtres dauthentification avec shadow sont grs par un fichier /etc/login.defs. Les
paramtresprsentspardfautdanscefichiersontengnralsatisfaisants.
Gestiondeserreursdauthentificationdanslefichierlogin.defs
Parmilesnombreuxparamtresdufichierlogin.defs,ceuxconcernantleloginsontlesplusfrquemmentmodifis.
toto@ubuntu:~$ grep LOGIN /etc/login.defs
LOGIN_RETRIES
5
LOGIN_TIMEOUT
60
toto@ubuntu:~$

2.Dautresbasesdinformations
Pourlaconsultationdeslmentsdidentification,lasituationsestcompliquequandilafalluintgrerdautresbases
decomptes,diffrentesdufichierpasswdetsurtoutpluscomplexes.Cesbasesdidentitssontsouventcentralises,
commecestlecaspourNIS(NetworkInformationServer)ouLDAP(LeightweightDirectoryAccessProtocol).Lapremire
solution envisage fut naturellement de rcrire les programmes qui exploitaient initialement le fichier/etc/passwd
afinquilssoientcapablesdeconsulterlesbasescentralisessurlerseau.Cettemthodemanquaitcruellementde
souplesse, puisquelle obligeait reprendre beaucoup de programmes en profondeur chaque fois quune
modificationtaitapporteaumodedestockagedesbasescentralises.

3.NSS
NSS(NameServiceSwitch)estunepremirerponselamultiplicitdesbasesdinformationlocalesoucentralises.
NSSapourobjetdenormaliserlarsolutiondenomauseindunsystme.NSSpermetdersoudreunnomenune
autre information associe, comme par exemple un nom dutilisateur et son uid, un nom de groupe et son gid, ou
encoreunnomdhteetsonadresseIP.
DansunfonctionnementNSS,unfichier/etc/nsswitch.confdterminepourdiffrentstypesdersolutionslasource
dinformationprivilgier,etlesapplicationsayantbesoindecesinformationsvontconsulterlessourcesdanslordre
impos par le fichier nsswitch.conf. La rsolution sappuie alors sur des bibliothques NSS (libnss_X.so o X
reprsenteleservicedersolutionemploy),etlesapplicationsnontpasbesoindeconnatredirectementlamthode
dersolutionemploye.
Formatdufichiernsswitch.conf
rsolution: source_1 source_n

nsswitch.conf:formatdufichier

ENI Editions - All rights reserved - Samuel CASAL

- 1-

rsolution

Letypedersolutioneffectuer.

source_1

Obligatoire.Lapremiresourcedersolutionemployer.

source_n

Facultatif.Laoulesautressourcesdersolutionpossiblesutiliseraprslapremire.

Exempledefichiernsswitch.conf
Onvoitdanscetexemplequelesrsolutionsdetypepasswd,groupetshadowferontleurrsolutiongrcelabibliothque
libnss_compat.so,alorsquelarsolutiondenomsdhtesseferaparlesbibliothqueslibnss_files.soetlibnss_dns.so.Ce
quiveutdirequeleslmentsdidentificationdesutilisateursseront trouvsdanslesfichierslocauxde/etc,alorsquela
rsolutiondenomsdhtessappuieradabordsurlefichierlocal(/etc/hosts)avantdesereportersurunservicedns.
passwd:
group:
shadow:

compat
compat
compat

hosts:
networks:

files dns
files

protocols:
services:
ethers:
rpc:

db
db
db
db

netgroup:

nis

files
files
files
files

Sur un systme Linux moderne, NSS nest plus utilis que pour des oprations didentification, cestdire
trouverdesinformationssuruneidentit.Toutcequirelvedelauthentificationestdvoluunmcanisme
pluslabor:PAM.

4.Modulesdauthentification
Si NSS reprsente dj un progrs par rapport aux fichiers statiques utiliss dans les premiers temps, la rvolution
viendra avec PAM (Pluggable Authentication Module). PAM est un mcanisme complmentaire de NSS qui assure une
authentificationsurmesureparlexcutiondemodulesauchoixdeladministrateur.
Lors dune ouverture de session Linux, lutilisateur va prsenter un identifiant et un mot de passe. Grce la
rsolutionNSS,onendduiralesidentifiantsuid/gid,ainsiquelesautresparamtresncessaires(datedexpiration,
etc.). PAM de son ct va en fonction de sa configuration excuter des modules pour assurer lauthentificationmais
aussiventuellementpoureffectuercertainestcheslieslouverturedesession,commeladfinitiondevariables
parexemple.

- 2-

ENI Editions - All rights reserved - Samuel CASAL

PAM
1.Leprincipe
PAMsepositionneeninterfaceentrelesapplicationsetlesmthodesdauthentification.

Le principal objectif de PAM est de proposer une couche dabstraction entre les applications et les mthodes
dauthentification.Ainsi,uneapplicationquiseveutsoupleetvolutivequantauxmthodesdauthentificationquelle
emploienauradautrebesoinquedtrecompatibleavecPAM.Celasignifiequelledevratrecapabledesadresser
lacouchedauthentificationPAM,etlerestenelaregardepas.Enparallle,lesprocdsdauthentificationquelsquils
soient,doiventtreexploitablesparlamcaniquePAM.
UneapplicationdemandePAMsiunutilisateurpeutseconnecter.PAMenfonctiondesaconfiguration,appelledes
modulesfonctionnelsquivontexploiterunemthodedauthentification.Silersultatestpositif(lutilisateur a fourni
lesbonslmentsdauthentification),PAMrenvoielautorisationdeconnexionlapplication.
PAM a un autre avantage. Nous venons de voir que la demande dauthentification entrainait le chargement de
modules.Ilsetrouvequelenombredecesmodulesnestpaslimitetquilspeuventtrecumuls.Ilestdonctout
faitpossiblededemanderunedoubleauthentificationselondeuxmthodesdiffrentes.Deplus,onpeutprofiterdela
squence dauthentification sous PAM pour provoquer le chargement de bibliothques sans rapport avec
lauthentification.Denombreusesactionspeuventdonctregresdslauthentificationrussie.
En rsum : lors de la demande dauthentification, des modules PAM sont chargs en fonction dun fichier de
configuration,etcesmodulesprovoquentcertainesactions,relevantdelauthentificationproprementditeoudautres
actions.

2.LesmodulesPAM
a.LesprincipauxmodulesPAM
LesmodulesPAM,appelslorsdesoprationsdauthentificationsontnombreuxetdusagesvaris.Certainsdentre
eux sont nanmoins rencontrs trs frquemment et leur existence est connatre. Dautres sont plus ou moins
frquentsselonlesdistributions,maisconnatreleurfonctionnementetleursobjectifspermetdemieuxcomprendre
lamcaniqueetlaphilosophiedePAM.
Cesmodulessontdansdesfichiersdontlemplacementnormalisest/lib/security.
PrincipauxmodulesPAM

ENI Editions - All rights reserved - Samuel CASAL

- 1-

pam_securetty.so

Interditleloginparlecompterootexceptsurlesterminauxlists
dans/etc/securetty.

pam_nologin.so

Silefichier/etc/nologinexiste,affichesoncontenutoutetentativedouverturede
sessionetinterditlelogintoutautrequeroot.

pam_env.so

Dclaredesvariablesdenvironnementluesdans/etc/environnementoudansle
fichierdonnenrfrenceparleparamtreenvfile=.

pam_unix.so

Permetlauthentificationparlamthodetraditionnelledesfichiers/etc/passwd
et/etc/shadow.

pam_deny.so

Voiedegarage.Estgnralementexcutsiaucunautremodulenestexcutavec
succs.

pam_permit.so

Renvoieunretourpositifinconditionnellement.

pam_limits.so

Affectecertaineslimitationsfonctionnellesdesutilisateursoudesgroupesen
fonctiondesdonnesdufichier/etc/security/limits.conf.

pam_cracklib.so

Sassurequelemotdepasseemployprsenteunniveaudescuritsuffisant.

pam_selinux.so

Siselinuxestactivsurlesystme,cemodulevasassurerqueleshellserabien
excutdanslecontextedescuritadquat.

pam_lastlog.so

Affichelesinformationssurladernireouverturedesessionrussie.

pam_mail.so

Vrifielaprsencedenouveauxmailspourunutilisateur(messagerieinterne).

b.Fonctionnementenpilesdemodules

Pour une action donne, lauthentification par exemple, plusieurs modules PAM peuvent tre appels. On dit alors
quonaaffaireunepiledemodulePAM.LefonctionnementenpileestundesapportsmajeursdesservicesPAM.

- 2-

ENI Editions - All rights reserved - Samuel CASAL

3.ConfigurationdePAM
a.Structuredesfichiersdeconfiguration
LespremiresversionsdePAMtrouvaientleurconfigurationdansunfichier/etc/pam.conf.Lagrandecomplexitde
PAM a rapidement rendu ncessaire une structure plus modulaire pour les lments de configuration. La quasi
totalit des implmentations actuelles exploite donc un rpertoire /etc/pam.d contenant autant de fichiers que
dapplicationsexploitantPAM.Silerpertoire/etc/pam.dexiste,lefichier/etc/pam.confnestpasconsult.
Chaque application sappuyant sur PAM aura besoin dun fichier (en gnral du mme nom que lapplication) qui
contiendrasaconfigurationPAM.
Formatdunfichierde/etc/pam.d
Le fichier contiendra autant de lignes quon souhaite appeler de modules avec pour chaque ligne la structure
suivante :
type contrle module arguments

Fichierdepam.d:formatstandard
type

ReprsenteletypedactionquincessitelerecoursPAM.Lesquatrevaleurspossibles
sont:auth,account,passwordetsession.

contrle

Indiquecommentlemoduledoitragirausuccsoulchecdesonexcution.Les
valeurscourantessontrequired,requisite,sufficientetoptional.

module

Lenomdumoduleappel.Leformatnormalisest:pam_service.so.Oservice
reprsentelenomcourantdumodule.

arguments

Paramtresoptionnelsenvoysaumodulepourmodifiersonfonctionnement.

Les valeurs possibles de type et de contrle seront expliques plus loin, mais nous avons dj la possibilit de
comprendrelastructuredufichierdeconfiguration.Danslextraitcidessous,onvoitquelaligneneconcernequeles
oprationsdauthentification(auth),quelexcutiondumoduleestobligatoire(required),quelemoduleexploitela
mthodedauthentificationtraditionnelleunix,cestdirelesfichierspasswdetshadow(pam_unix.so),etenfinque
cemoduledoitaccepteruneauthentificationfaiteavecunmotdepassevide(nullok).Notezqueleparamtrenullok
estspcifiqueaumodule,etquechaquemodulesupporteratouslesparamtresvoulusparsondveloppeur.
Extraitdunfichierdeconfigurationpampourlapplicationlogin
Dans cet exemple, il est question dauthentification (auth), lexcution du module est obligatoire (required), le module
exploite le fichier des mots de passe historique (pam_unix.so). Enfin, lutilisationdun mot de passe vide est autorise
commeindiquparlargument(nullok).
auth required pam_unix.so

nullok

b.LestypesdactiondePAM
ChaquelignedunfichierdeconfigurationPAMdoitcommencerparlundesquatremotsclsquidterminedansquel
typedactionlemoduleestcomptent.

auth : lactivit dauthentification proprement dite. Les modules appels avec laction auth sont excuts
pouroupendantlauthentification.

account:accsdesinformationsdescomptesautresqueleslmentsdauthentificationsproprementdits.

session:actionsraliseravantouaprslouverturedesession.

password:gestiondesmotsdepasse.

ENI Editions - All rights reserved - Samuel CASAL

- 3-

Extraitdufichierdeconfigurationpampourlapplicationlogin
Cetexemple,extraittrsallgdunfichierloginstandardillustrebienleconceptdepileaussibienquelanaturemodulaire
dePAM.
Onytrouvedaborddeuxmodulesappelspourlauthentification:pam_securettyprofitedelauthentificationpourvrifier
que le compte nest pas celui du superutilisateur, et pam_unix, qui ralise lauthentification proprement dite partir du
fichier/etc/passwd.
Le mme module pam_unix est aussi dclar sous le type account. Si des applications compatibles PAM ont besoin
dinformationssurdescomptesdutilisateurs,ellesaurontbesoindumodulepam_unixsousletypeaccount.
Le module pam_env est appel sous le type session, cela assure son excution (et donc la dclaration de variables) au
seindelasessionutilisateur.
Lemodulepam_cracklibestappelsousletypepassword.SiuneapplicationdegestiondemotsdepassecompatiblePAM
souhaitemodifierunmotdepasse,elledevraenpasserparlecontrledecomplexiteffectuparlemodulecracklib.
auth
auth
account
session
password

required
required
required
required
required

pam_securetty.so
pam_unix.so
pam_unix.so
pam_env.so readenv=1 envfile=/etc/default/locale
pam_cracklib.so retry=3 minlen=6

c.Lescomportementsdesmodules
Lesmodulesvonttreappelsavecuncontrol_flag(marqueurdecontrle)quivadterminerlecomportement
surchecourussitedumodule.
Cetlmentobligatoireestledeuximechampsurlalignedeconfiguration.

required : le module doit obligatoirement renvoyer un succs. Si un module dauthentification est required,
sonchecempchelouverturedesession.Lesautresmodulesdelapilesontnanmoinsexcuts.
requisite:lemoduledoitobligatoirementrenvoyerunsuccs.Siunmoduledauthentificationestrequisite,
sonchecempchelelouverturedesession.Lesautresmodulesdelapilenesontpasexcuts.
sufficient : si le module est excut avec succs et si aucun module required ou requisite na chou, les
autresmodulesdelapilesontignors.
optional:lemodulepeutrussirouchouersansinfluencerlerestedelapile.Cestdirequesiunmodule
optionalchoue,etquunmodulerequireddelammepilerussit,alorslersultatglobaldelexcutionde
lapileestpositif.

ExemplesdefichiersdeconfigurationPAM
ObservonsicideuxfichiersPAM,lungdmgrantlouverturedesessiongraphiquesousenvironnementGnome,etlautre
gdmautologin assurant louverture automatique sans mot de passe de la session graphique. Les diffrences entre ces
deux modes de fonctionnement portant sur lauthentification de lutilisateur, nous ne nous intresserons dans cet
exemplequauxmodulesdclarssousletypeauth.
Lespremiersmoduleschargs,pam_nologinetpam_envsontcommunsauxdeuxfichiers.Pourmmoire,pam_nologin
interditlaconnexiondesutilisateursordinairessilefichier/etc/nologinexisteetatrenseignparladministrateur,et
pam_envdfinitdiversesvariablesaumomentdelauthentification.
Le fichier gdm inclut ensuite le sousfichier commonauth qui va appeler les lments dauthentification voulus sur ce
systme (au minimum pam_unix pour lauthentification traditionnelle), puis charge le module pam_gnome_keyring qui
permettra des utilisateurs dment authentifis sous Gnome daccder certaines fonctionnalits qui ncessiteraient
normalementunerauthentification.
Lefichiergdmautologinenrevanchenechargeplusquunmodule:pam_permitquirenvoieunrsultatpositifdanstous
les cas, dont lexcution est obligatoire (le module est required), et qui va donc autoriser louverture de session
inconditionnellement.
LefichierdeconfigurationpampourlouverturedesessionmanuelleGnome:gdm

- 4-

ENI Editions - All rights reserved - Samuel CASAL

auth
requisite
pam_nologin.so
auth
required
pam_env.so readenv=1
auth
required
pam_env.so readenv=1 envfile=/etc/default/locale
@include common-auth
auth
optional
pam_gnome_keyring.so
@include common-account
session [success=ok ignore=ignore module_unknown=ignore default=bad] pam_selinux.so close
session required
pam_limits.so
@include common-session
session [success=ok ignore=ignore module_unknown=ignore default=bad] pam_selinux.so open
session optional
pam_gnome_keyring.so auto_start
@include common-password
LefichierdeconfigurationpampourlouverturedesessionautomatiqueGnome:gdmautologin
auth
requisite
pam_nologin.so
auth
required
pam_env.so readenv=1
auth
required
pam_env.so readenv=1 envfile=/etc/default/locale
auth
required
pam_permit.so
@include common-account
session [success=ok ignore=ignore module_unknown=ignore default=bad] pam_selinux.so close
session required
pam_limits.so
@include common-session
session [success=ok ignore=ignore module_unknown=ignore default=bad] pam_selinux.so open
@include common-password

ENI Editions - All rights reserved - Samuel CASAL

- 5-

LDAP
1.Gnralits
a.Lesannuaires
En 1990, lITU (International Telecommunication Union) propose une norme de structuration des annuaires
lectroniques.Cettenorme,visantproposertouslesdveloppeursquiysouscriventuncadredefonctionnement
etderfrencementcommunportelenomdeX500.
Lespremierslogicielsexploitercettenormefurentnaturellementlesmessagerieslectroniques.LaNDS(Netware
Directory Services) clbre en son temps, fut le premier usage marquant des technologies dannuaires X500 au
service dun systme dexploitation rseau. Les annuaires sont aujourdhui largement rpandus, soit au sein du
systmedexploitationrseau(lActiveDirectorydeMicrosoft),soitsousformedannuaireneutre,ladisposition
dautresapplications.Onparlealorsdannuairespagesblanches .

b.Structureetterminologie

Les annuaires lectroniques X500 prsentent des caractristiques de structure communes. Les annuaires sont
hirarchiss,etontforcmentunpointdoriginegnralementappelRoot.Toutlmentdelannuaireestappel
objet certains lments sont structurants et dautres strictement informatifs. Les lments structurants sont
appelsconteneursetsontdetypesdiverscommelorganisation,ledomaineouencorelunitorganisationnelle.
Toutobjetdelannuairerenfermeensonseindesinformationsdeformatsdivers.Cesinformationssontappeles
attributsdelobjet.

c.Schma
Lesannuairessontlorigineprvuspourstockeretgrerdesidentits,etonytrouveranaturellementdesobjets
reprsentant des personnes, et des attributs permettant didentifier et de dfinir la personne, comme le nom, le
prnom,letlphoneetladressedemessagerie.Lensembledestypesdobjetspossiblesdanslannuaire,etpour
chaqueobjetlensembledesattributsutilisablesestdfinidansleschmadelannuaire.

ENI Editions - All rights reserved - Samuel CASAL

- 1-

Toutefois,ilestnaturelpourunditeurouunutilisateurdevouloirstockerdanssonannuairedesinformationsde
nature particulire pour les besoins propres de ses applications. Si le schma dorigine ne le permet pas, on peut
alors raliser une extension de schma. Lextension de schma consiste dfinir pour un annuaire de nouveaux
typesdobjets,oudenouveauxattributspouruntypedobjetexistant.Parexemple,siuneentreprisedisposedun
annuairerecensantlensembledesonpersonnel,etqueleditpersonneldoitporterdeschaussuresdescurit,on
auraintrttendreleschmapourajouterauxobjetsutilisateurlattributpointurepluttquedegrerune
listeplusoumoinsjoursuruntableur.
Letypedechaqueobjet(unitorganisationnelle,utilisateur,groupe,etc.)estappelclasse.Uneclassedobjetsse
dfinitparlensembledesattributsquilacompose.Parmicesattributs,unaurauneimportanceparticuliredansla
dnominationdelobjet,cestleCN(CommonName).

d.LeprotocoleLDAP
LanormeX500neprvoyantpasloriginedeprotocoledinterrogationdesannuaires,unepropositiondeprotocole
atfaiteen1993parluniversitduMichiganpouruncrerunprotocolequi,fonctionnantsurTCP/IP,assurerait
desrequtessimplesunannuaireX500:ctaitlanaissancedeLDAP(LeightweightDirectoryAccessProtocol).Les
annuaires X500 en place durent donc implmenter une couche serveur pour le protocole LDAP afin de pouvoir
rpondreauxrequtesdesclientsexploitantcenouveauprotocole.
Rapidement, le succs du protocole LDAP fut tel quon oublia le rle fondateur de X500 pour ne plus parler que
dannuairesLDAP.EtonparleaujourdhuidannuaireLDAPpourtoutannuairecapablederpondredesrequtes
LDAP.LeslmentsdestructureetdednominationsX500ontnanmoinsperduretonparletoujoursdobjets,de
conteneursetdeschma.

e.Dsignationdesobjets
Nous avons vu que les objets de lannuaire sinsraient dans une arborescence. Pour une dsignation sans
ambigut des objets dans un annuaire, il existe une notation formelle qui reprend la position de lobjet dans
larborescencedelannuaire,ainsiquesontype.CettenotationestleDN(DistinguishedName).

Formattypedunnomdistinctif
classe1=nom_objet1,classe2=nom_objet2,...,classen=nom_objetn
O les paramtres classex reprsentent la classe de lobjet dcrit (cn, ou, uid, etc.), et les paramtres objetsx

- 2-

ENI Editions - All rights reserved - Samuel CASAL

reprsententlesnomsdesobjetsdcrits.
Le nom distinctif reprend toute larborescence de lobjet rfrenc jusqu la racine de lannuaire, chaque
changement de niveau tant reprsent par des virgules. Pour chaque objet cit, la classe de cet objet est
obligatoirementmentionne.
Le nom distinctif sera employ pour dsigner un objet de lannuaire, et son utilisation sera obligatoire pour les
oprationsdauthentification.

f.AuthentificationauprsdunannuaireLDAP
Lesannuairesgrentleurproprescurit.Sisouventlesrequtesanonymessontautorisespourdesconsultations
enlecture,ilfaudrasauthentifierauprsdelannuairepourlesoprationsdcriture.Cetteauthentificationsefaiten
fournissant le nom distinctif et le mot de passe dun compte de lannuaire ayant les droits ncessaires sur les
lmentsgrer.EnterminologieLDAP,onparledebind(liaison)pourlauthentification.

g.LeformatLDIF
LDIF(LDAPDataInterchangeFormatFormatdchangedesdonnesLDAP)apourobjetdepermettrelexportationou
limportationdesdonnesdepuisouversunannuaireLDAP.LDIFdcritunformatdefichiertextequicontienttout
ou partie des donnes dun annuaire LDAP. On peut y mentionner lintgralit des objets et de leurs attributs, ou
seulementuneslection.LeformatLDIFestemploypardenombreuxutilitairesLDAP.
FormattypeduneentredefichierLDIF
dn: nom_distinctif
attribut1: valeur1
attribut2: valeur2
...
attributn: valeurn

IlesttentantdeconsidrerLDIFcommeunformatprivilgipourchangerdesdonnesdunannuairevers
unautre,encasdemigrationoudchangesdedonnes.Enfait,lesfichiersLDIFdcriventlesobjetsdun
annuaire conformment son schma, et il est bien rare que deux annuaires diffrents prsentent
rigoureusementlemmeschma.Pourcesraisons,leformatLDIFnestengnralutilisquepourmanipulerles
donnesdun mme annuaire, dans le cas dune sauvegarde par exemple. Les solutions de mtaannuairesqui
permettentcetypedesynchronisationexploitentgnralementunformatplusouvertcommeleformatXML.

2.LeserveurOpenLDAP
OpenLDAPestlimplmentationdeserveurLDAPopensourcelapluscourantesurlessystmesLinux.Siellemanque
cruellementdeconvivialitparrapportsesquivalentscommerciaux,ellenenestpasmoinsrpanduedanstoutes
sortes dimplmentation qui vont de la centralisation de lauthentification la gestion de comptes et carnets
dadressespourlesmessageries.

a.GestionduService
Leserviceopenldapestgrparunscriptnormalisdanslerpertoire/etc/init.d.Sonnomestvariableetdpend
deladistribution.LambigutvientdufaitqueleprotocoleapplicatifestLDAP,alorsquelenomdelexcutableest
slapdetlenomduproduitapplicatifopenldap.

b.Configuration
DansunfonctionnementstandardtelqueprvupourlacertificationLPI,laconfigurationinitialenereprsentepas
untravailconsidrable.Ilsagitsurtoutdavoiruncontextedebase:unesortedepointdedpartdelarborescence
dans lequel se trouveront tous les objets crs dans lannuaire. La configuration se trouve dans un fichier
slapd.conf, gnralement situ dans le rpertoire /etc/ldap ou /etc/openldap. Ce fichier comprend aussi la
dclarationdeladministrateurdelannuaireainsiquesonmotdepasse.
Dclarationducontextedebasedanslefichierslapd.conf
suffix

"dc=domaine"
ENI Editions - All rights reserved - Samuel CASAL

- 3-

O domaine reprsente le contexte principal de larborescence. Cette valeur est frquemment renseigne lors de
linstallationparlesscriptsdepostinstallationdespaquetages.Ilestpossiblepourunannuaireopenldapdegrer
plusieursarborescences.
Dclarationducompteadministrateurdanslefichierslapd.conf
rootdn

"cn=compte_admin,dc=domaine"

O compte_admin reprsente le compte administrateur de lannuaire. Attention, contrairement dautres


implmentationsLDAP,ilnestpasobligatoirequelecompteadministrateursoitaussiunobjetdelannuaire.
Dclarationdumotdepasseadministrateurdanslefichierslapd.conf
rootpw {format_cryptage}mot_de_passe_crypt
O format_cryptage reprsente lalgorithme de hachage utilis pour crypter le mot de passe (SHA1, MD5, crypt, ou
texteclair).
Pour simplifier la saisie du mot de passe, la commande slappasswd permet de gnrer la chane de caractres
constituedumodedecryptageetdumotdepassecrypt,directementinsrabledansslapd.conf.
Exempledutilisationdelacommandeslappasswd
La commande slappasswd envoyant son rsultat sur la sortie standard, il faut ruser un peu pour lintgrer au fichier
slapd.conf.
[root@beta openldap]# slappasswd -s motdepasse
{SSHA}oW6wu+yUpFnaB6tg+4cMWnAa8OmDXV62
[root@beta openldap]# echo "rootpw $(slappasswd -s motdepasse)" >> slapd.conf
[root@beta openldap]#
cestade,lannuaireestfonctionnelaprsredmarrageduservice,maisvide.Ilrestelalimenteraveclesclients
LDAP.

3.LesoutilsclientsLDAP
On dispose pour Linux doutils en ligne de commande permettant de raliser des oprations sur les serveurs LDAP.
Cesoutilssontgnralementfournisdansunpaquetageapplicatifappelldaputils.Leursyntaxepeuengageante
impliqueunpetittempsdadaptationpourlesexploiterconfortablement.

a.Recherchedinformationsavecldapsearch
Sans doute le plus couramment utilis des outils clients en ligne de commande LDAP. La commande ldapsearch
permetdeffectuerdesrequtessurunannuaireLDAPetdercuprerlersultatauformatLDIF.
Le cas le plus simple consiste demander localement (directement sur le serveur) lexport total de toutes les
informationsdunannuaireetonutilisesouventcettepossibilitpourvrifierlaprsencedunobjetousimplement
quelannuairerpondbienauxrequtes.
Syntaxedelacommandeldapsearchpourexportertouteslesinformationspubliquesdunannuaire
ldapsearch -x -b contexte

Exportavecldapsearch:optionsetparamtres
x

Utiliseuneauthentificationsimple(casgnral).

bcontexte

RaliselarecherchepartirduDNduconteneurcontexte.

Syntaxedelacommandeldapsearchpourrcuprerdesinformationsprcisesseloncritresderecherche

- 4-

ENI Editions - All rights reserved - Samuel CASAL

ldapsearch -x -D dn_admin -W -h ip_serveur -b contexte -s sub attribut=valeur

Rechercheavecldapsearch:optionsetparamtres
Ddn_admin

Faitlauthentificationaveclenomdistinctifdn_admin.

Demandeinteractivementlemotdepasse.Peuttreremplacparw(minuscule)
suividumotdepasseenclairdanslalignedecommande.

hip_serveur

Sadresseauserveurdontladresseestip_serveur.

ssub

Raliseunerecherchercursivedanstouslesniveauxsubordonnsaucontextede
recherche.

attribut

Lenomdelattributquiseralecritrederecherche.

valeur

Lavaleurdelattributrecherch.Lecaractre*reprsentenimportequelle
valeurexistante.

Exemplesderechercheavecldapsearch
Onveutaffichertouslesutilisateurssetrouvantdanslannuairedontlenumrodetlphonecommencepar01.
user@ubuntu:~$ ldapsearch -x -D cn=admin,dc=pas,dc=net -w password
-h 172.17.7.20 -b dc=pas,dc=net -s sub telephoneNumber=01*
# extended LDIF
#
# LDAPv3
# base <dc=pas,dc=net> with scope subtree
# filter: telephoneNumber=01*
# requesting: ALL
#
# toto, lyon, pas.net
dn: cn=toto,ou=lyon,dc=pas,dc=net
objectClass: person
cn: toto
sn: toto
telephoneNumber: 0123456789
# tutu, paris, pas.net
dn: cn=tutu,ou=paris,dc=pas,dc=net
objectClass: person
cn: tutu
sn: tutu
telephoneNumber: 0178945632
# search result
search: 2
result: 0 Success
# numResponses: 3
# numEntries: 2
On souhaite maintenant afficher lensemble des utilisateurs de lunit organisationnelle paris. Notez le contexte de
recherche(bou=paris,dc=pas,dc=net)etlefiltrederecherchequivisevrifierquelattributtlphoneestrenseign.
(telephoneNumber=*)
user@ubuntu:~$ ldapsearch -x -D cn=admin,dc=pas,dc=net -w password
-h 172.17.7.20 -b ou=paris,dc=pas,dc=net -s sub telephoneNumber=*
# extended LDIF
#
# LDAPv3
# base <ou=paris,dc=pas,dc=net> with scope subtree

ENI Editions - All rights reserved - Samuel CASAL

- 5-

# filter: telephoneNumber=*
# requesting: ALL
#
# tata, paris, pas.net
dn: cn=tata,ou=paris,dc=pas,dc=net
objectClass: person
cn: tata
sn: tata
telephoneNumber: 9876543210
# tutu, paris, pas.net
dn: cn=tutu,ou=paris,dc=pas,dc=net
objectClass: person
cn: tutu
sn: tutu
telephoneNumber: 0178945632
# search result
search: 2
result: 0 Success
# numResponses: 3
# numEntries: 2
TouteslesconnexionsauxserveursLDAPsonteffectuesavecloptionxindiquantuneauthentificationen
texteclair.Celaconstituenaturellementunrisqueenmatiredescurit.Laconnexionavecauthentification
SASLpermettraitderemdiercettesituation.Toutefois,sacomplexitdemiseen uvreetlefaitquelaplupart
desconsultationssefontenmodeanonymefontquelauthentificationSASLestrarementutilise.

b.Ajoutdobjetsdansunannuaireavecldapadd
Pourlessentiel, la commandeldapaddvalirelecontenudunfichierLDIFcontenantlesdonnesmodifier,etles
ajouterlannuaire.Laconstructiondufichiersedoitdtrerigoureusemaisneprsentepasdedifficult.
Syntaxesimplifiedelacommandeldapadd
ldapadd -x -D dn_admin -W -h ip_serveur -f fichier_ldif

ldappadd:optionsetparamtres
x

Utiliseuneauthentificationsimple(casgnral).

Ddn_admin

Faitlauthentificationaveclenomdistinctifdn_admin.

Demandeinteractivementlemotdepasse.Peuttreremplacparw(minuscule)
suividumotdepasseenclairdanslalignedecommande.

hip_serveur

Sadresseauserveurdontladresseestip_serveur.

ffichier_ldif

Ajoutelesobjetsrfrencsdanslefichierfichier_ldif.

ExempledefichierLDIFpourajoutparlacommandeldapadd
Appelonscefichiertoto.ldif
dn: cn=toto,dc=pas,dc=net
objectClass: person
cn: toto
sn: toto
telephoneNumber: 0123456789

- 6-

ENI Editions - All rights reserved - Samuel CASAL

Exempledutilisationdeldapadd
root@serveur# ldapadd -D cn=admin,dc=pas,dc=net -W -h 192.168.1.10 -f toto.ldif
root@serveur#

c.Modificationdobjetexistantavecldapmodify
La commande ldapmodify va galement tre utilise avec un fichier ldif comme argument, et ses paramtres
dutilisationsontlesmmesqueceuxdelacommandeldapadd.
Syntaxesimplifiedelacommandeldapmodify
ldapmodify -D dn_admin -W -h ip_serveur -f fichier_ldif
ExempledefichierLDIFpourajoutparlacommandeldapmodify
dn: cn=toto,dc=pas,dc=net
changetype: modify
replace: telephoneNumber
telephoneNumber: 9876543210

d.Suppressiondobjetavecldapdelete
Lacommandeldapdeletepeutsemployerdirectementsanspasserparunfichierldif.
Exempledesuppressiondobjetavecldapdelete
root@serveur# ldapdelete -D cn=admin,dc=pas,dc=net -w password -h
127.0.0.1 -x cn=toto,dc=pas,dc=net
root@serveur#

e.Modificationdemotdepasseavecldappasswd
La commande ldappasswd permet daffecter un mot de passe encrypt un objet utilisateur prsent dans
lannuaire.
Syntaxesimplifiedelacommandeldappasswd
ldappasswd -x -D dn_admin -W -h ip_serveur -s motdepasse dn_utilisateur

ldappasswd:optionsetparamtres
smotdepasse

Lemotdepassequelonsouhaiteaffecteraunouvelutilisateur.Peuttreremplac
parS(majuscule)pourunefrappeinteractivedunouveaumotdepasse.

dn_utilisateur

Lenomdistinctifdelutilisateurdontilfautmodifierlemotdepasse.

Exempledutilisationdelacommandeldappasswd
La premire commande affecte le mot de passe lutilisateur tata. Notez lusage des options w et s qui permettent
dinclurelesmotsdepasse(motdepassedauthentificationetmotdepassedelutilisateur)directementdanslalignede
commandesansavoirlestaperdefaoninteractive.
Ladeuximecommandeprovoquelaffichagedetouteslespropritsdelutilisateurtata,etonvoitbienlemotdepasse
cryptapparatresouslattributuserPassword.
user@ubuntu:~$ ldappasswd -x -D cn=admin,dc=pas,dc=net -w password
-h 172.17.7.20 -s motdepasse cn=tata,ou=paris,dc=pas,dc=net
ENI Editions - All rights reserved - Samuel CASAL

- 7-

user@ubuntu:~$ ldapsearch -x -D cn=admin,dc=pas,dc=net -w password


-h 172.17.7.20 -s sub -b dc=pas,dc=net cn=tata
# extended LDIF
#
# LDAPv3
# base <dc=pas,dc=net> with scope subtree
# filter: cn=tata
# requesting: ALL
#
# tata, paris, pas.net
dn: cn=tata,ou=paris,dc=pas,dc=net
objectClass: person
cn: tata
sn: tata
telephoneNumber: 9876543210
userPassword:: e1NTSEF9RVpNNVV6RFN1M2xKbUgwZVhDTmpVWGhacEtSOTNxSFU=
# search result
search: 2
result: 0 Success
# numResponses: 2
# numEntries: 1
user@ubuntu:~$

f.AllgementdessyntaxespourlesutilitairesclientsLDAP
Chacundesutilitairesclientsenlignesdecommandepeuttrouvercertainslmentsdeconfigurationdanslefichier
ldap.conf. La syntaxe des commandes en sera allge dautant. Son emplacement est
gnralement/etc/ldap/ldap.conf,maisilpeutvarieraugrdesimplmentations.
Fichierldap.confcourant
BASE contexte
HOST ip_serveur

Fichierldap.conf:principauxparamtres
BASEcontexte

RaliselesrecherchespartirduDNduconteneurcontexte.

HOSTip_serveur

Lesrequtessadressentauserveurdontladresseestip_serveur.

IlestgalementpossiblededclarerlecontextedebaseLDAPparlavariableLDAPBASE.Lerenseignement
dufichierldap.confconstituetoutefoisunemthodeplusuniverselle.

g.Clientsgraphiques
LesapplicationscompatiblesLDAPintgrentunclientleurpermettantderaliserdesrequtesauprsdelannuaire
pour assurer leur fonctionnement. Par exemple, un client de messagerie est en gnral capable daller vrifier la
validitduncompteoudefaireunerechercheauprsdunannuaireLDAP.Toutefois,sionutiliseunannuaireLDAP
auserviceduneapplication,ilserasouventpratiquededisposerdunoutilgraphiqueuniversel,quipermettrade
vrifier le bon fonctionnement de lannuaire et ventuellement de lalimenter indpendamment de lapplication
cliente.Cesoutilssontasseznombreuxetdequalitsdiverses.Onpeutciterluma,gq,lat.
Exempledevisualisationdepuisleclientgraphiqueluma

- 8-

ENI Editions - All rights reserved - Samuel CASAL

ENI Editions - All rights reserved - Samuel CASAL

- 9-

AuthentificationparLDAPdessystmesLinux
Dans le cadre des objectifs LPI, nous supposons ici que nous disposons dj dun annuaire en ligne, et que des
comptesysontcrsavectouslesattributsncessaireslauthentificationLinux.

1.ConfigurationNSS
LauthentificationneserapossiblequesilesinformationsdesutilisateurssontaccessiblesviaNSS.

a.ConfigurationdelabibliothqueNSSpourLDAP
La bibliothque NSS responsable de linterrogation de lannuaire doit disposer des informations ncessaires. Pour
cela, il faut renseigner le fichier de configuration LDAP pour la bibliothque nss ldap. Ce fichier sappelle
gnralementldap.confetestsitudirectementdanslerpertoire/etc.
Cette configuration ncessite que la bibliothque NSS soit capable de grer les informations LDAP. Cette
fonctionnalitestgnralementapporteparunpaquetapplicatifappellibnss_ldap.
Exempledefichier/etc/dap.conf
CefichierutilisparNSSrappellefortementceluiutilisparlesclientsLDAP.
host 127.0.0.1
base dc=pas,dc=net
ldap_version 3
rootbinddn cn=admin,dc=pas,dc=net

b.Renseignementdessourcesdenom
Le fichier /etc/nsswitch doit tre configur pour rfrencer LDAP en tant que source dinformation prioritaire.
Toutefois, il doit pouvoir continuer de fonctionner avec les fichiers locaux pour le cas o lannuaire ne serait pas
disponible.
ModificationdufichiernsswitchavecLDAPcommesourcedenomprioritaire
passwd : ldap
group:
ldap
shadow: ldap

files
files
files

c.Vrificationdessourcesdenoms
IlestsouventdifficiledediagnostiquerlesproblmeslislauthentificationLDAP.Eneffet,lefonctionnementpeut
tre empch par une indisponibilit de lannuaire, des comptes utilisateurs mal crs, ou une mauvaise
configurationduclient.Lutilitairegetentpermetcestadedevrifierqueleclientestcapabledinterrogerlannuaire
LDAPetdercuprerlesbonnesinformations.
Exempledevrificationdesinformationsdecompteavecgetent
La configuration dune authentification LDAP ntant pas particulirement aise, cette vrification miparcours est la
bienvenue.
root@station:/etc$ getent passwd titi
titi:*:1101:1101:titi:/home/titi/bin/bash
root@station:/etc$

2.ConfigurationPAM

ENI Editions - All rights reserved - Samuel CASAL

- 1-

a.Identificationdesservicesncessaires
Selonlesbesoins,toutoupartiedesservicesquiexploitentPAMdoiventpouvoirsappuyersuruneauthentification
LDAP.Parexemple,lesapplicationslogin,suetsshseulementpourdesbesoinsadministratifs,oubientoutlment
capable de demander une authentification. Dans le principe PAM, il faudrait identifier tous les lments de
configuration pour chacune des applications concernes, et modifier leur configuration pour quils exploitent LDAP
commemcanismedauthentificationpossible.
LesdistributionsLinuxmodernesnousfacilitentheureusementlatcheenconcentrantdansdesfichierscommon
actionchezDebianousystemauthchezRedHatlaconfigurationdetouteslesapplicationspartageantlesmmes
modes dauthentification. Il nous suffira donc de modifier ces fichiers pour modifier le mode dauthentification de
touteslesapplicationscourantes.

b.Configurationdesfichierspam
LestypesdactionPAM accountetauthdoiventtremodifispourpermettrelauthentificationLDAP.Sionregarde
leur contenu initial, on voit quils configurent le module pam_unix.so, en gnral avec le contrle required ou
sufficient.Lapremirergleestdenepastouchercetteconfiguration.Eneffet,mmesionsouhaiteutiliserun
annuaireLDAPpourlesoprationsdauthentification, le mcanisme traditionnel doit absolument tre conserv, ne
seraitce que pour permettre une authentification locale en cas de dfaillance de lannuaire. La configuration
reviendradoncajouterpourlesactionsaccountetauthuneligneindiquantcommesufficientuneauthentification
par le module LDAP (pam_ldap.so). On saffranchira dune double entre de mot de passe en ajoutant loption
use_first_passquipermetlarutilisationdumotdepasseentrlapremiretentativedeconnexion.
ExtraitdefichiersystemauthmodifisurunedistributionRedHat
Le paramtre use_first_pass indique au systme quil doit tenter lauthentification sur le module pam_ldap avec les
mmesidentifiantsqueceuxquionttutilisspourlemodulepam_unix.Lutilisateur est ainsi dispens dunedouble
frappe.
auth
auth
account
account

- 2-

sufficient
sufficient
sufficient
sufficient

pam_unix.so
pam_ldap.so
pam_unix.so
pam_ldap.so

nullok
use_first_pass

ENI Editions - All rights reserved - Samuel CASAL

Validationdesacquis
Testezvosconnaissancesenrpondantauxquestionssuivantes.Cesquestionsnappellentpastoujoursdesrponses
dfinitives. Les questions poses en certification, bien quabordant les mmes sujets, seront pour la plupart poses
sous forme de questionnaire choix multiples, ou bien demanderont une rponse courte, tape en toutes lettres au
clavier.

1.Questions
1 Pourquoilesmotsdepassedessystmesactuelsnesontplusstocksdanslefichier/etc/passwdcomme
ctaitlecasauxoriginesdessystmesUnix?
2 Pourquoiyatilunparamtrednsdanslefichier/etc/nsswitch.conf?
3 EnquoilarrivedePAMatellefacilitletravaildesdveloppeurspourcequirelvedesoprations
dauthentification?
4 QuelestlintrtduconceptdepiledemodulesPAM?
5 DansquelcasunmoduledauthentificationPAMappelaveclecontrledecomportementsufficientneconduit
paslarussitedelauthentification?
6 Quesepassetilaprslarussitedunmoduleappelaveclecontrledecomportementrequired?
7 CommentutiliserleformatdchangeLDIFdesannuairesLDAPpourexporterlesdonnesdunannuaireLDAP
commelActiveDirectoryversunautreannuaireLDAPcommeOpenLDAP?
8 Pourquoiunecommandespcifique(ldappasswd)estellencessairepourmodifierlemotdepassedun
compteutilisateuropenldap,alorsquelacommandeldapmodifypermetdjdcriredansnimportequel
attributdesobjetsdelannuaire?
9 ExistetilunemthodeponctuellequipermettededfinirlecontextederecherchedesclientsLDAPautreque
lerenseignementdeladirectiveBASEdanslefichierldap.conf.?
10 PourquoidansuneauthentificationLDAPdunsystmeLinux,conservetonpresquetoujourslerecours
lauthentificationlocaleparfichierdemotsdepasse(/etc/shadow)?

2.Rponses
1 Pourquoilesmotsdepassedessystmesactuelsnesontplusstocksdanslefichier/etc/passwdcomme
ctaitlecasauxoriginesdessystmesUnix?
Les mots de passe taient lorigine stocks dans le fichier /etc/passwd avec les autres informations lies aux
comptesutilisateurs.Cefichierdevanttreaccessibleenlecturepartouslesutilisateurs,lesmotsdepassetaient
cryptsparunalgorithmedehachage.Aveclvolutiondelapuissancedecalculdesordinateurs,ilestdevenupossible
dedevinerunmotdepasse,dabordencryptanttouteslesentresdundictionnaire,puistouteslescombinaisonsde
caractres possibles. Trouver la chane de caractre qui une fois crypte est la mme que celle du fichier revient
trouverlemotdepasse.Pourcontrercettepossibilit,lesmotsdepasseonttretirsdufichier/etc/passwd,etplac
dansunfichier/etc/shadow,nonaccessibleauxutilisateurs.
2 Pourquoiyatilunparamtrednsdanslefichier/etc/nsswitch.conf?
Le fichier nsswitch.conf contient tous les paramtres de rsolution de noms, ainsi que les bases dinformations
ncessairesleurrsolution.Ainsi,ilindiquegnralementquelarsolutiondesnomsdhtes(hosts)doitsefaireen
premierlieuavecunfichierlocal(paramtrefiles),puisparunservicednssilestconfigur(paramtredns).
3 EnquoilarrivedePAMatellefacilitletravaildesdveloppeurspourcequirelvedesoprations
dauthentification?
Parce que les dveloppeurs nont pas dautre souci que de rendre leurs applications compatibles avec la bibliothque
dauthentification PAM. Si les techniques dauthentification voluent, il nest pas ncessaire de modifier lapplication,
maisuniquementsaconfigurationPAMdanslaquelleonprciseralesmodulesnouveauxoudiffrentssurlesquelsdoit
reposercetteauthentification.
4 QuelestlintrtduconceptdepiledemodulesPAM?
De pouvoir englober dans lopration dauthentification lexcution de plusieurs modules. Les applications pratiques
sont nombreuses : on peut accepter un utilisateur si une authentification distante est russie (LDAP) ou si
lauthentification locale aboutit. On peut aussi exiger quune authentification particulire (biomtrie par exemple)
russisse, ainsi quune authentification traditionnelle par mot de passe. Enfin, et cest utilis couramment, on peut
profiter de ltape de lauthentification pour excuter dautres actions comme de charger des variables (module
pam_env)oudinterdirecertainsloginsutilisateurs(modulepam_nologin).
5 DansquelcasunmoduledauthentificationPAMappelaveclecontrledecomportementsufficientneconduit

ENI Editions - All rights reserved - Samuel CASAL

- 1-

paslarussitedelauthentification?
Siunmoduleappelaveclecontrledecomportementrequiredourequisiteachouauparavant.
6 Quesepassetilaprslarussitedunmoduleappelaveclecontrledecomportementrequired?
Oncontinue.Larussitedunmodulerequiredneprovoquepaslarrtdutraitementdelapile.Lesautresmodulesde
lapilesontexcuts.
7 CommentutiliserleformatdchangeLDIFdesannuairesLDAPpourexporterlesdonnesdunannuaireLDAP
commelActiveDirectoryversunautreannuaireLDAPcommeOpenLDAP?
Trsdifficilement.LeformatLDIFestintimementliauschmadelannuaire,etdeuxannuairesdiffrentsontpresque
toujoursunschmadiffrent.LesattributsLDAPneserontdoncpaslesmmesdepartetdautre,etuneexportation
contiendrait forcment des lments non assimilables par le deuxime annuaire. On pourrait ponctuellement russir
quelqueschangesenrestreignantlesdonnesexportesetimportesdesclassesdobjetsetattributscommuns
aux deux annuaires. Les services fonctionnels permettant des changes complets (mtaannuaires) sappuient
toujours sur une phase de remise en forme des donnes. On parle frquemment dune opration de mapage
dattributs.
8 Pourquoiunecommandespcifique(ldappasswd)estellencessairepourmodifierlemotdepassedun
compteutilisateuropenldap,alorsquelacommandeldapmodifypermetdjdcriredansnimportequel
attributdesobjetsdelannuaire?
Parce que la commande ldapmodify crirait lattribut mot de passe en clair, alors que la commande ldappasswd gre
nativementplusieursalgorithmesdecryptage.
9 ExistetilunemthodeponctuellequipermettededfinirlecontextederecherchedesclientsLDAPautreque
lerenseignementdeladirectiveBASEdanslefichierldap.conf.?
Oui,onpeutrenseignerlavariableLDAPBASEaveclecontextederecherchequedevrontutiliserlesclientsLDAP.Cette
mthode souffre toutefois de la volatilit des variables, et la dclaration devra rester valable dans lenvironnement
dexcution des commandes clientes (on exporte gnralement la variable depuis un processus parent de celui des
commandesclientes).
10 PourquoidansuneauthentificationLDAPdunsystmeLinux,conservetonpresquetoujourslerecours
lauthentificationlocaleparfichierdemotsdepasse(/etc/shadow)?
Pour conserver lusage du systme en cas dindisponibilit de lannuaire LDAP. Les contrles de comportement des
modules LDAP sont tout fait adapts cet usage, en permettant lauthentification par annuaire LDAP, mais en se
rabattantsurunemthodealternativeencasdchec.

- 2-

ENI Editions - All rights reserved - Samuel CASAL

Travauxpratiques
Devant les perspectives dextension de lentreprise et les milliers de postes de travail possibles, vous prenez
conscience de la ncessit dune authentification centralise et grande chelle. Vous dcidez donc dinstaller un
serveurLDAPsurbeta.

1.CrationetalimentationdunannuaireLDAPsurleserveurbeta
a.Installationdespaquetagesapplicatifs
Surleserveurbeta,installezleserviceLDAPainsiquelesutilitairesclientsaveclacommandesuivante :
yum install openldap-servers
yum install openldap-clients
Surlastationdetravail,installezlesutilitairesclientsaveclacommandesuivante :
sudo apt-get install ldap-utils

b.Configurationdelannuaire
Fichiersetcommandesutiles

/etc/openldap/slapd.conf

slappasswd

vi

Manipulations
1.

Surleserveurbeta,danslefichierslapd.conf,trouvezladclarationdecontextepar
dfautetremplacezleparpas.net(dc=pas,dc=net).Noubliezpasdemodifier
galementlesuffixedurootdn.

2.

Danslefichierslapd.conf,renseignezlemotdepasseadministrateuraveclavaleur
password .

3.

Redmarrezleservice.

Rsumdescommandesetrsultatlcran
Lensemble des modifications est fait ici en lignes de commandes sans passer par un diteur de texte. La
certificationLPInexigenaturellementpascetypededmarchequirelveraitpluttduniveau1.
Modificationdesvaleursdesuffixedanslefichier/etc/openldap/slapd.conf :
root@beta openldap]# grep suffix slapd.conf
suffix
"dc=my-domain,dc=com"
[root@beta openldap]# sed -i s/"dc=my-domain,dc=com"/"dc=pas,dc=net"/ slapd.conf
Vrification :
[root@beta openldap]# grep "dc=pas,dc=net" slapd.conf
suffix
"dc=pas,dc=net"
rootdn
"cn=Manager,dc=pas,dc=net"
[root@beta openldap]#
Affectationdumotdepasseadministrateurdanslefichier/etc/openldap/slapd.conf

ENI Editions - All rights reserved - Samuel CASAL

- 1-

[root@beta openldap]# grep rootpw slapd.conf


# rootpw
secret
# rootpw
{crypt}ijFYNcSNctBYg
[root@beta openldap]# slappasswd -s password
{SSHA}7xWHl+/YmWtgW7IqJpWBlzGFzvhHaPom
[root@beta openldap]# echo "rootpw $(slappasswd -s password)" >> slapd.conf
[root@beta openldap]#
Vrification :
[root@beta openldap]# grep rootpw slapd.conf
# rootpw
secret
# rootpw
{crypt}ijFYNcSNctBYg
rootpw {SSHA}/qNLfdcQeazSkiX6O4rKm8kL/E73iFyu
[root@beta openldap]#
Arrtetlancementduservice :
[root@beta openldap]# service ldap stop
Arrt de slapd :
[ ECHOUE ]
[root@beta openldap]# service ldap start
Vrification des fichiers de configuration pour slapd : config file testing succeeded
[ OK ]
Dmarrage de slapd :
[ OK ]
[root@beta openldap]#
Fichier/etc/openldap/slapd.confaprsmodification(commentairesretirs) :
include
/etc/openldap/schema/core.schema
include
/etc/openldap/schema/cosine.schema
include
/etc/openldap/schema/inetorgperson.schema
include
/etc/openldap/schema/nis.schema
allow bind_v2
pidfile
/var/run/openldap/slapd.pid
argsfile
/var/run/openldap/slapd.args
database
bdb
suffix
"dc=pas,dc=net"
rootdn
"cn=Manager,dc=pas,dc=net"
directory
/var/lib/ldap
index objectClass
eq,pres
index ou,cn,mail,surname,givenname
eq,pres,sub
index uidNumber,gidNumber,loginShell
eq,pres
index uid,memberUid
eq,pres,sub
index nisMapName,nisMapEntry
eq,pres,sub
rootpw {SSHA}r8ldo8lBQ063ct6nFDl/RjJR0QwOPZvp

c.Interrogationsimpledelannuaire
Unannuaireopenldaptantpardfinitionunechosediscrte,vousdcidezcestadedefaireuneinterrogation
simpledelannuaire,pourvoirsilveutbienrpondre.
Commandesutiles

ldapsearch

pgrep

service

Manipulations

- 2-

1.

Surleserveurbeta,vrifiezqueleserviceslapdsexcute.

2.

Depuisleserveurbeta,faitesunerequtelaplussimplepossiblevisantobtenirune

ENI Editions - All rights reserved - Samuel CASAL

rponsedelannuaire(mmesicestadelannuairenapasdecontenu).
Rsumdescommandesetrsultatlcran
Vrificationdelexcutionduservicepardeuxcommandesdiffrentes :
[root@beta
3494 slapd
[root@beta
slapd (pid
[root@beta

openldap]# pgrep -l slapd


openldap]# service ldap status
2977) en cours dexcution...
openldap]#

Requtesimple :
[root@beta openldap]# ldapsearch -x
# extended LDIF
#
# LDAPv3
# base <> with scope subtree
# filter: (objectclass=*)
# requesting: ALL
#
# search result
search: 2
result: 32 No such object
# numResponses: 1
[root@beta openldap]#

d.Crationducontextedebase
Commandesutiles

ldappadd

vi

Manipulations
1.

CrezunfichierLDIFcontenantladclarationducontextedebase.

2.

Importezcefichierdanslannuaire.

Fichierbase.ldif :
dn: dc=pas, dc=net
objectClass: domain
dc: pas

Rsumdescommandesetrsultatlcran
Vrificationdufichierbase.ldif :
[root@beta ~]# cat base.ldif
dn: dc=pas, dc=net
objectClass: domain
dc: pas
[root@beta ~]#
Importationdufichierdanslannuaire :
[root@beta openldap]# ldapadd -x -D cn=Manager,dc=pas,dc=net -W -f ~/base.ldif
Enter LDAP Password :
adding new entry "dc=pas,dc=net"
ENI Editions - All rights reserved - Samuel CASAL

- 3-

[root@beta openldap]#

e.Crationdecomptesutilisateur
Commandesutiles

ldappadd

vi

Manipulations
1.

CrezunfichierLDIFcontenantlesdonnesdedeuxutilisateurs.

2.

Importezcefichierdanslannuaire.

Fichierajout.ldif :
dn: uid=toto,dc=pas,dc=net
objectClass: top
objectClass: posixAccount
objectClass: person
objectClass: organizationalPerson
objectClass: inetOrgPerson
uid: toto
cn: toto
sn: toto
uidNumber: 601
gidNumber: 1000
homeDirectory: /home/toto
loginShell: /bin/bash
userPassword: password
dn: uid=titi,dc=pas,dc=net
objectClass: top
objectClass: posixAccount
objectClass: person
objectClass: organizationalPerson
objectClass: inetOrgPerson
uid: titi
cn: titi
sn: titi
uidNumber: 602
gidNumber: 1000
homeDirectory: /home/titi
loginShell: /bin/bash
userPassword: password

Rsumdescommandesetrsultatlcran
[root@beta
Enter LDAP
adding new
adding new
[root@beta

openldap]# ldapadd -x -D cn=Manager,dc=pas,dc=net -W -f ~/ajout.ldif


Password :
entry "uid=toto,dc=pas,dc=net"
entry "uid=titi,dc=pas,dc=net"
openldap]#

f.Interrogationdunannuairepeupl
Commandesutiles

- 4-

ldapsearch

ENI Editions - All rights reserved - Samuel CASAL

Manipulations
1.

Depuisleserveurbeta,faitesunerequtevisantobtenirlatotalitdesdonnesde
lannuaire.

Rsumdescommandesetrsultatlcran
RequteLDAP :
[root@beta openldap]# ldapsearch -x -b "dc=pas,dc=net" -D
cn=Manager,dc=pas,dc=net -W -s sub
Enter LDAP Password:
# extended LDIF
#
# LDAPv3
# base <dc=pas,dc=net> with scope subtree
# filter: (objectclass=*)
# requesting: ALL
#
# pas.net
dn: dc=pas,dc=net
objectClass: domain
dc: pas
# toto, pas.net
dn: uid=toto,dc=pas,dc=net
objectClass: top
objectClass: posixAccount
objectClass: person
objectClass: organizationalPerson
objectClass: inetOrgPerson
uid: toto
cn: toto
sn: toto
givenName: toto
uidNumber: 601
gidNumber: 1000
homeDirectory: /home/toto
loginShell: /bin/bash
userPassword:: cGFzc3dvcmQ=
(...)
[root@beta openldap]#

g.Interrogationdelannuairedepuisunclient
Avantdepasserauxchosessrieuses,ilnousrestevrifierqueleclientsurlastationdetravailatteintbienles
donnesdelannuaire.
Fichiersetcommandesutiles

ldap.conf

ldapsearch

Manipulations
1.

Depuislastationdetravail,faitesuneinterrogationducontenudelannuaireen
prcisanttousleslmentsncessairesdanslalignedecommande.

2.

RenseignezlesparamtresBASEetHOSTdanslefichier/etc/ldap/ldap.conf.

3.

Refaitesunerequtesurleserveuravecunesyntaxeallgeenvousappuyantsurles
donnesdufichierldap.conf.

ENI Editions - All rights reserved - Samuel CASAL

- 5-

Rsumdescommandesetrsultatlcran
Requtedepuislastationdetravail :
toto@station:~$ ldapsearch -x -h 192.168.200.102 -b dc=pas,dc=net
-D cn=Manager,dc=pas,dc=net -W -s sub
Enter LDAP Password:
# extended LDIF
#
# LDAPv3
# base <dc=pas,dc=net> with scope subtree
# filter: (objectclass=*)
# requesting: ALL
#
# pas.net
dn: dc=pas,dc=net
objectClass: domain
dc: pas
# toto, pas.net
dn: uid=toto,dc=pas,dc=net
(...)
toto@station:~$
Fichier/etc/ldap/ldap.confmodifi :
#
# LDAP Defaults
#
# See ldap.conf(5) for details
# This file should be world readable but not world writable.
BASE
HOST
#URI

dc=pas,dc=net
192.168.200.102
ldap://ldap.example.com ldap://ldap-master.example.com:666

#SIZELIMIT
#TIMELIMIT
#DEREF

12
15
never

Requteallge :
toto@station:~$ ldapsearch -x -D cn=Manager,dc=pas,dc=net -W -s sub
Enter LDAP Password:
# extended LDIF
#
# LDAPv3
# base <dc=pas,dc=net> with scope subtree
# filter: (objectclass=*)
# requesting: ALL
#
# pas.net
dn: dc=pas,dc=net
objectClass: domain
dc: pas
# toto, pas.net
(...)
toto@station:~$

2.AuthentificationdupostedetravailparlannuaireLDAP
a.InstallationdeslmentsapplicatifsncessaireslauthentificationLDAP
- 6-

ENI Editions - All rights reserved - Samuel CASAL

Surlastation,installezlesbibliothquespamncessaireslauthentificationLDAP :
sudo apt-get install ldap-auth-client
sudo apt-get install ldap-auth-config
Rpondez au mieux aux questions qui vous sont ventuellement poses, vous reviendrez de toute faon sur les
fichiers configurer. En cas de doutes, renseignez une valeur farfelue facilement identifiable pour voir quels
lmentslassistantaurarenseigns.

b.ConfigurationdelarsolutiondenomsLDAP
Commandesetfichiersutiles

/etc/ldap.conf

/etc/nsswitch.conf

getent

Manipulations
1.

Danslefichiernsswitch.conf,ajoutezlemotclldapauxsectionspasswd,groupet
shadow.

2.

AfinquelesrsolutionsdenomspuissentsefaireparLDAP,renseignezlesparamtres
hostetbasedanslefichier/etc/ldap.conf.Pourunemeilleurestabilit,commentezou
supprimezlaligneurildapi://.

3.

Vrifiezquelarsolutionsefaitcorrectement,etquunnomdutilisateurestbien
associuncompteutilisateurdanslannuaire.

Rsumdescommandesetrsultatlcran
Extraitdefichier/etc/nsswitch.confmodifi :
passwd :
group :
shadow :

ldap
ldap
ldap

compat
compat
compat

Extraitdefichier/etc/ldap.confmodifi :
host 192.168.200.201
base dc=pas,dc=net
# uri ldapi://192.168.200.201
Testdelarsolutiondenoms :
toto@station:/etc$ getent passwd titi
titi:*:602:1000:titi:/home/titi:/bin/bash
toto@station:/etc$

c.ConfigurationdelauthentificationpamavecLDAP
Lesfichierspamontsansdoutedjtmodifisparlesscriptsdepostinstallationetlaconfigurationdoitdj
tre fonctionnelle. La distribution Ubuntu tant un peu avantgardiste, nous allons remettre les paramtres pam
auxvaleursstandardattenduesparlacertificationLPI.
Commandesetfichiersutiles

/etc/pam.d/commonaccount

ENI Editions - All rights reserved - Samuel CASAL

- 7-

/etc/pam.d/commonauth

Manipulations
1.

Danslefichier/etc/pam.d/commonauth,constatezlaprsencedunelignepourle
modulepam_unixetdclarezlacommetantsufficient.

2.

Danslefichier/etc/pam.d/commonauth,constatezlaprsencedunelignepourle
modulepam_ldap(ouajoutezla)etdclarezlacommetantsufficient.

3.

Danslefichier/etc/pam.d/commonaccount,constatezlaprsencedunelignepourle
modulepam_unixetdclarezlacommetantsufficient.

4.

Danslefichier/etc/pam.d/commonaccount,constatezlaprsencedunelignepourle
modulepam_ldap(ouajoutezla)etdclarezlacommetantsufficient.

5.

Pourcreraubesoinunrpertoirepersonnelunnouvelutilisateurquiseconnecterait,
ajoutezaufichier/etc/pam.d/commonsessionunelignechargeantlemodule
pam_mkhomedir.sosousletypesession,aveclecontrlerequired,etavecloption
skel=/etc/skel.

Fichiersmodifis
Fichier/etc/pam.d/commonauth :
auth
auth
auth
auth

sufficient
sufficient
requisite
required

pam_unix.so nullok_secure
pam_ldap.so use_first_pass
pam_deny.so
pam_permit.so

Fichier/etc/pam.d/commonaccount :
account
account
account
account

sufficient
sufficient
requisite
required

pam_unix.so
pam_ldap.so
pam_deny.so
pam_permit.so

Fichier/etc/pam.d/commonsession :
session
session
session
session
session
session
session

[default=1]
requisite
required
required
required
optional
optional

pam_permit.so
pam_deny.so
pam_permit.so
pam_unix.so
pam_mkhomedir.so skel=/etc/skel
pam_ldap.so
pam_ck_connector.so nox11

d.Validationfonctionnelle
La station Ubuntu devrait maintenant tre capable douvrir une session avec un compte utilisateur situ sur
lannuaireLDAPduserveurbeta.
Lamodificationdetoutparamtrepamtantparessencedangereuse,ilestrecommanddetesterlaconfiguration
avec une commande ne ncessitant pas de redmarrer comme la commande su. En cas dchec, on aura tout le
loisirdereprendrelaconfigurationsansavoirrinstallerunsystmeincapablededmarrer.

- 8-

ENI Editions - All rights reserved - Samuel CASAL

Prrequisetobjectifs
1.Prrequis
LesconnaissancesacquiseslorsdelacertificationLPIniveau1,notamment:

Montagedefilesystems.
ditiondefichiers.

2.Objectifs
lafindecechapitre,vousserezenmesurede:

ConnatrelesdmonsNFS.
ExporterdespartagesNFSponctuels.
ConfigurerunserviceNFS.
ConnatrelescommandesdediagnosticNFS.
ComprendrelagestiondesdroitsdesaccsclientsNFS.
ConnecterunclientunpartageNFS.
Connatrelesdmonssamba.
Configurerlepartagesambadesrpertoirespersonnelsdesutilisateurs.
Connatrelesoptionssambalespluscourantes.
Grerlesmotsdepassesamba.
Connecterunclientunpartagesamba.
ConnatrelesmodesdefonctionnementFTP.
ConfigurerunserveurFTP.
ExploiterunclientFTP.

ENI Editions - All rights reserved - Samuel CASAL

- 1-

PartagededonnesavecNFS
NFSestleprotocolehistoriquedepartagedefichierssurlessystmesUnix.Sisongrandgelerendmoinspopulaire
chezlesjeuneslinuxiens,ilresteintressantdeleconnatrepoursarapiditetsasimplicitdemiseen uvrepourun
partageentredeuxsystmesLinuxouUnix.Deplus,NFSsubitcesdenierstempsunregaindintrtgrcecertaines
applicationsquilexploitentcommelesinfrastructuresVmwarepouraccderdesespacesdestockagespeuonreux,
ouleslecteursmultimdiasdomestiquesquiaccdentdesserveursdefichiers.

1.Partagederpertoires
a.Observationdespartagesactifs
LespartagesNFSactifssurunsystmesontdclarspourunrpertoirelocal,etsontaccessiblescertainsclients
aveccertainesoptions.Lesclientsautorissainsiquelesoptionssontdclarslorsdelactivationdupartage.Sion
rencontreunsystmedjconfigur,ilpeuttreutiledefaireundiagnosticdespartagesactifssurcesystme.Ce
diagnosticestralisparlacommandeexportfs.
Exempledutilisationdelacommandeexportfspourobserverlespartagesactifs
Danscetexemple,lerpertoire/persoestpartagpourlaseuleadresse192.168.0.20,alorsque/nasestpartagpour
touslesclients.
alpha:~# exportfs
/data/perso
/nas
<world>
alpha:~#

<192.168.0.20>

IlestpossibledobserverlesstatistiqueslieslactivitNFSaveclacommandenfsstat.
VisualisationdesstatistiquesNFS
LacommandenfsstatsertsurtoutvrifieruneactivitouabsencedactivitsurunserveurNFS.
toto@serveur:~$ nfsstat
Server rpc stats:
calls
badcalls
badauth
12
0
0

badclnt
0

Server nfs v3:


null
getattr
2
18% 2
read
write
0
0% 0
remove
rmdir
0
0% 0
fsstat
fsinfo
0
0% 3

setattr
18% 0
create
0% 0
rename
0% 0
pathconf
27% 1

Client rpc stats:


calls
retrans
0
0

authrefrsh
0

xdrcall
0

lookup
0% 2
mkdir
0% 0
link
0% 0
commit
9% 0

access
18% 1
symlink
0% 0
readdir
0% 0

readlink
9% 0
0%
mknod
0% 0
0%
readdirplus
0% 0
0%

0%

toto@serveur:~$

b.Partageponctuel
La commande exportfs permet galement de dclarer un partage de faon interactive. Elle est utilise pour la
dclarationdepartagesponctuels.
Syntaxedelacommandeexportfspourunpartageponctuel

ENI Editions - All rights reserved - Samuel CASAL

- 1-

exportfs adresse_client:/chemin_partage

Commandeexportfs:optionsetparamtres
adresse_client

AdresseIPduclientoudurseauquipeutseconnecteraupartage.Lejoker*
permetdautorisertouslesclientsseconnecter.

chemin_partage

Cheminabsoludurpertoirepartager.

Bienentendu,lecontrledaccssurlaseuleadresseIPneprsenteplusdegarantiedescuritdepuislongtemps.

c.ServiceNFSetpartagepermanent
OnpeutnaturellementdclarerunpartagepermanentactivchaquedmarrageduserviceNFS.Cettedclaration
se fait dans un fichier /etc/exports. Notez quil arrive selon les distributions que ce fichier nexiste pas aprs
linstallationduserviceetquilfaillelecrerdetoutespices.
Formatdufichier/etc/exports
partage1 adresse_client1
partage2 adresse_client2
CefichierestluchaquedmarrageduserviceNFS,ouchaqueappeldelacommandeexporfsavecloptiona.
Notezquelespartagessonttousexprimsparleurcheminabsolu,cestdireexprimsdepuislaracinedusystme
defichiers.
LescriptdegestionduserviceNFSassurelelancementdetroisdmonsnormaliss.

portmap :grelesrequtesRPC(RemoteProcedureCall).

nfsd :espaceutilisateurduserviceNFS.LancelesthreadsNFSpourlesconnexionsclientes.

mountd :grelesrequtesdemontagedesclients.

LacommanderpcinfopermetdeffectuerunerequteRPCsurunserveuretdafficherlesdmonsgrs.

d.Optionsdepartage
Certaines options modifient le comportement du serveur NFS pour chacun des partages hbergs. Elles sont
prcisesdanslacommandeexportfssionlutilisedynamiquement,oudanslefichier/etc/exportssionutiliseNFS
entantqueservice.
OptionsNFScourantes
ro

Accsenlectureseule.

rw

Accsenlectureetcriture.

sync

Accsencrituresynchrone.Lesdonnessontcritesimmdiatement.

async

Accsencritureasynchrone.Utilisationduncacheencriture.

root_squash

Comportementpardfaut.Lecompterootperdsesprrogativessurlepartage
atteint.

no_root_squash

Lecompterootconservesesprrogativessurlepartageatteint.

nolock

Napposepasdeverrouillagesurlesfichiersaccds.

Exempledutilisationdelacommandeexportfsavecloptiondelectureseule

- 2-

ENI Editions - All rights reserved - Samuel CASAL

Siplusieursoptionssontconfigures,ellesdoiventtresparespardesvirgules.
root@serveur# exportfs -o ro *:/data
root@serveur#
Exempledefichier/etc/exportsavecloptiondelectureseule
Leparamtre*ouuneadresseIPdeclientautorissontindispensablesaubonfonctionnement.
/data

*(ro)

Exempledaffichagedespartagesactifsavecleursoptions
Lesoptionsexplicitesainsiquelesoptionspardfautsontaffiches.
alpha:~# exportfs -v
/perso
192.168.0.20(rw,wdelay,root_squash,no_subtree_check)
/data
<world>(ro,wdelay,root_squash,no_subtree_check)
alpha:~#

2.Configurationdesclients
a.Affichagedespartagesdistants
LacommandeshowmountpermetdafficherlesinformationsdunserveurNFSdistant.
Affichagedespartagesdistantsavecshowmount
showmount --exports serveur
OserveurreprsenteladresseIPduserveurdontonveutobtenirlespartages.

b.Montagedunrpertoiredistant
LesordinateursclientsaccdentunpartageNFSparuneoprationdemontage.Ilsexploitentensuitelepartage
montcommesilsagissaitdunearborescencelocale.
MontagedunpartageNFS
mount -t nfs adresse_serveur:/chemin_partage point_de_montage

MontageNFS:optionsetparamtres
tnfs

IndiquequelepriphriquemonterestunpartageNFSdistantetfaitappelau
sousprogrammeclientNFS.

adresse_serveur

LadresseIPduserveurNFS.

chemin_partage

Lecheminabsoludurpertoirepartagsurleserveur.

point_de_montage

LerpertoirelocalduclientsurlequelseramontlepartageNFS.

3.Gestiondesidentits

ENI Editions - All rights reserved - Samuel CASAL

- 3-

a.Lesdroitsduclient
Il peut tre assez surprenant quand on se connecte un partage NFS de constater quaucune demande
didentification ne nous est prsente. On se retrouve connect la ressource sans avoir eu montrer patte
blanche. NFS considre en fait que les identifiants des utilisateurs sont cohrents entre le serveur et ses clients,
cestdirequetouslescomptessontidentiquessurtouteslesmachines,etqueleursidentifiantsutilisateurs(uid)
sonttouslesmmes.
Quand un client se connecte un partage NFS, il prsente son uid, et aura sur le serveur les droits exacts de
lutilisateurayantlemmeuidsurleserveur.Aucunautrecontrlenesteffectu.

b.Lecasparticulierdusuperutilisateur
Commelecompterootaluid0quelquesoitlesystmeLinux,unclientseconnectantunserveuravecsoncompte
superutilisateurauraitenthorielespleinspouvoirssurlepartage.Cettesituationembarrassanteestrsoluepar
lapplication implicite dune option de partage : root_squash. En effet, si un serveur reoit une demande de
connexionduncompteavecluid0,ilmodifiesonidentifiantetluiappliquesurlepartageluidduncomptedeservice
NFS.Cecompte(selonlesdistributionsnfsanonymous,nfsnobody,nobody...)auradoncengnralsurlesystme
serveurlesseulsdroitsdelensembledutilisateursother.

- 4-

ENI Editions - All rights reserved - Samuel CASAL

PartagededonnesavecSAMBA
SambaestunesolutionlogicielledinteroprabilitavecWindowsdisponiblesurlessystmesLinuxetUnix.Lenomde
SambavientduprotocoleSMB:ServerMessageBlockutilispourlepartagederessourcessurlesrseauxMicrosoft.Il
permetnotammentlepartagedefichiersoudimprimantessurdesserveursLinuxdestinationdeclientsWindows.La
suite logicielle Samba comprend aussi un client qui permet aux machines Linux daccderdesressourcespartages
surunserveurWindows.

1.Configurationgnrale
a.Lesdmonssamba
Samba repose sur deux dmons appels nmbd et smbd. Lannonce des services et en gnral tout le
fonctionnementNetBIOSoverIPreposesurledmon nmbd.Lespartagesdefichiersetdimprimanteseuxmmes
sappuientsurledmonsmbd.
Lescriptdegestionduservicegnralementprsentdanslesdistributionslancecesdeuxdmonschacundeses
dmarrages.

b.Lesfichiersdeconfiguration
Les dmons samba trouvent leur configuration dans le fichier de configuration smb.conf, gnralement dans le
rpertoire/etc/samba.
Le fichier de configuration est divis en sections normalises, chacune tant commence par un titre entour de
crochets. Les paramtres de fonctionnement seront dans chacune des sections prsents sous la syntaxe
paramtre=valeur.
Formatsynthtiquedesmb.conf
[section1]
paramtre1
paramtre2
[section2]
paramtre3
paramtre4

= valeur1
= valeur2
= valeur3
= valeur4

Ilexisteunoutilfortutileappeltestparmquivalideleformatdunfichierdeconfigurationsamba.Ilrenvoieenoutre
untatpur(sansleslignesdecommentaire)delaconfigurationsurlasortiestandard.Naturellement,cettesortie
pourra tre redirige vers un fichier et gnrer un smb.conf lisible et de taille raisonnable. Il est noter que la
commandetestparm ignore tout paramtre du fichier de configuration silestconfigursavaleurpardfaut.Ce
comportementpeuttremodifiavecloptionv.Touteslesoptionsapplicablessontalorsaffiches.
Exempledexploitationdetestparmpourgnrationdunfichiersmb.confsimple
Cette mthode est souvent utilise pour utiliser un fichier de configuration largement comment, et un fichier rel de
dimensionraisonnable.
alpha:/etc/samba# mv smb.conf big.smb.conf
alpha:/etc/samba# wc -l big.smb.conf
326 big.smb.conf
alpha:/etc/samba# testparm big.smb.conf > smb.conf
Load smb config files from big.smb.conf
Processing section "[homes]"
Processing section "[printers]"
Processing section "[print$]"
Loaded services file OK.
Server role: ROLE_STANDALONE
Press enter to see a dump of your service definitions
alpha:/etc/samba# wc -l smb.conf
31 smb.conf
alpha:/etc/samba# testparm -v big.smb.conf > toutes-options.info.smb.conf

ENI Editions - All rights reserved - Samuel CASAL

- 1-

alpha:/etc/samba#
Les versions prinstalles de samba proposent toujours un fichier smb.conf prconfigur. Si ce fichier peut
constituerunebonnebasededpart,sataille(326ligneschezDebian)risquedimpressionnerlesdbutants,eton
gagnera peuttre raliser un fichier de toutes pices, avec uniquement les lments dont on a explicitement
besoin.

c.Configurationglobale
Danssaconfigurationlaplussimple,uneimplmentationsambacomprendunserveurquihbergeuneouplusieurs
ressources.Certainsparamtresconcernentlefonctionnementglobaletlidentitdeceserveuretseretrouveront
dansunesectionappeleglobaldufichiersmb.conf.
Danslesexemplesquisuivent,nousnousplaceronsdanslasituationdunserveursimple,horsdomaineWindows,
quiprsentedespartagesdesclientsWindows.
lmentscourantsdelasection[global]danssmb.conf
workgroup = groupe_de_travail
server string = commentaire
log file = /chemin/log.%m
max log size = log_maxi
security = user (defaut)
encrypt passwords = true (defaut)

Section[global]dufichiersmb.conf
groupe_de_travail

Lenomdugroupedetravailduserveur.Notezqueceparamtredsigneaussile
nomdudomainedansunfonctionnementendomaine.

commentaire

Commentaireassociauserveur.Visibleparexempledanslevoisinagerseaudes
machinesWindows.

log.%m

Dfinitionduformatstandarddesfichiersjournaux.

log_maxi

Dfinitiondelataillemaximumdesfichiersdejournaux.

user

Facultatifcarparamtrepardfaut.Paramtredescuritquiobligeune
authentificationavecuncompteutilisateur.

encrypt
passwords

Facultatifcarparamtrepardfaut.Ncessairepourtouslesclientsmodernesqui
prsenterontnaturellementdesmotsdepassecrypts(depuisNT4SP3).

2.Partagederpertoire
Lepartagederpertoiresefaitparlajoutdunesectiondanslefichiersmb.conf.
Formattypedunesectionpartagedanssmb.conf
[nom_partage]
comment = commentaire
path = chemin
readonly = lecture_seule
browseable = yes

Dclarationdepartagedanssmb.conf.

- 2-

nom_partage

LenomsouslequellepartageseravuparlesmachinesWindows.

commentaire

Facultatif.Dfinitionducommentaireassociaupartage.

ENI Editions - All rights reserved - Samuel CASAL

chemin

Dfinitionduchemindurpertoirepartager.Lerpertoiredoitexisterdansle
systmedefichierLinux.

lecture_seule

Dfinitiondelaccsaupartageenlectureseuleouenlecturecriture.lecture_seule
auralavaleuryesounoselonlaconfigurationchoisie.Notezqueceparamtre
sappliqueaupartageetquelaccsrestesoumisauxpermissionsdusystmede
fichiersLinux.

browseable

Gestiondelavisibilitdupartagedepuislesclients.

Sionregardelensembledesparamtrespossiblespourlefichiersmb.conf,onpeutlgitimementtreimpressionn
par leur quantit. Il faut savoir que nombre de paramtres fonctionnels peuvent tre exprims de plusieurs faons.
Prenons lexemple de laccs un partage en lecture seule vu dans la dclaration des partages. Les propositions
suivantessonttoutesquivalentes:
readonly=yes
readonly=true
writable=no
writable=false
writeable=no
writeable=false

3.Gestiondesidentits
a.Algorithmesdehachageetstockagedesmotsdepasse
Surlatrsgrandemajoritdessystmesdexploitationetapplications,lesmotsdepassenesontpasstocksen
clair au sein du systme. Les mots de passe des comptes sont crypts et cest la version crypte qui est seule
stocke.Lemotdepasseenclairestoubliaussittquilatcr.
Quandunutilisateurseconnecteettapeseslmentsdidentification,lemotdepasseestaussittcrypt,etcette
versionfrachementcryptedumotdepasseestcompareaveclaversioncryptestockedanslabasedecomptes
dusystme.Ainsi,lemotdepassenecirculejamaisenclairsurlerseau.
Lesalgorithmesemployspourcrypterlemotdepasseappartiennentlafamilledesalgorithmesdehachage.Ils
ont un fonctionnement un peu particulier en ce sens quils permettent de crypter, mais jamais de dcrypter des
donnes : ils sont sens unique, et de ce fait un peu part dans le monde de la cryptographie. Ce mode de
fonctionnementexpliquepourquoiquandunutilisateurperdsonmotdepasse,onpeutluienraffecterun,maispas
luidirequeltaitlemotdepasseoubli.Laseuleinformationstockeestlaversioncryptedumotdepasse,etelle
estparhypothseindchiffrable.
LesalgorithmesdehachageslespluscourantssappellentMD4,MD5etSHA1.Ilssontutilisspourstockerlesmots
depasse,lesoprationsdesignaturenumriqueoulescontrlesdintgrit.

b.AuthentificationauprsdesserveursSamba
Un serveur Linux avec la suite logicielle Samba installe utilise nativement les comptes du systme pour les
authentificationsSamba.Ainsi,touteconnexiondelapartdunclientsefaitavecuncomptehbergparlesystme
Linux.Cettesituationrisquetoutefoisdeposerunproblme.LeclientWindowsvaprsenterunmotdepassecrypt
parlalgorithmedehachagenatifdessystmesWindowsMD4 :MessageDigest4,alorsquelesmotsdepassedes
systmes Linux exploitent lalgorithme MD5 : Message Digest 5. Le mot de passe crypt prsent par le client
Windows ne sera donc pas le mme que celui stock dans le fichier /etc/shadow du systme Linux et
lauthentificationseradoncimpossible,mmesilemotdepasseenclairestlemme.
Pour que les clients Windows puissent sauthentifier aprs de systmes Linux, il faut donc que ces systmes
hbergent une version du mot de passe crypte en MD4 en plus du mot de passe natif Linux crypt en MD5. Ces
deuxmotsdepassesontgrsindpendammentetpeuventmmetrediffrents.

c.GnrationdesmotsdepasseMD4

ENI Editions - All rights reserved - Samuel CASAL

- 3-

LacommandespcifiquesmbpasswdpermetlacrationdunmotdepasseMD4pouruncompteLinuxexistant.Ce
motdepasseeststockpart,gnralementdansunfichier/etc/samba/smbpasswd.
Syntaxedelacommandesmbpasswdpouraffecterunmotdepasse
smbpasswd -a nom_compte

Commandesmbpasswd:optionsetparamtres
a

Facultatif.Ncessairesilecomptenedisposepasencoredemotdepassesamba.

nom_compte

LecompteLinuxauquelilfautaffecterunmotdepassesamba.

d.SynchronisationaveclesmotsdepasseLinux
Il est possible de demander synchroniser les mots de passe samba avec les mots de passe du systme Linux.
Attention, comme expliqu prcdemment, les mots de passe sont encrypts dans les deux systmes avec deux
algorithmes de hachage diffrents, par dfinition irrversibles. La synchronisation ne peut donc se faire quau
momentolemotdepasseestsaisienclairlorsdelutilisationdelacommandesmbpasswd.Lemotdepasseen
clairestalorsencryptdeuxfoisaveclesdeuxalgorithmesdiffrents,etlesdeuxbasesdecomptesontmodifies.
Cettesynchronisationestactiveparunedirectivedanslefichiersmb.conf.
Activationdelasynchronisationdemotsdepassedanssmb.conf
unix password sync = yes

e.Suppressionoudsactivationduncomptesamba
On peut souhaiter interrompre pour un utilisateur laccs aux ressources partages sur un serveur samba. La
commande smbpasswd permet de supprimer, dsactiver ou de ractiver le compte samba, indpendamment du
compteLinuxassoci.
Commandesmbpasswdpourdsactiveruncomptesamba
smbpasswd -d nom_compte
Commandesmbpasswdpourractiveruncomptesamba
smbpasswd -e nom_compte
Commandesmbpasswdpoursupprimeruncomptesamba
smbpasswd -x nom_compte
O nom_compte reprsente le compte utilisateur samba manipuler. Il est noter que les oprations sur les
comptessambanontaucuneincidencesurlecompteLinuxcorrespondant.

4.LeclientSamba
Le client samba permet daccderunpartagedunemachineWindowsouSambadepuisunclientLinux.Ilpermet
ventuellementunclientLinuxdeseconnecterunserveurSambaLinux,maisonlenvisagerapluttpouraccder
desdonnessurunpartageWindowsdepuisunemachineLinux.Lesdeuxcommandesprincipalesduclientsamba
sontsmbclientetsmbmount.

a.Exploitationponctuellederessourcesavecsmbclient
Onutiliseessentiellementsmbclientpourobtenirdesinformationssurlesressourcespartageshbergesparun
serveurSMB.

- 4-

ENI Editions - All rights reserved - Samuel CASAL

Utilisationdesmbclientpourrcuprerdesinformationssurunserveursmb
smbclient -L adresse_serveur -U nom_utilisateur

smbclientpouraffichagedespartages:paramtres
adresse_serveur

LadresseIPduserveurdontonveutobserverlesressources.

nom_utilisateur

Indiquelenomdelutilisateurquifaitlarequteauprsduserveur.Doittreun
compteexistantetvalidesurleserveur.

On pourra galement utiliser la commande smbclient de faon interactive en se connectant une ressource
partageetenaccdantunshellquipermettraderaliserdesoprationssurlesfichiers.
Utilisationsdesmbclientenmodeinteractif
smbclient \\\\adresse_serveur\\partage -U nom_utilisateur
smbclient //adresse_serveur/partage -U nom_utilisateur
Opartagereprsentelenomdupartagehbergparleserveur.Lesmultiplesantislashsontncessairesmmesils
obligentunesyntaxeunpeucurieuse.Enfait,ilsagitduncheminUNC:UniformNamingConvention,utilispour
dsigneruneressourcedanslesenvironnementsWindows.UncheminUNCestcomposdunomduserveurprcd
dedeuxantislashs,puisduchemindelaressource,sparparunslashchaqueniveau.Or,ilsetrouvequedans
les environnements Linux, lantislash est un caractre rserv qui indique que le shell ne doit pas interprter le
caractresuivant.Pourcrireunvritableantislash,ilfautdonclefaireprcderdunpremierantislashquiindique
queledeuximedoittreconsidrcommeunantislashnaturel.Unealternativepluslgreconsisteredresserles
slashsetutiliserlesslashsdroits.Lesdeuxsyntaxessontadmises.
Une fois cette commande excute et aprs avoir tap le mot de passe de lutilisateur, on est dans un shell
spcifiquesmbclientquipermetderaliserdesoprationssurlesfichiers.Lesprincipauxusagesserontvidemment
dercupreroudenvoyerdesfichiersverslepartage.Onpeutsedplacerdanslarborescenceaveclacommande
cd, puis les deux commandes essentielles serontget pour rcuprer des fichiers, etput pour envoyer des fichiers
verslepartage.
Exempledutilisationdesmbclientenmodeinteractif
LutilitairesmbclientprsenteunjeudecommandessemblableceluidesclientsFTP.
alpha:~# smbclient \\\\192.168.0.1\\data -U toto
Enter totos password:
Domain=[WSERVEUR] OS=[Windows 5.1] Server=[Windows 2000 LAN Manager]
smb: \> ls
.
D
0 Wed Feb 3 19:28:33
..
D
0 Wed Feb 3 19:28:33
deux
D
0 Wed Feb 3 18:50:05
un
D
0 Wed Feb 3 19:28:38

2010
2010
2010
2010

40915 blocks of size 262144. 34718 blocks available


smb: \> cd un
smb: \un\> ls
.
D
0 Wed Feb
..
D
0 Wed Feb
fichier.txt
A
27 Wed Feb
truc.bmp
A
0 Wed Feb

2010
2010
2010
2010

3
3
3
3

19:28:38
19:28:38
19:15:49
18:46:44

40915 blocks of size 262144. 34718 blocks available


smb: \un\> get fichier.txt
getting file \un\fichier.txt of size 27 as fichier.txt (2,0 kb/s) (average 2,0 kb/s)
smb: \un\> exit
alpha:~# ls
fichier.txt
alpha:~#

b.Montagedunpartagesmbavecsmbmount

ENI Editions - All rights reserved - Samuel CASAL

- 5-

Si smbclient permet un accs ponctuel des partages, il existe un moyen plus confortable dexploiter des
rpertoirespartagsdepuisunclientLinux:lemontagedunpartagesurlastationLinux.
LacommandesmbmountpermetderaliserlemontagedunpartageSMBsurunrpertoirelocalcommeonpeutle
fairedunfilesystemlocaloudunpartageNFS.
Syntaxesdelacommandesmbmount
smbmount \\\\adresse_serveur\\partage point_montage -o user=nom_utilisateur
smbmount //adresse_serveur/partage point_montage -o user=nom_utilisateur

smbmount:optionsetparamtres
adresse_serveur

LadresseIPduserveurdontonveutaccderaupartage.

partage

Lenomdupartagehbergparleserveur.

point_montage

Lerpertoireexistantsurlequelseramontlepartage.

nom_utilisateur

Lenomdelutilisateurquiferalarequteauprsduserveur.Doittreuncompte
existantetvalidesurleserveur.

Il existe une alternative cette syntaxe, cest de raliser le montage par la commande mount en appelant
smbmountentantquesousprogramme.Cettesyntaxeprsentelavantageduniformisertouteslesoprationsde
montage,etdoncdeneretenirquunesyntaxegnrique.
Syntaxedelacommandemountpourpartagesmb
mount -t smbfs -o username=nom_utilisateur //adresse_serveur/partage point_montage
Loption t smbfs provoque lappel du sousprogramme smbmount pour raliser le montage, mais partir dune
syntaxequasistandardpourraliserlemontage.

c.MontagedunpartageCIFS
Pour rpondre aux besoins douverture du protocole, SMB sest normalis, a volu et sappelle dsormais CIFS :
CommonInternetFileSystem.LasuitelogicielleSambadsignedsormaissonclientetleslmentslogicielssousce
nom.Leshabitudesayantlapeaudure,lusagedeladnominationSMBperdureencorelargement.
Selon les versions de samba employes, on peut nutiliser que smb, cifs seul ou smb et cifs indiffremment. La
tendanceestladisparitiondesmbauprofitdecifs.
Syntaxedelacommandemountpourpartagecifs
mount -t cifs -o username=nom_utilisateur //adresse_serveur/partage point_montage

Il est possible de vrifier ct serveur quels sont les clients connects. La commande smbstatus permet
dafficherlesconnexionssmbactives.

- 6-

ENI Editions - All rights reserved - Samuel CASAL

PartagedefichiersavecFTP
1.LeprotocoleFTP
a.Historique
FTP : File Transfer Protocol est un protocole clientserveur assez ancien qui fut lun des premiers permettre le
partagedefichiersentredeuxordinateurs.Ilaunpassglorieux,etfutparexempleemployavantlacrationdu
protocoleSMTPpourtransfrerlesmessageslectroniquesdunordinateurunautre.
Aujourdhui, son ge et une certaine rigidit le rendent moins apte un partage de fichiers confortable. Il reste
nanmoins trs utilis, notamment par les hbergeurs internet qui proposent gnralement leurs clients de
mettrejourlessiteswebhbergsparFTP.

b.Paramtrestechniques
FTP est transport par TCP et fonctionne sur le port 21 pour la transmission des commandes. Le port 20 est
historiquementutilispourpasserlesdonnestlchargesmaisanestplusuncomportementuniversel.
FTPsupportelauthentificationdesclients,maisavecundegrdescuritfaiblelerendantinapteautransfertde
fichierssensibles.Eneffet,FTPestbienconnupourtransporterlemotdepassedesesclientsenclairsansaucun
cryptage.Pourcesraisons,FTPestgnralementutilisaujourdhuidansunusagespcifique:lemodeanonyme.
LesserveursFTPpeuventreconnatreuncompteuniqueanonymeetluiautoriserunaccslimit,gnralementen
lecture seule sur certains rpertoires. Le compte doit obligatoirement sappeler anonymous, et le serveur a la
possibilit de demander un mot de passe, qui pourra tre nimporte quelle suite de caractres. Le mot de passe
seraalorsconservpourdesraisonsdetraabilitmmesileclientnaaucuneobligationsurcemotdepasse.

c.ModeFTPactifetFTPpassif
Historiquement,lesclientsFTPtravaillaientenmodeactifolasessionesttabliesurleport21duserveur,eto
les donnes sont envoyes depuis le port 20 et linitiative du serveur vers un port quelconque du client. Ce
fonctionnementquidatedavantlagnralisationdesparefeunevapassansposerdeproblmedanslamesure
oilestvuparleparefeucommeunesessionouvertedepuisleserveursurunportimprvisibleduclient.
Lemode passif est venu corriger cet tat de fait en faisant tablir les deux sessions par le client. Le port utilis
pour les donnes est alors quelconque, annonc par le serveur en mode commande, et utilis par le client pour
louverturedelasessiondedonnes.

2.LesclientsFTP
a.LesclientsFTPgraphiques
LesclientsFTPgraphiquessontnombreuxetexistentpourtouteslesplatesformes.Onpeutciterfilezillaquiestun
produitopensourcetrspopulairesurlessystmesWindows.LaconfigurationetlusagedesclientsFTPgraphique
variantselonlesproduitsetneprsentantpasdedifficultmajeure,leurutilisationneserapastraiteici.

b.LeclientFTPenlignesdecommandes
LaplupartdessystmesincluentunclientFTPenlignesdecommandes.Lemodedefonctionnementdecesclients
peut les rendre inconfortables pour un usage frquent mais ils sont extrmement pratiques pour tester la
configurationdunserveurFTP.
Lechargementdecesclientssefaitleplussimplementdumondeparlacommandeftp.
LavantageprincipalduclientFTPenlignedecommandeestquilpermetderalisertouteslesoprationsvoulues
une une, et donc de comprendre en cas de dysfonctionnement o se situe lchec. Au contraire, les clients
graphiques ont tendance automatiser un grand nombre doprations. Pour une connexion FTP avec Internet
Explorer par exemple, la connexion est automatiquement anonyme, et un mot de passe standard est
automatiquementenvoy.
ClientFTP:commandescourantes
ENI Editions - All rights reserved - Samuel CASAL

- 1-

open

OuvreunesessionFTPversleserveurdonnenrfrence.Leclientdemandera
interactivementladresseduserveur.

close

FermeunesessionFTPencours.

ls

Affichelesfichierscontenusdanslerpertoirecourantdistant.

cd

Changelerpertoirecourantdistant.LasyntaxeestlammequedansunshellLinux.

get

Tlcharge(rcupre)unfichierdurpertoirecourantdistantdanslerpertoirecourantlocal.

put

Tlcharge(envoie)unfichierdurpertoirecourantlocalverslerpertoirecourantdistant.

3.LeserveurPureFTPd
PureFTPdestunserveurFTPquiviseproposerunservicedetransfertdefichiersimple,stableetefficace.Ilseveut
adaptaussibienauxdbutantsquauxsituationsdeproductionenentreprise.Saprincipalecaractristiqueestde
pouvoirtrelancfacilementenlignedecommandesanssappuyersurunfichierdeconfiguration.

a.Fonctionnementpouraccsdesutilisateursleursrpertoirespersonnels
Cest le fonctionnement par dfaut, et les utilisateurs possdant un compte et un rpertoire personnel peuvent
accderleursdonnesavecleuridentifiantetleurmotdepassehabituel.Attention,cemodedefonctionnement
estgnralementdconseilldanslamesureoletransitdumotdepasseenclairmetendangerlemotdepasse
Linuxdesutilisateurs.
Lancementduservice
pure-ftpd

b.Fonctionnementenaccsanonyme
Laccsanonymeestpossiblesiuncompteutilisateurftpatcrsurleserveur.Lesclientsconnectsenmode
anonymetravaillentalorsdanslerpertoire/home/ftp.
Ilestpossibledetravaillerenmodeanonymeseulenappelantpureftpdavecloptionanonymousonly.

c.Optionsdefonctionnement
Pureftpd fonctionnant gnralement sans fichier de configuration, la ligne de commande lanant le service sera
enrichiedoptionsdeconfigurationenfonctiondursultatvoulu.Certainesimplmentationstoutefoisexploitentun
ouplusieursfichiersdeconfigurationquisontinterprtsparlescriptdelancementduservice.Lalistecidessous
prsentecertainesdesoptionslespluscourantes.
pureftpd:optionscourantes

- 2-

help

Affichelesoptionspossibles.

displaydotfile

Afficheaussilesfichierscachsauxclients.

anonymousonly

Fonctionnementenserveuranonymeuniquement.(silecompteftp
existe)

noanonymous

Empchetouteconnexionanonyme.(mmesilecompteftpexiste)

maxidletime

Tempsmaximumdinactivitavantdconnexionforce.

anonymouscantupload

Empchelesutilisateursanonymesdetransfrerdesfichiersversle

ENI Editions - All rights reserved - Samuel CASAL

serveur.
anonymouscancreatedirs

Permetauxutilisateursanonymesdecrerdesrpertoires.

4.Leserveurvsftpd
vsftpdpourverysecureFTPdaemonestunautreserveurFTPtrspopulairesurlessystmesLinux.Ilsappuiesur
unserviceetunfichierdeconfiguration: vsftpd.conf.Uneconnaissancesommairedevsftpdestdemandepourla
certificationLPI.
Formatdesoptionspourlefichiervsftpd.conf
paramtre=valeur
LaplupartdesparamtresontpourvaleurYESouNO.
Fichiervsftpd.conf:paramtrescourants
anonymous_enable

Autoriseounonlaccsanonyme.

local_enable

Autoriseounonlesutilisateursaccderleurrpertoirepersonnel.

write_enable

Autoriseounonletlchargementdefichiersversleserveur.

anon_upload_enable

Autoriseounonletlchargementversleserveurpourlesutilisateurs
anonymes.

anon_mkdir_write_enable

Autoriseounonlacrationderpertoirespourlesutilisateurs
anonymes.

ENI Editions - All rights reserved - Samuel CASAL

- 3-

Validationdesacquis
Testezvosconnaissancesenrpondantauxquestionssuivantes.Cesquestionsnappellentpastoujoursdesrponses
dfinitives. Les questions poses en certification, bien quabordant les mmes sujets, seront pour la plupart poses
sous forme de questionnaire choix multiples, ou bien demanderont une rponse courte, tape en toutes lettres au
clavier.

1.Questions
1 Commentlesclientsenlignesdecommandeaccdentilsauxdonnesdunpartage,quilsoitdetypeNFSou
Samba?
2 Estilpossibledepartagerlesrpertoiresrfrencsdanslefichier/etc/exportssansavoirlancerleservice
NFS?
3 Pourquoiloptionroot_squashestelleappliquepardfautunpartageNFS?
4 QuelestleprocessuslancparlechargementdunscriptdegestiondeserviceNFS?
5 SuruneconnexionunserveurNFSnonfiable,quelleoptionseraitadquatepourassurerunclientNFSque
lesoprationsdcrituresontformellementralises?
6 EstilpossibledevrifierlavaliditdunfichierdeconfigurationSAMBAsanschargerleservice?
7 CommentempcherlesutilisateursdevoirunpartageSAMBAdanslecadreduneexplorationrseau?
8 Commentcrerunmotdepassepartirdumotdepasseunixduncomptedjprsentsurlesystme?
9 PeutonsynchroniserlesmotsdepasseUnixaveclesmotsdepasseSAMBA?
10 PourquoilemodeactifsestilprogressivementrarfiauprofitdumodepassifsurlesclientsFTP?

2.Rponses
1 Commentlesclientsenlignesdecommandeaccdentilsauxdonnesdunpartage,quilsoitdetypeNFSou
Samba?
Par une opration de montage. Le rpertoire partag est mont sur un rpertoire local. Attention, mme si cest la
commandeuniversellemountquiestemploye,deslmentslogicielsclientsdoiventtreprsentsurlesystmepour
permettrelemontage.
2 Estilpossibledepartagerlesrpertoiresrfrencsdanslefichier/etc/exportssansavoirlancerleservice
NFS?
Oui,aveclacommandeexportfs,appeleavecleparamtrea.
3 Pourquoiloptionroot_squashestelleappliquepardfautunpartageNFS?
ParcequelecontrledaccsauxpartagesNFSestbassurlidentifiant(uid)desclientsseconnectant.Lecompteroot
ayanttoujourslemmeidentifiantutilisateur0,loptionroot_squashluifaitperdresesprrogativesafinquenimporte
quel utilisateur root nait pas les pleins pouvoirs sur un partage NFS. Ce comportement est toutefois modifiable en
indiquantexplicitementloptionno_root_squashauchargementdupartage.
4 QuelestleprocessuslancparlechargementdunscriptdegestiondeserviceNFS?
NFSestenfaitdpendantdetroisprocessus:portmapd,nfsdetmountd.Lenomduscriptdelancementdeservice
esttrsvariabledunedistributionlautre(nfspourRedHat,nfkkernelserverpourDebian).
5 SuruneconnexionunserveurNFSnonfiable,quelleoptionseraitadquatepourassurerunclientNFSque
lesoprationsdcrituresontformellementralises?
Loption de montage sync empche les critures asynchrones. Ainsi, le serveur sinterdit tout usage de cache en
criture, et le client nest notifi de la russite dune opration dcriture quune fois quelle a t physiquement
ralise.
6 EstilpossibledevrifierlavaliditdunfichierdeconfigurationSAMBAsanschargerleservice?
Oui, avec la commande testparm. La commande testparm vrifie la validit du fichier de configuration et affiche les
commandesactivessurlasortiestandard.Ilestnoterquelesparamtrespardfautnesontpasaffichs,moins
quelacommandenaittappeleavecloptionv.
7 CommentempcherlesutilisateursdevoirunpartageSAMBAdanslecadreduneexplorationrseau?
Leparamtrebrowseabledansladfinitiondunpartagedanslefichierdeconfigurationpermetdegrerlavisibilitdun
partageparlesclients.
8 Commentcrerunmotdepassepartirdumotdepasseunixduncomptedjprsentsurlesystme?
ENI Editions - All rights reserved - Samuel CASAL

- 1-

On ne peut pas. Le mot de passe dun compte unix est crypt avec lalgorithme de hachage MD5, par dfinition
irrversible.LesmotsdepasseSMBdevanttrecrscryptsaveclalgorithmeMD4,ilnestpaspossibledecrerce
motdepassepartirdesdonnescryptesprsentessurlesystme.
9 PeutonsynchroniserlesmotsdepasseUnixaveclesmotsdepasseSAMBA?
Oui, en incluant la directive "unix passwd sync = yes" dans le fichier de configuration. Attention, les algorithmes de
hachage tant diffrents, cette synchronisation ne peut se faire que quand le mot de passe SAMBA est exprim en
clair.Onaalorsdeuxoprationsdencryption:uneenMD5pourlabasedecompteUnix,etlautreenMD4pourlabase
decompteSAMBA.
10 PourquoilemodeactifsestilprogressivementrarfiauprofitdumodepassifsurlesclientsFTP?
Parcequelemodeactifutilishistoriquementexploiteunnumrodeportpourlesdonnesinitiparleserveurversle
client, et que les parefeu voient gnralement dun assez mauvais il. Dans le mode passif, le client initie les
sessionsdecommandescommelessessionsdedonnes,cequiestbeaucoupmieuxcomprisparlesparefeu.

- 2-

ENI Editions - All rights reserved - Samuel CASAL

Travauxpratiques
1.MiseenplacedepartagesSAMBAsurleserveuralpha
DenombreuxpostesdetravailWindowssontprsentssurvotrerseau,etvoussouhaitezmettreleurdisposition
unserveurdefichiers.VousdcidezdoncdinstallerleserviceSambasurleserveuralpha.Ceserveurdoitpermettre
aux utilisateurs daccder aux documents de leur rpertoire personnel sur le serveur, et aussi de prsenter un
partagecommundetypefourretoutpourlchangelibrededonnesentreutilisateurs.

a.Installationdesservicesapplicatifs
Surleserveuralpha,installezlacoucheapplicativeSAMBAparlacommandesuivante :
apt-get install samba
Accepteztousleschoixpardfaut.

b.Affichagedelaconfigurationpardfaut
Commandesutiles

vi

testparm

Manipulations
1.

Leservicefrachementinstall,affichezlesparamtresenvigueurappliqusparle
serveurtirsdufichiersmb.conf.

2.

Affichezmaintenantlesparamtresenvigueur,maiscettefoisenincluantles
paramtrespardfautnonexplicitementmentionnsdanslefichiersmb.conf.

Rsumdescommandesetrsultatlcran
Paramtresexplicites :
alpha:/etc/samba# testparm
Load smb config files from /etc/samba/smb.conf
Processing section "[homes]"
Processing section "[printers]"
Processing section "[print$]"
Loaded services file OK.
Server role: ROLE_STANDALONE
Press enter to see a dump of your service definitions
[global]
server string = %h server
obey pam restrictions = Yes
passdb backend = tdbsam
pam password change = Yes
passwd program = /usr/bin/passwd %u
passwd chat = *Enter\snew\s*\spassword:* %n\n *Retype\snew\s*\spassword:* %n\n
*password\supdated\ssuccessfully* .
unix password sync = Yes
syslog = 0
log file = /var/log/samba/log.%m
max log size = 1000
dns proxy = No
panic action = /usr/share/samba/panic-action %d

ENI Editions - All rights reserved - Samuel CASAL

- 1-

[homes]
comment = Home Directories
valid users = %S
create mask = 0700
directory mask = 0700
browseable = No
(...)
alpha:/etc/samba#
Touslesparamtres :
alpha:/etc/samba# testparm -v
Load smb config files from /etc/samba/smb.conf
Processing section "[homes]"
Processing section "[printers]"
Processing section "[print$]"
Loaded services file OK.
Server role: ROLE_STANDALONE
Press enter to see a dump of your service definitions
[global]
dos charset = CP850
unix charset = UTF-8
display charset = LOCALE
workgroup = WORKGROUP
realm =
netbios name = ALPHA
netbios aliases =
netbios scope =
server string = %h server
interfaces =
bind interfaces only = No
config backend = file
security = USER
auth methods =
encrypt passwords = Yes
update encrypted = No
client schannel = Auto
(... 375 lignes en tout !)
alpha:/etc/samba#

c.Gestiondesmotsdepasse
Commandesutiles

smbpasswd

Manipulations
1.

AffectezunmotdepasseSAMBAaucompteutilisateurtotoprsentsurleserveur
alpha.

Rsumdescommandesetrsultatlcran
alpha:/etc/samba# smbpasswd -a toto
New SMB password:
Retype new SMB password:
alpha:/etc/samba#

d.Accsdesutilisateursleursrpertoirespersonnelsdepuislastationdetravail
Tous les utilisateurs disposant dune machine Windows tant absents, vous dcidez de faire les premiers essais
fonctionnelsdepuislastationdetravailUbuntu.Vousutilisezpourcelaleclientgraphiquedelastationdetravail.

- 2-

ENI Editions - All rights reserved - Samuel CASAL

Commandesutiles

Utilisationdelinterfacegraphique

Manipulations
1.

Ouvrezunesessionsurlastationdetravail.

2.

DanslemenuRaccourcis,cliquezsurSeconnecterunserveur.

3.

DanslemenuTypedeservice,choisissezPartageWindows.

4.

RenseignezlechampServeuravecladresseIPdealpha.

5.

RenseignezlechampPartageaveclenomtoto.

6.

CliquezsurleboutonSeconnecter.

7.

Danslafentredauthentification,renseignezlemotdepassedelutilisateur.

8.

Lerpertoiredelutilisateurdoitmaintenanttreaccessible.

e.Crationdunpartagecommun
Commandesetfichiersutiles

chmod

mkdir

smb.conf

testparm

vi

Manipulations
1.

Suralpha,crezunrpertoire/public.

2.

Faitesensortequetouslesutilisateurspuissentlireetcriredanscerpertoire.

3.

ditezlefichierdeconfigurationSAMBAsuralpha.

4.

Ajoutezunesectiondepartageaccessibleenlectureetcriturepourlerpertoire
public.

5.

Faitesensortequecepartagesoitvisiblelorsdunenavigationrseau(detype
voisinagerseauWindows).

6.

Faitesensortequelecontenudesrpertoirescrsdistancesoiteffaablepartous
(droitsrwxpourlensembleothersurlesrpertoirescrs).

7.

Testezlavaliditdevotresyntaxesansrechargerleservice.

8.

Rechargezleservicesamba.

Rsumdescommandesetrsultatlcran
Crationdurpertoire :
alpha:/home/toto# mkdir /public
alpha:/home/toto# chmod o+rwx /public/
alpha:/home/toto#
ENI Editions - All rights reserved - Samuel CASAL

- 3-

Sectiondepartagedanssmb.conf :
[public]
path = /public
writeable = yes
browseable = yes
directory mask = 0777
Validitdelasyntaxe :
alpha:/public# testparm
Load smb config files from /etc/samba/smb.conf
Processing section "[homes]"
Processing section "[public]"
Processing section "[printers]"
Processing section "[print$]"
Loaded services file OK.
Server role: ROLE_STANDALONE
Press enter to see a dump of your service definitions
Rechargementduservice :
alpha:/home/toto# /etc/init.d/samba reload
alpha:/home/toto#

f.Accsdesutilisateursaunouveaupartage
Commandesutiles

Utilisationdelinterfacegraphique

Manipulations
1.

Ouvrezunesessionsurlastationdetravail.

2.

DanslemenuRaccourcis,cliquezsurSeconnecterunserveur.

3.

DanslemenuTypedeservice,choisissezPartageWindows.

4.

RenseignezlechampServeuravecladresseIPdealpha.

5.

NerenseignezpaslechampPartageafindaffichertouslespartagesconfigurscomme
visibles.

6.

CliquezsurleboutonSeconnecter.

7.

Danslafentredauthentification,renseignezlemotdepassedelutilisateur.

8.

Lerpertoirepublicdoitmaintenanttrevisible.Notezquelerpertoirepersonnel
napparatpas,carconfigurcommetantnonvisible(Browseable=No).

2.MiseenplacedepartagesNFSsurleserveurbeta
LinstallationprochainedunesolutiondevirtualisationncessitelamiseenplacedunserveurNFSauseindurseau.
Laccs se fera avec le compte root et lcriture devra tre possible sur le partage. Vous dcidez de configurer un
serviceNFSsurleserveurbeta.

a.Installationdesservicesapplicatifs
SurlastationdetravailUbuntu,installezlacoucheapplicativeNFSparlacommandesuivante :

- 4-

ENI Editions - All rights reserved - Samuel CASAL

sudo apt-get install nfs-common


LesservicesNFSdoiventdjtreinstallssurleserveurbeta.

b.Configurationdupartage
Commandesetfichiersutiles

/etc/exports

exportfs

mkdir

vi

Manipulations
1.

DmarrezleserviceNFSsurbeta.

2.

Vrifiezquaucunpartagenestactuellementactif.

3.

Crezunrpertoire/virtu.

4.

Crezunfichierdeconfiguration/etc/exportsquipartagecerpertoireenlectureet
critureavecaccsnormalducompteroot.

5.

Prenezencomptelepartagesansredmarrerleservicenfs.Vrifiez.

Rsumdescommandesetrsultatlcran
Dmarrageduservice :
[root@beta init.d]# service nfs start
Dmarrage des services NFS :
[ OK ]
Dmarrage du quota NFS :
[ OK ]
Dmarrage du dmon NFS :
[ OK ]
Dmarrage de NFS mountd :
[ OK ]
[root@beta init.d]#
Vrificationdespartagesactifs :
[root@beta init.d]# exportfs
[root@beta init.d]#
Crationdurpertoire :
[root@beta init.d]# mkdir /virtu
[root@beta init.d]#
Fichier/etc/exports :
/virtu

*(rw,no_root_squash)

Priseencomptedupartage :
[root@beta init.d]# exportfs -a
[root@beta init.d]# exportfs
/virtu
<world>
[root@beta init.d]#

ENI Editions - All rights reserved - Samuel CASAL

- 5-

c.Connexiondepuislastationcliente
Commandesutiles

mkdir

mount

Manipulations
1.

Crezunrpertoirevirtusous/mntquiserviradepointdemontage.

2.

MontezlepartageNFS/virtuduserveurbetasurlepointdemontage/mnt/virtu/.

Rsumdescommandesetrsultatlcran
Crationdupointdemontage :
toto@ubuntu:/mnt$ sudo mkdir /mnt/virtu
[sudo] password for toto:
toto@ubuntu:/mnt$ ls
virtu
toto@ubuntu:/mnt$
Montagedupartage :
toto@ubuntu:/mnt$ sudo mount -t nfs 192.168.200.102:/virtu virtu
toto@ubuntu:/mnt$ ls virtu
deux trois un
toto@ubuntu:/mnt$

3.ConfigurationdunserveurFTPsurleserveuralpha
Il arrive trs ponctuellement que certains utilisateurs aient vous remettre des fichiers trop volumineux pour tre
envoysparcourrierlectronique.VousdcidezalorsdemettreenplaceunserviceFTP.Unpeuinquietenmatire
de scurit, vous dcidez que le service sera charg la demande, et permettra des accs anonymes en
tlchargementmontant,sansquelesutilisateursconnectspuissentconsulterlecontenudurpertoiredetravail
FTP.

a.Installationduserviceapplicatif
Surleserveuralpha,installezlacoucheapplicativepureftpdparlacommandesuivante :
apt-get install pure-ftpd

b.Configurationetlancementduservice
Commandesutiles

- 6-

adduser

chmod

passwd

pureftpd

ENI Editions - All rights reserved - Samuel CASAL

Manipulations
1.

Ajoutezuncompteutilisateurftp.

2.

Verrouillezlecompteutilisateuretlimitezlesdroitssursonrpertoirepersonnel.Ildoit
pouvoircrireetcrerdesdocuments,maispaslesvoir.Legroupeetlesautres
utilisateursnedoiventavoiraucundroitsurlerpertoire.

3.

Lancezleserviceenfonctionnementanonymeuniquement.

Rsumdescommandesetrsultatlcran
Crationducompteftp :
alpha:/# adduser ftp
Ajout de lutilisateur ftp ...
Ajout du nouveau groupe ftp (1001)...
Ajout du nouvel utilisateur ftp (1001) avec le groupe ftp ...
Cration du rpertoire personnel /home/ftp ...
Copie des fichiers depuis /etc/skel ...
Entrez le nouveau mot de passe UNIX :
Retapez le nouveau mot de passe UNIX :
passwd : le mot de passe a t mis jour avec succs
Modification des informations relatives lutilisateur ftp
Entrez la nouvelle valeur ou Entre pour conserver la valeur propose
Nom complet []: ftp user
N de bureau []:
Tlphone professionnel []:
Tlphone personnel []:
Autre []:
Ces informations sont-elles correctes ? [O/n]
alpha:/#
Verrouillageducompte :
alpha:/# passwd -l ftp
Mot de passe chang.
alpha:/#
Limitationdesdroits :
alpha:/# chmod u=wx,go= /home/ftp
alpha:/# ls -ld /home/ftp
d-wx------ 2 ftp ftp 4096 jui 16 13:59 /home/ftp
alpha:/#
Lancementduservice :
alpha:/# pure-ftpd -anonymousonly

c.ConnexiondepuislastationclienteUbuntu
Commandesutiles

ftp

vi

Manipulations
1.

Crezunfichiertexteparlemoyendevotrechoix.

2.

LancezleclientFTP.

3.

OuvrezunesessionFTPanonymeversleserveuralpha.
ENI Editions - All rights reserved - Samuel CASAL

- 7-

4.

Essayezdevoirlecontenudurpertoire.

5.

Envoyezvotrefichierversleserveur.

Rsumdescommandesetrsultatlcran
Crationdufichier :
toto@ubuntu:~$ echo "bla bla" > fichier
toto@ubuntu:~$ echo "bla" >> fichier
toto@ubuntu:~$ cat fichier
bla bla
bla
toto@ubuntu:~$
OuverturedesessionFTP :
toto@ubuntu:~$ ftp
ftp> open 192.168.200.101
Connected to 192.168.200.101.
220---------- Welcome to Pure-FTPd [privsep] [TLS] ---------220-You are user number 1 of 50 allowed.
220-Local time is now 14:12. Server port: 21.
220-Only anonymous FTP is allowed here
220-IPv6 connections are also welcome on this server.
220 You will be disconnected after 15 minutes of inactivity.
Name (192.168.200.101:toto): anonymous
230 Anonymous user logged in
Remote system type is UNIX.
Using binary mode to transfer files.
ftp>
Essaidelectureducontenuderpertoire :
ftp> ls
200 PORT command successful
150 Connecting to port 49524
226-Sorry, we were unable to read [.]
226-Options: -l
226 0 matches total
ftp>
Envoidefichierversleserveur :
ftp> put fichier
local: fichier remote: fichier
200 PORT command successful
150 Connecting to port 50945
226-File successfully transferred
226 0.006 seconds (measured here), 1.93 Kbytes per second
12 bytes sent in 0.00 secs (5.8 kB/s)
ftp>
ftp> bye
221-Goodbye. You uploaded 1 and downloaded 0 kbytes.
221 Logout.
toto@ubuntu:~$

- 8-

ENI Editions - All rights reserved - Samuel CASAL

Prrequisetobjectifs
1.Prrequis
LesconnaissancesacquiseslorsdelacertificationLPIniveau1,notamment:

Savoirditerdesfichierstexte.
AvoirdesconnaissancesgnralesIP.

2.Objectifs
lafindecechapitre,vousserezenmesurede:

ConnatrelarchitectureetleprincipedelarsolutionDNS.
ConnatrelesprincipauxtypesdenregistrementsDNS.
ConfigurerunclientDNS.
ConfigurerunserveurdecacheDNS.
ConfigureruneredirectiondelarsolutionDNS.
Exploiterlacommandedepilotagerndc.
GrerdeszonesDNSdirectesetinverses.
CrerdesenregistrementsderessourcesdansdeszonesDNS.
GrerdeszonesDNSsecondaires.
ConfigurerunedlgationdezoneDNS.
ConnatrelesprincipauxoutilsdetestdersolutionDNS.
ScuriserunserveurDNS.

ENI Editions - All rights reserved - Samuel CASAL

- 1-

Gnralits
LesystmeDNSestlesupportdenombreusesfonctionnalitssurinternetallantdelanavigationlenvoidecourriers
lectroniques.Sabonneconfigurationestessentielledanslecadredunrseaulocal,etprimordialesurinternet.

1.LesdbutsdelarsolutiondenomsetlapparitionduDNS
Depuis le dbut des rseaux IP, le principe de la rsolution de noms est de faire correspondre un nom facile
mmoriseruneadresseIP,seuleinformationrellementexploitablepourcontacterunemachinedistante.
nomdemachine<>130.130.28.12
Tantquelesmachinespubliquessurinternettaientpeunombreuses,touteslesrsolutionssefaisaientaumoyen
dunfichierappelhostsquontlchargeaitintervallergulierpourseteniraucourantdesnouveauts.
Le DNS a t conu pour pallier les limites du fichier hosts tlcharg, et devait rpondre certains impratifs de
conception.
LeDNSestdynamique
Lesenregistrementsdoiventpouvoirtreajoutsdefaonuniquedanslesystme,etdevenirrapidementdisponibles
pourtous.
LeDNSestrpliqu
On ne peut se permettre de dpendre dun seul serveur, et les informations existent toujours en plusieurs
exemplaires.
LeDNSesthirarchis
Lesinformationssontclassesenunearborescencequipermetleurorganisation.Chaqueniveaudelahirarchieest
appelzone,etlesommetdecettehirarchieestlazone..
LeDNSestdistribu
Les informations sont rparties en une multitude de sousbases (les zones DNS), et lensemble de ces petites
bases dinformations compose lintgralit des enregistrements DNS. Ce fonctionnement a lavantage de faciliter
ladministrationenrpartissantlachargesurdesmilliersdeserveurs.
LeDNSestscuris
Cetimpratifestapparuplustardivement,etnestpasencoreimplmentsurtouslesserveursDNS.Onatoutefois
dsormaislapossibilitdescuriserdeboutenboutlesoprationsduDNS.Lesservicesdescuritdisponiblessont
lauthentification,lecontrledaccsetlecontrledintgrit.

2.ConceptdezonesDNS
LenombreplthoriquedenregistrementsDNSnepermettraitpasleurgestionsansaucuneformedorganisation(cela
reviendrait avoir un fichier hosts contenant des millions de lignes). Leur organisation hirarchique tait donc
indispensable, et cest la raison dtre des zones DNS. Chaque niveau de la hirarchie est une zone. Chaque
arborescenceestundomaine.
Onaarbitrairementcrunezoneappele.(point),quiestlaracinedelahirarchie,etquicontienttousles
tld:topleveldomain(domainedeniveausuprieur).Lestldsontlesextensionsbienconnuestellesquecom,fr,net,
be,etc.Touslesdomainesquenousconnaissonsetutilisonssontdessousarborescencesdestld.

ENI Editions - All rights reserved - Samuel CASAL

- 1-


Dans lexemplecidessus, la zone france contient les souszones rhone, nord et idf. Mais on peut aussi dire que la
zone.contientlessouszonesfr,cometedu.Leszonessitueshirarchiquementsousunezonesontappeles
zones"enfant".
Lintrt de cette organisation est de ddier un serveur (en fait au moins deux pour des raisons de tolrance de
pannes) la gestion dune zone. Et comme la hirarchie DNS est virtuellement illimite, en largeur comme en
profondeur,unserveurDNSnegreenfaitquunepetiteportiondelespacedenom.Toujoursdansnotreexemple,si
unserveurDNShbergelesdonnesdelazonefrance,ilestconsultpourtoutersolutiondenomseterminantpar
france.fr,maisilnhbergepasncessairementlesdonnesdeszonesrhone,nordetidf,etpeutsecontenterde
rediriger la requte vers le serveur de la zone enfant. On parle alors dedlgation dans le sens o on dlgue la
gestiondunezoneenfantunautreserveur.
Pourdesraisonsdetolrancedepanne,lesdonnesdechaquezoneDNSdoiventtrerpliquesaumoinsunefois,
cestdireexisteraumoinsdeuxexemplaires.Unserveurauraautoritsurlazoneetseraresponsabledesmises
jour.OnditquilestSOA:StartOfAuthority.Leszoneshbergessurceserveursontdetypemaster,etceuxqui
hbergentunerpliquedelazonesontconfigursentantqueslave.

3.Mcanismedelarsolutiondenom
Quanduneapplicationdunemachinedoitfaireunersolutiondenom,ellesadresseaucomposantresolverdeson
systmedexploitation.LeresolvervaalorsenvoyerunerequtedersolutiondenomauserveurDNSrfrencsur
cettemachine.Lesrequtesdeclientserveursefontsurleport53etsonttransportesparleprotocoleUDP.
Si le serveur interrog dispose localement de linformation, il rpond directement. On dit quil fait une rponse
authoritative(autoritaire).
Sileserveurinterrognedisposepasdelinformation,ilvaconsulterlaseulezonequilconnat,lazone.,quilui
donnera ladresse dun des 13 serveurs racines de linternet. Le serveur interrogera alors ce serveur racine pour
connatre ladressedun serveur de la zone dutld :top level domain (domaine de premier niveau). Lequel serveur
serainterrogsontourpourconnatreladressedunserveurdenomgrantlazonedirectementsousletld.Enfin,
ceserveurserainterrogpoursavoirsildisposedelenregistrementvouludanscedomaine.

- 2-

ENI Editions - All rights reserved - Samuel CASAL


Schmasimplifidelarsolutiondenom:
1. Le client son serveur de rfrence (fournisseur daccs ou serveur local) : quelle est ladresse pour le nom
www.abc.fr?
2.Leserveurlocalunserveurracine:donnemoiladressedunserveurconnaissantlazonefr.
3.Tiens,leserveurladresse193.176.144.6pourraterenseigner.Ilpossdelesinformationsdelazonefr.
4.Leserveurlocalauserveurdelazonefr:donnemoiladressedunserveurconnaissantlazoneabc.fr.
5.Tiens:leserveurladresse213.41.120.195pourraterenseigner.
6.Leserveurlocalauserveurdelazoneabc.fr:possdestuunenregistrementwwwdanstondomaineabc.fr?
7.Oui,voicisonadresseIP:62.193.202.6.
8.Leserveurlocallastationcliente:tumasdemandwww.abc.fretsonadresseIPest62.193.202.6.

4.Lesenregistrements
Leszonesnayantquunrlestructurant,ilfaudrapourassurerlesrsolutionsdenomcrerdesenregistrementsqui
feront correspondre un nom une adresse IP ou une autre information. Ces enregistrements sont appels
RessourcesRecords(enregistrementderessources),souventnotsRRetconstituentlesinformationsfondamentales
duDNS.
LeFQDN,Fully Qualified Domain Name(NomdeDomainePleinementQualifi)reprsentelenomdhte,avectoute
son arborescence parente, jusqu la zone . . Parexemple, www.saintmarcelin.fr reprsente lenregistrement
www dans la zone saintmarcelin.fr, fr tant la dernire zone avant la zone point. Quand on ne veut aucune
ambigutquantlanaturedunnomDNS,onreprsenteleFQDNaveclazonepointmatrialise,cestdirequon
crit un point comme dernier caractre du FQDN. On obtient donc www.saintmarcelin.fr. . Cette notation est
courante,voireindispensabledanslesfichiersdeconfigurationduserveurDNS.
Le systme DNS a pour vocation premire dassurer un service de rsolution de nom. Cestdire de faire
correspondreunnomdhteuneadresseIP.SescrateursonttoutefoisprvuquelesystmeDNSseraitcapable
dassurerlarsolutionpourdiffrentstypesdenomsetdamliorerainsilafinesseduservice.

a.EnregistrementdetypeA
Le plus facile apprhender et le plus courant. Cest lenregistrement qui fait correspondre une adresse IP un
nom.Parexemplequandontapehttp://www.site.fr,wwwestunenregistrementdetypeAdanslazonesite.fr.Il
corresponduneadresseIPquiestcelleduserveurwebhbergeantlesiteenquestion.

ENI Editions - All rights reserved - Samuel CASAL

- 3-

Rsolutionsdanslazonedomaine.fr
www82.25.120.5
support125.12.43.2
vpn82.25.120.6

b.EnregistrementdetypeAAAA
Rcentmaisdeplusenplusfrquent.CetenregistrentfaitcorrespondreunnomuneadresseIPv6.
Rsolutionsdanslazonedomaine.fr
www2001:610:12:123a:28:15ff:fed9:97e6
support2001:610:12:123a:28:15ff:fed9:97e8

c.EnregistrementdetypePTR
Pointer,lecontrairedeA.SilesenregistrementsdetypeAfontcorrespondreuneadresseIPunnomdhte,les
PTRfontexactementlecontraire.IlsexistentdansdeszonesunpeuparticuliresnommesINADDR.ARPA.
LenomnormalisdelazoneseraformparlesoctetsdelapartierseaudeladresseIPordonnsensensinverse,
suividelachanedecaractres.inaddr.arpa.
Rsolutionsdanslazone1.168.192.inaddr.arpa
10serveur1.entreprise.local(pourserveur1.entreprise.local192.168.1.10)
15printer1.entreprise.local(pourprinter1.entreprise.local192.168.1.15)
Rsolutionsdanslazone85.inaddr.arpa
25.8.92www.abc.fr(pourwww.abc.fr85.92.8.25)
29.123.65www.def.net(pourwww.def.net85.65.123.29)

d.EnregistrementdetypeCNAME
CanonicalName(aliasousurnom).Cetypedenregistrementfaitcorrespondreunnomunautrenom.Parexemple
sivouscrezunserveurwebpourlesusagesinternesdevotreentreprisesurunserveurexistantquisappellerait
production1.maboite.com ,vouspouvezcrerunCNAME intranet plusintuitifpourlesutilisateurs.
Rsolutionsdanslazonemaboite.com
intranetproduction1
imprimante1printer1

e.EnregistrementdetypeMX
MailExchanger(Indicateurdeserveurdemessageriepourundomaine).Cetypedenregistrementfaitsavoirdes
agentsdetransfertdemessageriequelestleserveurdestinatairefinalduncourriel.Lexemplecidessousesttitre
dillustrationetneprsagepasduformatdunenregistrementMX.
Rsolutiondanslazonedomaine.fr
@domaine.frsmtp.domaine.fr82.25.120.6

- 4-

ENI Editions - All rights reserved - Samuel CASAL

f.EnregistrementdetypeSOA
StartOfAuthority(dbutdautorit).Indiqueleserveurayantlaresponsabilitdelazone.Toutezonefonctionnelle
aunenregistrementSOA.
Rsolutiondanslazonedomaine.fr
domaine.frns.hebergeur.net

g.EnregistrementdetypeNS
NameServer(serveurdenom).Indiquelesserveursdenomspourlazone.Toutezonefonctionnelleaaumoinsun
enregistrementNS.
Rsolutiondanslazonedomaine.fr
domaine.frns.hebergeur.net

5.DNSsurLinux
a.LeserveurDNS
Les services DNS sexcutant sur Linux sont presque exclusivement bass sur le logiciel BIND (Berkeley Internet
Name Domain). Comme son nom lindique, il a t conu dans luniversit de Berkeley en Californie. Les premiers
dveloppements datent des annes 80 et son maintien est actuellement assur par l Internet System
Consortium (ISC), une association but non lucratif qui gre un certain nombre de logiciels structurants de
linternetetdesrseauxlocaux.
SidesalternativesexistentlusagedeBINDpourlarsolutiondenomssurLinux(maradns,djbdnsparexemple),
seulelaconnaissancedeBINDestexigepourlacertificationLPI.

b.LeclientDNS
LesmachinesLinuxdisposentnativementdunclientDNSappelresolver.TouteapplicationfonctionnantsurLinux
etayantbesoindefaireunerequteDNSsappuierasurcecomposant.
Ilexploitelefichierdeconfigurationsimple/etc/resolv.conf.
Formatsimplifidufichier/etc/resolv.conf
search domaine
domain domaine
nameserver A.B.C.D

Fichier/etc/resolv.conf:directivesetvariablesutilises
search

Facultatif:indiquelesuffixederechercheemploysurleposteLinux.Permetdene
pastaperlintgralitduFQDNdanslesapplications.Lefichier/etc/resolv.conf
admetplusieursdomainesderecherchesprcissparsearch.

domain

Facultatifetobsolte:indiqueunsuffixederechercheuniqueemploysurleposte
Linux.

domaine

LeFQDNdudomaineconstituantlesuffixederecherche.

nameserver

IndiqueladresseIPduserveurDNSquiassureralesrsolutions.Le
fichier/etc/resolv.confadmetplusieursserveursDNSprcissparnameserver.

ENI Editions - All rights reserved - Samuel CASAL

- 5-

Configurationdebaseduserveur
1.FonctionnementduserveurBIND
LeserveurDNSBINDreposesurunexcutablenamedetsurunfichierdeconfigurationnamed.conf.

a.Structuredufichiernamed.confetprincipauxlmentsdeconfiguration
Cidessous un exemple gnrique de fichier named.conf. Selon les cas, on le trouvera sous une forme entire et
monolithique,maisilestfrquentdeletrouverclatenplusieursmorceauxpourdesraisonsdelisibilit.Lessous
fichiers sont alors appels par la directive include. Le rle principal du fichier est de dclarer les zones qui seront
gresparceserveur,maisgalementdeprcisertoutlmentdeconfiguration.
Formatsimplifidenamed.conf
include "/chemin/fichier";
options {
directory "/chemin/repertoiredetravail";
forwarders { A.B.C.D };
};
zone "NOMDEZONE1" {
type type;
file "/CHEMIN/NOMFICHIER1";
};
zone "NOMDEZONE2" {
type type;
file "/CHEMIN/NOMFICHIER2";
};

Fichiernamed.conf:principalesdirectivesutilises
include

Indiquelenomdun"sousfichier"deconfiguration.vitedavoirunfichier
named.conftropgrandpourtreadministrconfortablement.

options

Conteneurpourcertainsmotscls,notammentdirectoryetforwarders.

directory

Dansunedirectiveoption.Indiquelerpertoireutilispourlestockagesurdisque
desdonnesdecacheduserveur.

forwarders

Placdansunedirectiveoptionpourlesconfigurationssimples(redirection
inconditionnelle).Sileserveurnedisposepasdanssesfichiersdelarsolution
demande,renvoyerlademandeversleserveurdontladresseIPestdonneen
rfrence.

zone

ConteneurpourlenomdunezoneDNSgreparleserveur

type

Dansunedirectivezone.Indiqueletypedezonestocke.Lesprincipalesvaleurs
sonthint(serveursracine),master(serveurmatredunezone),etslave(rplique
depuisunmaster).

file

Dansunedirectivezone.Indiquelefichiercontenantlesinformationsdezone.

b.Lesfichiersdedfinitiondezoneprinstalls
Selon les implmentations, un certain nombre de zones sont prsentes par dfaut linstallation du serveur pour
assurer un fonctionnement standard et permettre les rsolutions courantes. Par exemple, la zone localhost qui
permetdersoudrelenomlocalhosten127.0.0.1,ycomprisauseinduserviceDNSetpasseulementdanslefichier
hosts.
Cesfichiersdezonessontcrslinstallation,etcorrectementrfrencsdanslefichiernamed.conf.

ENI Editions - All rights reserved - Samuel CASAL

- 1-

Exempledefichiernamed.confsurunedistributionDebian:
Notezladclarationdeszonespardfaut,ainsiquelappeldedeuxsousfichiersdeconfigurationappelsparladirective
include.
include "/etc/bind/named.conf.options";
zone "." {
type hint;
file "/etc/bind/db.root";
};
zone "localhost" {
type master;
file "/etc/bind/db.local";
};
zone "127.in-addr.arpa" {
type master;
file "/etc/bind/db.127";
};
zone "0.in-addr.arpa" {
type master;
file "/etc/bind/db.0";
};
zone "255.in-addr.arpa" {
type master;
file "/etc/bind/db.255";
};
include "/etc/bind/named.conf.local";
Notez les directives include, qui renvoient vers deux fichiers vides linstallation (ils ne contiennent que des
commentaires). Le reste de la configuration se rsume la dclaration de zones, dont la seule indispensable la
rsolutiondenompubliqueestlazone.voqueplushaut.

2.Serveurdecache
Un serveur DNS de cache assure une rsolution de nom, mais nhberge aucune donne de rsolution locale et
sappuie sur une infrastructure dj existante. Il se contente de relayer les demandes vers dautres serveurs. Ce
faisant,ceserveurmettraencachepouruneduredterminetouteslesrsolutionsenregistres.
Par dfinition, un serveur de cache ne dispose pas localement de zones DNS personnalises. Cestdire quil
nassurerapasluimmedersolutiondetypeQuelleestladresseIPcorrespondantaunomwww.sitegenial.com?
: Il nhberge tout simplement pas ce type dinformation, et devra pour rpondre aux requtes sen remettre
dautresserveursmieuxrenseigns.

a.Configurationduserveurdecache
Cestlabonnenouvelle:unserveurBINDfrachementinstallestnaturellementunserveurdecache.Ilnyadonc
pasdeconfigurationparticulireraliser.Quandonparledinstalleretdeconfigurerunserveurdecache,comme
dans les objectifs de la certification LPI, il sagit simplement dinstaller un serveur fonctionnel sans information de
zonelocale.

b.Redirection
Noussavonsquunserveurdecachenhbergepaslocalementdenregistrementsderessources.Sildoitfaireune
rsolution, il va sadresser aux seuls serveurs quil connaisse, savoir les serveurs racine. Cette mthode de
rsolution nest pas forcment la plus rapide, et on pourrait souhaiter tirer parti du cache de serveurs dj en
fonctionnement,commeceuxdunhbergeuroudun fournisseur daccs.Ilfautpourcelaindiquernotreserveur
ladresse dautres serveurs vers lesquels il pourra rediriger ses requtes. Ce type de redirection est appel
inconditionnellecartouteslesrsolutionsnonlourdessontrediriges.

- 2-

ENI Editions - All rights reserved - Samuel CASAL

Configurationdelaredirectiondansnamed.conf
options {
forwarders {
A.B.C.D;
};
};

Fichiernamed.conf:directivesutilisespourlaredirection
options

Annoncelasectionoptionsdanslefichiernamed.conf.Lesredirections
inconditionnellessontannoncesdansunesectionoptions.

forwarders

Dansunedirectiveoptions.Annoncelaoulesadresse(s)IPduoudesredirecteur(s).

3.Commandedepilotagerndc
Comme tous les services Unix ou Linux, BIND est lanc ou arrt par un script dans /etc/init.d. Pour une gestion
prciseduservice,ondisposedunecommandedepilotage:rndc.Cettecommandeassociequelquesmotscls
permetdetransmettreauserveurdiversesinstructions.
Ilnestpasobligatoiredutiliserrndcdanslecadreduneadministrationcourante.Maisalorstoutemodificationdun
fichier de configuration quel quil soit imposerait le redmarrage complet du service, et donc son interruption
temporaire. rndc devrait donc tre utilis systmatiquement, surtout si le serveur gre un grand nombre de zones,
commecestlecaspourunhbergeurparexemple.
Syntaxe
rndc action [paramtre]

Commanderndc:actionspossibles
reload

Rechargelesfichiersdeconfigurationetlesinformationsdezone.

reloadzonezone

Rechargelesfichiersdunezoneunique.

reconfig

Chargelesfichiersdeconfigurationpourlesnouvelleszonesuniquement.

flush

Effacelecacheduserveur.

flushzone

Effacelecacheduserveurpourlazonespcifie.

status

Afficheltatduserveur

ENI Editions - All rights reserved - Samuel CASAL

- 3-

GestiondezonesDNS
1.Gestiondezoneslocales
a.Crationdunfichierdezonedirecte
Les informations ncessaires la rsolution devront se trouver dans un fichier de dclaration de zone.
Lemplacementdecefichierestlibre,puisquilestdfinidansunesectionzonedenamed.conf.Toutefois,unusage
tabliveutquecefichiersoitplacdanslerpertoire/var/named.Notezqueselonlesdistributions,ilpeutaussise
trouverdanslerpertoire/etcoudans/etc/bind.PourlacertificationLPI,retenezplutt/var/named.
Ce fichier aura le format trs strict indiqu cidessous. Dans la plupart des cas, un refus de dmarrer est d un
fichier de zone mal form. Il est compos des dclarations de dure de vie en cache des informations, du serveur
ayantautoritsurlazone,desserveursdenomsdesservantcettezone,etdelensembledesenregistrementsde
ressources(RR)decettezone.
Formattypedufichierdezonedirecte
$TTL
nomzone

ttl
IN SOA serveur mailadmin (
serial
refresh
retry
expire
negative )

nomzone

IN

NS

serveur

Fichierdezonedirecte:formattypedelentte
ttl

TimeToLive(duredevie):indiqueladuredeconservationensecondesdes
donnesenmmoirecache.Cettevaleurestprcdeparladirective$TTL.

nomzone

FQDNdelazonegreparcefichier.Souventremplacparunarobase(@)pour
allgerlefichier.Attention,puisquilsagitdunFQDN,lenomdelazonedoitse
terminerparunpoint.

IN

Obsoltemaiscourant:classeInternet(aucuneautreclassenestplusutilise).

SOA

StartOfAuthority.Enregistrementobligatoirepourindiquerqueceserveurest
lgitimesurcettezone.

serveur

FQDNduserveurayantautoritsurlazone.

mailadmin

Adresseemaildeladministrateurduserveur.Larobasetantuncaractrerserv
danslesfichiersdezone,ilestconventionnellementremplacparunpoint.
admin@saintmarcelin.frdevientdoncadmin.saintmarcelin.fr.

serial

Valeurnumrique.Numrodesriedufichier.Utilequandlazoneestrpliquesur
dautresserveurspoursavoirsilesdonnesontchangetsilarplicationdoittre
faite.

refresh

Valeurnumrique.Utilisquandlazoneestrplique.Indiqueauserveuresclave
quelintervalletesterlavaliditdesazone.

retry

Valeurnumrique.Utilisquandlazoneestrplique.Silestimpossiblepour
lesclavedecontacterleserveurmatre,indiqueauboutdecombiendetemps
ressayer.

expire

Valeurnumrique.Utilisquandlazoneestrplique.Silestimpossiblepour
lesclavedecontacterleserveurmatre,indiqueauboutdecombiendetempsles

ENI Editions - All rights reserved - Samuel CASAL

- 1-

enregistrementsnonrafrachisperdentleurvaliditetnedoiventplustreutiliss.
negative

Valeurnumrique.Indiquecombiendetempsleserveurdoitconserverencacheune
rponsengative.

NS

Enregistrementindiquantquelestleserveurdenompourcettezone.

b.Crationdunfichierdezoneinverse
Le fichier de zone inverse aura la mme structure quun fichier de zone directe. Comme indiqu plus haut, le nom
normalisdelazoneestformparlesoctetsdelapartierseaudeladresseIPordonnsensensinverse,suivide
la chane de caractres .inaddr.arpa . Par exemple, la zone inverse pour le rseau 192.168.99.0 sera :
99.168.192.inaddr.arpa, et cest ce nom qui devra tre employ dans le fichier de zone et dans le fichier
named.conf.
Formattypedufichierdezoneinverse
$TTL
ttl
nomzoninv IN SOA serveur mailadmin (
serial
refresh
retry
expire
negative )
nomzoneinv

IN

NS

serveur

Fichierdezoneinverse:formattypedelentte
nomzoneinv

Nomnormalisdelazoneinverse:subnetinvers.inaddr.arpa.Osubnetinvers
reprsentelesoctetsdusubnetenordreinvers.Attention,lenomdelazone
inverseestunFQDN,ildoitdoncseterminerparunpoint.

SOA

StartOfAuthority.Enregistrementobligatoirepourindiquerqueceserveurest
lgitimesurcettezone.

serveur

FQDNduserveurayantautoritsurlazone.

NS

Enregistrementindiquantquelestleserveurdenompourcettezone.

Constatez que cestrigoureusementlammechosequepourlazonedirecte.Cestleformatdesenregistrements


quifaitlessentieldeladiffrence.

c.Crationdenregistrementsdanslesfichiersdezone
Unefoislesfichiersdezonecrs,ilsuffitdajouterautantdenregistrementderessourcequelonsouhaite,raison
dunparligne.
Formatdunenregistrementderessourcedansunfichierdezonedirecte
nom

IN

typeRR

valeur-rsolue

Formatdunenregistrementderessourcedansunfichierdezoneinverse
adresse-hte

IN

PTR

nom

Fichierdezonedirecte:formatdesenregistrements
nom

- 2-

NomsimpleouFQDNauquelilfautfairecorrespondreuneadresseIP.

ENI Editions - All rights reserved - Samuel CASAL

IN

Obsoltemaisncessaire:classeInternet.

typeRR

Typedenregistrement.SouventdetypeA:faitcorrespondreuneadresseIPun
nom.Valeurscourantes:A,CNAME,MX.

valeurrsolue

Cequoionfaitcorrespondrelenom.DanslecasdunenregistrementdetypeA,
uneadresseIP.

adressehte

Loctetoulesoctetsquiassocisladressedurseaudelazoneinverseformeront
ladresseIPrsoudre.

PTR

Typepointeur:faitcorrespondreunnomuneadresseIP.Horsenregistrements
SOAetNS,cestleseultypequonrencontredansleszonesinverses.

Lajout dun grand nombre denregistrements est videmment fastidieux, et gagnera tre ralis sous forme de
script.
Exempledescriptsimpledalimentationdunfichierdezone:
LeshbergeursetautresDNSgrantdegrosvolumesdenregistrementutilisentnaturellementdesscriptsbeaucoupplus
labors.
#!/bin/bash
echo "Nom ajouter la zone ?"
read nom
echo "Adresse IP correspondant ?"
read ip
echo "$nom IN A $ip" >> /var/named/saintmarcelin.fr

d.Dclarationdezoneprincipaledanslefichiernamed.conf
Unefoisquelondisposedunfichierdezone,ilfautfairesavoirauserveurquildoitlechargeraudmarrage.Ceci
seferaavecunedclarationdezonenormalisedanslefichiernamed.conf.
Formattypedeladclarationdezonedansnamed.conf
zone "nomzone" {
type master;
file "fichier";
};

Fichiernamed.conf:directivesetsyntaxedeladclarationdezone
nomzone

LeFQDNdelazonegreparleserveur.

typemaster

Prcisequilsagitdunezonematressesynchroniserventuellementversdes
serveursesclaves.

fichier

Cheminabsoludufichierlirepourprendreconnaissancedeslmentspropresla
zone(configuration,RR,etc.).

e.Priseencomptedelanouvelleconfiguration
IlfautensuitefaireensortequeleserveurDNSrechargesesfichiersdeconfigurationafindeprendreencompteles
nouveauts. Deux solutions pour cela : le redmarrage du service ou le chargement de la nouvelle zone par
commandedepilotagerndc.
Rechargementduservice
/etc/init.d/bind9 restart

ENI Editions - All rights reserved - Samuel CASAL

- 3-

Chargementdelanouvellezoneparrndc
rndc reload saintmarcelin.fr

2.Gestiondezonessecondaires
UnezoneDNSnedevraitpasdpendredunserveuruniqueetilestcourantdecrersurundeuximeserveurdes
zonessecondaires,strictementidentiquesauxzonesprimaires,etsynchronisesintervallesrguliers.

a.Dclarationdelazonesecondairedansnamed.conf
Ilnestvidemmentpasncessairedecrerlesfichiersdezones,puisquilsserontsynchronissdepuisleserveur
autoritaire.Onparlecourammentdeserveurmatreetdeserveursesclaves.
Lechargementdelazoneesclavesefaitavecunedclarationdezonenormalisedanslefichiernamed.conf.
Formattypedeladclarationdezonesecondairedansnamed.conf
zone "nomzone" {
type slave;
masters { adresse_matre ; } ;
file "fichier";
};

Fichiernamed.conf:directivesetsyntaxedeladclarationdezone
nomzone

LeFQDNdelazonegreparleserveur.

typeslave

Prcisequilsagitdunezoneesclavesynchroniserdepuisunserveurmatre.

adresse_matre

AdresseIPduserveurautoritaire.

fichier

Cheminabsoludufichierdanslequelstockerleslmentssynchroniss.Lecompte
deservicedoitavoirlesdroitsdcrituresurlerpertoiredetravail.

b.Priseencomptedelanouvelleconfiguration
IlfautensuitefaireensortequeleserveurDNSrechargesesfichiersdeconfigurationafindeprendreencompteles
nouveauts. Deux solutions pour cela : le redmarrage du service ou le chargement de la nouvelle zone par
commandedepilotagerndc.
Rechargementduservice
/etc/init.d/bind9 restart
Chargementdelanouvellezoneparrndc
rndc reload saintmarcelin.fr

3.Dlgationdezone
Une dlgation de zone consiste faire grer par un serveur tiers une zone enfant dune zone hberge par un
serveurparent.CestleprincipedeladlgationquipermetdedistribuerlensembledelespacedenomDNSsurdes
milliersdeserveurs.Ladlgationseconfigurerasurleserveurparent.
OnajouteradanslefichierdezoneduparentdeuxRessourcesRecord:lundetypeNSpourindiquerquilexisteun
serveur de nom pour la zone enfant, et lautre de type A pour connatre ladresse IP de ce serveur de nom.
LenregistrementNSassurantladlgationestappelgluerecord(enregistrementcolle).

- 4-

ENI Editions - All rights reserved - Samuel CASAL

Configurationdeladlgationdanslefichierdelazoneparente
zone_enfant
dns_enfant

IN
IN

NS
A

dns_enfant
A.B.C.D

lments
zone_enfant

Nomsimpledelazoneenfant.

IN

Obsoltemaisobligatoire:classeinternet.

NS

CetenregistrementestdetypeNameServer(serveurdenom).

dns_enfant

NomduserveurDNSquigrelazoneenfant.

CestunenregistrementdetypeA.

A.B.C.D

AdresseIPduserveurdenompourlazoneenfant.

4.Outilsdetest
a.ping
Mme si a nest pas sa fonction premire, ping peut tout fait servir de test rudimentaire pour la rsolution de
noms.Onseraalorslimittesterlarponsedesserveurspardfaut,renseignsdans/etc/resolv.conf.
Utilisationdepingpourtesterunersolutiondenom
Quandonutilisepingpourtesterunersolutiondenoms,cestlatraductiondeladressequiimporteetnonlarponse
ICMPdelamachinedistante.
donald:/etc/bind# ping donald.formation.fr
PING donald.formation.fr (192.168.1.1) 56(84) bytes
64 bytes from donald.formation.fr (192.168.1.1): icmp
64 bytes from donald.formation.fr (192.168.1.1): icmp
64 bytes from donald.formation.fr (192.168.1.1): icmp

b.nslookup
nslookupestloutillepluspopulairepourlinterrogationdesserveursDNS.Ilestprsentsurlagrandemajoritdes
platesformesUnixetWindows.
nslookupestutilislaplupartdutempsenmodeinteractif.Cestdirequaprsavoirtapnslookup,onsetrouve
danssoninterfaceoontaperadescommandesspcifiques.Lesserveursdenomsinterrogspardfautsontceux
rfrencsdans/etc/resolv.conf.Cecipourraventuellementtremodifiparlasuite.
Utilisationdenslookuppourunersolutiondenom
Pardfaut,nslookupadresseauxserveursDNSdesrequtesdetypeA.
donald:/etc/bind# nslookup
> server
Default server: 192.168.1.1
Address: 192.168.1.1#53
> coincoin.formation.fr
Server:
192.168.1.1
Address:
192.168.1.1#53
coincoin.formation.fr

canonical name = donald.formation.fr.

ENI Editions - All rights reserved - Samuel CASAL

- 5-

Name:
donald.formation.fr
Address: 192.168.1.1
>
nslookup
nom

TaperunnomDNSdirectementdanslinterfacenslookuprevientendemanderla
rsolution.nslookupindiqueraalorsquelserveurDNSilainterrog,etlarponsequi
luiatfaite.Ilpeutsagirdunnomcomplet(FQDN)oudunnomsimplesion
sappuiesurunsuffixederecherchedfinidans/etc/resolv.conf.

serverA.B.C.D

LacommandeserversuiviedeladresseIPdunserveurinterrogerindique
nslookupquetouteslesinterrogationsfuturesdevronttreadressesceserveur.

settype=TYPE

Pardfaut,nslookupfaitdesrequtesdetypeA(rsolutionordinairedenomen
adresseIPv4).Lacommandesettypepermetdadresserdesrequtesdunautre
type.Onsensertcourammentpourconnatreparexemplelesserveursdenomsou
demessagerieassocisunezone.

Utilisationdenslookuppourtrouverladressedunserveurdemessagerie
Onpeututilisernslookuppourtouslestypesdenregistrementscourants.(IciMX)
donald:/etc/bind# nslookup
> set type=MX
> elysee.org
Server:
192.168.1.1
Address:
192.168.1.1#53
Rponse ne faisant pas autorit :
elysee.org
MX preference = 10, mail exchanger = mail.elysee.org
mail.elysee.org internet address = 64.182.1.213
>

c.dig
digestlenouveloutilproposparlISCpourlinterrogationetlediagnosticdesserveursDNS.Passantpourtrele
plus prcis et abouti des outils de test, il devrait ventuellement finir par simposer comme solution de rfrence.
Toutefois,leshabitudesprisesparlesadministrateursDNSlaissentprsagerencoredebeauxjourspournslookup.
dig est utilis en mode non interactif, cestdire que chaque utilisation de dig devra donner lensemble des
paramtresncessaireslarsolution.
Syntaxesimplifiededig:
dig nom
dig A.B.C.D nom TYPE

lments
nom

Lenomcomplet(FQDN)dontonveutassurerlarsolution.

A.B.C.D

LadresseIPduserveurDNSinterroger.Encasdomission,lesserveursdenoms
interrogssontceuxrfrencsdans/etc/resolv.conf.

TYPE

Pardfaut,digfaitdesrequtesdetypeA(rsolutionordinairedenomenadresse
IPv4).Leparamtretypesilestprcispermetdadresserdesrequtesdunautre
type.Onsensertcourammentpourconnatreparexemplelesserveursdenomsou
demessagerieassocisunezone.

Exempledutilisationdedig
- 6-

ENI Editions - All rights reserved - Samuel CASAL

DeloinlaplusprcisedescommandesdediagnosticDNS.
donald:/etc/bind# dig @127.0.0.1 coincoin.formation.fr
; <<>> DiG 9.2.4 <<>> @127.0.0.1 coincoin.formation.fr
;; global options: printcmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 18067
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 1, ADDITIONAL: 0
;; QUESTION SECTION:
;coincoin.formation.fr.

IN

;; ANSWER SECTION:
coincoin.formation.fr.
donald.formation.fr.

86400
86400

IN
IN

CNAME
A

donald.formation.fr.
192.168.1.1

;; AUTHORITY SECTION:
formation.fr.

86400

IN

NS

donald.formation.fr.

;;
;;
;;
;;

Query time: 9 msec


SERVER: 127.0.0.1#53(127.0.0.1)
WHEN: Thu Jun 15 19:49:45 2006
MSG SIZE rcvd: 90

d.host
hostestunoutilsimplepourfaireunerequteDNSenmodenoninteractif.
Syntaxesimplifiepourlacommandehost
host nom
host nom -t type A.B.C.D

lments
nom

LenomDNSdontilfautassurerlarsolution.IlpeutsagirdunFQDNoudunom
simplequiseracompltparlesuffixederecherchesilestdfini
dans/etc/resolv.conf.

ttype

Facultatif:letypederequtequiestadresse.Pardfautletypeestslectionn
automatiquementparmilestypesA,AAAAetMX.

A.B.C.D

Facultatif:ladresseIPduserveurDNSinterroger.Sicetlmentnestpas
renseign,cesontlesserveursprsentsdans/etc/resolv.confquisontutiliss.

Utilisationdehostpourtesterunersolutiondenom
hostprsenteunrsultatconcis.
donald:/etc/bind# host coincoin.formation.fr
coincoin.formation.fr is an alias for donald.formation.fr.
donald.formation.fr has address 192.168.1.1
donald:/etc/bind#
UtilisationdehostpourrcuprerlesenregistrementsNS
donald:/etc/bind# host -t NS formation.fr
formation.fr name server donald.formation.fr.
ENI Editions - All rights reserved - Samuel CASAL

- 7-

donald:/etc/bind#

e.Mesuredesperformances
La commande time qui mesure le temps consomm par une application permet de mesurer la performance dune
rsolution DNS. Elle indique le temps total consomm par la commande, et le temps consomm par les processus
danslesespacesdexcutionsystmeetutilisateur.
ObservationdutempsprisparunersolutionDNS
Les temps mesurs dpendent de la bande passante disponible, de la disponibilit du serveur, et de la rapidit de la
machinecliente.
toto@serveur:~$ time nslookup www.eni-editions.fr
Server:
127.0.0.1
Address: 127.0.0.1#53
Non-authoritative answer:
Name: www.eni-editions.fr
Address: 81.80.245.20

real 0m0.256s
user 0m0.000s
sys
0m0.010s
toto@serveur:~$

- 8-

ENI Editions - All rights reserved - Samuel CASAL

ScurisationduDNS
1.Limitationdesclients
Ilestpossibledelimiterlesrequtesautorises.Ladirectiveallowquerydanslefichierdeconfigurationpermetde
dfinirleshtesourseauxauxquelsunserveuraccepteraderpondre.
Limitationdesclientsautorissdanslefichiernamed.conf
allow-query { rseaux-autoriss; };
Ourseauxautorissreprsentelaoulesadressesderseauxoudhtequipourrontsadresserauserveur.

2.Utilisationduncomptedeservice
a.Pourquoiuncomptedeservice?
Auxorigines,iltaitfrquentdefairetournerunserveurbindsouslidentitducomptedadministrationroot.Cest
direquelecompteroottaitpropritaireduprocessus.Lesconsquencespouvaienttrefcheuses:siducode
sensible(dangereux)taitenvoyauprocesseurparlexcutablenamed,illtaitaunomderoot,cestdireavec
lespleinspouvoirssurlesystme.Or,cettesituationprsentedesrisques.Ilpeutsagirdeboguescontenusdans
le code excutable de named, ou bien de vulnrabilits du programme qui permettraient une personne mal
intentionnedenvoyerducodeexcutablevialeprocessus.
Lasolutionretenueestengnraldexcuternamedsousuneidentitdiffrentederoot,etdutiliseruncomptede
service:uncompteutilisateurnepermettantpasdeconnexiondirecteausystme,maisquiserapropritairedu
processus.Ainsi,siducodemalicieuxvenaittreexcutvialeprocessusnamed,ilnauraitpasplusdepouvoir
queceuxducomptedeservice,etnepourraitdoncpasmettreenprillesystme.
Laplupartdesimplmentationsmodernesdebindexploitentnativementlutilisationduncomptedeservice.
ComptedeservicenamedsurunedistributionRedHat
Lecompteestcrautomatiquementlinstallationduservice.
[root@RH9 root]# grep named /etc/passwd
named:x:25:25:Named:/var/named:/sbin/nologin

b.Lancementdenamedavecuncomptedeservice
Encoreunefois,touteslesimplmentationsde bindutilisesdansdesdistributionsmodernesdeLinuxexploitent
nativement un compte de service. La dmarche indique ici est donc nativement incluse dans les scripts de
lancementdeservice.
Syntaxesimplifiedelacommandenamedpourutilisationduncomptedeservice
named -u utilisateur

lments
named

Lexcutableprincipaldebind.Danslaplupartdesimplmentations,lancdepuisle
scriptdegestionduservice.

utilisateur

Appelparleparamtre"u",indiquelecomptedeservicepropritairedu
processus.Cecomptedoitnaturellementtredfinidanslefichier/etc/passwd.

ENI Editions - All rights reserved - Samuel CASAL

- 1-

3.Bindenmodechroot
a.Pourquoienfermerleprocessus?
Nous avons vu plus haut quune utilisation malencontreuse du processus named pouvait entraner le risque
dactionsdangereusespourlesystme.Lenfermementduprocessusdansunrpertoireddipermetdelimiterles
risques.Lebutestdefairecroireauprocessusquilsexcutedansunsystmeordinaire,alorsquilestcantonn
dans une arborescence parallle, et quil ne peut en aucun cas interagir avec le reste du systme. Le terme
enfermementnestpasusurp,onparleenanglaisdelemettreinjail,cestdireenprison.
Onditalorsquonutilisebindenmodechroot,contractiondechangeroot(changementderacine).
Ilestrecommanddutiliserlemodechrootavecuncomptedeservice.Unprocessusquiauraitlesprrogativesde
rootpourraitsoctroyerledroitdesortirdurpertoireoilestenferm.

b.Crationdelenvironnementncessaire
Danslamesureoleprocessusestbernetquilcroitsexcuterdansunenvironnementordinaire,ildoitavoirsa
dispositiontousleslmentsncessairessonfonctionnement.Ilfautbiencomprendrequeleprocessusnaura
aucun moyen daller chercher quoique ce soit en dehors de son rpertoire. La mise en place dunbind en mode
chrootsupposedoncunephaseprliminairedecrationdesonenvironnementdetravail.

tapesdecrationdelenvironnementdetravail:

Crationdurpertoiredechroot.
Cration de la fausse arborescence "/" dans le rpertoire de chroot. Tous les rpertoires utiliss par le
processusnameddoiventsytrouver.

Copiedesfichiersdeconfigurationdanslerpertoiredechroot.

Lancementduprocessusenmodechroot.

c.Lancementduprogrammeenmodechroot
Ilnestpasvraimentdifficiledelancerbindenmodechroot.

- 2-

ENI Editions - All rights reserved - Samuel CASAL

Syntaxedelacommandenamedpourutilisationenmodechroot
named -c config -u utilisateur -t repertoire

lmentsemploysdanslasyntaxe:
named

Lexcutableprincipaldebind.Danslaplupartdesimplmentations,lancdepuisle
scriptdegestionduservice.

config

Facultatif.Indiquelefichierdeconfigurationemployerauchargement.En
principe/etc/named.confou/etc/bind/named.conf.

utilisateur

Lecomptedeservicepropritaireduprocessus.Cecomptedoitnaturellementtre
dfinidanslefichier/etc/passwd.

repertoire

Lerpertoiredanslequelnamedseraenferm.Souvent/var/named.

Ilserabondevrifierdanslesjournauxqueleprocessusparvientbiendmarrerdanssonnouvelenvironnement.
Engnral,quelquesessaissontncessaires.

4.changescurisentreserveurs
De nombreuses fonctions dinternet reposent sur le DNS, depuis la simple navigation jusqulenvoi demails. Les
tentativesdephishing,deplusenplusnombreuses,montrentbienlesdangersquepeutprsenteruneincertitude
surlarsolutiondenoms.Siquelquunseconnecteausitedesabanqueenligneenutilisantlurlexactemaisquele
nomestrsoluenladresseIPdunfaussaire,lesconsquencespeuventvidemmenttredramatiques.Danslecas
duDNS,lascurisationreposerasurtoutsurlauthentificationetlintgritdesdonnes.Cestdirequonveuttre
certainquecestbienlebonserveurquinousrpond,etquelesdonnesnesubissentpasdemodificationpendant
letrajet.
NousallonsutilisericilemcanismeTSIG:TransactionSIGnature(signaturedestransactions).Cemcanismerepose
surlaprsencedunsecretpartagparlesserveursquichangentdesdonnes.

a.Gnrationdusecretpartag
Ilexisteunoutildegnrationdescls:dnsseckeygen.Iladenombreuxusages,maisnousleverronsicidansle
cadreduneexploitationTSIG.
SyntaxednsseckeygenpourutilisationdanslecadredeTSIG
dnssec-keygen -a HMAC-MD5 -b taillecle -n nametype nomsecret

dnsseckeygen :variablesetparamtres
aHMACMD5

adfinitlamthodedecryptage.HMACMD5estlaseulevaleursupportepour
TSIG.

btaillecle

bdfinitlavaleurdelaclemploye.PourHMACMD5,taillecledoittrecompris
entre1et512.128estunevaleurcourantegnralementsatisfaisante.

nnametype

ndfinitlepropritairedelacl.DanslecadredunfonctionnementTSIG,nametype
auragnralementlavaleurHOSTpoursignifierquelascurisationsepassede
machinemachine.

nomsecret

Lenomdusecret.Peuttrenimportequellechanealphanumrique.

La
commande
aboutit

la
Knomsecret.+xxx.yyyyy.private.

gnration

de

deux

fichiers

Knomsecret.+xxx.yyyyy.key

et

Exempledutilisationdednsseckeygen

ENI Editions - All rights reserved - Samuel CASAL

- 3-

donald:~# dnssec-keygen -a HMAC-MD5 -b 128 -n HOST supersecret


Ksupersecret.+157+26824
donald:~# cat Ksupersecret.+157+26824.key
supersecret. IN KEY 512 3 157
yItYGlAQtGcM7VqGjZdJAg==
donald:~# cat Ksupersecret.+157+26824.private
Private-key-format: v1.2
Algorithm: 157 (HMAC_MD5)
Key: yItYGlAQtGcM7VqGjZdJAg==

b.Dclarationdusecretdansnamed.conf
Surlesserveursconcernsparlascurisation,onincluradanslefichiernamed.confladfinitiondusecret.
Syntaxedeladclarationdesecretdansnamed.conf
key nomsecret {
algorithm hmac-md5;
secret "yItYGlAQtGcM7VqGjZdJAg==";
};

lmentsemploysdanscettesyntaxe:
key

Annonceladclarationdelacl.

nomsecret

Lenomdusecretutilislagnration.

algorithm

Apourparamtreletypedalgorithmeutilis.

hmacmd5

ObligatoirepourTSIG.

secret

ApourparamtrelesecretgnrdanslefichierKnomsecret.+xxx.yyyyy.key(la
chanedecaractresentreguillemets).

c.Lesdeuxserveursdoiventutiliserlacl
Laclpartagetantdclaresurlesdeuxserveurs,ilfautmaintenantleurfairesavoirquilsdoiventlutiliserpour
garantirlascuritdecertainescommunications.Ilfaudradoncajouterunenouvellecommandedansnamed.conf.
Syntaxedutilisationdelacldansnamed.conf
server ip_dest {
keys { nomsecret; };
};

lmentsemploysdanscettesyntaxe:

- 4-

server

Annonceuncomportementpourunserveurdtermin.

ip_dest

LadresseIPduserveurpourlequeldirectivesapplique.

keys

Annoncelesecretutilispourscuriserleschanges.

nomsecret

Lenomdusecretutilislagnration.

ENI Editions - All rights reserved - Samuel CASAL

d.Toutserviceestrefusenlabsencedesignature
Le paragraphe prcdent a donn aux serveurs la capacit de communiquer de faon scurise. Il faut ensuite
rendreobligatoirecettescurisationpourlesrequtesentreserveursdanslecadredunedlgationparexemple.
Syntaxe
zone truc.fr {
type master;
file db.truc.fr ;
allow-recursion { key supersecret; };
};

ENI Editions - All rights reserved - Samuel CASAL

- 5-

Validationdesacquis
Testezvosconnaissancesenrpondantauxquestionssuivantes.Cesquestionsnappellentpastoujoursdesrponses
dfinitives. Les questions poses en certification, bien quabordant les mmes sujets, seront pour la plupart poses
sous forme de questionnaire choix multiples, ou bien demanderont une rponse courte, tape en toutes lettres au
clavier.

1.Questions
1 PourquoiexistetilplusieurstypesdenregistrementsDNS?
2 QuellienexisteentrelamessagerieetlarsolutionDNS?
3 Enquoiunserveurdecacheamlioretillefonctionnementglobaldunrseau?
4 CommentinstallerlecomposantresolverDNSsurunsystmeLinuxstandard?
5 Peutonsepasserdeladirectiveincludedanslefichiernamed.conf?
6 CommentunserveurDNSlocalauseinduneentreprisepeutiltirerpartiducachedunserveurplussollicit
commeceluidesonfournisseurdaccsparexemple?
7 CommentpeutonprendreencomptedeslmentsnouveauxsurunserveurDNS,commedesenregistrements
nouvellementcrssansrecouriraurechargementcompletduservice?
8 DetouteslescommandesdetestdersolutionDNS,laquelledonneralesrsultatslesplusprcisetlesplus
circonstancis?
9 CommentsemettrelabridunevulnrabilitducodeexcutableDNSquandoncraintuneintrusionou
malveillanceparexploitationdecettevulnrabilit?
10 Danslecadredunedlgation,pourquoiestilindispensabledavoirunecommunicationpossibleentrele
serveurdlgantetleserveurdlgu?

2.Rponses
1 PourquoiexistetilplusieurstypesdenregistrementsDNS?
Pourstockerdesinformationsdenaturesdiffrentes.Ainsi,ilestpossiblepourunclientdedemandersonserveur
DNSuneinformationprcise.Parexemple:Quelestleserveurmatrepourtellezone?QuelssontlesserveursDNS
disponiblespourtellezone?
2 QuellienexisteentrelamessagerieetlarsolutionDNS?
Les enregistrements MX rfrencent pour un domaine DNS le ou les serveurs de messagerie. Un serveur de
messagerie fonctionnel peut ne recevoir aucun message de lextrieur si son enregistrement MX nest pas
correctementrfrenc.
3 Enquoiunserveurdecacheamlioretillefonctionnementglobaldunrseau?
En conservant en mmoire les rsolutions dj effectues, le serveur rpond beaucoup plus vite aux requtes
suivantes.Danslamesureosurunrseauordinaire,laplupartdesrequtesportentsurlesmmesenregistrements
courants (google, sncf, ebay, etc.), tous les clients qui obtiennent une rponse mise en cache ont une rponse
immdiatesansqueleserveuraitbesoinderelancerunersolutionpublique.
4 CommentinstallerlecomposantresolverDNSsurunsystmeLinuxstandard?
LeresolverfaitpartiedelapileIPsurtouteslesdistributionsLinux,etilnestdoncpasbesoindelinstaller.
5 Peutonsepasserdeladirectiveincludedanslefichiernamed.conf?
Bien sr. Cette directive permet dappeler des fichiers contenant des lments de configuration annexe et de les
intgrerdanslaconfigurationduserveur.Toutefois,sionchoisitdeplacertousleslmentsdeconfigurationdansun
seulfichiernamed.conf,celaneposeaucunproblme,sicenestceluidavoirgrerunfichierunpeulong.
6 CommentunserveurDNSlocalauseinduneentreprisepeutiltirerpartiducachedunserveurplussollicit
commeceluidesonfournisseurdaccsparexemple?
En le dclarant dans une redirection (directive forwarders). Le serveur rsoudra alors luimme tous les
enregistrementsappartenantdeszoneslocales,etsenremettraauserveurdesonfournisseurdaccspourtoute
autrersolution.
7 CommentpeutonprendreencomptedeslmentsnouveauxsurunserveurDNS,commedesenregistrements
nouvellementcrssansrecouriraurechargementcompletduservice?
Grcelacommandedepilotagerndc,quipermetjustementdeprendreencomptedesvolutionsdelaconfiguration

ENI Editions - All rights reserved - Samuel CASAL

- 1-

oudesdonneshbergesenagissantsuruneseulezoneetenvitantdonclerechargementcompletduservicequi
solliciteraitbiendavantagederessources.
8 DetouteslescommandesdetestdersolutionDNS,laquelledonneralesrsultatslesplusprcisetlesplus
circonstancis?
Cest la commande dig, considre comme le fleuron des outils de diagnostics DNS. Si certaines distributions ont
prsentdigcommeloutiluniverseldestinremplaceravantageusementtouslesautres,laplupartdesutilisateurs
prfrenttoujoursaujourdhuilacommandenslookup.
9 CommentsemettrelabridunevulnrabilitducodeexcutableDNSquandoncraintuneintrusionou
malveillanceparexploitationdecettevulnrabilit?
Deuxtechniquessontexploitablesetellessontsouventutilisesconjointement.Dabordenenfermantleprocessus
named dans un environnement dexcution tanche. On dit quon met le processus en prison (in jail) par un
changementderacine(chroot).Laprisonenquestionestunearborescencecontenantunecopiedetousleslments
dont aura besoin le processus pour son fonctionnement comme les bibliothques ou fichiers de configuration. Par
ailleurs,onexcuteleprocessusaunomduncomptedeserviceauxpouvoirslimits,sibienquelexploitationdune
ventuellevulnrabilitnedonneraitpaslattaquantplusdedroitsqueceuxducompteenquestion.
10 Danslecadredunedlgation,pourquoiestilindispensabledavoirunecommunicationpossibleentrele
serveurdlgantetleserveurdlgu?
Le principe dune dlgation est en quelque sorte de soustraiter la gestion dune zone enfant un autre serveur.
Touteslesrequtesfaitesauserveurparentpourlazoneenfantserontdynamiquementdirigesversleserveurdela
zoneenfant.Silnyapasdecommunication,cetteredirectionnesttoutsimplementpaspossible.

- 2-

ENI Editions - All rights reserved - Samuel CASAL

Travauxpratiques
1.InstallationdunserveurDNS
Pouracclrerlanavigationinternetauseindurseau,vousdcidezdemettreenplaceunserveurDNSinterne
votreentreprise.Ainsi,touslesclientsquifontlesrsolutionsDNSlespluscourantesprofiterontducacheduserveur
local.

a.Installationdesservicesapplicatifs
Surleserveuralpha,installezleserveurbindaveclacommandesuivante:
apt-get install bind9
Leservicedoitdjtreinstallsurleserveurbeta.

b.Vrification
Commandesutiles

pgrep

ps

rndc

Manipulations
1.

Vrifiezqueleserviceestencoursdexcutionenobservantlesprocessusactifs.

2.

Vrifiezqueleserviceestencoursdexcutioneninterrogeantlescriptdelancement.

3.

Vrifiezqueleserviceestencoursdexcutionenutilisantlacommandedepilotage
rndc.

Rsumdescommandesetrsultatlcran
Observationduprocessus :
alpha:~# pgrep -l named
4491 named
alpha:~#
Interrogationduscript :
alpha:~# /etc/init.d/bind9 status
bind9 is running.
alpha:~#
Utilisationdelacommandedepilotage :
alpha:~# rndc status
version: 9.6-ESV-R1
CPUs found: 1
worker threads: 1
number of zones: 14
debug level: 0
xfers running: 0
xfers deferred: 0
soa queries in progress: 0

ENI Editions - All rights reserved - Samuel CASAL

- 1-

query logging is OFF


recursive clients: 0/0/1000
tcp clients: 0/100
server is up and running
alpha:~#

c.Configurationdesclients
Commandesetfichiersutiles

/etc/resolv.conf

vi

Manipulations
1.

Modifiezlaconfigurationduserveuralphaafinquilsinterrogeluimmepourtoute
requteDNS.

2.

ModifiezlaconfigurationdelastationdetravailUbuntuafinquelleutiliseleserveur
alphapourtouterequteDNS.

Fichiersmodifis
fichier/etc/resolv.confsurleserveuralpha
nameserver

192.168.200.101

Fichier/etc/resolv.confsurlastationdetravail
nameserver

192.168.200.101

2.Configurationduserveurdecache
Silinstallation sestbienpasse,quevotreserveurconnatunerouteverslextrieur, et que le port UDP 53 nest
pasfiltr,votreserveurdoitpouvoirfairenimportequellersolutiondanslespacedenompublic.

a.Vrificationdelarsolutiondesnomsdanslespacedenompublic
Commandesutiles

ping

Manipulations
1.

Faitesunpingsuruneadressepubliqueconnue.

Rsumdescommandesetrsultatlcran
Pingsuruneadressepublique :
alpha:~# ping www.gnu.org
PING gnu.org (199.232.41.10) 56(84) bytes of data.
64 bytes from www.gnu.org (199.232.41.10): icmp_seq=1 ttl=52 time=136 ms
64 bytes from www.gnu.org (199.232.41.10): icmp_seq=2 ttl=52 time=140 ms
alpha:~#
Noubliezpasquelorsdutestdunersolutionaveclacommandeping,cestlapremirelignequinousintresse,
cellequitraduitlenomenadresseIP,etnonlventuellerponseauping,quipeutparailleurstrefiltre.

- 2-

ENI Editions - All rights reserved - Samuel CASAL

b.Essaisdemiseencache(facultatif)
Commandesutiles

ping

Manipulations
1.

Justeaprsunersolutionrussie,faitesensortequevotreserveurnepuisseplus
quitterlerseau,endbranchantlerouteurdevotreswitchparexemple.

2.

Refaiteslemmepingalorsqueleserveurnaccdepluslextrieur.

3.

Faitesunpingsurunautrenomquelconque.

Rsumdescommandesetrsultatlcran
Pingsurunevaleurconserveencache :
alpha:~# ping www.gnu.org
PING gnu.org (199.232.41.10) 56(84) bytes of data.
alpha:~#
Pingsurunevaleurnouvelle :
alpha:~# ping www.kernel.org
ping unknown host www.kernel.org
alpha:~#

c.Redirection
Vousdisposezmaintenantdunserveurcapabledefairedesrsolutionsdenoms.Afinquevotreserveurpuisse
sontourbnficierducacheduserveurdevotrefournisseurdaccs,dclarezuneredirection.
Commandesetfichiersutiles

named.conf(named.conf.options)

vi

Manipulations
1.

ditezlefichier/etc/bind/named.conf.options.

2.

Dcommentezlaligneforwardersensupprimantledoubleslashainsiquelesdeux
lignesdirectementendessous.

3.

Remplacez0.0.0.0parladresseIPduserveurDNSdevotrefournisseurdaccs.

4.

Rechargezleserviceparlacommandedevotrechoix.

Rsumdescommandesetrsultatlcran
Fichier/etc/bind/named.conf/options:
options {
directory "/var/cache/bind";
// If there is a firewall between you and nameservers you want
// to talk to, you may need to fix the firewall to allow multiple
// ports to talk. See http://www.kb.cert.org/vuls/id/800113
// If your ISP provided one or more IP addresses for stable
// nameservers, you probably want to use them as forwarders.

ENI Editions - All rights reserved - Samuel CASAL

- 3-

// Uncomment the following block, and insert the addresses replacing


// the all-0s placeholder.
forwarders {
194.2.0.50;
};
auth-nxdomain no;
# conform to RFC1035
listen-on-v6 { any; };
};
Rechargementduservice :
alpha:/etc/bind# /etc/init.d/bind9 restart
Stopping domain name service...: bind9.
Starting domain name service...: bind9.
alpha:/etc/bind#

3.Crationdezonespersonnalisesdirectesetinverses
Encouragparcessuccs,vousdcidezdutiliservotreserveurDNSpourhbergerunezonelocale.Cettezonevous
permettra de crer des enregistrements qui rfrenceront vos ressources locales comme les imprimantes par
exemple.Pourfaireleschosesdanslesrglesdelart,vousdcidezdecrerunezonedirectepas.netetunezone
inversecorrespondantaurseau192.168.200.0.

a.CrationdesfichiersdezonessurleserveurA
Vousallezcrerlefichierpourlazonedirectepas.netetpourlazoneinverse200.168.192.inaddr.arpa.Cesfichiers
devront dclarer A comme serveur matre pour ces zones. Ladresse mail du contact administratif sera
root@pas.net.
Commandesetfichiersutiles

fichiersdezone

vi

Manipulations
1.

Dans/etc/bind,crezdeuxfichiersdb.pas.netetdb.192.168.200.

2.

Danslesdeuxfichiers,crezlenregistrementSOAavecalphacommeserveur
autoritaire.Appuyezvoussur/etc/bind/db.emptypourconnatrelesvaleursdecache
pardfaut.NoubliezpasquelesnomsdezonessontdesFQDN,etquilsdoiventdonc
treterminsparunpoint.Ladressemailducontactadministratifestroot@pas.net.

3.

CrezlesenregistrementsNSpourchacundesfichiers.Pourlesdeuxzones,leserveur
alphaestleserveurdenom.

4.

CrezdanslazonedirecteunenregistrementdetypeApourassocieruneadresseIP
auserveuralpha.

Rsumdescommandesetrsultatlcran
Fichier/etc/bind/pas.net :
$TTL
86400
pas.net.
IN SOA
1
604800
86400
2419200
86400 )

- 4-

alpha.pas.net. root.pas.net. (

ENI Editions - All rights reserved - Samuel CASAL

pas.net.
IN
alpha.pas.net.

NS
IN

alpha.pas.net.
A
192.168.200.101

Fichier/etc/bind/db.192.168.200 :
$TTL
86400
200.168.192.in-addr.arpa.
1
604800
86400
2419200
86400 )
200.168.192.in-addr.arpa.

IN

SOA

IN

NS

alpha.pas.net. root.pas.net. (

alpha.pas.net.

b.Dclarationdesfichiersdezone
Lebutestmaintenantdefairesavoirvotreserveurquildoitchargerlesdeuxfichiersdezonequevousvenezde
crerchaquedmarrageduservice.
Commandesetfichiersutiles

named.conf(named.conf.local)

vi

Manipulations
1.

Dans/etc/bind/named.conf.local,crezunesectionzonerfrenantvotrezonedirecte
entantquezonematresse.

2.

Dans/etc/bind/named.conf.local,crezunesectionzonerfrenantvotrezoneinverse
entantquezonematresse.

3.

Rechargezleservice.

Rsumdescommandesetrsultatlcran
Fichier/etc/bind/named.conf.local :
//
// Do any local configuration here
//
// Consider adding the 1918 zones here, if they are not used in your
// organization
//include "/etc/bind/zones.rfc1918";
zone "pas.net" {
type master;
file "/etc/bind/db.pas.net";
};
zone "200.168.192.in-addr.arpa" {
type master;
file "/etc/bind/db.192.168.200";
};
Rechargementduservice :
alpha:/etc/bind# /etc/init.d/bind9 restart
Stopping domain name service...: bind9.
Starting domain name service...: bind9.
alpha:/etc/bind#

ENI Editions - All rights reserved - Samuel CASAL

- 5-

Il est impratif que votre service redmarre sans encombre. Un tailde /var/log/syslog vous dira si les
zonessontbienchargesetsileserviceacorrectementdmarr.

c.Crationdenregistrements
Vousdcidezmaintenantdecrerquelquesenregistrementsdediffrentesnaturespourtesterlefonctionnement
devotreserveur.
Commandesetfichiersutiles

Fichiersdezone

vi

Manipulations
1.

Dansvotrefichierdezonedirecte,crezunenregistrementbeta.pas.netdetypeA
correspondantladresseIPduserveurbeta.

2.

Dansvotrefichierdezonedirecte,crezunenregistrementserveuradetypeCNAME
correspondantauFQDNalpha.pas.net.

3.

Dansvotrefichierdezonedirecte,crezunenregistrementalfadetypeCNAME
correspondantaunomcourtalpha.

4.

Dansvotrefichierdezoneinverse,crezunenregistrement101detypePTR
correspondantaunomduserveuralpha.

5.

Dansvotrefichierdezoneinverse,crezunenregistrement102detypePTR
correspondantaunomduserveurbeta.

6.

Rechargezlesinformationsdezone.

Rsumdescommandesetrsultatlcran
Enregistrementsderessourcesdanslefichierdezonepas.net
beta.pas.net. IN
serveur-a
IN
alfa
IN

A
CNAME
CNAME

192.168.200.102
alpha.pas.net.
alpha

Enregistrementsderessourcesdanslefichierdezone200.168.192.inaddr.arpa
101
102

IN
IN

PTR
PTR

alpha.pas.net.
beta.pas.net.

Rechargementdesinformationsdezone :
alpha:/etc/bind# rndc reload
server reload successful
alpha:/etc/bind#

4.Interrogationduserveur
Ayantc urdevrifierquetoutsepassebien,vousconduisezquelquestestsdepuislastationdetravailUbuntu.

a.Utilisationdenslookup
Commandeutile

- 6-

nslookup
ENI Editions - All rights reserved - Samuel CASAL

Manipulations
1.

Prcisezqueleserveurinterrogerestalpha.

2.

Demandezladressecorrespondantaunomalpha.pas.net.

3.

Demandezladressecorrespondantaunomserveura.pas.net.

4.

Demandezlenomcorrespondantladresse192.168.200.102.

Rsumdescommandesetrsultatlcran
Rsolutiondepuislastationavecnslookup
toto@ubuntu:~$ nslookup
> server 192.168.200.101
Default server: 192.168.200.101
Address: 192.168.200.101#53
> alpha.pas.net
Server: 192.168.200.101
Address: 192.168.200.101#53
Name: alpha.pas.net
Address: 192.168.200.101
> serveur-a.pas.net
Server: 192.168.200.101
Address: 192.168.200.101#53
serveur-a.pas.net canonical name = alpha.pas.net.
Name: alpha.pas.net
Address: 192.168.200.101
> 192.168.200.102
Server: 192.168.200.101
Address: 192.168.200.101#53
102.200.168.192.in-addr.arpa name = beta.pas.net.
>

b.Utilisationdedig
Commandeutile

dig

Manipulations
1.

Demandezauserveuralphaladressedebeta.pas.net.

Rsumdescommandesetrsultatlcran
toto@ubuntu:~$ dig @192.168.200.101 beta.pas.net
; <<>> DiG 9.6.1-P1 <<>> @192.168.200.101 beta.pas.net
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 34012
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 1
;; QUESTION SECTION:
;beta.pas.net.

IN

;; ANSWER SECTION:
beta.pas.net.
86400

IN

192.168.200.102

ENI Editions - All rights reserved - Samuel CASAL

- 7-

;; AUTHORITY SECTION:
pas.net.
86400
IN

NS

alpha.pas.net.

;; ADDITIONAL SECTION:
alpha.pas.net.
86400

IN

;;
;;
;;
;;

192.168.200.101

Query time: 10 msec


SERVER: 192.168.200.101#53(192.168.200.101)
WHEN: Fri Jul 16 16:06:25 2010
MSG SIZE rcvd: 82

toto@ubuntu:~$

5.Crationdunserveursecondaire
Inquietpourladisponibilitduservice,vousdcidezderpliquervoszonessurundeuximeserveur.Vousdcidez
doncdexploiterleserveurbetaentantqueserveursecondairepourvosdeuxzones.
Les distributions Red Hat proposent un service bind chroot dorigine. Rien de problmatique, lenvironnement de
travail se situera intgralement dans le rpertoire /var/named/chroot, et le fonctionnement chroot est dj
configurdanslescriptdelancementduservice.

a.Configurationduserveursecondaire
Lorsdelasynchronisation,lesfichiersdezonesserontcrslocalementsurleserveurbeta.Ilfautsassurerquele
comptedeservice(named)aitbienledroitdcrituresursonrpertoiredestockage.
Commandesetfichiersutiles

named.conf

chmod

Manipulations
1.

Crezunfichiernamed.confdanslerpertoire/var/named/chroot/etc.

2.

Dclarezlesdeuxzonesesclavespas.netet200.168.192.inaddr.arpaayantpour
matreleserveuralpha.Assurezunstockagelocaldesfichiersdezonedansle
rpertoirechroot/var/named.

3.

Faitesensortequelegroupeducomptedeservicenamedpuissecriredansle
rpertoiredestockagedesfichiersdezones(/var/named/chroot/var/named).

4.

Dmarrezleserviceetconstatezlabsencederreur.

Rsumdescommandesetrsultatlcran
Fichier/var/named/chroot/etc/named.conf :
zone "pas.net" {
type slave;
masters { 192.168.200.101 ; };
file "/var/named/pas.net";
};
zone "200.168.192.in-addr.arpa" {
type slave;
masters { 192.168.200.101 ; };
file "/var/named/200.168.192.in-addr.arpa";
};
Affectationdesdroitsaucomptedeservicenamed :
[root@beta var]# ls -ld /var/named/chroot/var/named/
- 8-

ENI Editions - All rights reserved - Samuel CASAL

drwxr-x--[root@beta
[root@beta
drwxrwx--[root@beta

4 root named 4096 jui 16 17:01 /var/named/chroot/var/named/


var]# chmod g+w /var/named/chroot/var/named/
var]# ls -ld /var/named/chroot/var/named/
4 root named 4096 jui 16 17:01 /var/named/chroot/var/named/
var]#

Dmarrageduservice :
[root@beta var]# service named start
Dmarrage de named :
[ OK ]
[root@beta var]#
Vrification :
[root@beta var]# tail /var/log/messages
Jul 16 17:02:48 beta named[641]: running
Jul 16 17:02:48 beta named[641]: zone pas.net/IN: Transfer started.
Jul 16 17:02:48 beta named[641]: transfer of pas.net/IN from 192.168.200.101#53:
connected using 192.168.200.51#58348
Jul 16 17:02:48 beta named[641]: zone pas.net/IN: transferred serial 1
Jul 16 17:02:48 beta named[641]: transfer of pas.net/IN from 192.168.200.101#53:
end of transfer
Jul 16 17:02:49 beta named[641]: zone 200.168.192.in-addr.arpa/IN: Transfer started.
Jul 16 17:02:49 beta named[641]: transfer of 200.168.192.in-addr.arpa/IN from
192.168.200.101#53: connected using 192.168.200.51#48705
Jul 16 17:02:49 beta named[641]: zone 200.168.192.in-addr.arpa/IN: transferred serial 1
Jul 16 17:02:49 beta named[641]: transfer of 200.168.192.in-addr.arpa/IN from
192.168.200.101#53: end of transfer
[root@beta var]#
[root@beta var]# ls /var/named/chroot/var/named/
200.168.192.in-addr.arpa data pas.net slaves
[root@beta var]#

b.Configurationduserveurprimaire
Ilnevousresteplusquindiquerauserveurmatrequildoitdsormaiscomposeravecunpartenaire.
Commandesetfichiersutiles

Fichiersdezone

dig

tail

vi

Manipulations
1.

DclarezpourvosdeuxzonesleserveurbetacommenouveauserveurdetypeNS.

2.

AjoutezunenregistrementdetypeArfrenantleclientUbuntu.

3.

Incrmentezlenumrodesriedeszones.

4.

Rechargezleszones.

5.

Vrifiezenconsultantlejournalsystmeduserveuralphaqueleredmarragedu
servicesestbienpass.

6.

Vrifiezsurleserveurbetaquelesmodificationsontbientprisesencompte.

Rsumdescommandesetrsultatlcran

ENI Editions - All rights reserved - Samuel CASAL

- 9-

Fichierdezonedirectemodifi :
$TTL
86400
pas.net.

IN

SOA

;
pas.net.
pas.net.
alpha.pas.net.
beta.pas.net.
serveur-a
alfa
client

IN
IN
IN
IN
IN
IN
IN

NS
NS
A
A
CNAME
CNAME
A

alpha.pas.net. root.pas.net. (
2
; Serial
604800
; Refresh
86400
; Retry
2419200
; Expire
86400 )
; Negative Cache TTL
alpha.pas.net.
beta.pas.net.
192.168.200.101
192.168.200.102
alpha.pas.net.
alpha
192.168.200.199

Fichierdezoneinversemodifi :
$TTL
86400
200.168.192.in-addr.arpa.

IN
2
604800
86400
2419200
86400 )

;
200.168.192.in-addr.arpa.
200.168.192.in-addr.arpa.
101
IN
PTR
102
IN
PTR
199
IN
PTR

SOA
alpha.pas.net. root.pas.net. (
; Serial
; Refresh
; Retry
; Expire
; Negative Cache TTL

IN
NS
alpha.pas.net.
IN
NS
beta.pas.net.
alpha.pas.net.
beta.pas.net.
client.pas.net.

Rechargementdeszones :
alpha:/etc/bind# rndc reload
server reload successful
alpha:/etc/bind# tail /var/log/daemon.log
Jul 16 17:29:56 alpha named[4638]: loading configuration from /etc/bind/named.conf
Jul 16 17:29:56 alpha named[4638]: using default UDP/IPv4 port range: [1024, 65535]
Jul 16 17:29:56 alpha named[4638]: using default UDP/IPv6 port range: [1024, 65535]
Jul 16 17:29:56 alpha named[4638]: reloading configuration succeeded
Jul 16 17:29:56 alpha named[4638]: reloading zones succeeded
Jul 16 17:29:56 alpha named[4638]: zone 200.168.192.in-addr.arpa/IN: loaded serial 2
Jul 16 17:29:56 alpha named[4638]: zone 200.168.192.in-addr.arpa/IN: sending
notifies (serial 2)
Jul 16 17:29:56 alpha named[4638]: zone pas.net/IN: loaded serial 2
Jul 16 17:29:56 alpha named[4638]: zone pas.net/IN: sending notifies (serial 2)
alpha:/etc/bind#
Vrificationsurleserveuresclaveavecdig :
[root@beta named]# dig @127.0.0.1 client.pas.net
; <<>> DiG 9.3.6-P1-RedHat-9.3.6-4.P1.el5_4.2 <<>> @127.0.0.1 client.pas.net
; (1 server found)
;; global options: printcmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 27701
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 2, ADDITIONAL: 2
;; QUESTION SECTION:
;client.pas.net.
;; ANSWER SECTION:
client.pas.net.

- 10 -

86400

IN

IN

192.168.200.199

ENI Editions - All rights reserved - Samuel CASAL

;; AUTHORITY SECTION:
pas.net.
pas.net.

86400
86400

IN
IN

NS
NS

beta.pas.net.
alpha.pas.net.

;; ADDITIONAL SECTION:
beta.pas.net.
alpha.pas.net.

86400
86400

IN
IN

A
A

192.168.200.102
192.168.200.101

;;
;;
;;
;;

Query time: 5 msec


SERVER: 127.0.0.1#53(127.0.0.1)
WHEN: Fri Jul 16 17:31:37 2010
MSG SIZE rcvd: 119

[root@beta named]#
Consultationdesjournauxsurleserveuresclave :
[root@beta named]# tail /var/log/messages
Jul 16 17:30:54 beta named[1352]: client 192.168.200.102#58123:
received notify for zone pas.net
Jul 16 17:30:54 beta named[1352]: zone pas.net/IN: refused notify
from non-master: 192.168.200.102#58123
Jul 16 17:30:58 beta named[1352]: client 192.168.200.101#26310:
received notify for zone 200.168.192.in-addr.arpa
Jul 16 17:30:58 beta named[1352]: zone 200.168.192.in-addr.arpa/IN: Transfer started.
Jul 16 17:30:59 beta named[1352]: transfer of 200.168.192.inaddr.arpa/IN from 192.168.200.101#53: connected using 192.168.200.102#55607
Jul 16 17:30:59 beta named[1352]: zone 200.168.192.in-addr.arpa/IN: transferred serial 2
Jul 16 17:30:59 beta named[1352]: transfer of 200.168.192.inaddr.arpa/IN from 192.168.200.101#53: end of transfer
Jul 16 17:30:59 beta named[1352]: zone 200.168.192.in-addr.arpa/IN:
sending notifies (serial 2)
Jul 16 17:30:59 beta named[1352]: client 192.168.200.102#62475:
received notify for zone 200.168.192.in-addr.arpa
Jul 16 17:30:59 beta named[1352]: zone 200.168.192.in-addr.arpa/IN:
refused notify from non-master: 192.168.200.102#62475
[root@beta named]#

ENI Editions - All rights reserved - Samuel CASAL

- 11 -

Prrequisetobjectifs
1.Prrequis
LesconnaissancesacquiseslorsdelacertificationLPIniveau1,notamment:

ditiondefichierstexte.

2.Objectifs
lafindecechapitre,vousserezenmesurede:

ConfigurerunserveurApachebasique.
ConnatrelesprincipalesdirectivesApache.
ConnatrelesprincipauxmodulesApache.
Configurerlaccsdesutilisateursleurspagespersonnelles.
Configurerdeshtesvirtuels.
Configurerlauthentificationdesutilisateurs.
Connatrelesconceptsdescertificatsnumriques.
ConfigurerunsitewebscurisenSSL.
Connatrelefonctionnementdunserveurproxy.
Assureruneconfigurationbasiqueduserveurproxysquid.

ENI Editions - All rights reserved - Samuel CASAL

- 1-

ConfigurationdebasedunserveurApache
1.Apacheetlesserveursweb
Le clbre Apache est le serveur Web le plus connu et depuis 1996 au moins le plus rpandu sur internet. Sa
popularitvientdesagrandestabilitetdesabonnetenuelacharge.Ilestprsentdanstouteslesarchitectures
serveurdecontenudynamiqueLAMPetWAMP(Linux/WindowsApacheMySQLPHP),etsastructuremodulairelerend
aptelaplupartdesutilisations.
Leserveurwebestcomposdunscriptdelancementdeservicequi,enfonctiondunfichierdeconfiguration,chargera
lesdmonsapacheetdventuelsmodulesfonctionnels.
La richesse fonctionnelle dApache implique souvent un fichier de configuration impressionnant. Toutefois, la
configurationdunserveurbasiqueestfinalementassezsimpleraliser.

2.Fichierdeconfiguration
a.Formatdufichierdeconfiguration
Le fichier de configuration dApache, selon versions et options de compilation httpd.conf, apache.conf ou
apache2.conf, est compos de directives suivies de valeurs. Certaines directives sont intgres dans des
conteneursafinqueleurchampdapplicationsoitlimit.
FormattypedufichierdeconfigurationApache
directive1 valeur1
directive2 valeur2
...
<directive_conteneur valeur>
directive3 valeur3
directive4 valeur4
...
</directive_conteneur>
On note ici des directives prsentes directement dans le fichier de configuration, et dautres intgres dans une
section. Cette section limitera le champ dapplication des directives un certain contexte de fonctionnement. La
configurationdApacheconsisterachoisirlesbonnesdirectives,leuraffecterlesbonnesvaleurs,etconstruireles
sectionsncessaires.
Parmi les innombrables directives Apache, certaines sont fondamentales et devront se retrouver dans toute
configurationApache.
Fichierdeconfiguration:directivescourantes
ServerRoot

Indiquelerpertoireracinedesfichiersdeconfiguration.

User

DsignelecomptedeservicepropritairedesprocessusApache.

Group

DsignelegroupedeservicepropritairedesprocessusApache.

ErrorLog

Fichierdejournalisationdeserreurs.

Include

Indiqueunfichierdeconfigurationannexeintgrerdanslefichierapache2.conf.

Listen

Indiqueunportsurlequelleserveurseralcoute.

DocumentRoot

Indiquelerpertoirecontenantlesfichiershtml.

Exempledefichierdeconfigurationminimaliste

ENI Editions - All rights reserved - Samuel CASAL

- 1-

Notez que si cette configuration peut fonctionner, le serveur manquera un peu de confort, par exemple en ne
reconnaissant pas les fichiers index.html ou index.htm. Il faudra donc prciser dans lURL le nom des fichiers html
atteindre en tapant par exemple http://A.B.C.D/index.html si le rpertoire /var/www contient un fichier index.html. De
plus,lesscriptsdelancementdeservicepouvanttretroublsparcefichierdeconfigurationminimalisteetenunseul
morceau,ilserasansdouteprfrabledelancerlexcutableapachedirectementsanspasserparlescript.
ServerRoot /etc/apache2
User www-data
Group www-data
ErrorLog /var/log/apache2/error.log
Listen 80
DocumentRoot /var/www

b.Lesdirectivesdeconteneur
Nousavonsvuquelesdirectivesservaientappliquerunlmentdeconfigurationauserveur.Parexemple,laligne
deconfigurationListen80danslefichierdeconfigurationestcomposedeladirectiveListenquiindiquesurquel
portleserveurdoitattendredesrequtes,etdelavaleur80quiestleportHTTPstandard.Placedirectementdans
lefichierdeconfiguration,cettedirectivesappliqueralensembleduserveur.
Il existe toutefois des lments de configuration qui ne concernent quun aspect fonctionnel du serveur. Par
exemple, des directives qui ne devraient sappliquer qu une partie limite dun site web, comme des pages web
protges toutes situes dans une arborescence spcifique du systme de fichiers. Pour ce type dusage,Apache
utilisedesdirectivesdeconteneur.
Les directives de conteneur ont deux vocations : grouper un ensemble de directives de configuration, et les
appliquerunepartielimiteduserveurApache.
Syntaxegnriquedunedirectivedeconteneur
<directive_conteneur valeur>
directive3 valeur3
directive4 valeur4
...
</directive_conteneur>
Notez que toute section dfinie par une directive de conteneur entoure la directive des caractres <>, et que la
sectionesttermineparlenomdeladirective,prcddunslash.Entreledbutetlafindesectionsetrouvent
touteslesdirectivesordinairesquisappliquentaucontextefonctionneldfiniparladirectivedeconteneur.
Exemplededirectivedeconteneur
LadirectiveDirectoryestsansdouteladirectivedeconteneurlaplusfacileapprhender.Elleadmetcommeargumentun
rpertoireetdfinitdesparamtresspcifiquesaucontenuwebsitudanscerpertoire.Danslexemple cidessous,on
indiquequedanslerpertoire/var/www/specialetseulementdanscerpertoire,leslienssymboliquespeuventtresuivis
parleserveurlorsdelalecturedespagesweb.
<Directory /var/www/special>
Options FollowSymLinks
</Directory>

c.Validationdelasyntaxe
Ilestpossible(etmmeprudent)devaliderlasyntaxedunfichierdeconfigurationavantdelancerleservice.
Validationdelasyntaxedufichierapache2.conf
exe_apache -t
Oexe_apachereprsentelexcutabledelancementduserveurApache.Lesvaleursgnralementrencontressont
httpd,apacheetapache2.

d.Dmarrageetarrtduserveur

- 2-

ENI Editions - All rights reserved - Samuel CASAL

Ensituationdeproduction,ledmarrageetlarrtduserveurseferaparlutilisationduscriptdegestiondeservice
situdans/etc/init.d.Enphasedetesttoutefois,ilestutilededmarreroudarrterleserveurponctuellement.
DmarrageponctuelduserveurApache
exe_apache -k start
ArrtduserveurApache
exe_apache -k stop
Oexe_apachereprsentelexcutabledelancementduserveurApache.Lesvaleursgnralementrencontressont
httpd,apacheetapache2.
Il est aussi possible de piloter le dmon apache par la commande de contrle apache2ctl avec entre autres les
mmesparamtresstartetstop.

3.LesmodulesApache
a.Chargementdesmodules
LeserveurwebApacheaunestructuremodulaire,cestdire que les fonctions fondamentales du serveur seront
fourniesparlexcutableapache,alorsquelesfonctionsaccessoiresserontassurespardesmoduleschargsla
demande depuis le fichier de configuration. Ces modules ncessitant souvent des lments de configuration
supplmentaires,lesdirectivesassociesauxmodulesdevronttreajoutesellesaussiaufichierdeconfiguration.
Formatstandarddechargementdedirectivedansapache2.conf
LoadModule id_module fichier_module
directive valeur

Fichierdeconfiguration:Chargementdemodule
LoadModule

Directivedechargementdesmodules.

id_module

Identifiantdemodule.Valeurnormaliseproprechaquemodule.

fichier_module

LecheminabsoludufichierdemodulefourniavecApache.

Exempledechargementdemodule
Danscetexemplelemodulechargestdir_moduledontlafonctionestdesimplifierlcrituredesURLparlesutilisateurs
etdafficherunfichierhtml(engnralindex.html)mmesilnestpasexplicitementprcis.Lefichierexcutabledece
moduleestmod_dir.so.Unefoiscemodulecharg,ilestpossibledappelerladirectiveDirectoryIndexquidemandede
chargerindex.htmlsiaucunfichiernestprcisdanslURL.
LoadModule dir_module /usr/lib/apache2/modules/mod_dir.so
DirectoryIndex index.html

b.Visualisationdesmodules
Lacommandeapacheutilisedefaoninteractivepermetdafficherlesmoduleschargs.Lesmodulespeuventavoir
deuxorigines:ilsonttappelsparlacommandeloaddepuislefichierdeconfiguration,ouilsonttcompils
danslec urduprogrammeetsontchargssystmatiquement.
Visualisationdesmodulescompilsdansleprogramme
exe_apache -l
Visualisationdesmoduleschargs

ENI Editions - All rights reserved - Samuel CASAL

- 3-

exe_apache -M
Exempledevisualisationdesmoduleschargs
LoptionMaffichelesmodulesstatiquesetceuxchargsdepuislefichierdeconfigurationparladirectiveLoadModule.
alpha:/etc/apache2# apache2 -l
Compiled in modules:
core.c
mod_log_config.c
mod_logio.c
worker.c
http_core.c
mod_so.c
alpha:/etc/apache2# apache2 -M
Loaded Modules:
core_module (static)
log_config_module (static)
logio_module (static)
mpm_worker_module (static)
http_module (static)
so_module (static)
alias_module (shared)
auth_basic_module (shared)
authn_file_module (shared)
authz_default_module (shared)
authz_groupfile_module (shared)
authz_host_module (shared)
authz_user_module (shared)
autoindex_module (shared)
cgid_module (shared)
deflate_module (shared)
dir_module (shared)
env_module (shared)
mime_module (shared)
negotiation_module (shared)
setenvif_module (shared)
status_module (shared)
Syntax OK
alpha:/etc/apache2#

c.Choixdesmodules
Lesmodulesdpendentnaturellementdelusagequiestfaitduserveur.Lusageconsisteidentifierlesbesoins,
dterminerlesdirectivesassociescesbesoins,etvrifiersurladocumentationenligneApache(sectionDirective
deconfigurationlexcution)quelssontlesmodulesimpliqus.
Supposons quon veuille donner aux utilisateurs laccs des pages personnelles situes dans leur rpertoire
personnel. La directive UserDir est justement faite pour cela. Elle admet comme paramtre un chemin relatif qui
indique lemplacement du rpertoire personnel de lutilisateur o placer les ressources html de lutilisateur. Les
documentsserontalorsaccessiblesparlurlhttp://serveur/~utilisateur/.
Si on consulte cette directive dans la documentation en ligne, on constate quelle est dpendante du module
mod_userdir.Ilfaudradoncconfigurercettedirectiveetsassurerquelemoduleseracharg.

- 4-

ENI Editions - All rights reserved - Samuel CASAL


Exempledeconfigurationdelaccsutilisateur
Avec la configuration de laccs utilisateur,
fichier/home/toto/web/doc.htmlsurleserveur.

lurl

http://serveur/~toto/doc.html

donnera

accs

au

LoadModule userdir_module modules/mod_userdir.so


UserDir web

4.Gestiondesressources
Contrairementuneidereue,leserveurApachenestpasforcmentleplusrapidedumarchetdesproduitsau
code plus simple permettent des temps de rponses plus rapides matriel quivalent. Toutefois Apache, par sa
gestion intelligente des ressources, et la prallocation de processus permet une bien meilleure adaptation la
charge.
RegardonslesprocessuslancsparApachesurunserveurinactif:
alpha:~# ps -ef
root
3244
www-data 3245
www-data 3247
www-data 3252
alpha:~#

| grep apache
1 0 Feb05
3244 0 Feb05
3244 0 Feb05
3244 0 Feb05

?
?
?
?

00:00:04
00:00:00
00:00:00
00:00:00

/usr/sbin/apache2
/usr/sbin/apache2
/usr/sbin/apache2
/usr/sbin/apache2

-k
-k
-k
-k

start
start
start
start

Onconstatelaprsencedunprocessusexcutparroot,etdetroisautresparlecomptedeservicewwwdata.Le
premierprocessusnesertqulancerlesautres,quieuxtraiterontlesrequtesdesclients.Leserveurobservicine
gre aucune connexion cliente, et pourtant, trois processus ont t prallous pour tre prts grer toute
demandedeclients.Lagestiondupremierserviceparlecompterootestobligatoire,carcestleseulapteouvrirle
port80surunsystmeLinux.

ENI Editions - All rights reserved - Samuel CASAL

- 5-

- 6-

ENI Editions - All rights reserved - Samuel CASAL

Htesvirtuels
Il est frquent quun serveur Apache physique hberge plusieurs sites web diffrents. Cest ce qui permet aux
hbergeurs de grer les sites web de dizaines de clients sur un seul serveur. Cette technologie est connue en
environnementApachesouslenomdeVirtualHost(htevirtuel).

1.Configurationglobale
a.Gestiondescontenus
Siunserveurdoitgrerdeshtesvirtuels,cest quildoithbergerplusieurscontenusousiteswebdiffrents.Il
faudra simplement hberger chacun de ces contenus dans des rpertoires diffrents et dment identifis.
Lhbergement dun grand nombre de sites web sur un seul serveur requiert une certaine discipline et des
conventionsdednominationrigoureuses.

b.Organisationdessitesvirtuels
Lefichierdeconfigurationdevratrequelquepeumodifi.Chaquehtevirtuelliraseslmentsdeconfiguration
spcifiques dans des conteneurs dclars par la directive VirtualHost. Certaines directives de porte gnraliste
(DocumentRootparexemple)neserontplusexploites,etdevronttreprcisespourchacundeshtesvirtuels
dansleconteneurcorrespondant.
Si un serveur Apache gre des htes virtuels, il ne fait plus que cela. Cestdire quilny a pas de configuration
standardlaquellesajoutentdesconfigurationsspcifiquespourleshtesvirtuels.Dslorsquedeshtesvirtuels
sontconfigurs,toutaccsauserveursefaitparunhtevirtuel,ftillesitedebase.

2.Configurationdeshtesvirtuels
Ilexistedeuxtechniquesdimplmentationdeshtesvirtuels:leshtesvirtuelssuradressesIPoleserveurfournit
un contenu diffrent selon ladresse IP par laquelle il est contact, et les htes virtuels par noms dhtes o le
serveurfournituncontenudiffrentenfonctiondunomdhteprsentdanslURLparlequelilestcontact.

a.HtesvirtuelssuradresseIP
LesupportdeshtesvirtuelssuradresseIPestpossiblemaisrarementutilis.Danscetteconfiguration,leserveur
disposedeplusieursadressesIPetrponddiffremmentselonqueleserveursubitunerequteHTTPsurluneou
lautredesesinterfaces.UnedirectiveVirtualHostdoittreutilisepourchaqueadresseIPutilise.Ellecontientla
dclarationderpertoirecontenantlesdonneshtmlcorrespondantausitevirtuel.Cettedclarationsefaitparla
directiveDocumentRoot.
DclarationdesitesvirtuelsdanslefichierdeconfigurationApache
<VirtualHost adresse_1:80>
ServerName nom1
DocumentRoot rep1
</VirtualHost>
<VirtualHost adresse_2:80>
ServerName nom2
DocumentRoot rep2
</VirtualHost>

Fichierdeconfiguration:dclarationdhtesvirtuels
<VirtualHost>

Dclarationdunhtevirtuel:toutcequisetrouvedansleconteneurconcerne
lhtevirtuel.

adresse_x:80

LhtevirtuelestligibleauxrequtesarrivantsurladresseIPconfiguredu
serveuretsurleport80.
ENI Editions - All rights reserved - Samuel CASAL

- 1-

ServerNamenom

Facultatifsilexisteunersolutiondenominverse.Sinon,peutrenvoyerun
messagederreurnonbloquant.

DocumentRoot
rep

Lespageswebdecethtevirtuelsontdanslerpertoirerep.

b.Htesvirtuelssurnomdhte
LesupportdeshtesvirtuelssurnomdhtencessiteunedirectiveNameVirtualHostquidevratreplacedans
le contexte gnral du fichier de configuration, et autant de directives de conteneur VirtualHost que le serveur
devrahbergerdesitesvirtuels.Pourbiencomprendrelorganisationdessitesvirtuels,ilfautsedirequilnyapas
unsiteprincipaletdessitesvirtuels,maisquetoutsitehbergdoitfairelobjetdunsitevirtuel.
Comme le site virtuel est reconnu sur son nom dhte, la directive ServerName doit tre prsente
systmatiquementdanslesconteneursdhtevirtuel,etlenomassocidoittreprcismentceluiparlequelles
clientsaccderontauserveur(lenomcontenudanslURL).
La dernire directive obligatoire dans une dclaration dhte virtuel est la directive DocumentRoot qui prcisera
lemplacementdesdonneswebassociesausitevirtuel.
DclarationdesitevirtueldanslefichierdeconfigurationApache
NameVirtualHost *:80
<VirtualHost *:80>
ServerName nom1
DocumentRoot rep1
</VirtualHost>
<VirtualHost *:80>
ServerName nom2
DocumentRoot rep2
</VirtualHost>

Fichierdeconfiguration:dclarationdhtesvirtuels

- 2-

NameVirtualHost*:80

Ongredeshtesvirtuelsparnoms.Lcoutedesrequtessefaitsurleport
80.

<VirtualHost>

Dclarationdunhtevirtuel:toutcequisetrouvedansleconteneur
concernelhtevirtuel.

*:80

LhtevirtuelestligibleauxrequtesarrivantsurnimportequelleadresseIP
duserveuretsurleport80.

ServerNamenom

Cethtevirtuelseraligibleauxrequtesverslenomdeserveurnom.Ilsera
actifpourlesrequtesvershttp://nom.

DocumentRootrep

Lespageswebdecethtevirtuelsontdanslerpertoirerep.

ENI Editions - All rights reserved - Samuel CASAL

Restrictiondelaccsutilisateur
Apacheoffredenombreusespossibilitsderestrictionsdelaccsutilisateuretilexistedenombreuxmoyensdegrer
laccs aux donnes. Il est noter que ce paragraphe ne traite que de mthodes dauthentification des utilisateurs,
maisnapporteaucuneconfidentialit.Cestdirequelaccsauxdonnespourratresoumisauthentification,mais
quelespageswebcirculerontenclairentreleserveuretlenavigateur.Sionsouhaitelaconfidentialitdeschanges,il
faudrautiliserleprotocoleSSLvuplusloin.

1.Restrictiondelaccsauxpagesweb
a.Dclarationdurpertoireprotger
La restriction se fait pour un rpertoire dont le contenu nest visible quaprs authentification. Si on souhaite
restreindrelaccsunsitecomplet,ilsuffitderestreindrelaccsaurpertoireracineducontenuweb.Toutefois,
lusage veut quune page daccueil soit disponible tous, et que toute navigation ultrieure soit soumise
authentification.
Dclarationdunesectionderpertoiredansapache2.conf
<Directory rpertoire>
...
</Directory>
Orpertoirereprsentelecheminabsoludurpertoiredontilfautprotgerlaccs.Notezlespointsdesuspension
quireprsententlesdirectivesspcifiquesquiserontappliquesaucontenudecerpertoire.

b.Directivesdauthentification
Danslasectionderpertoiresoumisauthentification,ilfautensuiteajoutertouteslesdirectivesncessairesselon
lemodedauthentificationchoisi.Certainesdecesdirectivesseretrouverontdanslaplupartdescirconstances.
Demandedauthentification
AuthName "texte"
Require valid-user
Directive_auth paramtre_auth

Fichierapache2.conf:demandedauthentificationpourunrpertoire
AuthName

Dfinitletitredelabotededialoguequiimposerauneauthentificationlutilisateur.

texte

Titredelabotededialoguequiimposerauneauthentificationlutilisateur.

Requirevaliduser

Directiveimposantunfonctionnementspcifiqueavecsonparamtrevaliduserqui
exigequelutilisateursoitcorrectementauthentifi.

Directive_auth

Laoulesdirectivesdauthentificationenfonctiondelamthodechoisie.

Nous avons employ ici le paramtre validuser pour indiquer que tout utilisateur authentifi peut accder aux
donnes protges. On aurait aussi pu employer user x ou group y pour limiter laccs un utilisateur ou aux
membresdungroupe.

2.Authentificationlocale
a.Crationdunebasedecomptelocale
La cration dun fichier de comptes locaux pour lauthentification des visiteurs apache est une faon simple et

ENI Editions - All rights reserved - Samuel CASAL

- 1-

courante de grer les identits. Il sagit dun fichier unique contenant une ligne par utilisateur dclar. Cette
mthodeconvientdoncbiendanslecadredunnombrelimitdutilisateurs.
Lacommandehtpasswdpermetdecrerlabasedecomptepuisdelalimenter.
Crationdupremiercompteutilisateur
htpasswd -c fichier nom_utilisateur
Ajoutdecompteutilisateur
htpasswd fichier nom_utilisateur
Suppressionduncompteutilisateur
htpasswd -D fichier nom_utilisateur

Commandehtpasswd:optionsetparamtres
c

Ncessairesilefichiernexistepasencore.Silefichierexistedj,ilestcras.

fichier

Lefichiercontenantlabasedecompte.

nom_utilisateur

Lenomducomptecr.

Supprimelutilisateurdontlenomestdonnenrfrence.

Exempledefichierdemotdepasse
Lefichieraffichesurchaquelignelenomducompteutilisateuretsonmotdepassecrypt.
alpha:~# cat httpmdp
toto:x4OpUoo9KBR1o
titi:o9zeMsxnhS45M
tata:hQcfUWksuIAmk
alpha:~#

b.Chargementdesmodulesdauthentification
Certains modules doivent tre chargs pour que nos directives soient reconnues. Il faudra charger au minimum le
module auth_basic pour permettre lauthentification par fichier local, le module authn_file pour grer cette
authentification, et enfin le module authz_user, qui gre lautorisation de laccs aux pages protges. Cette
profusion de modules peut inquiter, mais un minimum de rigueur rend les choses plus faciles : pour chacune des
directivesemployes,ladocumentationenligneprciserasystmatiquementquelsmodulesdoiventtrechargs.
Chargementdesmodules
Lestroismodulessontncessaireslauthentificationdesutilisateurs.
LoadModule auth_basic_module /chemin/mod_auth_basic.so
LoadModule authn_file_module /chemin/mod_authn_file.so
LoadModule authz_user_module /chemin/mod_authz_user.so

c.Configurationdelauthentificationlocale
Dans la section de rpertoire soumis authentification, il faudra ensuite ajouter les directives ncessaires
lauthentificationlocale.
Directivespourauthentificationlocale

- 2-

ENI Editions - All rights reserved - Samuel CASAL

AuthType Basic
AuthUserFile fichier
Ofichierreprsentelefichiercontenantlabasedecompteutilisepourlauthentificationaveclesmotsdepasse
desutilisateurs.
Exempledefichierapache2.confavecauthentification
ServerRoot /etc/apache2
User www-data
Group www-data
ErrorLog /var/log/apache2/error.log
Listen 80
DocumentRoot /var/www
LoadModule dir_module /usr/lib/apache2/modules/mod_dir.so
DirectoryIndex index.html
LoadModule auth_basic_module /usr/lib/apache2/modules/mod_auth_basic.so
LoadModule authn_file_module /usr/lib/apache2/modules/mod_authn_file.so
LoadModule authz_user_module /usr/lib/apache2/modules/mod_authz_user.so
<Directory /var/www>
AuthType basic
AuthUserFile /root/httpmdp
AuthName "Veuillez vous identifier"
Require valid-user
</Directory>

3.AuthentificationparannuaireLDAP
Il existe plusieurs moyens pour exploiter un annuaire LDAP en tant que base dauthentification. La configuration ci
dessousestdoncdonnetitredexemple.

a.Vrificationdedisponibilitdesinformationsdelannuaire
ConsidronsquenousdisposonsdunannuaireLDAPaveclescaractristiquessuivantes:

AdresseIP:192.168.1.11

Contextedescomptesutilisateurs:ou=users,dc=annu,dc=fr

Nomdistinctifdeladministrateur:cn=admin,dc=annu,dc=fr

Exempledinterrogationdelannuaire
Il est vivement recommand de vrifier que lannuaire est bien en ligne et accessible avec les bonnes informations
(adresseIPetcontexteLDAP)avantdeconfigurerlauthentificationLDAPpouruneapplicationquellequellesoit.
toto@serveur# ldapsearch -x -D cn=admin,dc=annu,dc=fr -W -h
192.168.1.11 -b ou=users,dc=annu,dc=fr -s sub ObjectClass=*
Enter LDAP Password:
# extended LDIF
#
# LDAPv3
# base <dc=annu,dc=fr> with scope subtree
# filter: (objectclass=*)
# requesting: ALL
#
# annu.fr
dn: dc=annu,dc=fr
objectClass: domain

ENI Editions - All rights reserved - Samuel CASAL

- 3-

dc: annu
(...)
# toto, users.annu.fr
dn: uid=toto,ou=users,dc=annu,dc=fr
objectClass: top
objectClass: posixAccount
objectClass: person
objectClass: organizationalPerson
objectClass: inetOrgPerson
(...)
toto@serveur#

b.Chargementdesmodulesncessaires
LesmodulesncessaireslauthentificationLDAPsontlessuivants:

auth_basic

authn_file

authz_user

authnz_ldap

c.Configurationdelauthentification
Il faudra ensuite utiliser les directives dauthentification dans une section de rpertoire. Le point dorgue de la
configurationseradclarationdeladirectiveAuthLDAPUrl.
DirectivesutilisespourlauthentificationLDAP
Silasyntaxepeutsemblerimpressionnante,ellenestpasdueauhasardoulimaginationdudveloppeur.Leformatdes
URLLDAPestdfinidanslaRFC2255etestutilisdansquelquesapplications.
AuthName "Texte"
AuthType Basic
Require Valid-user
AuthLDAPUrl ldap://192.168.1.11/ou=users,dc=annu,dc=fr?cn?sub?objectclass=*

4.Authentificationsimpleparfichier.htaccess
LesbonnespratiquesApacheindiquentdutiliserunedirectiveDirectorychaquefoisquuneconfigurationspcifique
doit sappliquer au contenu dun rpertoire et de placer dans le bloc dfini par cette directive les lments de
configuration spcifiques ce rpertorie. Une mthode alternative consiste placer un fichier .htaccess dans le
rpertoireenquestion,etdyintgrerlesdirectivesdevantsappliqueraucontenudurpertoire.
Si la meilleure mthode est sans conteste lexploitation de la directive Directory, il est (vivement) recommand pour
passerlacertificationLPIdtrefamiliarisavecleconceptdesfichiers.htaccess.
Exemplescomparsdexploitation
ExtraitdefichierdeconfigurationApacheavecladirectiveDirectory :
...
<Directory /var/www/prot>
AllowOverride all
authType basic
AuthName "Veuillez vous identifier"
Require valid-user
AuthUserFile /etc/httpd/mdp
</Directory>

- 4-

ENI Editions - All rights reserved - Samuel CASAL

...
Contenu du fichier /var/www/prot/.htaccess utilis pour configurer une authentification depuis le rpertoire des donnes
html :
authType basic
AuthName "Veuillez vous identifier"
Require valid-user
AuthUserFile /etc/httpd/mdp
Ilpeutarriverquelesdeuxconfigurationssetrouventenconflit,etquunedirectivesoitconfiguredefaonspcifique
pour un rpertoire dans un contexte directory, et que la mme directive soit configure diffremment dans un
fichier .htaccess du mme rpertoire. En ce cas, la directive AllowOverride permet de prciser quelle sera la
configurationretenue.
ValeurscourantesdeladirectiveAllowOverride
all

Valeurpardfaut :Toutedirectiveestautorisedanslesfichiers.htaccess.

none

Aucunedirectivenestautorisedanslesfichiers.htaccessetlesfichiers.htaccess
sontignors.

AuthConfig

Autoriselesdirectivesrelativesauxmcanismesdauthentification.

IlestvivementrecommanddenepasappliquerdedirectiveAllowOverrideAllaurpertoireracinedevotre
serveur web (Valeur par dfaut !). Il faut plutt dfinir cette valeur None, et crer une directive Directory
avec la directive AllowOverride configure pour le seul rpertoire concern. Cette mthode augmente la scurit,
maisaussilaperformanceenvitantauserveurwebdechercherunhypothtiquefichier.htaccessdanschacundes
rpertoiresvisits.

ENI Editions - All rights reserved - Samuel CASAL

- 5-

ConfigurationdApacheavecSSL
SSL:SecureSocketLayerestunprotocoledescurisationdescouchesapplicatives.Ilfonctionneavecdenombreux
protocoles, mais son usage le plus rpandu est la scurisation de http (https). SSL apporte des services
dauthentification,deconfidentialitetdecontrledintgrit.

1.Cryptographieetcertificats
Une explication exhaustive de la cryptographie et des certificats numriques X509 dpasserait de beaucoup les
objectifs de ce livre et leur connaissance prcise nest pas requise pour la certification LPI. Toutefois, lutilisationde
certificatsestobligatoirepourscuriserlaccsauxpageswebdunserveurparSSL(https).

a.Conceptscryptographiques
Toute infrastructure cryptographique repose sur des algorithmes de cryptage. Ces algorithmes appartiennent
forcmenttroisfamillesdistinctes:lesalgorithmessymtriquesooncrypteetdcrypteavecuneclunique,les
algorithmesasymtriques,olon dispose dunepairedecls,lunepourcrypteretlautrepourdcrypter,etenfin
lesalgorithmesdehachage,sensuniqueetnexploitantpasdecldecryptage.
La cryptographie asymtrique exploite deux cls. Par convention, on dcide quune de ces cls sera prive et ne
devra tre exploite que par son propritaire, et lautre sera publique, et pourra tre vue de tous, mme des
personneshostiles.Laconsommationimportanteenressourcesprocesseurdelacryptographieasymtriquelarend
inapte au cryptage de grandes quantits de donnes, mais les nombreuses possibilits offertes par les cls
publiquesetprivesenfontunoutilincontournable.Laclpubliqueserviraaucryptagedepetitesdonnes(comme
dautres cls, symtriques par exemple), alors que la cl prive sera utilise pour les oprations de signature
numrique(onsigneavecquelquechosequinappartientqusoi).

b.LescertificatsnumriquesX509
Si les algorithmes utiliss couramment sur internet et dans les entreprises sont rputs fiables, lanalyse des
systmes cryptographiques montre que la vulnrabilit vient souvent des risques lis la transmission de la cl
publiquedunutilisateuroudunserveur.Laconceptionmmedelacryptographieasymtriquefaitquecetteclest
strictementinutilisableseule,etquellenepermetenriendedduirelavaleurdelaclprive.Toutefois,lesfailles
des changes confidentiels ou des signatures numriques de documents reposent toutes sur des cls publiques
dont le nom du propritaire serait usurp. En clair, une cl publique circule, mais ce nest pas la bonne, et un
intrigantfaitpassersaclpubliquepourcelledunautre.Lapersonnetrompepourraitalorscrypterdeslments
trsconfidentielsaveclamauvaisecletdoncmettrecesinformationsendanger.
LescertificatsnumriquesX509ontpourbutdtablirdefaonformelleunlienentreuneidentit(nom,adresseIP,
etc.)etuneclpublique.Lescertificatsnepeuventtrecontrefaitscarilssontsignsparuntiersenquitoutesles
partiesplacentleurconfiance.CestierssontappelsCertificateAuthority(autoritdecertification).Ilspeuvent
trepublicsetreconnusdetousouprivsetutilissdansuncadrerestreint.Danscecasl,lesapplicationsclientes
devronttreconfigurespourreconnatrelautoritdecertificationquiauramislescertificats.
Danslecadredelutilisationdecertificatpourunserveurweb,leserveurdoitdisposerduncertificatquiattestede
son identit : une cl publique lie son nom dhte. Lors dune connexion https de la part dun navigateur, le
serveurenvoiesoncertificat,lenavigateurenvrifielavalidit,puisquelenomsouslequelonaccdeauserveurest
bienceluiannoncdanslecertificat.Danslecascontraire,lenavigateuropposeunealertedescurit.Lutilisateur
estalorslibredelaisserlaconnexionscurisestablirounon,maissanssavoirsileserveurauquelilsadresseest
lgitimeousilsagitdunusurpateur.

c.Gnrationlocaleduncertificat
LefonctionnementdeHTTPavecSSLrequiertquuncertificatcontenantlaclpubliqueduserveurwebsoitenvoy
aunavigateurclientetquecetteclpubliquesoittoujoursenvoyesousformedecertificat.Apacheconfigurpour
SSLdoitdoncdisposerduncertificatquilpourraenvoyersesclients.
LecertificatutilispourApachepourratrefourniparuneautoritdecertificationpubliqueouprivefournieparune
applicationspcialise.Danscettehypothse,lautoritfournirauncertificatquiseraexportsousformedefichier,
copisurledisqueduserveurApache,etexploitparleserveur.
Danslecasdunusageponctueloudesfinsdetest,onpeutaussignrerlocalementuncertificatprtlemploi
qui sera exploitable par le serveur Apache. Il existe des utilitaires spcialiss dans cette fonction, mais qui sont
gnralement lis une distribution, ou on peut le crer de toutes pices avec les utilitaires de la bibliothque
openssl. Pour des besoins limits au test de la configuration ssl dApache, on choisira la solution la plus simple,
savoirutiliserlesmmesclspourgnrerlecertificatetpourlesigner.

ENI Editions - All rights reserved - Samuel CASAL

- 1-

Gnrationducertificatautosign
openssl req -x509 -nodes -newkey rsa:taille -keyout fichier_cl -out fichier_certificat

Commandeopensslpourgnrationdecertificat:optionsetparamtres
req

Demandedecertificat.

x509

Onsouhaiteuncertificatautosignetnonunedemandedesignature.

nodes

Lacldeserveurnedoitpastreprotgeparunmotdepasse.

newkeyrsa:taille

OncredenouvellesclsasymtriquesRSAdontlatailleestdonneen
nombredebits.

keyoutfichier_cl

Lefichierquicontiendralaclpriveduserveur.

outfichier_certificat

Lefichierquicontiendralecertificatduserveur.

La commande cidessus gnre la demande de certificat. Les champs normaliss du certificat sont demands
interactivement lutilisateur. La plupart de ces champs sont informatifs, mais dans le cadre de lutilisation de
certificat pour un serveur web, le champ Common Name (nom commun) doit imprativement correspondre au nom
DNSquifigureradanslURLdaccsauserveur.Danslecascontraire,lenavigateurduclientopposeraunealertede
scuritlorsdelavrificationducertificatdeserveur.
Exempledegnrationdecertificat
IlestimpratifderenseignercorrectementlechampCommonName(CN).Cestceluiquiseraassociformellementla
clpubliquedanslecertificatnumrique.
root@serveur# openssl req -x509 -nodes -newkey rsa:1024 -keyout
serveur.cle -out certificat.pem
Generating a 1024 bit RSA private key
......++++++
.................++++++
writing new private key to serveur.cle
----You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter ., the field will be left blank.
----Country Name (2 letter code) [AU]:FR
State or Province Name (full name) [Some-State]:France
Locality Name (eg, city) []:Lyon
Organization Name (eg, company) [Internet Widgits Pty Ltd]:
Organizational Unit Name (eg, section) []:R&D
Common Name (eg, YOUR name) []:192.168.1.1
Email Address []:
root@serveur#

2.Configurationssl
a.ChargementdumoduleSSL
LemodulencessaireaufonctionnementSSLestmod_ssl.
Chargementdumodule

- 2-

ENI Editions - All rights reserved - Samuel CASAL

LoadModule ssl_module /chemin/mod_ssl.so


Ocheminestlecheminabsoludufichierdemodule.LecheminpardfautdpenddelafaondontApacheat
compiletdoncdeladistribution.

b.Configurationdesclsdeserveur
IlfautensuiteprciserauserveurquellessontlesclsutiliserpoursonfonctionnementSSL.Ildoitdisposerdesa
clprive,etdesoncertificatquicontiendrasaclpublique.
Configurationdescls
SSLCertificateFile /chemin/fichier_certificat
SSLCertificateKeyFile /chemin/fichier_cl

Fichierapache2.conf:Dclarationdesclsdeserveur
SSLCertificateFile

Dsignationdufichiercontenantlecertificatdeserveur.

SSLCertificateKeyFile

Dsignationdufichiercontenantlaclprivedeserveur.

c.GestiondufonctionnementSSL
Il ny a plus qu demander au serveur dcouter sur le port https, et dmarrer le moteur SSL qui une fois
lauthentificationralise,permettralecryptagedeschangesentreleclientetleserveur.
Ouvertureduporthttps
Listen 443
ActivationdumoteurSSL
SSLEngine on
CesdeuxparamtrestantbienentenduajouterdanslefichierdeconfigurationApache.

d.Authentificationdesclientsparcertificat
LefonctionnementSSLstandardquenousvenonsdtablirestceluiquontrouvesurinternetengnraletsatisfera
la plupart des besoins. Il est toutefois possible dutiliser les certificats non pour transmettre une cl de session
chiffre et donc assurer la confidentialit mais pour garantir lidentit dun client se connectant au serveur. Dans
cetteconfiguration,lenavigateurclientdoitdisposerduncertificatquiseravrifiparleserveurweb.Pourcefaire,
leserveurApachedoitpossderlecertificatdelautoritayantmislescertificatsclients.
GestiondelauthentificationparcertificatsdanslefichierdeconfigurationApache
SSLVerifyClient require
SSLCACertificateFile certificat-ca
Ocertificatcareprsentelefichierdecertificatdautoritquiaurasignlescertificatsclients.Lescertificatsclients
sontinstallerdanslemagasindecertificatsdunavigateurinternet.

ENI Editions - All rights reserved - Samuel CASAL

- 3-

Serveurproxy
1.Lesserveursproxy
Un serveur proxy est charg deffectuer une requte au nom dun client vers un autre serveur pour un protocole
donn.Letermefranaispourproxyestdailleursmandataire,leserveurtantmandatpoureffectueruneaction
au nom du client. On dit quun serveur proxy travaille en rupture de flux. La plupart des proxys travaillent avec le
protocoleHTTP,etsionparledeproxysansprciserleprotocoleapplicatif,ilsagitdunproxyweb(HTTP).

a.Protectiondesclients
Lesserveursproxystantlesseulsallersurinternet(enprincipe,toutclientdoitpasserparleproxypourobtenir
uncontenuprovenantdinternet),ilssontenpremireligneencasdagissementhostiledelextrieur. Un serveur
proxycorrectementconfigurassureradoncuneprotectionnaturelledesnavigateursInternetsurlerseau.

b.Serveursdecache
Touteslesrequtespassentparleproxy,leproxyrcuprelesdonnessurleserveuretlesretransmetauclient.
Danslaplupartdescas,leserveurconservesursondisqueunecopiedecesdonnesafinderpondredirectement
aux clients suivants sils font les mmes requtes. La navigation des clients est donc acclre puisquil nestpas
ncessairedesystmatiquementrelayerlesdemandesverslesserveursweb.
Lagnralisationduhautdbitrendlesbnficesdeproxysserveursdecachemoinsspectaculaires.

c.Filtrages
Les serveurs proxys ont la possibilit de refuser tout ou partie de leurs requtes certains clients. On peut alors
refuserenbloctoutenavigation,oufiltrercertainesurlpourempcherlanavigationsurdessitesnonprofessionnels
parexemple.Leserveurproxyestsuprieurauparefeu pour cette fonction car le proxycomprend ce qui est
demand(uneURL),alorsqueleparefeuseborneautoriserouinterdiretouttraficsurunport(80pourinternet)
sansdistinguerlessiteswebvisits.

d.Inconvnients
Les serveurs proxy ne sont pas sans inconvnients. Ils supposent une configuration spcifique des clients (on
prcisealorsladresseIPduproxyaunavigateur),etsontlimitsunprotocoleapplicatif,ncessitantalorsdautres
mcanismes de protection ou doptimisation pour chacun des protocoles. Pour chaque dploiement envisag de
proxy,ilconviendradoncdestimerprcismentlesavantagesetinconvnientsgnrsparleproxy.

2.Leserveurproxysquid
a.Configurationdebase
Squidestcomposdunservicedontlescriptdelancementnormalistrouvesaconfigurationdansunfichierunique
squid.conf,gnralementsitudans/etc/squid.
La configuration de squid dans un mode de fonctionnement standard (rupture de flux pour les accs clients et
quelques listes daccs pour grer les autorisations) na rien de bien difficile, mais dans la plupart des
implmentations, le fichier de configuration par dfaut de squid a de quoi impressionner. Sur le paquetage fourni
avec debian par exemple, le fichier fait prs de 5000 lignes, dont environ un pour cent seulement sont lues au
dmarrageduservice.
Fichiersquid.confdunpaquetagedebiansanscommentaires
Constatez quun certain nombre de liste de contrle daccs (acl) ainsi que de rgles sont dfinies par dfaut. Ceci ne
dispensepasduneconfigurationprciseduproxypourassurerlameilleurescurit.
# grep ^[^#] squid.conf
acl all src all

ENI Editions - All rights reserved - Samuel CASAL

- 1-

acl manager proto cache_object


acl localhost src 127.0.0.1/32
acl to_localhost dst 127.0.0.0/8
acl localnet src 10.0.0.0/8 # RFC1918 possible internal network
acl localnet src 172.16.0.0/12
# RFC1918 possible internal network
acl localnet src 192.168.0.0/16 # RFC1918 possible internal network
acl SSL_ports port 443
# https
acl SSL_ports port 563
# snews
acl SSL_ports port 873
# rsync
acl Safe_ports port 80
# http
acl Safe_ports port 21
# ftp
acl Safe_ports port 443
# https
acl Safe_ports port 70
# gopher
acl Safe_ports port 210
# wais
acl Safe_ports port 1025-65535 # unregistered ports
acl Safe_ports port 280
# http-mgmt
acl Safe_ports port 488
# gss-http
acl Safe_ports port 591
# filemaker
acl Safe_ports port 777
# multiling http
acl Safe_ports port 631
# cups
acl Safe_ports port 873
# rsync
acl Safe_ports port 901
# SWAT
acl purge method PURGE
acl CONNECT method CONNECT
http_access allow manager localhost
http_access deny manager
http_access allow purge localhost
http_access deny purge
http_access deny !Safe_ports
http_access deny CONNECT !SSL_ports
http_access allow localhost
http_access deny all
icp_access allow localnet
icp_access deny all
http_port 3128
hierarchy_stoplist cgi-bin ?
access_log /var/log/squid/access.log squid
refresh_pattern ^ftp:
1440
20%
10080
refresh_pattern ^gopher:
1440
0%
1440
refresh_pattern -i (/cgi-bin/|\?) 0 0%
0
refresh_pattern (Release|Package(.gz)*)$
0
20%
2880
refresh_pattern .
0
20%
4320
acl shoutcast rep_header X-HTTP09-First-Line ^ICY\s[0-9]
upgrade_http0.9 deny shoutcast
acl apache rep_header Server ^Apache
broken_vary_encoding allow apache
extension_methods REPORT MERGE MKACTIVITY CHECKOUT
visible_hostname beta
hosts_file /etc/hosts
coredump_dir /var/spool/squid
Sansconfigurationparticulire,unserveurproxysquidfaitnaturellementofficedeserveurdecache,etprotgeles
rseauxlocauxparunerupturedeflux(lesrequtesdesnavigateursnevontpassurinternet,maissarrtentau
proxyquivaconsulterlesserveursenleurlieuetplace).
Avantquilpuissefonctionner,unserveuratoutdemmebesoindunminimumdeconfiguration.
Configurationminimumdunproxysquiddanslefichiersquid.conf
http_port numero_port
cache_dir ufs repertoire taille rep_niveau_1 rep_niveau_2
visible_hostname nom_serveur

Fichiersquid.conf:configurationdebase
numero_port

- 2-

Lenumrodeportsurlequelleserveurcouteetquidoittreconfigursurles
navigateurs.Lavaleurpardfautest3128,et8080estunevaleurhistorique
courante.

ENI Editions - All rights reserved - Samuel CASAL

repertoire

Lerpertoiredanslequellesdonnesmisesencachesontstockes.

taille

TailleenMgaoctetsmaximumpourlesdonnesmisesencache.Valeurpardfaut:
100Mo.

rep_niveau_1

Nombredesousrpertoiresdepremierniveaumaximumdurpertoiredecache.
Valeurpardfaut:16.

rep_niveau_2

Nombredesousrpertoiresdedeuximeniveaumaximumdurpertoiredecache.
Valeurpardfaut:256.

nom_serveur

Nomdhteduserveurproxy.Cenomapparatnotammentdanslesjournaux
dactivit.

b.Gestiondesaccsclients
Ilsagitensuitedeprciserquipeutounepeutpasaccderinternetparlintermdiaireduserveurproxy.
La premire tape est de dfinir des htes ou ensembles dhtes (groupes, rseaux) auquel on appliquera une
autorisation.Cesgroupessontcrssouslenomdacl(accescontrollist).
Dfinitiondelistesdecontrledaccsdanslefichiersquid.conf
acl nom_liste type_acl A.B.C.D/M

Fichiersquid.conf:dfinitiondacl
nom_liste
type_acl

Lenomdelalistecr.Valeuralphanumriquequelconque.
src

Dfinitiondesadressesdexpditeurs.

dst

Dfinitiondesadressesdedestinataires.

A.B.C.D/M

Adressederseauetmasquedesousrseau(nombredebitsdumasque).
Adressedhteetmasquedesousrseau(nombredebitsdumasque).
Intervalledadresses:A.B.C.DE.F.G.H/M(nombredebits1dumasque).

Exemplededfinitiondacl
Notezladfinitiondelaclallquidsignetouslesrseauxpossibles.
acl all src all
acl rezo_local src 192.168.1.0/24
acl serveurs_interdits dst 172.11.5.2-172.11.5.5/24
Ilnyaplusqufairesavoirsquidquoifairedecesacl.
Autorisationdesacldanslefichiersquid.conf
http_access autorisation nom_acl

Fichiersquid.conf:autorisationdacl
autorisation

Autorisationourefusdelacl.Lesdeuxvaleurspossiblessontallowetdeny.

nom_acl

Lenomdelalisteautoriserourefuser.

ENI Editions - All rights reserved - Samuel CASAL

- 3-

Exempledautorisationsdacl
Chaqueaclesttraiteselonuncontrledaccsallowoudeny.
acl all src all
acl rezo_local src 192.168.1.0/24
acl serveurs_interdits dst 172.11.5.2-172.11.5.5/24
http_access deny serveurs_interdits
http_access allow rezo_local
http_access deny all
Ilestpossiblededfinirdesacldansunfichierextrieuraufichierdeconfigurationprincipal.
Intgrationdunfichierdacldanslefichierdeconfiguration
acl nom_acl "fichier_acl"
O fichier_acl reprsente le chemin absolu du fichier contenant les acls. Ce fichier doit imprativement tre entre
doublesquotes.

- 4-

ENI Editions - All rights reserved - Samuel CASAL

Validationdesacquis
Testezvosconnaissancesenrpondantauxquestionssuivantes.Cesquestionsnappellentpastoujoursdesrponses
dfinitives. Les questions poses en certification, bien quabordant les mmes sujets, seront pour la plupart poses
sous forme de questionnaire choix multiples, ou bien demanderont une rponse courte, tape en toutes lettres au
clavier.

1.Questions
1 QuelestlintrtdufonctionnementmodulairedApache?
2 CommentpeutonvaliderlasyntaxedunficherdeconfigurationApachesanspourautantdmarrerleservice?
3 QuellesourcedinformationestquasiindispensablelutilisationcorrectedesmodulesApacheetdesdirectives
deconfigurationdecesmodules?
4 Danslaplupartdessituationscourantesdunserveuravechtesvirtuels,commentleserveursaitilquelhte
virtuelestconsultparmitousceuxdisponibles?
5 DanslecadreduneauthentificationsimplegrelocalementparunserveurApache,quellecommandepermet
decrerlescomptesutilisateursdanslabaselocale?
6 Quepeutonplacerdansunfichier.htaccess?
7 Enquoilesfichiers.htaccesssontilsdpendantdansleurfonctionnementdeladirectiveAllowOverride?
8 Globalement,quoisertuncertificatnumriqueX509?
9 Enquoiunserveurproxytraditionnelfonctionnetilenrupturedeflux?
10 Dansunserveurproxysquid,estilpossibledepositionnerdesaclssquiddansdesfichiersdedfinition
annexes?

2.Rponses
1 QuelestlintrtdufonctionnementmodulairedApache?
Audeldusimpleaffichagedepagesweb,leserveurwebApachesupportedesdizainesdefonctionscomplmentaires,
certaines courantes, dautres marginales. La nature modulaire dApache permet de ne charger que les modules
ncessairessonfonctionnement,etdoncdavoiruncodeexcutablechargpluslger.
2 CommentpeutonvaliderlasyntaxedunficherdeconfigurationApachesanspourautantdmarrerleservice?
Enexcutantlacommandeapacheavecloptiont.
3 QuellesourcedinformationestquasiindispensablelutilisationcorrectedesmodulesApacheetdesdirectives
deconfigurationdecesmodules?
IlestdifficiledeconfigurercorrectementunserveurApachecomplexesanssappuyersurlesitewebdedocumentation
officieldApache.Enpremierlieuparcequecesdirectivessontinnombrables:plusde400directivesdanslaversion
2.2pourunebonnecentainedemodules,etaussiparcequApacheestunematirevivanteetquecesmodulessont
enperptuellevolution.
4 Danslaplupartdessituationscourantesdunserveuravechtesvirtuels,commentleserveursaitilquelhte
virtuelestconsultparmitousceuxdisponibles?
Leserveurconsultelurldemandeparleclientetregardesousquelnomleserveuratsollicit.Cestlamthodela
plus courante, utilise notamment par les hbergeurs et les fournisseurs daccs qui peuvent hberger sur un seul
serveurphysiqueplusieursdizainesdesiteswebsousformedhtesvirtuels.
5 DanslecadreduneauthentificationsimplegrelocalementparunserveurApache,quellecommandepermet
decrerlescomptesutilisateursdanslabaselocale?
Cestlacommandehtpasswd,quipermetdecrer,modifieretsupprimerdescomptes.Notezquecettecommandeest
utile dans le cadre dune authentification locale simple, qui est dusage dans les cas les plus simples, mais qui ne
reprsentequunedesnombreusespossibilitsdauthentificationdisponiblesavecApache.
6 Quepeutonplacerdansunfichier.htaccess?
Les mmes directives quon aurait pu placer dans un contexte Directory. La configuration se trouve alors dans un
fichierlocalisauplusprsdesdonneswebpluttquedanslefichierdeconfigurationApache.
7 Enquoilesfichiers.htaccesssontilsdpendantsdansleurfonctionnementdeladirectiveAllowOverride?
IlnyaenprincipepasderaisonqueleserveurApacherecherchedanschacundesesrpertoiresunventuelfichier
de configuration complmentaire. La directive AllowOverride est donc ncessaire pour indiquer que lon accepte la

ENI Editions - All rights reserved - Samuel CASAL

- 1-

possibilitduneconfigurationcomplmentaire,etquilconvientderecherchersystmatiquementcefichier.
8 Globalement,quoisertuncertificatnumriqueX509?
biendeschosesdanslesusagesquonpeutenfairemaisdanssonessence,uncertificatnumriqueassocieune
identit une cl publique. Cette identit peut tre une rfrence utilisateur, un nom, une adresse IP, etc. Cette
association est garantie car elle est signe par une autorit de certification laquelle par hypothse tout le monde
accordesaconfiance.Siondevaittrouveruneanalogiedanslaviecourante,onpourraitparlerdunepicedidentitqui
associeunnomunephoto(clpublique),letouttantsignparuneautorit(laprfecture).
9 Enquoiunserveurproxytraditionnelfonctionnetilenrupturedeflux?
Dansunfonctionnementavecserveurproxy(mandataire),leclientsadresseauserveurproxyenindiquantleserveur
webcible.Leserveurproxyprendencomptelarequte,etadressesontourunerequteauserveurcible,maisen
sonnom.Onadoncunfluxdedonnesduclientversleproxy,etunautrefluxduproxyversleserveurcible.Leproxy
enprofiteaupassagepourraliserdesoprationsdefiltrage,statistique,miseencache,etc.
10 Dansunserveurproxysquid,estilpossibledepositionnerdesaclssquiddansdesfichiersdedfinition
annexes?
Oui, la directive acl employe dans le fichier de configuration de squid peut rfrencer directement un paramtre
rseau,oudsignerunfichierquicontientcemmeparamtre.

- 2-

ENI Editions - All rights reserved - Samuel CASAL

Travauxpratiques
Pourlesbesoinsinternesdelentreprise,onvousdemandedemettreenplacedeuxserveurswebdetypeintranet.
Lun contiendra des donnes accessibles tous, y compris aux visiteurs de lentreprise, et lautre contiendra des
donnesconfidentiellesetnedevratreaccessiblequauxseulsutilisateursrfrencs.Deplus,craignantlescoutes
indiscrtes,onvousdemandedefaireensortequaucunecapturededonnessensiblesnesoitpossiblesurlerseau.
VousdevrezdoncenvisageruneprotectionenSSL.
Bien que disposant de deux serveurs physiques, soucieux dconomiser vos efforts, vous dcidez dimplmenter les
deuxserveurswebsurunseulserveurphysique.Votrechoixseportesurleserveurbeta.

1.Configurationdunserveurwebavecdeuxsitesvirtuels
a.GestiondesnomsDNS
VossiteswebserontdiffrencisparlURLutilisepouryaccder.Ilfautdoncquedeuxnomsdiffrentsrfrencent
lammeadresseIP.
Commandesutiles

rndc

vi

Manipulations
1.

CrezdansledomaineDNSpas.netsurleserveuralphadeuxenregistrementspublicet
prive,detypeCNAME,ayantpourciblebeta.pas.net.

2.

Incrmentezlenumrodeversiondufichier.

3.

Rechargezlazone.

4.

Alternativement :sivotreserveurDNSnestpasoprationnel,vouspouvezaussicrer
deuxentresdanslefichierhostsdelastationdetravail.

Rsumdescommandesetrsultatlcran
Fichier/etc/hostssurclient :
127.0.0.1 localhost
192.168.200.102
public.pas.net prive.pas.net
Fichier/etc/bind/db.pas.netmodifisuralpha:
$TTL
86400
pas.net.
IN SOA
8
604800
86400
2419200
86400 )
pas.net.
IN
alpha.pas.net.
beta.pas.net.
serveur-a
alfa
public
prive

NS
IN
IN
IN
IN
IN
IN

alpha.pas.net. root.pas.net. (

alpha.pas.net
A
192.168.200.101
A
192.168.200.102
CNAME
alpha.pas.net.
CNAME
alpha
CNAME
beta
CNAME
beta

Rechargementdesdonnesdezone :

ENI Editions - All rights reserved - Samuel CASAL

- 1-

alpha:/etc/bind# rndc reload


server reload successful
alpha:/etc/bind#

b.Gestiondescontenus
Vousntespasenchargedelacrationducontenudessitesweb.Vouscrezdoncdeuxcontenussymboliques
vouspermettantdevrifierquelaccsauxdiffrentssitesestbiendiffrenci.
Commandesutiles

mkdir

vi

Manipulations
1.

Crezunrpertoire/var/web/publicpourlesitewebpublic.

2.

Crezunrpertoire/var/web/privepourlesitewebpriv.

3.

Crezdanschacundecesrpertoiresunfichierindex.htmlselonlemodlesuivant.Ces
fichiersdevronttreidentifiablesafinquonsachesionestensiteprivoupublic.

<html>
<body>
<h1>Contenu de site</h1>
</body>
</html>
Rsumdescommandesetrsultatlcran
[root@beta ~]# mkdir -p /var/web/public
[root@beta ~]# mkdir -p /var/web/prive
[root@beta ~]#
[root@beta ~]# echo "<html><body><h1>Contenu public - acces libre</h1></body></html>" >
/var/web/public/index.html
[root@beta ~]# echo "<html><body><h1>Contenu prive - acces controle</h1></body></html>" >
/var/web/prive/index.html
[root@beta ~]#

c.Gnrationdunfichierdeconfigurationsimple
Lacomplexitdufichierdeconfigurationfourniaveclepaquetageapplicatifvousimpressionneunpeu.Rpugnant
fairedeschosessanslescomprendre,vousdcidezdelaissercefichierdectpourlinstantetdefairetousvos
essaisdeconfigurationavecunfichiercrdetoutespices.Lexploitationdufichierstandardpourrasefaireparla
suiteunefoistouslesessaisraliss.
VotreobjectifpourlinstantestdecrerunserveurwebquirpondeauxrequtesHTTP.
Commandesutiles

httpd

useradd

vi

Directivesapacheutiles

- 2-

ENI Editions - All rights reserved - Samuel CASAL

ServerRoot

User

Group

ErrorLog

Listen

DocumentRoot

LoadModule

DirectoryIndex

ServerName

Manipulations
1.

Crezuncompteutilisateurapacheuser.

2.

Crezunfichier/etc/httpd/httpd.conf.

3.

Indiquezauserveurquelabasedelaconfigurationsetrouveradansle
rpertoire/etc/httpd.

4.

Indiquezauserveurquelesprocessusdevronttredtenusparlecompteutilisateur
apacheuser.

5.

Indiquezauserveurquelesprocessusdevronttredtenusparlegroupeapache
user.

6.

Indiquezauserveurqueleserreursdevronttreconsignesdansun
fichier/var/log/httpd/error.log.

7.

Indiquezauserveurquelcoutedesrequtesentrantesdoitsefairesurleport80.

8.

Indiquezauserveurquelecontenuwebsetrouveradansun
rpertoire/var/web/public/.

9.

Indiquezauserveurquesonnomprincipalest192.168.200.102.

10.

Indiquezauserveurquildoitchargerlemodule/usr/lib/httpd/mod_dir.sosousle
nomdir_module.

11.

Indiquezauserveurquelesfichiersindex.htmldoiventtreaffichspardfautmme
silsnesontpasmentionnsdanslURL.

12.

Validezlasyntaxedevotrefichierdeconfigurationenprcisantbienquecestvotre
fichierquevousvouleztesteretnonlefichierdexemplefourniaveclepaquetage
applicatif.

13.

Dmarrezleserveurwebsanspasserparlescriptdegestiondeserviceetenprcisant
quevousutilisezvotrefichierdeconfigurationpersonnel(/etc/httpd/httpd.conf).

14.

Testezlaccsdepuislastationdetravail.Selonlenavigateuremploy,ilsepeutque
notrepagewebrudimentairenesaffichepastrsbien.Netenezcomptequedu
contenu.

Rsumdescommandesetrsultatlcran
Crationducomptedeservice :
[root@beta conf]# useradd apache-user
[root@beta conf]#

ENI Editions - All rights reserved - Samuel CASAL

- 3-

Fichier/etc/httpd/httpd.conf
ServerRoot /etc/httpd
User apache-user
Group apache-user
Errorlog /var/log/httpd/error.log.
Listen 80
DocumentRoot /var/web/public
ServerName 192.168.200.102
LoadModule dir_module modules/mod_dir.so
DirectoryIndex index.html
Validationdelasyntaxeetdmarrageduserveur :
[root@beta
Syntax OK
[root@beta
[root@beta
3530 httpd
3531 httpd
3532 httpd
3533 httpd
3534 httpd
3535 httpd
[root@beta

httpd]# httpd -f /etc/httpd/httpd.conf -t


httpd]# httpd -f /etc/httpd/httpd.conf -k start
httpd]# pgrep -l http

httpd]#

d.Adaptationpourgestiondesitesvirtuels
Encouragparcesuccs,vousdcidezdemettreenplacelagestiondesitesvirtuelsafinquevotreserveurrenvoie
descontenusdiffrentsselonlenomparlequelonyaccde.
Commandesutiles

httpd

vi

Directivesapacheutiles

NameVirtualHost

VirtualHost

Manipulations

- 4-

1.

Arrtezledmonhttpdavantdemodifierlefichierdeconfiguration.

2.

Indiquezauserveurquilvagrerdeshtesvirtuelsparnomssurtouteslesinterfaces
possiblessurleport80.

3.

Crezdeuxstructuresdesitesvirtuelsquirpondrontsurtouteslesinterfaces
possiblessurleport80.

4.

Renseignezpourchacundessitesvirtuelslenomdeserveurassoci(public.pas.netet
prive.pas.net).

5.

Renseignezpourchacundessitesvirtuelslerpertoiredecontenuwebassoci
(/var/web/publicet/var/web/prive).

6.

Validezlasyntaxedevotrefichierdeconfiguration.

7.

Dmarrezledmonhttpdavecvotrefichierdeconfiguration.

ENI Editions - All rights reserved - Samuel CASAL

8.

Depuisleclient,testezlaccsdepuisunnavigateurlurlhttp://public.pas.net.

9.

Depuisleclient,testezlaccsdepuisunnavigateurlurlhttp://prive.pas.net.

Rsumdescommandesetrsultatlcran
Arrtdudmonhttpd :
[root@beta httpd]# httpd -f /etc/httpd/httpd.conf -k stop
[root@beta httpd]# pgrep -l http
[root@beta httpd]#
Fichier/etc/httpd/httpd.confmodifi :
ServerRoot /etc/httpd
ServerName 192.168.200.102
User apache-user
Group apache-user
Errorlog /var/log/httpd/error.log.
Listen 80
DocumentRoot /var/web/public
LoadModule dir_module modules/mod_dir.so
directoryIndex index.html
NameVirtualHost *:80
<VirtualHost *:80>
ServerName public.pas.net
DocumentRoot /var/web/public
</VirtualHost>
<VirtualHost *:80>
ServerName prive.pas.net
DocumentRoot /var/web/prive
</VirtualHost>

2.Contrledaccsparmotdepassesurunsiteenssl
a.Gnrationdescertificats
Il est temps maintenant de protger laccs au site priv contre les coutes indiscrtes. Vous allez crer les
certificatsnumriquesncessairesaufonctionnementSSL.Danslamesureoilnyapasdusagepublicdecesite
web,ilestpossibledutiliserdescertificatsgnrslocalement(etgratuitement).
Commandesutiles

openssl

Manipulations
1.

Danslerpertoire/etc/httpd,gnrezdeuxfichiersbeta.cleetcertificat.pem
correspondantrespectivementlaclpriveduserveurbetaetsaclpubliquesous
formedecertificatautosign.Lesclsgnresdoiventtrede1024bitsetlenom
associaucertificatseraimprativementprive.pas.net.

Rsumdescommandesetrsultatlcran
[root@beta httpd]# openssl req -x509 -nodes -newkey rsa:1024
-keyout beta.cle -out certificat.pem
Generating a 1024 bit RSA private key
...................++++++
..++++++
writing new private key to beta.cle
----You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.

ENI Editions - All rights reserved - Samuel CASAL

- 5-

There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter ., the field will be left blank.
----Country Name (2 letter code) [GB]:FR
State or Province Name (full name) [Berkshire]:Trifouillis
Locality Name (eg, city) [Newbury]:lezois
Organization Name (eg, company) [My Company Ltd]:
Organizational Unit Name (eg, section) []:
Common Name (eg, your name or your servers hostname) []:prive.pas.net
Email Address []:
[root@beta httpd]#

b.ConfigurationSSL
Commandesutiles

vi

Directivesutiles

Listen

LoadModule

NameVirtualHost

SSLCertificateFile

SSLCertificateKeyFile

SSLEngine

Manipulations
1.

Indiquezauserveurquildoitchargerlemodulemod_ssl.sosouslenomssl_module.

2.

Indiquezauserveurquildoitutiliserlefichiercertificat.pementantquecertificat
prsenterauxnavigateurs.

3.

Indiquezauserveurquildoitutiliserlefichierbeta.cleentantquefichierdeclprive.

4.

Indiquezauserveurquilvagrerunhtevirtuelaussisurleport443.

5.

Indiquezauserveurquelesitevirtuelprivestdsormaisaccessiblesurleport443.

6.

Indiquezauserveurquildoitcoutersurleport443etactivezlefonctionnementSSL
pourlesitevirtuelpriv.

7.

RechargezleserviceApache.

8.

TestezlaccsenSSLdepuislastationclienteUbuntu.Nevouslaissezpas
impressionnerparlavertissementdescurit.Ditesquevouscomprenezlesrisques,
ajoutezuneexception,obtenezlecertificatetenfinconfirmezlexceptiondescurit.

Rsumdescommandesetrsultatlcran
Fichierhttpd.confmodifi :
(...)
NameVirtualHost *:80

- 6-

ENI Editions - All rights reserved - Samuel CASAL

<VirtualHost *:80>
ServerName public.pas.net
DocumentRoot /var/web/public
</VirtualHost>
NameVirtualHost *:443
<VirtualHost *:443>
SSLEngine on
ServerName prive.pas.net
DocumentRoot /var/web/prive
</VirtualHost>
LoadModule ssl_module modules/mod_ssl.so
SSLCertificateFile certificat.pem
SSLCertificateKeyFile beta.cle
Listen 443

c.Gestiondelauthentification
Enfin,laccsausiteprivtantprotgenSSL,ilneresteplusquprotgerlaccslapartieconfidentiellepar
une authentification par mot de passe. Pour vos premiers essais, vous dcidez de configurer ce contrle daccs
pour un seul rpertoire (/var/web/prive/auth) et de placer les directives de configuration dans un fichier
cach.htaccessdanscerpertoire.
Commandesutiles

chmod

chown

htpasswd

vi

Directivesutiles

AuthName

AuthType

AuthUserFile

LoadModule

Require

Manipulations
1.

CrezunfichierdemotsdepasseApache/etc/httpd/mdpavecuncompteutilisateur
valide.

2.

AffectezcefichierauxseulscomptesetgroupesdeserviceApache.

3.

Grezlesdroitssurcefichierpourquaucunautrecompteutilisateurnyaitaccs.

4.

Indiquezauserveurquildoitchargerlemodule/usr/lib/httpd/mod_auth_basic.so
souslenomauth_basic_module.

5.

Indiquezauserveurquildoitchargerlemodule/usr/lib/httpd/mod_authz_user.so
souslenomauthz_user_module.

6.

Indiquezauserveurquildoitchargerlemodule/usr/lib/httpd/mod_authn_file.so
souslenomauthn_file_module.

ENI Editions - All rights reserved - Samuel CASAL

- 7-

7.

Danslerpertoireprotger(/var/web/prive/auth),crezunfichier.htaccess
contenantlesdirectivesncessaireslauthentificationparfichierdemotsdepasse.

8.

RechargezleserviceApache.

9.

TestezlaccsausiteprotgdepuislastationclienteUbuntu.Vousdevezvous
connecterenSSL,etsubirunedemandedauthentification.

Rsumdescommandesetrsultatlcran
Gestiondufichierdemotsdepasse:
[root@beta httpd]# htpasswd -c /etc/httpd/mdp toto
New password: ********
Re-type new password: ********
Adding password for user toto
[root@beta httpd]#
[root@beta httpd]# chown apache-user:apache-user mdp
[root@beta httpd]# chmod 440 mdp
[root@beta httpd]#
[root@beta httpd]# ls -l mdp
-r--r----- 1 apache-user apache-user 19 ao 2 10:46 mdp
[root@beta httpd]# cat mdp
toto:2.eT/SXrEPV3E
[root@beta httpd]#
Ajoutsaufichierhttpd.conf:
(...)
LoadModule ssl_module modules/mod_ssl.so
SSLCertificateFile certificat.pem
SSLCertificateKeyFile beta.cle
Listen 443
LoadModule auth_basic_module modules/mod_auth_basic.so
LoadModule authz_user_module modules/mod_authz_user.so
LoadModule authn_file_module modules/mod_authn_file.so
Fichier.htaccess :
authType basic
AuthName "Veuillez vous identifier"
Require valid-user
AuthUserFile /etc/httpd/mdp

3.Miseenplacedunserveurproxysurleserveuralpha
Aprs avoir gr les serveurs web, il est temps de vous occuper des clients. Pour protger et optimiser le
fonctionnement de la navigation internet, vous dcidez dimplmenter un serveur proxy sur le serveur alpha. Ce
serveurrponddeuxobjectifs :mettreencachelesdonnesfrquemmentconsultesetinterdirelaccsunsite
dejeuxenlignequifaitfureuractuellementdanslentreprise.

a.Installationdesbinaires
Installezleserveursquidsuralphaaveclacommandesuivante :
apt-get install squid

b.Configurationdebase
Afin de parfaitement matriser votre implmentation, vous dcidez encore une fois de crer un fichier de
configurationdetoutespices.

- 8-

ENI Editions - All rights reserved - Samuel CASAL

Commandesutiles

chown

mkdir

mv

vi

Directivesutiles

cache_dir

http_port

visible_hostname

Manipulations
1.

Crezunrpertoire/var/proxyquicontiendralesdonnesmisesencache.

2.

Affectezcerpertoireaucomptedeservicesquid.

3.

Danslerpertoire/etc/squid,crezunecopiedesauvegardedufichiersquid.conf
souslenomini.squid.conf.

4.

Crezunnouveaufichier/etc/squid/squid.conf.

5.

Indiquezdanslenouveaufichierdeconfigurationqueleproxyrecevralesrequtes
clientssurleport8080.

6.

Indiquezquelerpertoiredecachesera/var/proxyaveccommetaillemaximum500
Mo,16rpertoiresdepremierniveaudecacheet256rpertoiresdesecondniveaude
cache.

7.

Indiquezquelenomduserveurproxyquiapparatradanslesfichiersjournauxest
prox.

8.

Nedmarrezpasleservicepourlemoment.

Rsumdescommandesetrsultatlcran
Crationdurpertoiredecache :
alpha:~# mkdir /var/proxy
alpha:~# chown proxy /var/proxy
alpha:~# ls -ld /var/proxy
drwxr-xr-x 2 proxy root 4096 ao
alpha:~#

3 10:32 /var/proxy

Copiedesauvegardedufichierdeconfiguration :
alpha:/etc/squid# pwd
/etc/squid
alpha:/etc/squid# ls
squid.conf
alpha:/etc/squid# mv squid.conf ini.squid.conf
alpha:/etc/squid#
Nouveaufichiersquid.conf :
http_port 8080
cache_dir ufs /var/proxy 500 16 256

ENI Editions - All rights reserved - Samuel CASAL

- 9-

visible_hostname prox

c.Dclarationetautorisationdesacls
Si malgr nos avertissements vous avez essay de lancer le service proxy, vous devez avoir eu un message
derreurindiquantquelaclallntaitpasdfinie.Eneffet,mmesionnesouhaitepasgrerdefiltragedaucune
sorte,laclallaumoinsdoittredfinie.
Vousallezdoncmaintenantdclarerlacletindiquerquetouttraficestautorispourtoutlemonde,etuneaclfun
pourindiquerladresseIPduserveurdejeuxenligneinterdit.
Directivesutiles

acl

http_access

Manipulations
1.

Dclarezlaclallcorrespondanttouteslessourcespossibles.

2.

Configurezlenavigateurdelastationdetravailafinquilexploiteleserveuralphaen
tantqueserveurmandataire.

3.

Dmarrezleservicesquidsuralpha.

4.

Testezlaccsunsitequelconquedepuisleclientetconstatezquevousnalleznulle
part.

5.

Indiquezquetouttraficcorrespondantlaclallestautoris.

6.

Redmarrezleservicesquidsuralpha.

7.

Testezlaccsunsitequelconquedepuisleclientetconstatezquecelafonctionne
beaucoupmieux.

8.

DclarezlaclfuncorrespondantladresseIPdunsiteinterditendestination.

9.

Interdiseztouttraficcorrespondantlaclfun.

10.

Redmarrezleservicesquidsuralpha.

Rsumdescommandesetrsultatlcran
Fichiersquid.confmodifi :
http_port 8080
cache_dir ufs /var/proxy 100 16 256
visible_hostname prox
acl fun dst
acl all src
http_access
http_access

12.34.56.78
all
deny fun
allow all

Dmarrageduservice :
alpha:/etc/squid# /etc/init.d/squid stop
Stopping Squid HTTP proxy: squid.
alpha:/etc/squid# /etc/init.d/squid start
Starting Squid HTTP proxy: squidCreating squid cache structure (warning).
2010/09/02 00:05:38| Creating Swap Directories
.
alpha:/etc/squid#

d.Validationfonctionnelle
- 10 -

ENI Editions - All rights reserved - Samuel CASAL

Configurezlenavigateurdelastationclientepourquelleexploiteleproxyinstallsuralphaavecleport8080.
1.

DepuislenavigateurFirefox,droulezlemenuEditionsetcliquezsurPrfrences.

2.

CliquezsurlongletAvancetsurlesousongletRseau.Cliquezsurlebouton
Paramtres.

3.

SlectionnezlaconfigurationmanuelleduproxyaveccommeproxyHTTPladresseIPdu
serveuralpha,etleport8080.

4.

Navigueznormalement.

5.

Essayezuneconnexionsurlurlhttp://12.34.56.78etvrifiezqueleproxysquidvousla
refuse.

ENI Editions - All rights reserved - Samuel CASAL

- 11 -

Prrequisetobjectifs
1.Prrequis
LesconnaissancesacquiseslorsdelacertificationLPIniveau1,notamment:

ditiondefichiers.
Savoirconfigurerunclientdemessagerie.

2.Objectifs
lafindecechapitre,vousserezenmesurede:

Connatrelefonctionnementdelenvoidecourriersurinternet.
ConnatrelesprincipauxMTA.
AssureruneconfigurationsimpledePostfix.
ConfigurerdesdomainesvirtuelsavecPostfix.
ConfigurerlesMDAcourrierpopetcourrierimap.
ConnatreleMDADovecot.

ENI Editions - All rights reserved - Samuel CASAL

- 1-

LesMTA
Les MTA (Mail Transfer Agent) sont les serveurs assurant lenvoi et la rception de messages lectroniques et
constituentlossaturedetoutsystmedemessageriesurlesrseauxIP.Ilssontlesserveursquigrentlescourriers
lectroniques pour un domaine de messagerie donn. Chaque serveur de messagerie public est un MTA et tous les
MTAcommuniquententreeuxsurinternetparleprotocoleSMTP.

1.LeprotocoleSMTP
Le protocole SMTP (Simple Mail Transfer Protocol) est utilis pour transfrer des courriers lectroniques vers des
serveursdemessagerie.SMTPpeuttreemploydepuisunclientdemessagerie(Outlook,Thunderbird,etc.)pour
remettre un message lectronique son serveur de messagerie, mais aussi entre les serveurs de messagerie de
lexpditeuretceluidudestinataire.NousavonsvuauchapitreDNSquelesenregistrementsMXassocisaunomde
domainedudestinatairepermettaientdetrouverladresseIPduserveur.Unefoisarrivdestination,lemessage
est conserv jusqu ce que son destinataire en prenne connaissance. La lecture du message peut se faire
directementsurleserveurouaprstlchargementauprsdunMDA(MailDeliveryAgent)parunprotocolederetrait
decourrier(POPouIMAP).
SMTPexploiteunesyntaxebasiquefacilementtestabledepuisunclienttelnetounc.
ExempledutilisationenlignedecommandeduprotocoleSMTP
alpha:~# telnet 192.168.199.10 25
Trying 192.168.199.10...
Connected to 192.168.199.10.
Escape character is ^].
ehlo toto.com
220 alpha.localdomain ESMTP Postfix
250-alpha.localdomain
250-PIPELINING
250-SIZE 1000
250-VRFY
250-ETRN
250-ENHANCEDSTATUSCODES
250-8BITMIME
250 DSN
MAIL FROM: <toto@toto.com>
250 2.1.0 Ok
RCPT TO: <toto>
250 2.1.5 Ok
DATA
354 End data with <CR><LF>.<CR><LF>
Bonjour
Comment ca va ?
.
250 2.0.0 Ok: queued as E264474E02
QUIT
221 2.0.0 Bye
Connection closed by foreign host.
alpha:~#

helo.

La commande ehlo est utilise par dfaut sur tous les systmes rcents et elle demande au serveur
dafficher ses extensions SMTP supportes. Les systmes plus anciens (avant 2001) utilisent la commande

2.PrsentationdeSendmail
SendMail est le plus ancien et peuttre historiquement le plus clbre MTA utilis sur internet. Il a t crit avant
mmelacrationduprotocoleSMTPetlpoque,lesmessagestaienttransfrsenFTPdunserveurunautre.Il
ntaitpasnonplusquestiondeMDAnideprotocolederetraitdecourrierettoutelecturedemessagereusefaisait
directementsurleserveur.

ENI Editions - All rights reserved - Samuel CASAL

- 1-

Sendmail ne soulve pas immdiatement lenthousiasme de tous pour deux raisons : datant dune poque o les
risques de piratage se limitaient des blagues de potaches, il a souvent t configur sans grandes options de
scurit et a ainsi particip son corps dfendant au relais de millions de spams. Dautre part, les difficults
dapprochedelaconfigurationdeSendmailpeuventdcouragerlesplusenthousiastes.
Les nombreuses volutions et rcritures de Sendmail en font aujourdhui un outil parfaitement fiable, et il passe
pourtreundesMTAlespluspuissantsetlesplusrapidesdumarch.

3.PrsentationdExim
Exim est un MTA relativement rcent (ses premiers dveloppements datent de 1995) qui poursuit un objectif de
robustesseetdeflexibilit.IlestleMTAfournipardfautsurlesdistributionsDebianetlaplupartdesesdrives.

4.PrsentationdePostfix
Postfix est dans le domaine de lopen source le MTA le plus populaire, et il est presque facile configurer. De
nombreuxhbergeursetfournisseursdaccsutilisentPostfixpourgrerlesbotesmaildeleursclients.

- 2-

ENI Editions - All rights reserved - Samuel CASAL

LeserveurSMTPPostfix
1.ConfigurationdePosfix
a.Gestiondesidentits
UnMTAdoitgrerdescomptesdemessageriepoursondomaine,cequiimpliquequeleserveurdoitgrerlaliste
desutilisateurstitulairesduneadressemaildansledomainedemessagerie.LesMTAsontgnralementcapables
dexploiterdesbasesdecomptesutilisateurssousdiffrentsformats:fichierslocauxdebasesdecompteslocales,
annuaireldap,basesdedonnesMySQL,etc.
La solution la plus simple, toujours disponible et qui ne ncessite aucune configuration particulire, est dutiliser
directementlescomptesdusystmeLinux.

b.Gestiondesalias
Engnral,labasedecomptesutiliseparunMTAdsignequellesadressesmailsontsusceptiblesderecevoirdes
messages lectroniques. Toutefois, il arrive quun utilisateur soit le gestionnaire de plusieurs botes mail. Il est
frquent par exemple que ladministrateur dun rseau doive rpondre aux messages adresss
postmaster@domaine.ext.CestmmeuneprconisationdelaRFCSMTP.Pourcetypedusage,unMTAutiliseune
base de correspondances entre comptes appels alias. Postfix utilise un fichier de dclaration des
alias/etc/aliasesetlesexploitedansunebasededonnesgnrepartirdufichierdaliasparunecommande
postalias.
Fichierdedclarationdesalias
# /etc/aliases
mailer-daemon: postmaster
postmaster: root
nobody: root
hostmaster: root
usenet: root
news: root
webmaster: root
www: root
ftp: root
abuse: root
noc: root
security: root
root: toto
Toute modification du fichier /etc/aliases devra tre suivie dune redclaration de la base par la commande
postalias.
Gnrationdelabasepartirdufichier
alpha:~# postalias /etc/aliases
alpha:~#

c.Lacommandepostfix
Leservicepostfixestgnralementlancparunscriptdeconfigurationnormalis.Ilesttoutefoispossibledutiliser
lacommandepostfixdirectement,notammentenphasedetestetdiagnostics.
Utilisationdelacommandepostfix
postfix action

Commandepostfix:actionscourantes

ENI Editions - All rights reserved - Samuel CASAL

- 1-

status

Afficheltatfonctionnelduservice.

stop

Arrteleserviceproprement.Lesprocessusencourssontautorissseterminer.

start

Vrifiepuisdmarreleservice.

check

Vrifielavaliditdelenvironnementdefonctionnementduservice.

reload

Rechargelaconfiguration.Prfrableunstop/start.

abort

Arrteleservicedefaonimmdiateetautoritaire.Lesprocessusencourssont
stoppsbrutalement.

flush

Tentededlivrertouslesmailseninstance:ceuxquiontdjfaitlobjetdune
erreuretquisontenattentedenouvelletentative.

d.Lesfichiersdeconfiguration
Le service Postfix trouve sa configuration dans un fichier nomm main.cf, gnralement situ dans le
rpertoire/etc/postfix.
myorigin = domaine_origine
mydestination = domaine_destination
mynetwork = rseau/bitmasque
relayhost = relais_MTA

Fichiermain.cf:principauxparamtres
domaine_origine

Cequeleserveurmetaprsl@ensortie.Peuttrediffrentdudomaine
localinitialementconfigur.Cestledomainevudelextrieur.

domaine_destination

Leserveurtraitelesmailsdestinationdecedomaine.Peuttre
identiqueaudomainedorigine.

rseau/bitsmasque

Leserveuracceptederelayerlesmailsprovenantdirectementdece
rseau.Enprincipelerseaulocal.

relais_MTA

Sileparamtrerelayhostestemploy,lesmailssontenvoysvers
lextrieurexclusivementvialeMTArelais_MTA.

Lutilisationduparamtrerelayhostnariendobligatoire,etdanslespritduprotocoleSMTP,nedevraitpas
trencessaire.Toutefois,denombreuxfournisseursdaccsrefusentquedutraficSMTPsortedirectement
de leurs rseaux sil na pas t mis par leurs propres MTA. Le paramtre relayhost permet donc de sen
remettreexclusivementunMTAexternepourtoutetransmissiondecourrier.
Avecunfichierdeconfigurationminimalistenecomportantquelesparamtresnoncscidessus,unserveurpostfix
seraitdjenmesurederemplirsonofficedeMTA.Enattendantquunclientdemessagerieneviennelesremettre
son destinataire (avec un protocole de retrait de courrier, POP ou IMAP), les messages sont stocks dans le
rpertoire/var/mailsouslenomdelutilisateurdestinataire.
Pour tester le fonctionnement cette tape de la configuration, on peut crire un mail depuis un client SMTP
(Outlook,Thunderbird,etc.)configurpourutiliserleserveurpostfixcommeserveurSMTP.Lalecturedumessage
ceniveaudeconfigurationnepeutsefairequedepuisunesessionshellsurleserveurpostfixaveclacommande
mail. La commande mail est traite dans la partie clients de messagerie. Une connaissance sommaire de cette
commandeestncessairepourlacertificationLPI.

e.Vrificationdelaconfigurationactive
Il est possible de vrifier la configuration effective dun serveur postfix pour dtecter les problmes majeurs de
fonctionnement(rpertoiresmanquants,etc.)etlesparamtresappliqusparleserveurpartirdufichiermain.cf.

- 2-

ENI Editions - All rights reserved - Samuel CASAL

Validationdelenvironnementfonctionnel
postfix check
Paramtreseffectifs
postconf -n

2.Gestiondedomainesvirtuels
Dans une configuration simple, un serveur postfix ne gre quun seul domaine de messagerie : celui associ
lentreprise ou lorganisation qui lhberge. Il peut arriver toutefois quon souhaite grer sur un mme serveur
plusieurs domaines de messagerie. Cest lobjet des domaines virtuels. Les domaines virtuels sont utiliss par les
hbergeurs,quipeuventgrerplusieurscentainesdedomainesclientssurunseulserveur,maisaussienentreprise,
ouunserviceinformatiquegrelamessageriededeuxentitsdistinctes,parexemplesuiteunrachat.

a.Dfinitiondesdomainesvirtuels
Nousavonsvuplushautquelefichiermain.cfdevaitcontenirsousladirectivemydestinationlenomdudomaine
demessageriegr.Cedomaineprincipal,cohrentaveclenomcompletduserveurestappeldomainecanonique.
Si on souhaite grer dautres domaines, il faudra dans un premier temps les dclarer sous la directive
virtual_alias_domain.
Dclarationdedomainesvirtuelsdansmain.cf
virtual_alias_domain domaine2, domaine3
Odomaine2etdomaine3reprsententlesdomainesvirtuelsgrsparleserveur.

b.Gestiondesidentitspourlesdomainesvirtuels
Il faut ensuite spcifier quel compte utilisateur est affect quelle bote aux lettres de quel domaine. Cette
association doit tre faite dans un fichier dont le nom et lemplacement sont spcifis par la directive
virtual_alias_mapsdanslefichierdeconfigurationmain.cf.Lenomusueldecefichierest/etc/postfix/virtual.
Dclarationdufichierdaliasdansmain.cf
virtual_alias_maps = hash:/etc/postfix/virtual
Ilsuffitensuitedecrerlefichierdaliasavecleformatsuivant:
Formatdufichierdalias
adresse_mail1 compte_linux
adresse_mail2 compte_linux
Exempledefichierdalias
root@serveur# cat /etc/postfix/virtual
toto@domaine.com toto
titi@domaine2.com chti
tutu@domaine2.com tutu
root@serveur#
Crationdufichierdaliasunformatexploitableparpostfix
postmap /etc/postfix/virtual
CettecommandecreunfichierauformatBerkeleyDBpartirdufichierdaliasentexteclair.

ENI Editions - All rights reserved - Samuel CASAL

- 3-

Exempledecrationdefichierdalias
Lacommandepostmapcreunfichiervirtual.dbpartirdufichiertextevirtual.
alpha:/etc/postfix# cat virtual
toto@autredomaine.com
toto
alpha:/etc/postfix# postmap virtual
alpha:/etc/postfix# ls virtual*
virtual virtual.db
alpha:/etc/postfix# file virtual.db
virtual.db: Berkeley DB (Hash, version 9, native byte-order)
alpha:/etc/postfix#

3.Gestiondequotas
Ilestpossibledelimiterlespacedisqueconsommparlesbotesauxlettres.Cettelimitationsobtientfacilementpar
leparamtremailbox_size_limitdanslefichierdeconfiguration.Delammefaon,ilestpossibledelimiterlataille
dunmessageavecleparamtremessage_size_limit.
Gestiondestaillesmaximumsdansmain.cf
mailbox_size_limit = taille_max_boite
message_size_limit = taille_max_mail

Limitationdelespacedisquedansmain.cf

- 4-

taille_max_boite

Limiteduneboteauxlettresenoctets.

taille_max_mail

Limitedunmessageenoctets.

ENI Editions - All rights reserved - Samuel CASAL

Remiselocaledesmessages
PourunMTA,lebutultimeoutrelenvoidesmessagesestderecevoirlescourriersdestinationdesutilisateursdeson
domainedemessagerie.Riennestprvupourlaremiseducourrierauxutilisateurs.Lasolutioncouranteestdeprvoir
un MDA (Mail Delivery Agent) pour que les messages puissent tre rcuprs depuis un MUA (Mail User Agent),
communmentappelclientdemessagerie.Enattendant,lesfichierssontstockslocalementparleMTA.

1.Lacommandemail
Dans un fonctionnement moderne, un MTA doit grer le courrier qui arrive de lextrieur et expdier le courrier en
partance,maislestchescommelardactiondemessagesoulalecturedesmessagesarrivssonteffectuesdepuis
un client de messagerie avec lequel lutilisateur aura plus de confort pour travailler. Toutefois, en attendant quun
clientdemessageriesoitconfigurpourenvoyerdesmails,etquunserveurderemisedecourriersoitinstallpour
permettre la remise des messages aux clients, il est pratique de pouvoir utiliser la commande historique mail
directementdepuisleserveur.

a.Envoidecourrieraveclacommandemail
Lacommandemailpermetdenvoyerdescourriersassezconfortablement.Onpeutrdigeretenvoyersonmailen
unelignedecommandeunique,maisilestgnralementplusconfortabledutiliserlacommandedefaoninteractive.
tapespourlenvoidunmessageparlacommandemail

Tapez la commande mail suivie du nom du destinataire. Ce peut tre le nom simple du compte utilisateur ou
ladressemaildudestinataire.
linvite,renseignezlesujetdevotremessage.
Tapezensuitevotremessage,avecautantdelignesquevouslesouhaitez.Ilnyapasdinvitepourcettepartie
delasaisie.
Unefoisvotretextetap,surunenouvellelignedesaisie,tapezlecaractrepoint:.seulsursaligne.
Si linviteCc: est prsente, entrez si ncessaire les destinataires en copie. (Cc signifie Carbon copy ou
copiecarbonecommelpoque o les photocopies nexistaientpas).Sil nyapasdedestinatairemettreen
copie,tapezsimplemententre.
VotremailestremisauMTAlocaletseratraitparlui.

Exempledenvoidemessageaveclacommandemail
Lexploitationdelacommandemaildesfinsdediagnosticpeutfairegagneruntempsprcieux.
alpha:/home/tic# mail tac
Subject: Invitation
Salut,
Tu viens manger des noisettes ?
Tic
.
Cc:
alpha:/home/tic#

b.Lecturedecourrieraveclacommandemail
Plus encore que pour lenvoi de messages, la commande mail est utile pour lire les messages reus sans avoir
besoindinstaller un service de retrait de messages. En effet, un client de messagerie peut facilement envoyer un
mailensadressantdirectementauMTAenSMTP.Enrevanche,pourcequiestdelirelesmessagesreusdepuisun
client de messagerie, il faut pouvoir sadresser au serveur par un protocole de retrait : POP ou IMAP. Si aucun

ENI Editions - All rights reserved - Samuel CASAL

- 1-

serveurPOPouIMAPnestinstall,lacommandemailestlasolutionlapluspratiquepourliresesmessages.
Lecturedunmessagereuaveclacommandemail

Tapezlacommandemailetconstatezlaprsencedunelistedemessagesnonlus.

Tapezlenumrodumessagereuquevoussouhaitezconsulter.

Aprslecturedumessage,quittezlinterfaceentapantq.

Exempledutilisationdelacommandemailpourconsulterunmessagereu
tac@alpha:~$ mail
Mail version 8.1.2 01/15/2001. Type ? for help.
"/var/mail/tac": 4 messages 4 new
>N 1 tic@pas.net
Sun Mar 7 02:12
15/398
N 2 tic@pas.net
Sun Mar 7 02:14
17/438
N 3 tic@pas.net
Sun Mar 7 09:10
14/402
N 4 tic@pas.net
Sun Mar 7 09:10
14/412
& 2
Message 2:
From tic@pas.net Sun Mar 7 02:14:01 2010
X-Original-To: tac
To: tac@pas.net
Subject: Invitation
Date: Sun, 7 Mar 2010 02:14:01 +0100 (CET)
From: tic@pas.net (root)

salut
Invitation
Hello
Are you Chip or Dale ?

Tu viens manger des noisettes ?


Salut,
Tic
& q
Saved 1 message in /home/tac/mbox
Held 3 messages in /var/mail/tac
tac@alpha:~$

2.Formatsmboxetmaildir
UnefoisunmessagereuparunMTA,ildoittrestockenattendantsaremiseunutilisateur.Historiquementdeux
formatsprincipauxpermettentdeconservercesmessagesdefaonstructure :mboxetMaildir.

a.Leformatmbox
Leformatmboxestutilispourstockerlesmessagesreusparunutilisateur.Cestunformatrudimentaireetassez
ancien, dans lequel tous les messages sont concatns et un seul fichier contient lensemble des mails reus. Ce
format a lavantagedelasimplicit,etilestfacilementexploitable,mmeavecunsimplediteurtexte(ilsuffitde
reprer le mail recherch dans le contenu du fichier). Les dbuts de messages sont identifis par la squence de
caractresFromenttedeligne.Enrevanche,ilsouffredelimitationsinhrentessonmodedefonctionnement.
Laccsconcurrentdeplusieursprogrammesaufichieresttrsdangereuxpuisquetouteoprationdcrituresurun
fichierauformatmboxpardeuxprogrammesdiffrentsconduiraitlacorruptiondufichier,etdonclapertedela
boteauxlettres.Enconsquence,desmcanismesdeverrouillagedufichiermboxexistent,maismalheureusement,
ilarrivequedesprogrammesdiffrentsnereconnaissentpaslemmemcanismedeverrouillageetconduisentdonc
descatastrophes.Lasolutionseraapporteplustardavecleformatmaildir.

b.Leformatmaildir
Le format maildir utilise une structure de rpertoires pour le stockage des mails reus par un utilisateur.
Contrairement au format mbox, maildir utilise un fichier par mail reu. Toute manipulation faite sur un message
naffectedoncaucunementlerestedesdonnes.
Un rpertoire de courrier au format maildir contient trois sousrpertoires: tmp, new et cur. Les messages sont

- 2-

ENI Editions - All rights reserved - Samuel CASAL

dabordstocksdanstmp,puisdplacsdansnew.Enfin,aprslectureparunprogrammeutilisateur,lesmessages
sont dplacs dans cur. Les mails sont stocks dans leur rpertoire daffectation sous un nom unique mais sans
aucunrapportavecletitredumessage.

c.Utilisationduformatmaildirparpostfix
Pardfaut,postfixutiliseleformatmboxpourstockerlesmailsreusparlesutilisateurs.Ilesttoutefoispossible(et
souventrecommand)deluifaireutiliserleformatmaildirlaplace.Cetteoprationestralisesimplementparune
dclarationdanslefichiermain.cf.LerpertoireMaildirseraalorscrdanslerpertoirepersonneldelutilisateur
larceptiondepremiermail.
DclarationduformatMaildirdanslefichiermain.cf
home_mailbox = Maildir/

Lacommandemailexploitenaturellementleseulformatmbox.Ilnestdoncpaspossibledelutiliser si les
botes mails sont au format maildir. Les messages doivent alors tre rcuprs par un moyen compatible
commeunserveurPOPouIMAPcompatiblemaildir.

3.Procmail
Il est possible de demander au MTA un traitement sur les messages entrants avant stockage. Postfix peut ainsi
mandaterunprogrammetierspourcetusage.Leplusconnudentreeuxestprocmail.Ilsuffitdedemanderpostfix
dutiliserprocmail(facile)etensuitedeleconfigurerpourquilappliqueuntraitementauxcourriersentrants(unpeu
moinsfacile).Cetraitementpeuttredesfinsderorganisation(mettrecertainsmessagesdansdesrpertoires),
de filtrage (refuser les messages qui contiennent des mots interdits), ou encore dappeler un autre programme
(encoreun)pourappliqueruntraitementpluslourdqueprocmailnesauraitfaireseul.

a.Demanderpostfixdutiliserprocmail
Dclarationdutilisationdeprocmailparpostfixdanslefichiermain.cf
mailbox_command

= /usr/local/bin/procmail

b.Configurerprocmail
LaconfigurationcompltedeprocmaildpasselechampdesobjectifsdelacertificationLPIniveau2etdoncdecet
ouvrage,maisquelquesexemplesdeconfigurationsimplespeuventtreappliqussansdifficult.
Procmaillitsaconfigurationdansunfichier.procmailrcsetrouvantdanslerpertoirelocaldelutilisateur.Cefichier
contientdesrglesquilappliquesquentiellementtoutcourrierentrant.Letraitementsarrte ds quunergle
estsatisfaite.
Formatdunergledanslefichier~/.procmailrc
:0 drapeaux
condition
action

Fichier~/.procmailrc:optionsetparamtres
:0

Marqueledbutdunergledetraitement.

drapeaux

Facultatif.Surquoilarecherchedoitsappliquer.ValeurHpourlentteseulement,B
pourlecorpsdumessage.

condition

Expressionrgulirepermettantdisolerlesmailscorrespondantlargle.

action

Quefairedumessageslectionn.

ENI Editions - All rights reserved - Samuel CASAL

- 3-

Exemplesdergledanslefichier~/.procmailrc
Dans lexemple cidessous, la recherche seffectue sur lentte du message seulement (cest la valeur par dfaut) et
isoleralesmailscontenantlesmotsFromendbutdeligne,etlachanedecaractrestotodanslammeligne.La
troisimelignedelaconditiondplaceralemailreuverslerpertoiretousmesamis/totodanslerpertoiredecourrier(et
doncdanslesousrpertoiredelabotederceptiondansleclientdemessagerie).
:0
* ^From.*toto
tousmesamis/toto
Pourimpressiondetoutmaildontlatailleestinfrieure1000octets.
:0
* < 1000
| /usr/bin/lp

4.Alternativeslamessagerie
Pendantlongtemps,laconsommationenressourcesdelamessagerie,tantenespacedisquequenbandepassante
surlerseauatunproblmepourlesadministrateurs.Descommandesalternativespermettentdecommuniquer
avec les utilisateurs connects indpendamment de la messagerie et avec une consommation de ressources trs
infrieure.

a.writeetwall
Il est possible denvoyer des messages courts avec les commandes write et wall. La commande write permet
denvoyerunmessageunutilisateurconnect,alorsquewall(writeall)diffuselemessagetouslesutilisateurs
connects.
Envoidemessagesavecwrite
write nom_utilisateur
(frappe du message termine par Ctrl-D)
write < fichier_message
O nom_utilisateur reprsente un utilisateur existant sur le systme et connect une session interactive, et
fichier_messageunfichiercontenantletexteenvoyer.
Diffusiondunmessageavecwall
wall
(frappe du message termine par Ctrl-D)
wall < fichier_message

b.issueetissue.net
Le contenu du fichier /etc/issue est affich avant la demande didentification locale et permet ventuellement de
communiqueraveclesutilisateurs.
Lecontenudufichier/etc/issue.netestaffichavantlauthentificationdunutilisateurseconnectantentelnet.

c.motd
Lecontenudufichier/etc/motd(MessageOfTheDay)estaffichaprsuneouverturedesessionrussie.

- 4-

ENI Editions - All rights reserved - Samuel CASAL

Remisedistantedesmessages
1.FonctionnementconjointdesMTA,MDAetdesMUA
LerledunMTA(MailTransferAgent)encequiconcernelarceptiondemessagessecantonnelarcuprationet
austockagedesmailsentrants.Pourquelutilisateurpuisselireettraiterconfortablementsoncourrier,ilutiliseun
MUA(MailUserAgentouclientdemessagerie)quifonctionneavecunprotocolederetraitdecourrier:POPouIMAP.
PostfixntantquunMTAetnegrantpascesprotocoles,ilfautluiadjoindreunserviceMDA(MailDeliveryAgent)de
retrait de courrier pour les utilisateurs. La certification LPI prvoit de connatre les serveurs courrierpop, courrier
imap,etDovecot.
QuandunmessagearriveauMTA,iladunpointdevueSMTPterminsonvoyage.LeMTAlenregistredoncdansun
espacedestockagelocal,dansnotrecasauformatmboxoumaildir.SiunserveurPOPouIMAPestinstall,sonrle
sera aprs avoir identifi lutilisateur de retrouver les messages arrivs dans cet espace de stockage, et de les
fournirauclientdemessagerie.

a.LeprotocolePOP3
LeprotocolePOP3fonctionnesurleport110etesttransportparTCP.Iltlchargelesmessagesdepuisunebote
utilisateur vers un client de messagerie. Les messages sont ensuite normalement effacs de la bote et librent
lespace disque du serveur. Toutefois, il est de plus en plus frquent de configurer POP depuis le client afin quil
laisseunecopiedesmessagessurleserveur.

b.LeprotocoleIMAP4
Le protocole IMAP4 fonctionne sur le port 143 et est transport par TCP. Il tlcharge les enttes de messages
depuisleserveur,etleclientdcideensuitedelactionmenersurcesmessages :consulter,effacer,dplacer,etc.
Les messages sont conservs sur le serveur, mais il est possible de configurer les clients IMAP afin quils
synchronisentlesmessagestlchargspouruneconsultationhorsligne.

2.ServeursCourierIMAPetCourierPOP
LesserveurscourierpopetcourierimapappartiennentunesuiteapplicativeappeleCourierMailServer.Cette
suitelogicielleatconuepourfournirlensembledesservicescourantsdegestiondecourrierlectronique,mais
tantdenaturemodulaire,sescomposantssontsouventutilissseulspourfournirunserviceprcis.

a.Formatdemessagespourlesservicescourrier
Lesservicescourierpopetcourierimapvonttrouverlesmailsarrivsexclusivementdansunrpertoireauformat
maildir.Toutfonctionnementavecleformatmboxestimpossible.Ilfaudradoncconfigurerpostfixpourquilutilisele
formatmaildir.

b.Configurationdesservices
Cest la bonne nouvelle, il ny a en principe rien dautre faire que dinstaller le service et de le dmarrer. Les
paramtres par dfaut sont satisfaisants pour les fonctionnements standards. Les fichiers de configuration se
trouventgnralementdanslerpertoire/etc/courier,etsappellentpop3dpourleservicePOP,etimapdpourle
serviceIMAP.
Si le rpertoire de stockage des courriers au format maildir ne devait pas utiliser le nom par dfaut (Maildir), il
faudraitprciserdanscesfichiersdeconfigurationlenomutilis.
Nomderpertoiremaildirdanslefichierdeconfigurationpop3douimapd
MAILDIRPATH=nomrepmaildir
Onomrepmaildirreprsentelerpertoireemploypourlestockagedesmessagesreusauformatmaildir.
Sileserveurdisposedeplusieursinterfacesphysiques,onpeutlimiterlesinterfacesdcoutedudmonimap.

ENI Editions - All rights reserved - Samuel CASAL

- 1-

Restrictionsdelinterfaceactivedanslefichierdeconfigurationpop3douimapd
address = adresse_interface
Oadresse_interfacereprsenteladresseIPdelinterfaceapterecevoirlesconnexionsclientes.

c.Validationdelauthentification
LorsdelutilisationdeCourierPOPoudeCourierIMAP,unclientdemessagerieprsentelidentifiantetlemotde
passe de lutilisateur dont il veut relever le courrier. Ces lments didentification sont alors valids par la
bibliothque dauthentification courier commune aux deux services. Il peut tre utile de vrifier en lignes de
commandes que le compte utilis est bien exploitable pour lauthentification par cette bibliothque. Lutilitaire
authtestestlpoura.
Vrificationdelavaliditduncompteavecauthtest
authtest utilisateur motdepasse
O utilisateuret motdepasse sont les lments dauthentification que le client de messagerie prsentera pour se
connecterenimapoupopauserveur.
Exempledutilisationdeauthtest
Jusqueltoutvabien...
alpha:/etc/courier# authtest tic password
Authentication succeeded.
Authenticated:
Home Directory:
Maildir:
Quota:
Encrypted Password:
Cleartext Password:
Options:
alpha:/etc/courier#

tic (system username: tic)


/home/tic
(none)
(none)
$1$YSIbmjnM$makfir51Gla3ZpfRq5dmu.
password
(none)

3.ServeurDovecot
DovecotestunautreserveurderetraitdecourrierdontilfautconnatrelexistencepourlacertificationLPI.Ilat
dvelopp dans le but dassurer un maximum de performances et de scurit. Sa mise en uvre est relativement
simple, mais du fait de sa richesse fonctionnelle, les possibilits de configuration sont nombreuses et souvent
dcourageantes.
Dovecotsupportenativementlesformatsdebotesauxlettresmboxetmaildir.

a.ConfigurationdeDovecot
Le serveur Dovecot trouve sa configuration dans un fichier dovecont.conf, gnralement situ dans le
rpertoire /etc/dovecot. Si le service doit tre utilis dans une infrastructure simple et courante, il faudra
simplementmodifiersaconfigurationafinquilacceptelesauthentificationsparmotsdepasseentexteclair.Ilpeut
paratresurprenantdenepasscuriserlesmotsdepassesurunserveurdemessagerie,maisdansuneutilisation
traditionnelle,lemessagelorsquilcirculesurinternetnestabsolumentpasprotgetestvisibledetous.Scuriser
alorslaseuletapeclientserveurrevientalorsassurerunescuritunpeuillusoiresurlecontenudumessage.
Lemotdepasseduclientdemessagerienecirculeplusenclair,maislemessagenestprotgquedesesvoisins
immdiats.IlesttoutefoispossibledeconfigurersonclientdemessageriepourutiliserlesprotocolesPOPouIMAP
sur SSL, la confidentialit est alors apporte sur le tronon clientserveur mais il faut bien garder en tte que le
messageasansdoutetransitenclairsansaucuneprotectionavantdarriversurleserveur.Lavritablescurit
surlecontenudesmessagesnepeuttreapportequeparunprotocoleagissantdeboutenboutcommeSMIME.
Autorisationdesauthentificationsentexteclairdanslefichierdovecot.conf
disable_plaintext_auth = no

- 2-

ENI Editions - All rights reserved - Samuel CASAL

Cette ligne peut tre ajoute tout endroit du fichier de configuration mais existe gnralement sous forme
commentedanslesfichiersprconfigurslivrsavecleslogiciels.

b.Visualisationdelaconfiguration
Le nombre de paramtres possible dans le fichier dovecot.conf peut impressionner et rendre son interprtation
difficile. De plus, il peut tre utile de vrifier un paramtre de configuration sans avoir parcourir les dizaines ou
centaines de lignes du fichier. La commande dovecot appele avec loption a permet de voir les paramtres
effectifssurleserveur.
Exempledutilisationdelacommandedovecotpourvisualiserlaconfiguration
Lersultatcidessousesttronqu.
alpha:/etc/dovecot# dovecot -a | wc -l
139
alpha:/etc/dovecot# dovecot -a | head -20
# 1.0.15: /etc/dovecot/dovecot.conf
base_dir: /var/run/dovecot
log_path:
info_log_path:
log_timestamp: %Y-%m-%d %H:%M:%S
syslog_facility: mail
protocols: imap imaps pop3 pop3s
listen: *
ssl_listen:
ssl_disable: no
ssl_ca_file:
ssl_cert_file: /etc/ssl/certs/dovecot.pem
ssl_key_file: /etc/ssl/private/dovecot.pem
ssl_key_password:
ssl_parameters_regenerate: 168
ssl_cipher_list:
ssl_verify_client_cert: no
disable_plaintext_auth: no
verbose_ssl: no
shutdown_clients: yes
alpha:/etc/dovecot#

ENI Editions - All rights reserved - Samuel CASAL

- 3-

Validationdesacquis
Testezvosconnaissancesenrpondantauxquestionssuivantes.Cesquestionsnappellentpastoujoursdesrponses
dfinitives. Les questions poses en certification, bien quabordant les mmes sujets, seront pour la plupart poses
sous forme de questionnaire choix multiples, ou bien demanderont une rponse courte, tape en toutes lettres au
clavier.

1.Questions
1 DanslefonctionnementdunserveurdemessageriedetypeMTA,quappelletongnralementunalias?
2 Postfixsupporteunparamtrerelayhost.Dansquellecirconstancesonusagepeutildevenirobligatoire?
3 Estilpossibleavecpostfixdegrerundomainedemessagerieauseindurseaulocalmaisdeprsenter
lextrieurunautrenomdedomaineplusprsentable?
4 Quandunserveurpostfixreoitunmessage,commentsaitilquildoitletraiterpersonnellementetnonle
relayer?
5 Peutonvrifierlavaliditdelaconfigurationdunserveurpostfixsansavoirdmarrerleservice?
6 DanslasyntaxeSMTPouquandonenvoieunmessageaveclacommandemail,commentindiquetonquona
terminlardactiondumessage?
7 CommentpeutonautomatiseruntraitementsurlesmessagesentrantssurunMTA?
8 Siunadministrateurveutenvoyerunmessageurgenttouslesutilisateursconnectsenmodeconsole(local,
telnetoussh),disposetildunealternativelenvoidunmessageenSMTP?
9 Quellediffrenceyatilentrelecontenudufichier/etc/issueetdufichier/etc/motd?
10 Estilpossibledevalideruneauthentificationauprsdesserveurscourier(CourierPOPetCourierIMAP)sans
avoirconfigurerunclientdemessagerie?

2.Rponses
1 DanslefonctionnementdunserveurdemessageriedetypeMTA,quappelletongnralementunalias?
Cest lassociation dune identit avec un compte existant. Par exemple, on doit en gnral pouvoir envoyer un
message ladresse de service webmaster@site.com. Pour dispenser le webmaster de consulter la fois sa bote
personnelleetlabotewebmaster,oncreunaliasentrelesdeuxidentits.
2 Postfixsupporteunparamtrerelayhost.Dansquellecirconstancesonusagepeutildevenirobligatoire?
LagnralisationdesspamsaunpeucompliqulenvoidemessagessurinternetparleprotocoleSMTP.SiladresseIP
publique attribue une organisation par son fournisseur daccs a un pass douteux, il se peut que ladresse en
question soit blackliste et donc rejete par les MTA des correspondants. Remettre tout message sortant son
fournisseur daccs qui se chargera de lenvoyer est une solution intressante si on ne souhaite pas engager une
procdurederetraitdesblacklistsdeladresseIP.
3 Estilpossibleavecpostfixdegrerundomainedemessagerieauseindurseaulocalmaisdeprsenter
lextrieurunautrenomdedomaineplusprsentable?
Oui,ilfautpourcelarenseignerladirectivemyorigindanslefichierdeconfigurationdepostfix.Cestuncomportement
courant,parexemplequanduneentreprisechangedenom.
4 Quandunserveurpostfixreoitunmessage,commentsaitilquildoitletraiterpersonnellementetnonle
relayer?
Ilcompareledomainededestinationannonc(lescaractresquisuiventlarobase)avecceuxdfinisparladirective
mydestination dans le fichier de configuration de postfix. Si cest la mme chose, le serveur postfix sait quil est
comptentpourtraiterlemessage.
5 Peutonvrifierlavaliditdelaconfigurationdunserveurpostfixsansavoirdmarrerleservice?
Oui,aveclacommandepostfixcheck.Ilestgalementpossibledafficher les paramtres effectifs de la configuration
aveclacommandepostconfn.
6 DanslasyntaxeSMTPouquandonenvoieunmessageaveclacommandemail,commentindiquetonquona
terminlardactiondumessage?
Encrivantuneligneformedunseulpoint.Lepointdoittrelecaractreuniquesurlaligne,immdiatementvalid
parunretourchariot.
7 CommentpeutonautomatiseruntraitementsurlesmessagesentrantssurunMTA?

ENI Editions - All rights reserved - Samuel CASAL

- 1-

En appelant la commande de gestion procmail. procmail doit tre rfrenc dans le fichier de configuration postfix et
possdeluiaussisonproprefichierdergles.
8 Siunadministrateurveutenvoyerunmessageurgenttouslesutilisateursconnectsenmodeconsole(local,
telnetoussh),disposetildunealternativelenvoidunmessageenSMTP?
Oui,latrsvieillecommandewallestlpoura.Elleenvoieunmessagetextetouslesutilisateursconnects.On
lemploiefrquemmentavantderedmarrerunsystmeoudarrterunservice.
9 Quellediffrenceyatilentrelecontenudufichier/etc/issueetdufichier/etc/motd?
Tousdeuxsontaffichsunutilisateurseconnectant,mais/etc/issueestaffichavantlouverturedesession,etest
doncvisibletous,alorsquelecontenudufichier/etc/motdnestvisiblequaprsuneouverturedesessionrussie.
10 Estilpossibledevalideruneauthentificationauprsdesserveurscourier(CourierPOPetCourierIMAP)sans
avoirconfigurerunclientdemessagerie?
Oui,lacommandeauthtestpermetcettevalidation.Elleneprsagepasdunsuccsfonctionnelcompletenproduction,
maisdumoinsvrifietonquelesbibliothquesdauthentificationcouriersontprsentesetcorrectementconfigures.

- 2-

ENI Editions - All rights reserved - Samuel CASAL

Travauxpratiques
Afindeparfairelacommunicationdanslentreprise,onvousdemandedemettreenplaceunservicedemessagerie.

1.Gestiondesenvois
a.Installationdunserveurpostfixsurleserveuralpha
Installezunserveurpostfixsurleserveuralphaentapantlacommandesuivante :
apt-get install postfix
Si lassistant dinstallation vous pose des questions, choisissez Pas de configuration pour indiquer que vous
souhaitezraliserlensembledelaconfigurationparvousmme.
Notez que linstallation de postfix entrane la suppression du service de messagerie natif Exim des distributions
Debian.

b.Configurationduservice
Commandesutiles

postconf

postfix

tail

vi

Fichierutile

main.cf

Manipulations
1.

Danslerpertoire/etc/postfix,crezunfichiermain.cf.

2.

Danslefichiermain.cf,indiquezquevosmailsproviendrontdudomainepas.net.

3.

Danslefichiermain.cf,indiquezquevotreserveurgrelesmailsdestinationdu
domainepas.net.

4.

Danslefichiermain.cf,indiquezladressedevotrerseaulocal.

5.

Vrifiezlesparamtreseffectifsdevotreconfigurationpostfix.

6.

Vrifiezlacohrencedevotreconfigurationpostfix.

7.

Dmarrezleserviceetvrifiezquetoutsestbienpass.

Rsumdescommandesetrsultatlcran
Fichierdeconfiguration/etc/postfix/main.cf:
myorigin = pas.net
mydestination = pas.net
mynetwork = 192.168.200.0/24

ENI Editions - All rights reserved - Samuel CASAL

- 1-

Vrificationdesparamtreseffectifs :
alpha:/etc/postfix# postconf -n
config_directory = /etc/postfix
mydestination = pas.net
myorigin = pas.net
alpha:/etc/postfix#
Vrificationdelacohrencedelaconfiguration :
alpha:/etc/postfix# postfix check
alpha:/etc/postfix#
Dmarrageduserviceetvrification :
alpha:/etc/postfix# /etc/init.d/postfix start
Starting Postfix Mail Transport Agent: postfix.
alpha:/etc/postfix# tail -1 /var/log/syslog
Aug 12 15:30:43 alpha postfix/master[5008]: daemon started -version 2.5.5, configuration /etc/postfix
alpha:/etc/postfix#

c.Gestiondesaliaspostfix
Commandesetfichiersutiles

/etc/aliases

postalias

Manipulations
1.

Vrifiezlaprsencedufichierdaliaspardfaut.

2.

Crezlabasedaliasquedevrautiliserleservicepostfixaprssondmarrage.

Rsumdescommandesetrsultatlcran
alpha:~# cat /etc/aliases
# /etc/aliases
mailer-daemon: postmaster
postmaster: root
nobody: root
hostmaster: root
usenet: root
news: root
webmaster: root
www: root
ftp: root
abuse: root
noc: root
security: root
root: toto
alpha:~#
alpha:~# postalias /etc/aliases
alpha:~#

d.IntgrationDNS
Afin quon puisse envoyer des messages depuis dautres MTA, vous dcidez de crer un enregistrement MX pour
rfrencervotredomaine.
Commandesutiles
- 2-

ENI Editions - All rights reserved - Samuel CASAL

rndc

vi

Manipulations
1.

CrezdansledomaineDNSpas.netsurleserveuralphaunenregistrementMXde
priorit10aveccommeMTAlenomalpha.pas.net.

2.

Incrmentezlenumrodeversiondufichier.

3.

Rechargezlazone.

Rsumdescommandesetrsultatlcran
Fichier/etc/bind/db.pas.netmodifisuralpha:
$TTL
86400
pas.net.
IN SOA
15
604800
86400
2419200
86400 )
pas.net.
pas.net.
alpha.pas.net.
beta.pas.net.
serveur-a
alfa
client
public
prive
pas.net.

IN
IN
IN
IN
IN
IN
IN
IN
IN
IN

alpha.pas.net. root.pas.net. (

NS
NS
A
A
CNAME
CNAME
A
CNAME
CNAME
MX 10

alpha.pas.net.
beta.pas.net.
192.168.200.101
192.168.200.102
alpha.pas.net.
alpha
192.168.200.212
beta
beta
alpha.pas.net.

Rechargementdesdonnesdezone :
alpha:/etc/bind# rndc reload
server reload successful
alpha:/etc/bind#

e.Envoietrceptiondemailsenlignesdecommandedepuisleserveuralpha
Commandesutiles

adduser

mail

su

Manipulations
1.

Surleserveuralpha,crezunutilisateurtitiaveclemotdepassepassword.

2.

Surleserveuralpha,ouvrezunterminalentantquelutilisateurtoto.

3.

Envoyezunmaillutilisateurtiti.

4.

Ouvrezunautreterminalentantquelutilisateurtiti.

ENI Editions - All rights reserved - Samuel CASAL

- 3-

5.

Vrifiezvosmessages.

Rsumdescommandesetrsultatlcran
Ajoutdelutilisateurtitisuralpha :
alpha:~# adduser titi
Ajout de lutilisateur titi ...
Ajout du nouveau groupe titi (1002)...
Ajout du nouvel utilisateur titi (1002) avec le groupe titi ...
Cration du rpertoire personnel /home/titi ...
Copie des fichiers depuis /etc/skel ...
Entrez le nouveau mot de passe UNIX :
Retapez le nouveau mot de passe UNIX :
passwd : le mot de passe a t mis jour avec succs
Modification des informations relatives lutilisateur titi
Entrez la nouvelle valeur ou Entre pour conserver la valeur propose
Nom complet []: titi
N de bureau []:
Tlphone professionnel []:
Tlphone personnel []:
Autre []:
Ces informations sont-elles correctes ? [O/n]
alpha:~#
Envoidunmailparlutilisateurtoto:
toto@alpha:~$ whoami
toto
toto@alpha:~$
toto@alpha:~$ mail titi
Subject: Salut
Juste pour voir si ca marche.
.
Cc:
toto@alpha:~$
Vrificationdelarceptiondumailparlutilisateurtiti :
toto@alpha:~$ whoami
toto
toto@alpha:~$ su - titi
Mot de passe :
titi@alpha:~$ whoami
titi
titi@alpha:~$ mail
Mail version 8.1.2 01/15/2001. Type ? for help.
"/var/mail/titi": 1 message 1 new
>N 1 toto@pas.net
Thu Aug 12 15:17
15/428
& 1
Message 1:
From toto@pas.net Thu Aug 12 15:17:30 2010
X-Original-To: titi
To: titi@pas.net
Subject: Salut
Date: Thu, 12 Aug 2010 15:17:30 +0200 (CEST)
From: toto@pas.net (toto)

Salut

Juste pour voir si ca marche.

& q
Saved 1 message in /home/titi/mbox
titi@alpha:~$

f.Passagedepostfixauformatmaildir

- 4-

ENI Editions - All rights reserved - Samuel CASAL

Fichieretcommandesutiles

/etc/postfix/main.cf

vi

Manipulations
1.

Dansvotrefichierdeconfiguration,dclarezlusageduformatmaildir.

2.

Redmarrezleservice.

Rsumdescommandesetrsultatlcran
Fichiermain.cfmodifi:
myorigin = pas.net
mydestination = pas.net
mynetwork = 192.168.200.0/24
home_mailbox = Maildir/
Redmarrageduservice :
alpha:/etc/postfix# /etc/init.d/postfix restart
Stopping Postfix Mail Transport Agent: postfix.
Starting Postfix Mail Transport Agent: postfix.
alpha:/etc/postfix#
alpha:/etc/postfix# tail -1 /var/log/syslog
Aug 12 15:49:43 alpha postfix/master[5101]: daemon started -version 2.5.5, configuration /etc/postfix
alpha:/etc/postfix#

2.Gestiondesretraits
a.InstallationdunserveurCourierIMAPsurleserveuralpha
InstallezunserveurCourierIMAPsuralphaentapantlacommandesuivante :
alpha:~# apt-get install courier-imap
Lecture des listes de paquets... Fait
Construction de larbre des dpendances
Lecture des informations dtat... Fait
Les paquets supplmentaires suivants seront installs :
courier-authdaemon courier-authlib courier-authlib-userdb courier-base
expect tcl8.4
(...)
Accepteztousleschoixpardfautlorsdelexcutiondelassistantdinstallation.

b.Envoidunmessagelutilisateurtoto
LenvoidecemessagenousserviravrifierlabonneconfigurationduserveurIMAP.
Commandesutiles

mail

su

ENI Editions - All rights reserved - Samuel CASAL

- 5-

Manipulations
1.

Surleserveuralpha,ouvrezunterminalentantquelutilisateurtiti.

2.

Envoyezunmailenlignesdecommandeslutilisateurtoto.

Rsumdescommandesetrsultatlcran
Envoidumailenlignesdecommandes :
alpha:~# su - titi
titi@alpha:~$ whoami
titi
titi@alpha:~$ mail toto
Subject: Salut toto
Ca marche avec le client de messagerie ?
.
Cc:
titi@alpha:~$

c.Gestionducourrierdepuislepostedetravail
Afin de tester le fonctionnement du serveur imap, vous allez configurer un client de messagerie sur la station de
travail.
La suite logicielle Evolution est le client de messagerie par dfaut mais vous pouvez utiliser nimporte quel client
imap.
Commandesutiles

Utilisationdelinterfacegraphique.

Manipulations
1.

Surlastationdetravail,lancezlelogicielEvolutionpartirdumenu
Application/Bureautique.

2.

Utiliseztouslesparamtrespardfaut,lexceptiondelidentitdelutilisateur(toto),
leserveurIMAP(adresseIPounomDNSduserveuralpha),etleserveurSMTP(adresse
IPounomDNSduserveuralpha).

3.

Vrifiezquunmessageapparatbiendanslafentredvolution.

Rsumdescommandesetrsultatlcran
Configurationdulogicielvolution :

- 6-

ENI Editions - All rights reserved - Samuel CASAL

Gestiondelidentit

ENI Editions - All rights reserved - Samuel CASAL

- 7-

ConfigurationduserveurIMAP

- 8-

ENI Editions - All rights reserved - Samuel CASAL

ConfigurationduserveurSMTP
Envoidunmaildepuislecomptetiti :
alpha:~# su - titi
titi@alpha:~$ mail toto
Subject: test 2
bla
.
Cc:
titi@alpha:~$
VisualisationdesmessagessurEvolution :

ENI Editions - All rights reserved - Samuel CASAL

- 9-


Notez que bien que le mail ait t envoy toto ,il apparat comme manant de toto@pas.net .Cest le
rsultatdelabonneconfigurationdepostfix(paramtremyorigin).

- 10 -

ENI Editions - All rights reserved - Samuel CASAL

Prrequisetobjectifs
1.Prrequis
LesconnaissancesacquiseslorsdelacertificationLPIniveau1,notamment:

ConnaissancesdebasesurladressageIP.
ConnaissancesdebasesurleroutageIP.
ditiondefichierstexte.
Connaissancesdefichier/etc/services.
Connaissancesdebasedudmoninetd.

2.Objectifs
lafindecechapitre,vousserezenmesurede:

ActiverleroutagesurunserveurLinux.
Ajouteretretirerdesroutesstatiques.
Configurerdufiltrageparlesiptables.
ConfigurerduNATparlesiptables.
ConfigurerunparefeuLinuxpartirdesiptables.
Afficherlaconfigurationdunparefeuexistant.
Modifierlaconfigurationdunparefeuexistant.
Connatrelesprincipauxorganismesdeveillescuritaire.
ConnatrelestechniquesdanalysedesIPS.
ConnatrelIDSSnort.
ConnatrelasuitelogicielledescuritOpenVAS.

ENI Editions - All rights reserved - Samuel CASAL

- 1-

Routageetfiltrage
1.ConfigurationdunserveurLinuxentantquerouteur
LafonctionderoutageestintgrenativementdanslenoyauLinux.Ilnyadoncpasdequestionsseposer,toute
machineLinuxestunrouteurenpuissance.Enrevanche,cettefonctionnestpasactivepardfautaudmarrage.Il
fautdonclaconfigureravanttouteoprationderoutage.

a.ActivationduroutagesurunserveurLinux
NoussavonsquetoutsystmeLinuxprsenteunfilesystemvirtuel/procquipermetdobserverendirectuncertain
nombre de comportements et paramtres. Lactivation du routage se fait en modifiant le contenu du
fichier /proc/sys/net/ipv4/ip_forward. Ce fichier contient un seul caractre, par dfaut 0 pour indiquer que le
routageestinactif.
Modificationdufichierip_forwardpouractiverleroutage
echo 1 > /proc/sys/net/ipv4/ip_forward
Une fois cette manipulation effectue, la machine Linux est prte router les paquets se prsentant sur ses
interfaces.Ceparamtreestvolatileetseraperdudslamachineteinte.Toutefois,onpeutvidemmentannulerle
routageeneffectuantloprationinverse.
Modificationdufichierip_forwardpourdsactiverleroutage
echo 0 > /proc/sys/net/ipv4/ip_forward
Autrepossibilit,lacommandesysctlquipermetdemodifierdynamiquementdesparamtresfonctionnelsdunoyau.
sysctlpermetdemodifierdirectementtouslesfichierssetrouvantsouslarborescence/proc/sys.
Activationduroutageavecsysctl
sysctl net.ipv4.ip_forward=1
Cescommandessonteffectivestouteladuredelasessionetdoiventtreretapesaprschaqueredmarrage.On
peutbienentendulesplacerdansunscriptdeserviceappelaudmarrage,oumodifierlefichier/etc/sysctl.conf.
Activationpermanenteduroutagedanslefichier/etc/sysctl.conf
net.ipv4.ip_forward = 1

b.Consultationdelatablederoutage
cestade,lerouteurLinuxestparfaitementcapablederouterlespaquets.Toutefois,ilnepourralefairequevers
desrseauxconnus,cestdirerfrencsdanssatablederoutage.
Latablederoutageestmaintenueenmmoiremaisellepeuttreconsulteparquelquescommandes.
Affichagedelatablederoutageparlacommanderoute
route -n
Leparamtre n est facultatif, mais il fait gagner beaucoup de temps laffichage car il dispense la commande de
tenter de rsoudre les adresses renvoyes en noms. Or, si ladresseenquestionnest pas renseigne dans une
zoneDNSinverse,cetterequtesefaitpourrienetilfautattendreplusieurssecondespourquelaffichagearrive.
Affichagedelatablederoutageparlacommandenetstat
netstat -nr
Oloptionrdemandelacommandedafficherlatablederoutageetndenepasfairedersolutiondenoms.La

ENI Editions - All rights reserved - Samuel CASAL

- 1-

commandenetstatadenombreuxusages,maiselleestsouventutilisedanscesimplecadredeconsultationdela
tablederoutage.
Exempledaffichagesdetablederoutage
Laffichagedelatablederoutageestsouventleseulmoyensimpledeconsulterlavaleurdelapasserellepardfaut.
beta:~# route -n
Table de routage IP du noyau
Destination
Passerelle
192.168.1.0
0.0.0.0
192.168.0.0
0.0.0.0
0.0.0.0
192.168.0.1

Genmask
255.255.255.0
255.255.255.0
0.0.0.0

Indic
U
U
UG

Metric
0
0
0

Ref
0
0
0

Use
0
0
0

Iface
eth1
eth0
eth0

c.Gestiondesroutesstatiques
Lesseulesentresprsentesautomatiquementdanslatablederoutagesontlesrseauxauxquelslerouteurest
directementconnect,ainsiquelapasserellepardfaut.Lerouteurpeutdoncexploitercesentresdelatablede
routage sans autre configuration. Si le routeur doit router des paquets vers dautres rseaux, il faudra ajouter
manuellementlesroutesdanslatablederoutage.
Ajoutderoutestatiquedanslatablederoutage
route add -net rseau_cible netmask masque gw routeur

Ajoutderoutestatique:optionsetparamtres
net

Larouteajouteestcelledunrseau.(Laciblepourraittreunhteseulmmesi
cetteconfigurationestmoinsfrquente.)

rseau_cible

Ladressedurseauquelanouvelleroutepermetdatteindre.

masque

Lemasquedesousrseauxassocilanouvelleroute.

gwrouteur

Indiquelerouteuremprunterpouratteindrelerseaucible.

Ajoutdepasserellepardfaut
route add default gw routeur
route add -net 0.0.0.0 gw routeur
Dansladeuximesyntaxe,0.0.0.0reprsentelaroutepardfaut.Cettereprsentationdelaroutepardfautest
universelleetapplicablesurlaquasitotalitdessystmesexploitantunetablederoutageIP.
Bien entendu, il est possible de supprimer les routes statiques qui ne sont plus ncessaires ou enregistres par
erreur.
Suppressionderoutestatiquedelatablederoutage
route del -net rseau_cible netmask masque
Exempledajoutderoute
beta:~# route -n
Table de routage IP du noyau
Destination
Passerelle
192.168.1.0
0.0.0.0
192.168.0.0
0.0.0.0
0.0.0.0
192.168.0.1
beta:~# route add -net 10.0.0.0
beta:~# route -n

- 2-

Genmask
Indic Metric Ref
255.255.255.0
U
0
0
255.255.255.0
U
0
0
0.0.0.0
UG
0
0
netmask 255.0.0.0 gw 192.168.1.99

Use
0
0
0

ENI Editions - All rights reserved - Samuel CASAL

Iface
eth1
eth0
eth0

Table de routage IP du noyau


Destination
Passerelle
192.168.1.0
0.0.0.0
192.168.0.0
0.0.0.0
10.0.0.0
192.168.1.99
0.0.0.0
192.168.0.1

Genmask
255.255.255.0
255.255.255.0
255.0.0.0
0.0.0.0

Indic
U
U
UG
UG

Metric
0
0
0
0

Ref
0
0
0
0

Use
0
0
0
0

Iface
eth1
eth0
eth1
eth0

Metric
0
0
0

Ref
0
0
0

Use
0
0
0

Iface
eth1
eth0
eth0

Exempledesuppressionderoute
beta:~# route del -net 10.0.0.0
beta:~# route -n
Table de routage IP du noyau
Destination
Passerelle
192.168.1.0
0.0.0.0
192.168.0.0
0.0.0.0
0.0.0.0
192.168.0.1
beta:~#

netmask 255.0.0.0

Genmask
255.255.255.0
255.255.255.0
0.0.0.0

Indic
U
U
UG

2.Iptables
Les iptables sont utilises pour grer le filtrage de paquets IP au sein dun systme Linux. Elles exploitent une
commande unique : iptables, et se configurent par lapplication successive de rgles de gestion de paquets. Les
iptablespeuventfiltrerletraficentransitdansunrouteurLinux,maisaussiletraficentrantetsortantdetoutserveur
oupostedetravailuneseuleinterface.
Silesiptablesconstituentunoutiltrspuissantdegestiondutrafic,lamdailleasonreversetleurconfigurationest
tout sauf intuitive. Avec une approche structure, on peut toutefois assez rapidement apprhender leur
fonctionnement. Les paragraphes cidessous exposent les concepts fondamentaux des iptables, afin de les utiliser
plustarddansdesconfigurationsdeparefeu.

a.Lestables
Les iptables sappuient sur des tables associes un mode fonctionnel. Selon le type de rgle que lon souhaite
ajouter au fonctionnement des iptables, on prcisera la table associe. Les tables principales utilises sont filter
pourlefiltragedepaquetsetnatpourlatranslationdadressesentreunrseauprivetunrseaupublic.
Latablefilterestlatablepardfaut.Aussi,quandontablitunergleiptablesdansunbutdefiltrerlespaquets
estellesousentendueetdoncnonprcise.
Latablenatsertlatranslationdadressesetdoittresystmatiquementprcisequandelleestinvoque.

b.Leschanes
Unechaneiptablesreprsenteuntypedetraficdupointdevuedesacirculationdansunemachine.Leschanes
permettent de prciser si une rgle doit sappliquer du trafic qui entre dans une machine, qui en sort ou qui la
traverse.
La chane INPUT dsigne le trafic entrant, la chane OUTPUT dsigne le trafic sortant, et la chane FORWARD
dsigneletraficquitraverselamachine,entrantparuneinterfaceetsortantparuneautre.Attention,mmesiun
paquetquitraverselerouteurestdunpointdevuephysiquerespectivemententrant,traversantetsortant,iptables
le considrera comme traversant seulement (chane FORWARD). Les chanes INPUT et OUTPUT sont rserves au
traficdestinationouenprovenanceexplicitedelhtesoumisauxrgles.
Une autre chane appele POSTROUTING et utilise dans la configuration du NAT a pour objet dappliquer un
traitementunpaquetaprsuneoprationderoutage.
Leschanessonttoujoursindiquesenmajusculesdansunesyntaxeiptables.

c.Lesactions
Quandunergleestsatisfaite,uneactionestengendreparlesystmesurlepaquettest.Lesprincipalesactions
sontACCEPTquilaissepasserlepaquetetDROP,quiledtruit.
Dansunesyntaxeiptables,laction(targetdanslemanuelenligne)estannonceparleparamtrej.
Lesactionssonttoujoursindiquesenmajusculesdansunesyntaxeiptables.

ENI Editions - All rights reserved - Samuel CASAL

- 3-

d.Letraitementdesrgles

Lesrglessontappliquesuneparunetoutpaquetfiltr.Siunergleestsatisfaite,uneactionestengagesurle
paquetetletraitementsarrte.Siunerglenestpassatisfaite,larglesuivanteestteste.Danslecasoaucune
des rgles nest satisfaite, le paquet subit un traitement par dfaut paramtr dans une rgle spcifique appele
politique(policy).
Ilestpossibledafficherlesrglesappliquesdanslordrepourchacunedeschanes.
Affichagedesrgleseffectives
iptables -L
Exempledaffichagedesrgles
Cet exemple affiche les rgles en vigueur sur un systme Linux non configur. On y voit la politique applique pour
chacunedeschanes,etonconstatelabsencederglesdefiltrage.
alpha:~# iptables -L
Chain INPUT (policy ACCEPT)
target
prot opt source

destination

Chain FORWARD (policy ACCEPT)


target
prot opt source

destination

Chain OUTPUT (policy ACCEPT)


target
prot opt source

destination

LacommandeiptablesLafficheuneinterprtationdesrglesenvigueur.Sionsouhaiteconnatrelessyntaxesqui
ontpermisdtablircesrgles,ilestprfrabledutiliserloptionS.
Exempledaffichagedesrglesselonlessyntaxes
Loption S est particulirement utile quand on est confront un systme configur par un tiers et quon ne sait pas
quellessontlescommandesquiontconduituneconfiguration.
alpha:~# iptables -S

- 4-

ENI Editions - All rights reserved - Samuel CASAL

-P INPUT ACCEPT
-P FORWARD ACCEPT
-P OUTPUT ACCEPT
alpha:~#

ENI Editions - All rights reserved - Samuel CASAL

- 5-

Administrationdunparefeuaveclesiptables
1.Politiques
a.Principedespolitiquesdeparefeu
Unparefeupeutfonctionnerselondeuxmodesdistinct:toutcequinestpasautorisestinterdit,outoutce
quinestpasinterditestautoris.Pourdfinirlecomportementpardfaut,lesiptablespermettentdedfinirpour
chaquechaneuneactionpardfaut.
Dfinitiondelapolitiquepardfautdesiptables
iptables -P chaine action
Ochainereprsenteletypedetrafic(INPUT,OUTPUTetFORWARD),etactionlecomportementsouhait(DROPou
ACCEPT).
Exemplededfinitiondepolitique
Danscetexemple,oninterdittouttraficdesortirdelhteenappliquantunepolitiquederejetdespaquetssortants.
root@test:~$ ping -c 1 192.168.0.10
PING 192.168.0.10 (192.168.0.10) 56(84) bytes of data.
64 bytes from 192.168.0.10: icmp_seq=1 ttl=64 time=0.880 ms
--- 192.168.0.10 ping statistics --1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 0.880/0.880/0.880/0.000 ms
root@test:~$ iptables -P OUTPUT DROP
root@test:~$ ping -c 1 192.168.0.10
PING 192.168.0.10 (192.168.0.10) 56(84) bytes of data.
ping: sendmsg: Operation not permitted
--- 192.168.0.10 ping statistics --1 packets transmitted, 0 received, 100% packet loss, time 0ms
root@test:~$

b.Configurationdunepolitiquedebase
Silhteconfigurerestappeldevenirunparefeu,ilestprobablequetouttraficsoitinterditpardfaut.Cette
configuration courante consiste dfinir sur les trois chanes INPUT, OUTPUT et FORWARD une politique de non
traitementdespaquets.
Configurationdunepolitiquerestrictive
iptables -P INPUT DROP
iptables -P OUTPUT DROP
iptables -P FORWARD DROP

2.Filtragedepaquets
a.Politiqueetrgles
Aprs avoir configur une politique qui dcrit le comportement de base du parefeu, il faut crer des rgles
spcifiquesauxlmentsdetraficsquelonsouhaitelaisserpasserouinterdire.Laphilosophieduparefeuest:on
dfinitlecomportementgnralaveclespolitiques,etongreaucasparcaslescomportementsspcifiquesavec
desrgles.

b.Crationdergle

ENI Editions - All rights reserved - Samuel CASAL

- 1-

Pourchaquelmentdetraficdevanttreautorisouinterdit,ilfaudracrerunerglespcifique.
Syntaxecrationdunergledegestiondetrafic
iptables -A chaine -s ip_source -d ip_dest -p protocole --dport port -j action

iptables:crationdergle
Achaine

Onajouteunergledanslachanechaine(INPUT,OUTPUTouFORWARD).

sip_source

Facultatif:ladresseIPsourcedoproviennentlespaquetssoumislargle.Si
ladresseestuneadressederseau,prciserlemasque.

dip_dest

Facultatif:ladresseIPdedestinationverslaquellevontlespaquetssoumisla
rgle.Siladresseestuneadressederseau,prciserlemasque.

pprotocole

Indiqueleprotocoleutilisdanslepaquetsoumislargle.Valeurscourantes:
udp,tcp,icmp.

dportport

Facultatif:indiqueleportdedestinationdupaquetsoumislargle.

jaction

Indiquecommenttraiterlepaquetsoumislargle.(ACCEPTouDROP).

Autorisationdespingsortantetentrant
Chaquetypedefluxdoitfairelobjetdunergleiptable.
alpha:~# iptables -A OUTPUT -p icmp -j ACCEPT
alpha:~# iptables -A INPUT -p icmp -j ACCEPT
alpha:~#
Autorisationdutrafichttptraversantenprovenancedunrseau
alpha:~# iptables -A FORWARD -s 192.168.1.0/24 -p tcp -dport 80 -j ACCEPT
alpha:~#
Une configuration errone sur un parefeu peut avoir des consquences dramatiques. Il est recommand
pour vrifier sa bonne configuration dutiliser un scanner de ports depuis une machine distante. La
commandenmapFsuiviedeladresseIPdelamachineprotgepermetdevrifiertrsrapidement(Fastmode)
quelesportssontbienbloqusououverts.

c.Gestiondesrgles
Les rgles sont appliques dans leur ordre de cration et le systme leur applique automatiquement un numro
dordre.
Affichagedesnumrosdergleseffectives
iptables -L chaine --line-numbers -n
Ochainereprsentelachanedetraitement(INPUT,OUTPUTouFORWARD).Leparamtrennestpasobligatoire,
maisacclrefortementlaffichageendispensantlacommandedetenterdersoudrelesadressesennoms.
Suppressiondunergle
iptables -D chaine numro
Onumroreprsentelenumrodelaligneobtenuaveclacommandeprcdenteetochainereprsentelachane

- 2-

ENI Editions - All rights reserved - Samuel CASAL

detraitement(INPUT,OUTPUTouFORWARD).
Insertiondunergle
iptables -I chaine numro conditions -j action
Oconditionsreprsentelescritresdeslectiondupaquetsoumislargle(adressesIP,portsetprotocoles).
Exempledegestiondergles
Lagestiondynamiquedesrglesesttellementpniblequelusagetabliveutpluttquelonexploiteunfichierdescript
comprenanttouteslesrgles,etquonlerechargecompltementaprsmodification.
alpha:~# iptables -L FORWARD --line-numbers -n
Chain FORWARD (policy DROP)
num target
prot opt source
destination
1
ACCEPT
tcp -- 192.168.1.0/24
0.0.0.0/0
tcp
2
ACCEPT
udp -- 192.168.1.0/24
0.0.0.0/0
udp
3
ACCEPT
tcp -- 192.168.1.0/24
0.0.0.0/0
tcp
alpha:~# iptables -D FORWARD 1
alpha:~# iptables -L FORWARD --line-numbers -n
Chain FORWARD (policy DROP)
num target
prot opt source
destination
1
ACCEPT
udp -- 192.168.1.0/24
0.0.0.0/0
udp
2
ACCEPT
tcp -- 192.168.1.0/24
0.0.0.0/0
tcp
alpha:~# iptables -I FORWARD 1 -s 192.168.1.0/24 -p tcp --dport 22 -j
alpha:~# iptables -L FORWARD --line-numbers -n
Chain FORWARD (policy DROP)
num target
prot opt source
destination
1
ACCEPT
tcp -- 192.168.1.0/24
0.0.0.0/0
tcp
2
ACCEPT
udp -- 192.168.1.0/24
0.0.0.0/0
udp
3
ACCEPT
tcp -- 192.168.1.0/24
0.0.0.0/0
tcp
alpha:~#

dpt:23
dpt:53
dpt:80

dpt:53
dpt:80
ACCEPT

dpt:22
dpt:53
dpt:80

d.Gestiondesfluxretours
Danslaplupartdesapplicationsrseau,unhteenvoieunpaquetdestinationdunautrequiluirpond.Onadonc
une communication double sens. Or, dans la configuration dun parefeu, on visualise bien les flux aller : par
exemple,depuisunnavigateurversunserveurwebsurleport80,maismoinsbienlesrponsesdesserveursquise
fontsurunportalatoirelinitiativeduclientsuprieur1024.
Danslespremiersgesdesparefeu,lasolutionconsistaitautorisertouttraficentrantdontleporttaitsuprieur
1024. Les parefeu avaient alors davantage vocation empcher les gens de sortir plutt que dviter les
intrusionsdanslerseau.
Depuis quelques annes, les parefeu dits stateful ( tat) sont capables dautoriser dynamiquement les flux
retoursdumomentquilssontlarponseunfluxensortieexplicitementautoris.
Autorisationimplicitedesfluxretours
iptables -A chaine -m state --state ESTABLISHED,RELATED -j ACCEPT
Loptionmstatepermetderaliserunfiltreenfonctiondeltatdupaquettrait.Lestatsaccepts:ESTABLISHED
et RELATED reprsentent respectivement des paquets en rponse un flux aller autoris, et des paquets issus
dunenouvelleconnexion,maislinitiativeduneconnexiontablieetautorise(parexempleletraficdedonnes
ftprelatifuntraficdecommandesftp).
Exempledeconfigurationcompltedunparefeu
Onconfigureiciunparefeuquinelaisserienpasser,lexceptiondesrponsesauxtraficstablis,ainsiquelesprotocoles
ncessaireslanavigationinternet(http,httpsetdns).
alpha:~#
alpha:~#
alpha:~#
alpha:~#

iptables
iptables
iptables
iptables

-P
-P
-P
-A

INPUT DROP
OUTPUT DROP
FORWARD DROP
FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
ENI Editions - All rights reserved - Samuel CASAL

- 3-

alpha:~# iptables -A FORWARD -s 192.168.1.0/24 -p tcp --dport 80 -j ACCEPT


alpha:~# iptables -A FORWARD -s 192.168.1.0/24 -p tcp --dport 443 -j ACCEPT
alpha:~# iptables -A FORWARD -s 192.168.1.0/24 -p udp --dport 53 -j ACCEPT
Danscetexemple,onconfigureunparefeuquinelaisserienpasser,lexceptiondesrponsesauxtraficstablis,
ainsiquelesprotocolesncessaireslanavigationinternet(http,httpsetdns).
Lapplication fail2ban permet en cas de tentatives de connexion infructueuses des applications ou au
systme luimme de crer dynamiquement une rgle qui bloquera toute communication de la part de
lattaquant.LaconnaissancedesaconfigurationdtaillenestpasexigepourlacertificationLPI.

3.GestionduNAT
a.RappelsurleprincipeduNAT

LeNATconsistercrirelentteIPdunpaquetquipassedunrseaupublicversunrseauprivetinversement.
Les adresses IP publiques tant non routables sur linternet, un paquet qui proviendrait dune adresse prive ne
pourraitpastrouverderouteretour,parcequaucunrouteurnaccepteraitdelerenvoyerchezlui.Detoutefaon,les
rseauxprivstantdmultiplislinfini(ilexistedesmillionsderseaux192.168.1.0),ilneseraitpaspossiblede
maintenirdanslestablesderoutagedesrouteursdinternetuneroutecohrenteverslerseaudorigine.
LasolutionconsistedoncpoursortirdunrseauprivremplacerladresseIPdelexpditeurprivparladresseIP
publique (unique sur internet) du routeur ralisant le NAT. La traabilit des translations (remplacement des
adressesIPprives)sefaitparrapportauportexpditeurutilis :pourchaquetranslationralise,lerouteurgarde
enmmoireleportexpditeuremploy.Lepaquetretourarrivantsurladresse publique du routeur et sur le port
employparlexpditeur,ladresseoriginelleduclientestfacilementretrouveparlerouteurNAT.

b.DiagnosticdelaconfigurationNATdunrouteur
Le NAT est gr dans une table spcifique appele NAT. Toute configuration touchant au NAT se fera avec la
commande iptables en prcisant quon travaille sur la table NAT. Les chanes traites dans la table NAT sont
PREROUTING,POSTROUTINGetOUTPUT,reprsentantletraficmodifieravantleroutage,aprs,oudirectement
ensortiedelamachine.
AffichagesdelaconfigurationNAT

- 4-

ENI Editions - All rights reserved - Samuel CASAL

iptables -t nat -L
iptables -t nat -S

c.Connexiondunrseauprivunrseaupublic
Dans cette configuration qui est aussi la plus courante, ladresse IP dexpditeur des htes du rseau priv est
remplaceparladressepubliquedurouteurNAT.
ConfigurationduNAT
iptables -t nat -A POSTROUTING -o carte-ext -j action-nat

Nataveciptables:optionsetparamtres
tnat

LargleconcernelatabledeNAT.

APOSTROUTING

OnajouteunerglelachanePOSTROUTING,pouruntraitementaprsroutage.

ocarteext

Dsignelacarterseauparlaquellelespaquetssortentduparefeu.

jactionnat

DsignelemodedactionduNAT,supportedeuxoptions:SNATsiladressepublique
estfixe,etMASQUERADEsiladressepubliqueestdynamique.

ExempledeconfigurationduNAT
alpha:~# iptables -t nat -A POSTROUTING -o eth1 -j MASQUERADE
alpha:~#
Danscetexemple,eth1estlinterfaceconnecteaurseaupublic.

4.Scriptsdeconfigurationdesrglesdefiltrage
a.RedHatetlesiptables
Les systmes Red Hat et leurs drivs proposent un service iptables qui permet dappliquer une configuration de
filtrage ou de NAT automatiquement. Le dmarrage du service applique la configuration, et son arrt annule tout
filtrage. Ce fonctionnement est extrmement pratique et permet de grer un parefeu RedHat de faon trs
confortable.

b.Crationdeservicepersonnalisdeparefeuaveclesiptables
On constate assez vite que la cration de rgles de filtrage et de NAT avec les iptables a quelque chose de
fastidieux.Parconsquent,aprsavoirdterminlesrglesdontonabesoin,onauratoutintrtlesplacerdans
unscript.
Exempledescriptdeconfigurationdeparefeu
Cetypedescriptdispensedavoirgrerlesrglesuneparuneencasdemodificationdelaconfiguration.Ilestbeaucoup
plus facile dinsrer une ligne dans le script que de dcaler la numrotation des rgles en mmoire. Toutefois, il faut
annulertoutergleavantchaqueapplicationduscript.
#!/bin/bash
# nom du fichier : /etc/parefeu_on
# Politique de base
iptables -P INPUT DROP
iptables -P OUTPUT DROP
iptables -P FORWARD DROP
# NAT avec eth0 en interne et eth1 en sortie - adresse IP publique fixe

ENI Editions - All rights reserved - Samuel CASAL

- 5-

iptables -t nat -A POSTROUTING


# gestion des paquets retours
iptables -A FORWARD -i eth1 -o
# trafic autoris en sortie
iptables -A FORWARD -i eth0 -o
iptables -A FORWARD -i eth0 -o
iptables -A FORWARD -i eth0 -o

-o eth1 -j SNAT --to-source 81.2.3.4


eth0 -m state --state ESTABLISHED,RELATED -j ACCEPT
eth1 -p tcp --dport 80 -j ACCEPT
eth1 -p tcp --dport 443 -j ACCEPT
eth1 -p udp --dport 53 -j ACCEPT

Bienentendu,ilnefaudrapasoublierdelerendreexcutable.
Ilseragalementutiledecrerunscriptdannulationdetoutergledefiltrage.Ilpeuteneffettreutiledautoriser
plusoumoinsprovisoirementtouttrafic,pourunemisejourduparefeuouunusageapplicatifponctuel.
Exempledescriptdannulationdefiltrage
#!/bin/bash
# nom du fichier : parefeu_off
# Effacement des rgles
iptables -F
# Politique permissive
iptables -P INPUT ACCEPT
iptables -P OUTPUT ACCEPT
iptables -P FORWARD ACCEPT
Enfin,onpeutcrerunscriptdegestiondeservicenormalis.
Exempledescriptdeservicedeparefeu
Cescriptestnaturellementplacerdanslerpertoire/etc/init.d.
#!/bin/bash
# nom du fichier : parefeu
case $1 in
start)
/etc/parefeu_on
;;
stop)
/etc/parefeu_off
;;
status)
iptables -L
;;
*)
echo "Syntaxe : /etc/init.d/parefeu start|stop|status
;;
esac

- 6-

ENI Editions - All rights reserved - Samuel CASAL

Dtectiondesintrusionsetdesvulnrabilits
1.LessystmesIDS
a.Leslimitationsdesparefeu
Lesparefeudansleurfonctionnementhistoriquefiltrentlespaquetssurlesvaleurscontenuesdanslesenttesde
coucherseauoutransport,etdoncsurlesadressesIPoulesportsutiliss.Pourcontournerlaprotectionapporte
parlesparefeu,denombreusesapplicationsutilisentdesportscourants(tcp80notamment)pourfairepasserleur
propretraficapplicatif.Lesparefeu,souventconfigurspourlaisserpasserlesfluxsurcesportscourants,nyvoient
quedufeu.
Pour assurer un meilleur contrle, il faut utiliser un quipement plus labor, capable de regarder et danalyserle
traficapplicatif,directementetsanssefairetromperparlannoncedunporterron.Cesquipementssontappels
sondesenfranaisparcequesondantlintrieurdespaquets,ouencoreIDS(IntrusionDetectionSystem).

b.Techniquesdanalyse
Pour identifier les trafics malicieux, les IDS disposent de trois techniques : la dtection danomalies, lanalyse de
protocolesetlanalysedesignatures.
Ladtectiondanomaliesapourobjetdedtecteruncomportementanormal,commeparexempleunvolumeICMP
dmesur,quiindiqueraitquelonestlacibleoulmetteurduneattaquepardnisdeservice.
Lanalysedeprotocolenecherchepasrepreruneactionrellementmalicieuse,maispluttuntraficapplicatifqui
ne respecterait pas la lettre les rgles de fonctionnement des protocoles employs. Cest un peu lhistoire du
braqueurdebanquequisefaitarrterbtementparcequesespneussontlisses.
Enfin,lanalysedesignaturespermetdidentifierdesattaquesoucomportementsmalsainsdjrfrencs.Cestla
techniquelaplusefficaceetquinestpassujetteerreur,puisquonnegrequedesattaquesouintrusionsayant
djeulieuchezuntiers,etdoncdmentidentifies.

c.Sourcesdinformation
Les techniques danalyse, quil sagisse danalyse de signatures, de protocoles ou de dtections danomalies
sappuient sur des informations qui voluent avec le temps. Il est vident que lanalyse de signature ne peut
sappliquerquesilIDSconnatlasignaturedelattaqueencours.Deplus,lanaturedesmenacespeutvoluer.Par
exemple,unhtequiauraitenvoydegrosvolumesdetraficsSMTPdanslesannes80indiqueraitquunserveurde
messageriefonctionnebien.Lammesituationaujourdhuipourraitmontrerquelhteenquestionestinfectpar
unchevaldeTroieetquilenvoiedegrosvolumesdeSPAM.
LesIDSdoiventimprativementrcuprerintervallergulierlesmisesjourdeleurstechniquesdanalyseainsi
que les bases de signatures. Les diteurs dIDS doivent systmatiquement maintenir leurs bases dinformations
jour,etlesadministrateursdesIDSdoiventtoutaussirgulirementtlchargercesbases.
Denombreuxorganismes,associationsetentreprisespermettentdeseteniraucourantdesvolutionsenmatire
detechniquesdintrusionetdenuisance.Ilestrecommanddeconnatrelexistencedesprincipaux,etdanslecadre
dune administration rseau avec prise en compte de la scurit, dassurer une veille technologique sur ces
domaines.
Principauxorganismesdeveilleetderecherche
Bugtraq

Listedediffusionddielannoncedesvulnrabilits,leurexploitationetleur
correction.

CERT

ComputerEmergencyResponseTeam.Cetteorganisationtudielesvulnrabilits,
effectuedelarecherchesurlesvolutionsentermederseauxetdescurit,et
proposedesserviceslislascurit.

CIAC

ComputerIncidentAdvisoryCapability.Organismedeveilleetderecherchegrparle
U.S.DepartmentOfEnergy.

2.SNORT
ENI Editions - All rights reserved - Samuel CASAL

- 1-

a.Lescomposants
SnortestleplusconnudesIDSlibre.Ilanalysetouttraficetapporteuncomplmentdescuritapprciable,voire
indispensablesurunrseau.Snortestcomposdunmoteurdanalyse,etdunensembledergles.
Snort est compos dun service et de fichiers de configuration gnralement situs sous /etc/snort. Le fichier de
configurationprincipalestsnort.conf.Lesrglesappliquessontsituesdansunsousrpertoirerules.
Snortdisposegalementdunecommandeoinkmasterdemisejourdesrglesquitrouvesaconfigurationdansun
fichieroinkmaster.conf.

b.Gestiondessourcesdinformation
SNORTexploitedesfichiersderglesquidoiventtretlchargssurlesitewebdelditeur.
Dclarationdunfichierderglesdansoinkmaster.conf
url = http://www.snort.org/snort-rules/fichier_rgles
Ofichier_rglesreprsentelefichierdesrglesauformattar.gz.Ilestncessairedtreabonnauprsdelditeur
maisdautressiteswebproposentdesfichiersdemisejourgratuits.Naturellement,laqualitdusuividpenddes
gestionnairesdecesfichiersdergles.
Aprs toute modification du fichier de dfinition des signatures, et par la suite intervalle rgulier par une
planification cron, il faut demander snort de tlcharger ses nouvelles rgles. Cette opration se ralise avec la
commandeoinkmaster.
Chargementdesrgles
oinkmaster -o rep_rgles
Orep_rglesreprsentelerpertoirequicontientlesrglesdefonctionnementdesnort,souvent/etc/snort/rules.
Lesfichiersderglesdoiventtreappelsdanslefichiersnort.confparleparamtreinclude,cequiestlecasavec
lesparamtrespardfautetlessignaturesdelditeur.

c.Gestiondesalertes
QuandSnortdtecteuntraficmalicieux,illaisseunetracedansunfichierjournalviasyslog,etenvoieunecopiedu
paquet dans un fichier au format tcpdump (format libpcap, visible avec wireshark par exemple). Il a aussi la
possibilitdenvoyer les informations vers une base de donnes (Oracle, MySQL, et PostGreSQL sont entre autres
supports).
Exemplededclarationdutilisationdesyslogdanssnort.conf
CettedclarationindiquequeleslmentsdoiventtreenvoysversunserveursyslogdontladresseIPestip_serveur,
souslacatgoriealerte.
output

alert_syslog: host=ip_serveur, LOG_ALERT

3.OpenVAS
OpenVASpourOpenVulnerabilityAssessmentscannerestunevariantelibreduscannerdevulnrabilitsNessus.Ilest
recommanddeconnatresonexistencedanslecadredelacertificationLPI.

a.LeserveurOpenVAS
Leserveurestlec urdelasuiteapplicativeOpenVAS,ilscanneetanalyseleshtesdurseaularecherchede
vulnrabilitsconnues(NVT :NetworkVulnerabilityTests).

b.LesclientsOpenVAS
- 2-

ENI Editions - All rights reserved - Samuel CASAL

LesclientsOpenVASsontdeslmentslogicielsenlignedecommandeouavecuneinterfacegraphiquequiassurent
lanalysedeshtesdurseaularecherchedevulnrabilitspourrenvoyerlesrsultatsauserveur.

c.Rcuprationdesvulnrabilits
OpenVas propose une source publique de vulnrabilits connues sous le nom OpenVas NVT Feed. Il permet aux
serveurs de se tenir au courant des dernires vulnrabilits connues, et contient plus de 15000 NVT (Network
VulnerabilityTests).

ENI Editions - All rights reserved - Samuel CASAL

- 3-

Validationdesacquis
Testezvosconnaissancesenrpondantauxquestionssuivantes.Cesquestionsnappellentpastoujoursdesrponses
dfinitives. Les questions poses en certification, bien quabordant les mmes sujets, seront pour la plupart poses
sous forme de questionnaire choix multiples, ou bien demanderont une rponse courte, tape en toutes lettres au
clavier.

1.Questions
1 UnserveurLinuxestilnaturellementcapablederouterdespaquetsIP?
2 Lacommandesysctlpermetdemodifierlecontenudecertainsfichiersdupseudofilesystem/proc.Commentle
paramtrequonluifournitestilconstruit?
3 Unsystmenepossdantquuneseulecarterseaudisposetildunetablederoutage?
4 SiondemandelaffichagedesiptablesaveclacommandeiptablesL,quelletableiptablesestaffiche?
5 Aveclesiptables,commentpeutonappliqueruneconfigurationparticulireautraficdestinationdunsystme
diffrentedelaconfigurationappliqueautraficroutparlemmesystme?
6 Danslecadredesiptables,quesepassetilsiaucunedesrglesconfigurespourunechanenestsatisfaite?
7 EnquoileNATapportetiluneprotectionrudimentaireauxrseauxprivs?
8 Lacrationmanuellederglesiptablesestfastidieuse,etonnepeutpastoujoursprvoirquionvoudrafiltrer.
Commentautomatiserlacrationderglespourbloquerlesimportuns?
9 QuesontBugtraqetCERT?
10 EnquoiOpenVASestilbienadaptlaprotectiondeparcsinformatiques?

2.Rponses
1 UnserveurLinuxestilnaturellementcapablederouterdespaquetsIP?
Oui, mais cette fonction est toujours dsactive par dfaut. On peut lactiver en modifiant le contenu du
fichier/proc/sys/net/ipv4/ip_forward(valeur1).
2 Lacommandesysctlpermetdemodifierlecontenudecertainsfichiersdupseudofilesystem/proc.Commentle
paramtrequonluifournitestilconstruit?
En prcisant le fichier de la sousarborescence de /proc/sys quon souhaite modifier. ceci prs que le sparateur
hirarchiquenestplusleslashmaislepoint.Lefichier/etc/sysctl.confestluchaquedmarrageparlacommande
sysctlpouruneapplicationpermanentedecesparamtres.
3 Unsystmenepossdantquuneseulecarterseaudisposetildunetablederoutage?
Oui,biensr.ToutsystmeIPdisposedesatablederoutage.Silesystmenestpasunrouteurvident(connect
plusieurs rseaux), il doit nanmoins tre capable de router les paquets vers leurs rseaux de destination. Au
minimum,latablederoutagecontientunerfrenceaurseaulocal,etladfinitiondelaroutepardfaut(passerelle
pardfaut).
4 SiondemandelaffichagedesiptablesaveclacommandeiptablesL,quelletableiptablesestaffiche?
La table filter. Cela tombe bien, cest souvent celle que lon souhaite observer. Ce comportement est toutefois
trompeur,denombreuxadministrateursvontmmejusqu ignorer lexistencedelatablenatquipeuttreaffiche
parlacommandeiptablestnatL.
5 Aveclesiptables,commentpeutonappliqueruneconfigurationparticulireautraficdestinationdunsystme
diffrentedelaconfigurationappliqueautraficroutparlemmesystme?
Il faut pour cela grer des rgles diffrentes selon les chanes configurer. La chane INPUT rfrence le trafic
destinationdusystmeluimme,alorsquelachaneFORWARDtraiteletraficroutautraversdusystme.
6 Danslecadredesiptables,quesepassetilsiaucunedesrglesconfigurespourunechanenestsatisfaite?
Cest la rgle par dfaut qui est applique. Les rgles par dfaut sont dcrites dans les politiques iptables (policies),
dfiniesavecleparamtreP.Ilexisteunepolicyparchane.
7 EnquoileNATapportetiluneprotectionrudimentaireauxrseauxprivs?
Dans le cadre dun fonctionnement en NAT, les adresses des machines prives sur le rseau ne dpassent pas le
routeur NAT (elles sont systmatiquement remplaces par son adresse publique), cela assure donc une certaine
discrtionaurseaupriv.Deplus,unattaquantquivoudraitdelextrieurpntrerunrseauprivnesauraitpas
trouverlecheminverscerseau,lesadressesprivestantnonroutablessurinternet.

ENI Editions - All rights reserved - Samuel CASAL

- 1-

8 Lacrationmanuellederglesiptablesestfastidieuse,etonnepeutpastoujoursprvoirquionvoudrafiltrer.
Commentautomatiserlacrationderglespourbloquerlesimportuns?
Le logiciel fail2ban a pour objet de crer des rgles dynamiquement, par exemple pour crer une rgle qui interdirait
touttraficpourunutilisateurdistantquiauraiteutroischecssuccessifspouruneouverturedesessionSSH.
9 QuesontBugtraqetCERT?
Des organismes de recherche et de veille scuritaire. Ils publient les annonces et donnes techniques des
vulnrabilitsdcouvertes.
10 EnquoiOpenVASestilbienadaptlaprotectiondeparcsinformatiques?
Son architecture clientserveur permet de centraliser sa configuration et son administration sur un serveur, et les
composantsclientssurtouteslesmachinesduparcprotger.

- 2-

ENI Editions - All rights reserved - Samuel CASAL

Travauxpratiques
Internetestunmondesanspiti.Soucieuxdeprotgervosserveursetaussiderespecterlesbonsusagesenterme
descurit,vousdcidezdecrerunrseauprivstrictementisoletautraficapplicatifprotgparunparefeu.

1.Restructurationdurseaulocal

a.Ajoutduneinterfacerseausurleserveurbeta
Commandesutiles

Manipulationsliesaulogicieldevirtualisation

ifconfig

lspci

shutdown

Manipulations
1.

Arrtezleserveurbetaavecunecommandeapproprie.

2.

DepuislinterfacedegestionVirtualBoxOSE,slectionnezleserveurbeta,puisdans
longletDtails,cliquezsurRseau.

3.

DanslongletCarte2,cliquezsurActiverlacarterseau.DroulezensuiteMode
daccsrseau,choisissezRseauinterneetrenseignezlechampNomaveclenom
intnetquireprsenteraunrseaulocalpriv,accessibleauxseulesmachinesvirtuelles
connectescerseaupriv.

4.

Dmarrezleserveurbeta.
ENI Editions - All rights reserved - Samuel CASAL

- 1-

5.

Vrifiezaveclescommandesappropriesquunenouvelleinterfaceestreconnueparle
systme.

Rsumdescommandesetrsultatlcran
Arrtdusystme:
[root@beta ~]# shutdown -h now
( ... Arrt du systme ... )
Vrificationdelinterface :
[root@beta ~]# lspci
00:00.0 Host bridge: Intel Corporation 440FX - 82441FX PMC [Natoma] (rev 02)
00:01.0 ISA bridge: Intel Corporation 82371SB PIIX3 ISA [Natoma/Triton II]
00:01.1 IDE interface: Intel Corporation 82371AB/EB/MB PIIX4 IDE (rev 01)
00:02.0 VGA compatible controller: InnoTek Systemberatung GmbH VirtualBox Graphics
Adapter
00:03.0 Ethernet controller: Advanced Micro Devices [AMD] 79c970 [PCnet32 LANCE] (rev 40)
00:04.0 System peripheral: InnoTek Systemberatung GmbH VirtualBox Guest Service
00:05.0 Multimedia audio controller: Intel Corporation 82801AA AC97 Audio Controller
(rev 01)
00:07.0 Bridge: Intel Corporation 82371AB/EB/MB PIIX4 ACPI (rev 08)
00:08.0 Ethernet controller: Advanced Micro Devices [AMD] 79c970 [PCnet32 LANCE] (rev 40)
[root@beta ~]#
[root@beta ~]# ifconfig
eth0
Link encap:Ethernet HWaddr 08:00:27:E4:07:62
inet adr:192.168.200.102 Bcast:192.168.200.255 Masque:255.255.255.0
adr inet6: fe80::a00:27ff:fee4:762/64 Scope:Lien
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:51 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 lg file transmission:1000
RX bytes:0 (0.0 b) TX bytes:6713 (6.5 KiB)
Interruption:10 Adresse de base:0xd020
eth1

Link encap:Ethernet HWaddr 08:00:27:E4:6D:E5


adr inet6: fe80::a00:27ff:fee4:6de5/64 Scope:Lien
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:34 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 lg file transmission:1000
RX bytes:0 (0.0 b) TX bytes:6689 (6.5 KiB)
Interruption:9 Adresse de base:0xd240

lo

Link encap:Boucle locale


inet adr:127.0.0.1 Masque:255.0.0.0
adr inet6: ::1/128 Scope:Hte
UP LOOPBACK RUNNING MTU:16436 Metric:1
RX packets:9846 errors:0 dropped:0 overruns:0 frame:0
TX packets:9846 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 lg file transmission:0
RX bytes:5485700 (5.2 MiB) TX bytes:5485700 (5.2 MiB)

[root@beta ~]#

b.AdressesIPduserveurbeta
Commandesetfichiersutiles

- 2-

/etc/sysconfig/networkscripts/ifcfgethx

ifconfig

ENI Editions - All rights reserved - Samuel CASAL

ifup

route

vi

Manipulations
1.

Trouvezlefichierdeconfigurationdelinterfaceeth1.

2.

ditezleetrenseignezlesparamtresIPsuivants :192.168.199.1255.255.255.0.

3.

Activezlinterfaceeth1.

4.

Vrifiezquevotreconfigurationabientpriseencompteparlesystme.

5.

Vrifiezqueladressedelinterfaceeth0estconserveetquelapasserellepardfaut
napastmodifie(cequiauraitpuarriversivousaviezmalencontreusement
renseignunepasserellepardfautdanslefichierifcfgeth1).

Rsumdescommandesetrsultatlcran
Fichier/etc/sysconfig/networkscript/ifcfgeth1modifi:
# Advanced Micro Devices [AMD] 79c970 [PCnet32 LANCE]
DEVICE=eth1
BOOTPROTO=none
ONBOOT=yes
HWADDR=08:00:27:e4:6d:e5
IPADDR=192.168.199.1
NETMASK=255.255.255.0
TYPE=Ethernet
Activationdelinterfaceeth1 :
[root@beta network-scripts]# ifup eth1
[root@beta network-scripts]#
Vrificationdelaconfigurationpoureth1 :
[root@beta network-scripts]# ifconfig eth1
eth1
Link encap:Ethernet HWaddr 08:00:27:E4:6D:E5
inet adr:192.168.199.1 Bcast:192.168.199.255 Masque:255.255.255.0
adr inet6: fe80::a00:27ff:fee4:6de5/64 Scope:Lien
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:92 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 lg file transmission:1000
RX bytes:0 (0.0 b) TX bytes:15631 (15.2 KiB)
Interruption:9 Adresse de base:0xd240
[root@beta network-scripts]#
Vrificationdelaconfigurationlapasserellepardfautetpourlinterfaceeth0 :
[root@beta network-scripts]# ifconfig eth0
eth0
Link encap:Ethernet HWaddr 08:00:27:E4:07:62
inet adr:192.168.200.102 Bcast:192.168.200.255 Masque:255.255.255.0
adr inet6: fe80::a00:27ff:fee4:762/64 Scope:Lien
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:4 errors:0 dropped:0 overruns:0 frame:0
TX packets:51 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 lg file transmission:1000
RX bytes:1042 (1.0 KiB) TX bytes:6713 (6.5 KiB)
Interruption:10 Adresse de base:0xd020
[root@beta network-scripts]# route -n

ENI Editions - All rights reserved - Samuel CASAL

- 3-

Table de routage IP du noyau


Destination
Passerelle
192.168.199.0
0.0.0.0
192.168.200.0
0.0.0.0
169.254.0.0
0.0.0.0
0.0.0.0
192.168.200.254
[root@beta network-scripts]#

Genmask
255.255.255.0
255.255.255.0
255.255.0.0
0.0.0.0

Indic
U
U
U
UG

Metric
0
0
0
0

Ref
0
0
0
0

Use
0
0
0
0

Iface
eth1
eth0
eth1
eth0

c.Gestionduclientenrseaupriv
Commandesutiles

Manipulationsliesaulogicieldevirtualisation

CommandesgraphiquesdegestionderseaudeladistributionUbuntu

ifconfig

ping

Manipulations
1.

DanslesmenusVirtualboxdelastationcliente,dveloppezPriphriquespuiscliquez
surCartesrseau.

2.

DanslongletCarte1,droulezModedaccsrseau,etchoisissezRseauinterneet
slectionnezvotrerseauinterneintnet.

3.

DanslastationdetravailUbuntu,dveloppezlemenuSystme,puisPrfrences,et
choisissezConnexionsrseau.

4.

DanslafentreConnexionsrseau,modifiezlaconnexionFixeeth0cre
prcdemment.

5.

DanslongletParamtresIPv4,modifiezladresseIPen192.168.199.50
255.255.255.0.Utilisezlapasserellepardfaut192.168.199.1(serveurbeta),etutilisez
provisoirementleserveurDNSdevotrefournisseurdaccs.

6.

Vrifiezenlignesdecommandeslavaliditdevotreconfigurationparunpingsur
ladressepriveduserveurbeta(sincessaire,ractivezlaconfigurationFixeeth0en
cliquantdessusdepuislabarredemenusuprieureicnerseauenhautdroite).

Rsumdescommandesetrsultatlcran
Vrificationdelaconnectivit :
toto@ubuntu:~$ ifconfig eth0
eth0
Link encap:Ethernet HWaddr 08:00:27:7b:c8:79
inet adr:192.168.199.50 Bcast:192.168.199.255 Masque:255.255.255.0
adr inet6: fe80::a00:27ff:fe7b:c879/64 Scope:Lien
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
Packets reus:27984 erreurs:0 :0 overruns:0 frame:0
TX packets:92252 errors:5 dropped:0 overruns:0 carrier:5
collisions:0 lg file transmission:1000
Octets reus:12348291 (12.3 MB) Octets transmis:9378271 (9.3 MB)
Interruption:10 Adresse de base:0xd020
toto@ubuntu:~$ ping 192.168.199.1
PING 192.168.199.1 (192.168.199.1) 56(84) bytes of data.
64 bytes from 192.168.199.1: icmp_seq=1 ttl=64 time=14.2 ms
64 bytes from 192.168.199.1: icmp_seq=2 ttl=64 time=1.62 ms
64 bytes from 192.168.199.1: icmp_seq=3 ttl=64 time=1.46 ms
^C
--- 192.168.199.1 ping statistics --3 packets transmitted, 3 received, 0% packet loss, time 2007ms

- 4-

ENI Editions - All rights reserved - Samuel CASAL

rtt min/avg/max/mdev = 1.466/5.789/14.274/6.000 ms


toto@ubuntu:~$

d.Gestionduserveuralphaenrseaupriv
Commandesetfichiersutiles

Manipulationsliesaulogicieldevirtualisation

Fichier/etc/network/interfaces

ifconfig

ifup

ifdown

ping

Manipulations
1.

DanslesmenusVirtualboxduserveurbeta,dveloppezPriphriquespuiscliquezsur
Cartesrseau.

2.

DanslongletCarte1,droulezModedaccsrseau,choisissezRseauinterneet
slectionnezvotrerseauinterneintnet.

3.

Danslefichierdeconditionrseau,modifiezladresseIPdelinterfaceeth0en
192.168.199.10255.255.255.0.Utilisezlapasserellepardfaut192.168.199.1(serveur
beta)etutilisezprovisoirementleserveurDNSdevotrefournisseurdaccs.

4.

Rechargezlaconfigurationdelinterfaceeth0.

5.

Vrifiezenlignesdecommandeslavaliditdevotreconfigurationparunpingsur
ladressepriveduserveurbeta.

Rsumdescommandesetrsultatlcran
Fichier/etc/network/interfacesmodifis :
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).
# The loopback network interface
auto lo
iface lo inet loopback
# The primary network interface
allow-hotplug eth0
iface eth0 inet static
address 192.168.199.10
netmask 255.255.255.0
gateway 192.168.199.1
alpha:/etc/network#
Vrificationdelaconnectivit :
alpha:/etc/network# ifdown eth0
alpha:/etc/network# ifup eth0
alpha:/etc/network# ifconfig eth0
eth0
Link encap:Ethernet HWaddr 08:00:27:9c:6e:9f
inet adr:192.168.199.10 Bcast:192.168.199.255

Masque:255.255.255.0

ENI Editions - All rights reserved - Samuel CASAL

- 5-

adr inet6: fe80::a00:27ff:fe9c:6e9f/64 Scope:Lien


UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:9 errors:0 dropped:0 overruns:0 frame:0
TX packets:159 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 lg file transmission:1000
RX bytes:714 (714.0 B) TX bytes:22494 (21.9 KiB)
Interruption:10 Adresse de base:0xd020
alpha:/etc/network# ping 192.168.199.1
PING 192.168.199.1 (192.168.199.1) 56(84) bytes of data.
64 bytes from 192.168.199.1: icmp_seq=1 ttl=64 time=0.585 ms
64 bytes from 192.168.199.1: icmp_seq=2 ttl=64 time=0.810 ms
64 bytes from 192.168.199.1: icmp_seq=3 ttl=64 time=1.23 ms
^C
--- 192.168.199.1 ping statistics --3 packets transmitted, 3 received, 0% packet loss, time 2006ms
rtt min/avg/max/mdev = 0.585/0.877/1.236/0.269 ms
alpha:/etc/network#

2.ConfigurationdunrouteuretparefeusurleserveurB
Voustesmaintenantrassur :votrerseauprivestdsormaisbienprotgderrireleserveurB.Dautantplus
protgqueceserveurnonconfigurnelaissepasseraucuntrafic.Souhaitanttoutdemmepouvoirtravaillerun
peu,vousdcidezdegrerlaconnectivitentrelerseauprivetinternet.

a.ConfigurationduNAT
Commandesetfichiersutiles

/etc/sysctl.conf

/proc/sys/net/ipv4/ip_forward

cat

iptables

ping

sysctl

Manipulations
1.

Sansutiliserlacommandeecho,activezleroutagesurleserveurbeta.

2.

Depuislastationdetravail,faitesunpingsurlinterfacepubliqueduserveurbeta.

3.

Vrifiezqueleroutageabientprisencompteenconsultantlefichierappropridans
lefilesystem/proc.

4.

Faitesensortequeleroutagesoitactivsystmatiquementchaquedmarragedu
serveurbeta.

5.

VrifiezqueleserveurbetanefaitpasdeNAT :depuislastationdetravail,faitesun
pingsuruneadressedurseaupublic(lapasserelleinternetparexemple).

6.

ConfigurezleNATsurleserveurbeta.

7.

Depuislastationdetravail,faitesunpingsuruneadressedurseaupublic(la
passerelleinternetparexemple).

Rsumdescommandesetrsultatlcran
- 6-

ENI Editions - All rights reserved - Samuel CASAL

Configurationduroutagesurleserveurbeta :
[root@beta ~]# cat /proc/sys/net/ipv4/ip_forward
0
[root@beta ~]# sysctl net.ipv4.ip_forward=1
net.ipv4.ip_forward = 1
[root@beta ~]# cat /proc/sys/net/ipv4/ip_forward
1
[root@beta ~]#
Fichier/etc/sysctl.confmodifi :
# Controls IP packet forwarding
net.ipv4.ip_forward = 1
(...)
ConfigurationduNATsurleserveurbeta :
[root@beta ~]# iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
[root@beta ~]#
Vrificationdepuislastationdetravail :
toto@ubuntu:~$ ping 192.168.200.254
PING 192.168.200.254 (192.168.200.254) 56(84) bytes of data.
64 bytes from 192.168.200.254: icmp_seq=1 ttl=63 time=8.45 ms
64 bytes from 192.168.200.254: icmp_seq=2 ttl=63 time=2.82 ms
64 bytes from 192.168.200.254: icmp_seq=3 ttl=63 time=2.43 ms
^C
--- 192.168.200.254 ping statistics --3 packets transmitted, 3 received, 0% packet loss, time 2006ms
rtt min/avg/max/mdev = 2.434/4.572/8.459/2.753 ms
toto@ubuntu:~$
Lanavigationinternetdoitgalementtrepossible(ilpeuttrencessairededsactiverlutilisationdunserveur
proxy).

b.Politiquedefiltragesvre
Lerseaulocalestdsormaiscapabledenaviguerlibrementsurinternet.Toutefois,cestadedelaconfiguration,
nimportequelprotocoleapplicatifpeutcirculerlibrement,etcelanecorrespondpasvosobjectifs.Vousdcidezde
svir.
Commandesutiles

iptables

ping

Manipulations
1.

Dclarezunepolitiquederejetpourtouttraficentrantdansleserveurbeta.

2.

Dclarezunepolitiquederejetpourtouttraficsortantduserveurbeta.

3.

Dclarezunepolitiquederejetpourtouttrafictraversantleserveurbeta.

4.

Vrifiezlaconfigurationactive.

5.

Constatezquetouttraficestdsormaisimpossible.

Rsumdescommandesetrsultatlcran
Applicationdespolitiques :

ENI Editions - All rights reserved - Samuel CASAL

- 7-

[root@beta ~]# iptables -P INPUT DROP


[root@beta ~]# iptables -P OUTPUT DROP
[root@beta ~]# iptables -P FORWARD DROP
[root@beta ~]#
[root@beta ~]# iptables -L
Chain INPUT (policy DROP)
target
prot opt source

destination

Chain FORWARD (policy DROP)


target
prot opt source

destination

Chain OUTPUT (policy DROP)


target
prot opt source
[root@beta ~]#

destination

Essaidepingdepuislastationdetravail :
toto@ubuntu:~$ ping 192.168.200.254
PING 192.168.200.254 (192.168.200.254) 56(84) bytes of data.
^C
--- 192.168.200.254 ping statistics --10 packets transmitted, 0 received, 100% packet loss, time 9011ms
toto@ubuntu:~$

c.Autorisationdutraficutile
Soucieuxderevenirunjustequilibre,vousdcidezdautoriserlesprotocoleshttp,httpsetdns.
Commandesutiles

iptables

Manipulations
1.

AutorisezletraficretourpourtoutecommunicationdjtabliesurlachaneFORWARD.

2.

Autorisezletraficverstouteadresse(adressepubliquesurinternet)pourleprotocole
http(TCP80).

3.

Autorisezletraficverstouteadresse(adressepubliquesurinternet)pourleprotocole
https(TCP443).

4.

Autorisezletraficverstouteadresse(adressepubliquesurinternet)pourleprotocole
dnsclientserveur(UDP53).

5.

Vrifiezdepuislastationclientequelanavigationinternetestdsormaispossible
(noubliezpasdereconfigurerlenavigateurpourquilseconnectedirectement
internetsanspasserparunserveurproxy).

6.

Vrifiezdepuislastationclientequelespingsnepassentpas(aucunmomentona
autorisleurcirculation,etlapolitiquedebaseinterdittouttraficnonexplicitement
autoris).

Rsumdescommandesetrsultatlcran
Configurationdesrglesiptables :
[root@beta
[root@beta
[root@beta
[root@beta
[root@beta

- 8-

~]#
~]#
~]#
~]#
~]#

iptables
iptables
iptables
iptables

-A
-A
-A
-A

FORWARD
FORWARD
FORWARD
FORWARD

-m
-p
-p
-p

state --state ESTABLISHED,RELATED -j ACCEPT


tcp --dport 80 -j ACCEPT
tcp --dport 443 -j ACCEPT
udp --dport 53 -j ACCEPT

ENI Editions - All rights reserved - Samuel CASAL

d.Gestionsousformedeservice
Pour pouvoir grer confortablement votre filtrage de trafic, vous dcidez de crer un service qui sera lanc
automatiquementaudmarragedusystme.
Commandesutiles

chmod

ln

vi

Manipulations
1.

Crezunfichierdescript/opt/scripts/pf0.shquiannuletouteformedefiltrageet
rtablitunepolitiquepermissive.

2.

Crezunfichierdescript/opt/scripts/pf1.shquicontientvotrepolitiqueetvosrgles
defiltrage.Positionnezdesdroitsrestrictifssurcefichierpourviterlesindiscrtions.

3.

Crezunscriptdegestiondeservicenormalisparefeu.

4.

CrezunlienS10parefeudanslerpertoirecorrespondantvotreniveaudexcution
pardfaut.Celienprovoqueralelancementduservicechaquedmarragedu
systme.

5.

Noubliezpasquecesfichiersdoiventtreexcutables.

Rsumdescommandesetrsultatlcran
Fichierdescriptexcutable/opt/scripts/pf0.sh :
#!/bin/bash
iptables -F
iptables -P INPUT ACCEPT
iptables -P OUTPUT ACCEPT
iptables -P FORWARD ACCEPT
Fichierdescriptexcutable/opt/scripts/pf1.sh :
#!/bin/bash
iptables -P INPUT DROP
iptables -P OUTPUT DROP
iptables -P FORWARD DROP
iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A FORWARD -p tcp --dport 80 -j ACCEPT
iptables -A FORWARD -p tcp --dport 443 -j ACCEPT
iptables -A FORWARD -p udp --dport 53 -j ACCEPT
Fichierexcutabledegestiondeservice/etc/init.d/parefeu :
#!/bin/bash
case $1 in
start)
/opt/scripts/pf1.sh
;;
stop)
/opt/scripts/pf0.sh
;;
status)
iptables -L
;;
esac

ENI Editions - All rights reserved - Samuel CASAL

- 9-

Modificationdesdroitssurlesfichiersdescripts :
[root@beta
[root@beta
total 8
-rwx------rwx-----[root@beta
[root@beta

scripts]# chmod 700 *


scripts]# ls -l
1 root root 102 sep 2 18:22 pf0.sh
1 root root 298 sep 2 18:22 pf1.sh
scripts]# chmod +x /etc/init.d/parefeu
scripts]#

Crationdunliensymboliquepourleniveaudexcutionencours :
[root@beta
N 3
[root@beta
[root@beta
[root@beta

- 10 -

init.d]# runlevel
init.d]# cd /etc/rc3.d
rc3.d]# ln -s ../init.d/parefeu S10parefeu
rc3.d]#

ENI Editions - All rights reserved - Samuel CASAL

Prrequisetobjectifs
1.Prrequis
LesconnaissancesacquiseslorsdelacertificationLPIniveau1,notamment:

ditiondefichiers.
FonctionnementgnralduserveurX.

2.Objectifs
lafindecechapitre,vousserezenmesurede:

GrerlesauthentificationsSSH.
ConnatrelefonctionnementdesagentsSSH.
OuvrirdessessionsdistantesavecSSH.
Copierdesfichiersavecscp.
tablirdestunnelsapplicatifsavecSSH.
RenvoyerdessessionsX11avecSSH.
ConnatrelesmodesdefonctionnementOpenVPN.
GrerlesauthentificationsOpenVPNparsecretpartag.
tabliruntunnelOpenVPN.

ENI Editions - All rights reserved - Samuel CASAL

- 1-

OpenSSH
1.UtilisationsdeOpenSSH
LessessionsinteractivessurlessystmesUnixontdabordtconduitespardesterminauxpassifs,quisebornaient
grer les entres et sorties, connectes une unit centrale par un port srie. Les frappes au clavier taient
envoyes brutes lunit centrale, et lunit centrale envoyaient en retour des ordres daffichage lcran. Les
ordinateurs tant alors hors de prix, le cot relativement modeste des terminaux passifs permettait de mutualiser
lutilisationdunordinateur.
AveclagnralisationdesrseauxIPetladmocratisationdesordinateurspersonnels,ladministrationdistantedes
systmes Unix sest faite ensuite par le protocole telnet. Le principe est rigoureusement le mme quavec les
terminauxpassifs,sicenestquelesfrappesauclavieretordresdaffichagesontenvoysdansdespaquetstelnet
transportsparIP.Leproblmeestquelagestiondelascuritavecleprotocoletelnetestlargementinsuffisante:
uneauthentificationestraliseentexteclair,etaucuneconfidentialitnestapporteauxchangesentreleclientet
leserveur.
LeprotocoleSSHviseapporterdesservicesdauthentificationetdeconfidentialitdeschangesentreclientset
serveur pour le transport scuris de donnes. Il est dans la plupart des cas simples utilis en tant que telnet
scuris mais il est aussi capable dassurer le transport scuris dautres protocoles applicatifs. Limplmentation
opensourceduprotocoleSSHestOpenSSH ,cretmaintenuparlesmembresduprojetOpenBSD.

2.Gestiondesauthentifications
a.Authentificationparmotdepasse
Lutilisation la plus simple du client SSH, qui consiste ouvrir une session shell distante de faon scurise sur
rseauIP,exploiteunmodedauthentificationsimple,savoirutiliseruncomptelocalsurleserveuretdemanderau
client de sauthentifieraveclenometlemotdepassedececompteprsentsurleserveur.Lemotdepasseest
alors vrifi et lauthentification est valide. Toutefois, cette phase dauthentification par mot de passe sert
uniquementvrifierlavaliditduclient.Lequelclientpeutsontouravoirdesdoutessurlidentitetlalgitimit
du serveur : en clair, suisje bien en train de parler mon serveur, ou un faux serveur qui exploiterait les
commandes tapes pour rcuprer des informations sur mes systmes ? Pour viter tout risque dusurpation du
serveur, le client ralise une vrification de lidentit du serveur la premire connexion. En fait, une empreinte
numriqueduserveurestralise,etaprsvalidationdecetteempreinteparleclient,elleestconservedansun
fichierappelknown_hosts,prsentdansunrpertoirecach.sshdanslerpertoirepersonneldelutilisateur.
Exempledefichierknown_hosts
Lefichierknown_hostsprsenteune(trslongue)ligneparserveurconnu.
beta:~# cat .ssh/known_hosts
|1|LPx02U8nHnkSb0czyqVrdXPcW04=|jS0/QdS0HydzPZj8QXxHXC4j6EM= ssh-rsa
AAAAB3NzaC1yc2EAAAABIwAAAQEAv+kXth0/RSAroNfqeV+IkEMetdWRWYBvbNOqUDDSL/fLylBip9le40xfTe1j
FXuYqAWR+mQMo8Pg37/PUWeetlBCvG4F486UbqUn2Ol5B/1GZqzG7nvbOLcp7CDr6vmqgrk2QZvUZcohWc4L9S6z
zvk3EmQ1AMa+BKo4m+FCG9E1mK4bFtvchVqL1amzGg1jd2QuTzMGNibTdrEi9gSr2TrJ5Se9AhNQkIzZPvrqvVAD
itiggcYNetxaNkPKfW8DdClq+qOVVAQuWnZiO63Mp/0+b+JEutFgNsX8mkt9nx34Yws7s3BnIuT7oU+shxnuy/vj
5But4uUry5tFaTxXCw==
beta:~#

b.Authentificationparcls
Une mthode sans doute plus fiable pour authentifier les connexions SSH consiste utiliser des cls
dauthentification stockes localement sur le disque de lutilisateur. Lauthentification par cls ne dispense pas
obligatoirement de la saisie dunmotdepasse,maisgarantielutilisateur que la machine distante est bien celle
aveclaquelleonveuttravailleretnonpasuneusurpatrice.
Crationdelapairedeclssurleclient
Pour que le serveur puisse tre formellement identifi, il doit disposer de la cl publique du client. Cette cl lui
permettra de crypter des donnes dchiffrables par le seul client propritaire de la cl prive correspondante. Il
convientdoncdansunpremiertempsdegnrercetteclpubliquesurleclient.Commeilsagit de cryptographie
asymtrique,lagnrationduneclpubliqueestobligatoirementsimultanecelledelaclprivecorrespondante.
ENI Editions - All rights reserved - Samuel CASAL

- 1-

Lacommandesshkeygenpermetdecrercesclspubliquesetprives.
Gnrationduncoupledecls
ssh-keygen -t algorithme
Oalgorithmereprsentelalgorithmeemploypourlagnrationdesclsduclient.IlpeutsagirdeRSA(version1
ou 2 de SSH) ou DSA (version 2 de SSH). RSA et DSA sont deux algorithmes de cryptage asymtriques souvent
utilisspourlauthentification.Silalgorithmenestpasprcis,lavaleurpardfautRSAestemploye.
Gnrationduncoupledeclsaveclesvaleurspardfaut
On gnre ici un couple de cls avec lalgorithme par dfaut (RSA) pour lutilisateur tata. La reprsentation graphique
(randomart)delaclnestpassystmatiqueetdpenddelaversiondelacommande.
tata@stotion:~$ ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/home/tata/.ssh/id_rsa):
Created directory /home/tata/.ssh.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/tata/.ssh/id_rsa.
Your public key has been saved in /home/tata/.ssh/id_rsa.pub.
The key fingerprint is:
f3:5c:f1:34:6c:1b:a6:4c:5b:c4:6d:30:48:01:76:f4 tata@stotion
The keys randomart image is:
+--[ RSA 2048]----+
|
o+=++o |
|
. ..+..o|
|
o E. |
|
o X + |
|
S
= o |
|
+ .
|
|
o
|
|
|
|
|
+-----------------+
tata@stotion:~$
La commande sshkeygen provoque la cration de deux fichiers, par dfaut dans un rpertoire .ssh situ
directementdanslerpertoirepersonneldelutilisateur.Cesdeuxfichierssontpardfautid_rsapourlaclprive
etid_rsa.pubpourlaclpubliquecorrespondante.Mmesianestpasobligatoire,ilestvivementrecommandde
protgerlaclpriveparunmotdepassequiserademandlorsdesacration.
Contenusdefichiersdeclsprivesetpubliques
Onobservelecontenudesfichiersdeclsprivesetpubliques.Notezquelesdroitspardfautsontlimitssurlefichierde
clprive,etouvertssurlefichierdeclpublique.
tata@stotion:~/.ssh$ ls -l
total 8
-rw------- 1 tata tata 1743 2010-09-03 09:38 id_rsa
-rw-r--r-- 1 tata tata 394 2010-09-03 09:38 id_rsa.pub
tata@stotion:~/.ssh$ cat id_rsa.pub
ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAs0jrYKKQKiS4f/cCQMhOcc2WTMmGrbXXv3oyz67KUwkm4JumEU1
YkOaNi+WM4nVbkzC7rkUnlXQMxu/EpZLoraNySMHZjUgYiWiRuM4pI0z/atPfjVlwPtGzfUKlqSsP4NCark/9G0
WlMgEXlgpEdeJDmMBRuj98PJjOI/cRGRTgR6JEoevFWMPTDRpoBix3YizVY+dA+unJQPaNKWhoDnCZg7xWi+ZRg
T2Q1PcbqYKt4xLio+Eei0dvlgu5r5hSvymOdWbXwykywoloIxnzIPiUe7CAxm+KCBA23LQw73pREd1cglS6Gd23
b5Byv/oI6etqs4WOmcJa40Ymvtfbjw== tata@stotion
tata@stotion:~/.ssh$ cat id_rsa
-----BEGIN RSA PRIVATE KEY----Proc-Type: 4,ENCRYPTED
DEK-Info: DES-EDE3-CBC,B08C4C3C4B021A76
TzO6ofHOv8sVRDoPj+o7dXfPuXDJaOmQSGhDkWUTC9iGHYnGdHgsig5EKWEez0Zj
YucF9doTpLCv9UsRac6WHRjlQb7AUjk9phEjrKYW4gAfoXNcFY5IiC7fca9i8NQk
YCj4mtzmbJAFc0W9Ax8g0UzZ8bwElIacI28pAdSvVqVHQ6omnVBoWhXhgWTUZaKp

- 2-

ENI Editions - All rights reserved - Samuel CASAL

2XbY5gJ7miKW3Y9IPZ3JLukB3j4rTZ0bu8j/UedyXuogpZgYF2vW0GfvtBbfP31F
(...)
RZfBnf+3+KxTvnAtJsMSZc4Glg+9Gch9V+mjU2SfW+T+bUnYLB/6Mpo1aq/akj3r
0G6w12SgjqiOuuXnsCdU8Ox1olCqiHFrk0DyPmwoxcSQygpm2r7FIwL4MPxbELJO
zfk+0wJOmsUANJzeBKd4LXmZykYsAOmf3zZNlS+iU/ZhCBqFmn3/5w==
-----END RSA PRIVATE KEY----tata@stotion:~/.ssh$
chaque connexion, le serveur regarde dans le rpertoire local de lutilisateur essayant de se connecter si un
rpertoire.ssh/authorized_keysexiste,etsilcontientlaclpubliqueduclient.Sicestlecas,lauthentificationdu
serveur peut tre ralise par le client. Le client devra donc copier son fichier de cl publique dans le rpertoire
~/.ssh.authorized_keysduserveurparlemoyendesonchoix.(clusb,copierseau).

c.LagentSSH
PourlesadministrateursayantfrquemmentbesoindaccderplusieursmachinesparSSH,unagentSSH,lanc
par la commande sshagent, permet de conserver en mmoire les cls prives utilises pour les authentifications.
Lesclsprivessonttransmisesunefoispourtouteslagentparlacommande sshadd.Siunmotdepassede
protection de la cl est ncessaire, il est demand cette occasion. Les cls sont ensuite disponibles sans
interventiondirectedelutilisateurpourtouteauthentification.
La commande sshadd consulte le rpertoire .ssh dans le rpertoire personnel de lutilisateur et recherche
dventuelles cls prives dans les fichiers id_rsa,id_dsa, et identity. Les cls stockes par lagent SSH peuvent
treconsultesparlacommandesshaddl.
Lancementdelagentparlacommandesshagent
Lagentalimentedesvariableslorsdesonfonctionnementquipermettentdelegrerplusfacilement.
tata@stotion:~$ ssh-agent
SSH_AUTH_SOCK=/tmp/ssh-sRuvox4519/agent.4519; export SSH_AUTH_SOCK;
SSH_AGENT_PID=4520; export SSH_AGENT_PID;
echo Agent pid 4520;
tata@stotion:~$
sshagent :variablescourantes
SSH_AGENT_PID

Lepiddelagentencoursdexcution.

SSH_AUTH_SOCK

Lesocketcrparleprocessus.

PriseencomptedeclsparlagentSSH
LacommandesshaddsansargumentpermetlapriseencomptedesclsparlagentSSHquidoitnaturellementavoirt
lancauparavant.
tata@stotion:~$ ssh-add
Enter passphrase for /home/tata/.ssh/id_rsa:
Identity added: /home/tata/.ssh/id_rsa (/home/tata/.ssh/id_rsa)
tata@stotion:~$
Visualisationdesclsprivesstockesparlesshagent
Lacommandesshaddlpermetdevrifierquelesclsontbientprisesencompteparlagent.
tata@stotion:~$ ssh-add -l
2048 f3:5c:f1:34:6c:1b:a6:4c:5b:c4:6d:30:48:01:76:f4 tata@stotion (RSA)
2048 f3:5c:f1:34:6c:1b:a6:4c:5b:c4:6d:30:48:01:76:f4 /home/tata/.ssh/id_rsa (RSA)
tata@stotion:~$
LagentSSHestavanttoutunesolutiondegestiondeclsetnestpasdestincrerlesclsSSH.Lagent
SSHnepeuttravaillerquesurdesclsdjcresparlacommandesshkeygen.

ENI Editions - All rights reserved - Samuel CASAL

- 3-

3.Confidentialitdescommunications
a.SessioninteractiveavecSSH
Lasessioninteractiveestouvertedepuisunclientversunserveuravecuncompteutilisateurprsentsurleserveur.
OuverturedesessioninteractiveavecSSH
ssh utilisateur@adresse_serveur

SessioninteractiveavecSSH:optionetparamtres
utilisateur

Lecompteutilisateurprsentsurleserveuraveclequelonseconnecte.

adresse_serveur

LadresseIPduserveurauquelonseconnecte.

ExempledouverturedesessioninteractiveavecSSH
alpha:~# hostname ; whoami
alpha
root
alpha:~# ssh toto@192.168.0.11
toto@192.168.0.11s password:
toto@beta:~$ hostname ; whoami
beta
toto
toto@beta:~$

b.CopiedefichiersavecSSH
LacommandescpsappuiesurledmonSSHetpermetdecopierdesfichiersdefaonscuriseaveclesservices
dauthentificationetdeconfidentialitoffertsparSSH.Lacopiepeutsefaireduclientversleserveuroudepuisle
serveurversleclient.
Copiedefichierduclientversleserveuravecscp
scp fichier_local utilisateur@adresse_serveur:fichier_distant
Copiedefichierdepuisleserveurversleclientavecscp
scp utilisateur@adresse_serveur:fichier_distant fichier_local

Copiedefichiersavecscp :optionsetparamtres
fichier_local

Cheminrelatifouabsoludufichierlocaldevanttrecopi.

fichier_distant

Cheminabsoludufichierdistantdevanttrecopi.

utilisateur

Compteutilisateurexistantsurleserveurutilispourlacopie.

adresse_serveur

AdresseIPduserveurhbergeantleserviceSSH.

c.UtilisationdapplicationsdansdestunnelsSSH

- 4-

ENI Editions - All rights reserved - Samuel CASAL

La cration dun tunnel SSH permet de scuriser une communication clientserveur pour un protocole priori peu
scuris.OntablitdepuisleposteclientuntunnelSSHversleserveur,ettoutletraficentrecesdeuxmachinesest
scuris. Le serveur gnre alors un autre trafic non scuris vers la machine cible du trafic. Les connexions des
clientsquisouhaitentemprunterletunnelsefontenfaitversleclientSSH.

CrationduntunnelapplicatifSSH
ssh -L port:cible_trafic:port_cible utilisateur@serveur

TunnelSSH :optionsetparamtres
L

RenvoieunportlocalversunserveurSSH(tablissementdetunnel).

port

Leportlocalrenvoyer.

cible_trafic

AdresseIPounomdelamachinecibledutrafic.

port_cible

Portverslequelrenvoyerletraficsurlamachinecible.

utilisateur

Compteutilisateursurleserveurutilispourltablissementdutunnel.

serveur

AdresseIPounomduserveurextrmitdutunnel.

Danscefonctionnement,untunnelesttablientreunclientetunserveur.Surleclient,letraficdestinationduport
localestrenvoyautraversdutunnelSSHverslamachineciblesurleportcible.

d.RenvoidesessionsX11viaSSH
LeserveurXneprvoyantnativementpasdescuritfortepourseschangesclientsserveurs,unusagecourant
deSSHconsistefairecirculerdansuntunnelSSHdesapplicationsgraphiques.Ilfautpourcelaautoriserleserveur
SSHrelayercetypedetrafic,puisdutiliserunclientcompatibleaveccemodedefonctionnement.
Lautorisation du renvoi de sessions X via SSH se fait en modifiant le fichier de configuration du serveur
SSH/etc/ssh/sshd_config.
AutorisationdurenvoidesconnexionsXdanssshd_config.conf
X11Forwarding yes
ConnexiondepuisunclientSSH

ENI Editions - All rights reserved - Samuel CASAL

- 5-

ssh -X utilisateur@serveur
Outilisateurreprsentelecompteutilispourlaconnexion,etserveurladresseIPoulenomduserveurauquelon
seconnecte.LesapplicationsgraphiquespeuventalorstrelancesdepuislasessionSSHcliente.

- 6-

ENI Editions - All rights reserved - Samuel CASAL

OpenVPN
OpenVPNestunesolutionlogicielleopensourcedecrationdetunnelsscuriss(VPN).ContrairementauxVPNusuels,
ellenesappuiepassurIPSECmaissurSSL.Elleassuredesservicesdauthentification,deconfidentialitetdecontrle
dintgrit.

1.LesmodesdefonctionnementOpenVPN
LacertificationLPInexigepasuneconnaissanceapprofondiedOpenVPN,maisilfautnanmoinsconnatrelessentiel
desesmodesfonctionnels.

a.Authentification
Lesextrmitsdetunnel,cestdirelesdeuxmachinesassurantlecryptagedesfluxsortantsetledcryptagedes
flux entrants, doivent tre mutuellement authentifies. Il ne faut pas quil y ait de doute sur lauthenticit du
correspondant. OpenVPN supporte plusieurs modes dauthentification, mais les deux plus courants sont
lauthentification par cl partage, et lauthentification par certificats numrique X509. La premire solution est
infiniment plus simple mettre en uvre mais passe pour tre moins scurise. La seconde, si elle est
recommande, est toutefois beaucoup plus difficile dployer si on na pas une connaissance intime des
infrastructures cls publiques qui permettent de gnrer les certificats. Il est souvent prfrable davoir une
solutionclpartagequifonctionnecorrectementpluttquuneinfrastructureclpubliquebancalemalmaitrise
etdoncdifficilemaintenir.

b.Confidentialit
La confidentialit des communications est assure par la bibliothque OpenSSL. Le cryptage des changes est
assur par lalgorithme Blowfish par dfaut, mais les algorithmes symtriques courants sont utilisables (AES
notamment).

c.Fonctionnementrseau
Lemodedefonctionnementleplussimpleetleplusfacileapprhenderestlemodepointpointdanslequelles
deuxprotagonistesduvpnsontceuxquidoiventcommuniquerensembledefaonscurise :ilssontlesfoisles
extrmitsdetunneletlesextrmitsdetrafic.Ilestaussipossiblederelierdeuxrseauxentreeuxenmodesite
site.DeuxserveursOpenVPNassurentalorslamiseenplacedutunnel,maislesextrmitsdetraficsontlesdeux
rseauxrelis.LesserveursOpenVPNassurentalorsunrlederoutageentrelesrseaux.Enfin,ilestpossiblede
faireduVPNdaccsdistantdanslequelunemachineestrelieunrseau.
OpenVPNpeutfonctionnerenmodebridg,danscecasilmettraenconnexiondeuxrseauxdistants,unpeucomme
si on avait ajout un cble entre les switches des deux rseaux relier, ftil un cble de 200 km. Ce mode de
fonctionnementpeuttreconsidrcommeanecdotique,etlemoderoutestdeloinleplusutilis.
LespaquetscryptssonttransportsparUDPpardfautmaislutilisationdeTCPestpossible.

2.Crationduntunnelpointpoint
a.Gestiondelauthentification
La mthode dauthentification par cl partage suppose la prsence dun fichier de cl au format reconnu par
OpenVPN.Cefichierdoittreprsentsurleserveuretleclient,etdonccopiparunmoyenscuris.(clusb,scp)
Lefichierpeuttregnrdirectementparlacommandeopenvpn.
Gnrationdufichierdeclsecrte
openvpn --genkey --secret fichier_cle
Ofichier_clereprsentelefichiercontenantlaclsecrte.
Exempledegnrationdecl

ENI Editions - All rights reserved - Samuel CASAL

- 1-

Ongnreiciunfichierdeclsecrtequipermettralauthentificationentrelesmachinesauxextrmitsdutunnel.
alpha:/etc/openvpn# openvpn --genkey --secret secret.key
alpha:/etc/openvpn# cat secret.key
#
# 2048 bit OpenVPN static key
#
-----BEGIN OpenVPN Static key V1----ae11344ce37de44dcce059ecf9fa573f
a2694d5531bc7ed144a12a099c4ef8ce
(... )
1d37552cd4f29ff6b719588056a60777
579cc2aff71bf339f5293bf08f2ce4df
-----END OpenVPN Static key V1----alpha:/etc/openvpn#

b.Fichiersdeconfiguration
Lesfichiersdeconfigurationsetrouventpardfautdansunrpertoire/etc/openvpn.Silusageveutquelesfichiers
portentlesnomsclient.confetserveur.conf,nimportequelfichieraveclextension.confferalaffaire.
FormatdufichierdeconfigurationOpenVPN
remote serveur
dev tun
ifconfig IP_locale IP_distante
secret fichier_cle
route rseau_distant masque

FichierdeconfigurationOpenVPN :directivescourantes
remoteserveur

Surleclientuniquement.serveurindiquelenomouladresse
ipduserveurauquelconnecterleVPN.

devtun

Creunedencapsulationdetypetunnel(paropposition
lencapsulationethernetbridge).

ifconfigIP_localeIP_distante

tablitlesadresseslocalesetdistantesdesextrmitsde
trafic.Cesadressesserontvisiblessousformedinterface
virtuelledanslaconfigurationrseaudelhte.

secretfichier_cle

Indiquelefichiercontenantlaclpartage,identiquesurles
deuxmachines.

routerseau_distantmasque

Paramtreclient :indiqueladressedurseauprivderrirele
serveurpourqueletraficdestinationdecerseausoit
correctementroutparleVPN.

ExempledefichiersdeconfigurationOpenVPN
Fichierdeconfigurationctserveur.
alpha:/etc/openvpn# cat server.conf
dev tun
ifconfig 10.8.0.1 10.8.0.2
secret secret.key
Fichierdeconfigurationctclient.
beta:/etc/openvpn# cat client.conf
remote alpha

- 2-

ENI Editions - All rights reserved - Samuel CASAL

dev tun
ifconfig 10.8.0.2 10.8.0.1
secret secret.key
route 192.168.1.0 255.255.255.0

c.Miseenuvredutunnelvpn
Unefoislesfichierscrssurleserveuretleclient,ilsuffitdedmarrerdepartetdautreleserviceparsonscriptde
dmarrage.
Lavalidationdefonctionnementpeutsefaireparunpingentrelesdeuxadressesdetunnel.Unecapturedetrames
permettraaussidobserveruntraficentrelesdeuxmachinessurleportUDP/1194pardfaut.
Exempledetestduntunnelpointpoint
On lance le service par son script normalis, on vrifie la prsence dune interface virtuelle, et on contrle le
fonctionnementdutunnelparuntraficquelconque.
beta:~# ifconfig tun0
tun0: erreur lors de la recherche dinfos sur linterface: Priphrique non trouv
beta:~# /etc/init.d/openvpn start
Starting virtual private network daemon: client.
beta:~# ifconfig tun0
tun0
Link encap:UNSPEC HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00
inet adr:10.8.0.2 P-t-P:10.8.0.1 Masque:255.255.255.255
UP POINTOPOINT RUNNING NOARP MULTICAST MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 lg file transmission:100
RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)
beta:~# ping 10.8.0.1
PING 10.8.0.1 (10.8.0.1) 56(84) bytes of data.
64 bytes from 10.8.0.1: icmp_seq=1 ttl=64 time=0.864 ms

ENI Editions - All rights reserved - Samuel CASAL

- 3-

Validationdesacquis
Testezvosconnaissancesenrpondantauxquestionssuivantes.Cesquestionsnappellentpastoujoursdesrponses
dfinitives. Les questions poses en certification, bien quabordant les mmes sujets, seront pour la plupart poses
sous forme de questionnaire choix multiples, ou bien demanderont une rponse courte, tape en toutes lettres au
clavier.

1.Questions
1 Lesconceptsdescuritprincipauxsontlauthentification,laconfidentialit,etlecontrledintgrit.Leservice
telnetestdcripoursonmanquedescurit,maisdisposaitiltoutefoisdemcanismesdescurit?
2 CommentunclientSSHconservetilunetracedesserveursauxquelsiladjtconnect?
3 Lacommandesshkeygenestellemieuxadaptelacrationdeclspubliquesouprives?
4 Quelmoyenpermetdeconserverenmmoirelesclsprivesutilisespourlesauthentificationsetpermettre
ainsiuneutilisationplusconfortable?
5 Surquelservicesappuielacommandescpsurlamachinedistantepourcopierdesfichiersdefaonscurise?
6 CommentappelletonlefonctionnementdanslequeluntraficapplicatifesttransportparSSH,etestdonc
protgparlesfonctionsnativesdescuritdeceprotocole?
7 EstilpossiblederenvoyerdessessionsdaffichageX11dansuntunnelSSH?
8 Quellediffrencefaitonentreuntunnelvpnsitesiteetuntunnelvpnpointpoint?
9 OpenVPNpeutilconnecterdeuxmachinesdistantessansassurerderoutageentrelesdeuxmachines?
10 CommentunutilisateurpeutilvisualiserquuntunnelOpenVPNestapriorimontsursamachine?

2.Rponses
1 Lesconceptsdescuritprincipauxsontlauthentification,laconfidentialit,etlecontrledintgrit.Leservice
telnetestdcripoursonmanquedescurit,maisdisposaitiltoutefoisdemcanismesdescurit?
Oui, celui quon estimait suffisant lpoque de cration du protocole. Telnet ne propose pas de contrle dintgrit
srieux, ni de cryptage des donnes qui assurerait la confidentialit des changes. En revanche, le protocole telnet
supporteuneauthentificationparmotdepasse.Ladfaillancedecetteauthentificationestduelatransmissionen
clairdecemotdepassequirendsoninterceptionrelativementaise.
2 CommentunclientSSHconservetilunetracedesserveursauxquelsiladjtconnect?
LesclientsconserventunetracedechaqueconnexiontablieauprsdeserveursSSHenconservantuneempreinte
numriquedesserveursdansunfichierknown_hosts,situdansunrpertoirecach.sshdurpertoirepersonnelde
lutilisateur. Il est important quil ny ait pas de doute sur la validit du serveur : les cryptages utiliss par SSH
permettentdesemettrelabridetouteslestentativesdobservationconduitesavecdesmoyensraisonnables,mais
il est relativement facile dusurper lidentit dun serveur en prenant son nom et son adresse IP par exemple.
Lutilisateurtaperaitalorsentouteconfiancedescommandesquiseraientrcupresparladversaire.
3 Lacommandesshkeygenestellemieuxadaptelacrationdeclspubliquesouprives?
La cration des cls publiques et prives est ncessairement conjointe. Toute commande qui cre lune doit
obligatoirement crer lautre en mme temps. Il arrive que le manuel ou les documentations mettent en avant une
oprationpluttquuneautre,maisilestcertainquelecoupledeclsestcrenmmetemps.Ilestimpossibleen
possdantuneclpubliquededterminerlaclprivecorrespondanteetinversement.
4 Quelmoyenpermetdeconserverenmmoirelesclsprivesutilisespourlesauthentificationsetpermettre
ainsiuneutilisationplusconfortable?
La commande sshagent permet ce stockage confortable des cls prives. Les cls prives (et publiques) sont
initialementcresparlacommandesshkeygen,fournieslagentparlacommandesshadd,lequelagentestcharg
par la commande sshagent. Lagent SSH est un programme rsident dont les programmes requrant une
authentificationserontlesclients.
5 Surquelservicesappuielacommandescpsurlamachinedistantepourcopierdesfichiersdefaonscurise?
LacommandescpnencessitepasdautreservicesurlamachinedistantequeleserviceSSH,galementutilispour
lessessionsdistantes.
6 CommentappelletonlefonctionnementdanslequeluntraficapplicatifesttransportparSSH,etestdonc
protgparlesfonctionsnativesdescuritdeceprotocole?
OnparledetunnelSSH.Lapplicationnestpasmodifieparcefonctionnement,seulsontransportestaffect.

ENI Editions - All rights reserved - Samuel CASAL

- 1-

7 EstilpossiblederenvoyerdessessionsdaffichageX11dansuntunnelSSH?
Oui,maisilfautpourcelaautorisercefonctionnementenrenseignantladirectiveX11Forwardingyesdanslefichier
deconfigurationsshd_configduserveurSSH.
8 Quellediffrencefaitonentreuntunnelvpnsitesiteetuntunnelvpnpointpoint?
Untunnelpointpointreliedeuxmachinesentreellesdefaonscurise.Touteslesfonctionsdescuritaffrentes
autunnelsontassures(authentification,confidentialit,intgrit),maisentrecesdeuxmachinesseulement.Dans
unfonctionnementenmodesitesite,lesmmesfonctionssontappliquesautunnel,maistousleshtesdesdeux
rseauxconnectspeuventcommuniquerentreeuxparlintermdiairedutunnel.
9 OpenVPNpeutilconnecterdeuxmachinesdistantessansassurerderoutageentrelesdeuxmachines?
Oui,cestlutilisationdumodebridgdanslequelletunnelreliedirectementlesdeuxmachinesquisetrouventalors
danslemmesousrseau.Cetusageestpluttrare.
10 CommentunutilisateurpeutilvisualiserquuntunnelOpenVPNestapriorimontsursamachine?
En consultant la configuration rseau avec la commande ifconfig. Une interface virtuelle gnralement appele tun0
doitsafficher avec ladresseIPattachecetteinterface.Laprsencedecetteinterfacevirtuelleneprsagepasdu
bonfonctionnementdutunnel,maisestncessairesonfonctionnement.

- 2-

ENI Editions - All rights reserved - Samuel CASAL

Travauxpratiques
Denouveauxbesoinssefontjour.Ilestncessairedaccderunserveurintranetsitusurleserveuralphadepuis
lextrieur.Voushsitezentredeuxsolutionsetdcidezdelesessayertouteslesdeux.
Cesexercicessupposentquelerseaudetestatrorganiscommeprvudanslestravauxpratiquesduchapitre
Protectiondesrseaux.

1.Gestiondurseaudetest
a.Repositionnementdelastationdetravail

Vousaurezbesoinpourraliservosessaisdunestationclientesituesurlerseaupublic.Ilestpossibledutiliser
unenouvellemachine,maisleplussimpleestdedplacerprovisoirementlastationUbuntusurlerseaupublic.
1.

DanslesmenusVirtualboxdelastationcliente,dveloppezPriphriquespuiscliquez
surCartesrseau.

2.

DanslongletCarte1,droulezModedaccsrseau,etchoisissezAccsparpont.

3.

DanslastationdetravailUbuntu,dveloppezlemenuSystme,puisPrfrences,et
choisissezConnexionsrseau.

4.

DanslafentreConnexionsrseau,modifiezlaconnexionFixeeth0cre
prcdemment.

5.

DanslongletParamtresIPv4,modifiezladresseIPen192.168.200.50
255.255.255.0.(ouuneadressesituedansleplandadressagedevotrerseau
public).Modifiezgalementlapasserellepardfaut.

6.

Vrifiezenlignesdecommandeslavaliditdevotreconfigurationparunpingsur
ladressepubliqueduserveurbeta(192.168.200.102dansnotreplandadressage).Si
ncessaire,ractivezlaconfigurationFixeeth0encliquantdessusdepuislabarrede
menusuprieureicnerseauenhautdroite.

b.Arrtduparefeu
Commandesutiles

ENI Editions - All rights reserved - Samuel CASAL

- 1-

Scriptspersonnalissdegestionduparefeu

iptables

Manipulations
1.

Afindemenerbienvosessaissansinterfrenceduparefeu,dsactivezlesurle
serveurbeta.Utilisezpourcelalesscriptscrsauchapitreprcdent.

2.

Encasdebesoinseulement.Sivousnedisposezpasdesscriptspersonnaliss,tapez
lescommandessuivantes :

iptables
iptables
iptables
iptables

1.

-F
-P INPUT ACCEPT
-P OUTPUT ACCEPT
-P FORWARD ACCEPT

Vrifiezquetoutfiltrageestdsormaisannul.

Rsultatlcran
Utilisationdesscriptspersonnaliss :
[root@beta ~]# service parefeu stop
[root@beta ~]# service parefeu status
Chain INPUT (policy ACCEPT)
target
prot opt source

destination

Chain FORWARD (policy ACCEPT)


target
prot opt source

destination

Chain OUTPUT (policy ACCEPT)


target
prot opt source
[root@beta ~]#

destination

Annulationmanuelledufiltrage(sincessaire) :
[root@beta ~]# iptables -F
[root@beta ~]# iptables -P INPUT ACCEPT
[root@beta ~]# iptables -P OUTPUT ACCEPT
[root@beta ~]# iptables -P FORWARD ACCEPT
[root@beta ~]# iptables -L
Chain INPUT (policy ACCEPT)
target
prot opt source
destination
Chain FORWARD (policy ACCEPT)
target
prot opt source
Chain OUTPUT (policy ACCEPT)
target
prot opt source
[root@beta ~]#

destination

destination

c.Installationdelintranet
InstallezsincessaireunserveurApachesurleserveuralphaaveclacommandesuivante :
apt-get install apache2

2.CrationduntunnelSSHentrelastationdetravailetleserveurbeta
Danscemodedefonctionnement,untunnelSSHesttablientreleclientetleserveurbeta.Toutletraficenrseau
publicestdoncprotg.Unefoiscetunneltabli,leclientsadresseundesesportslocal,etletraficestredirig
- 2-

ENI Editions - All rights reserved - Samuel CASAL

versunemachinecible,audeldutunnel.

a.Gestiondelauthentification
Puisque le tunnel est tabli entre la station cliente publique et le serveur beta, il faut rsoudre la question de
lauthentification entre ces deux machines. Soucieux doffrir la solution la plus scurise, vous optez pour
lauthentificationparclsSSH.
Commandesutiles

mkdir

scp

sshkeygen

Manipulations
1.

Surlastationcliente,crezlapairedeclsncessairelauthentificationenutilisant
lalgorithmedsa.Acceptezlescheminsetnomsdefichierspardfaut.Protgezvotrecl
priveparunephrasedepasse(passphrase)devotrechoix.

2.

Surleserveurbeta,crezlastructurederpertoiresappropriepourlestockagedela
clpubliquedelutilisateurquitablitletunnel.Lefichierdeclpubliquedoitsetrouver
dansunrpertoire.ssh/authorized_keysdurpertoirepersonneldelutilisateurse
connectant.

3.

Copiezlaclpubliquegnreverslerpertoireapproprisurleserveur.

Rsumdescommandesetrsultatlcran
Gnrationdesclsclientessurlastationdetravail :
toto@ubuntu:~/temp$ ssh-keygen -t dsa
Generating public/private dsa key pair.
Enter file in which to save the key (/home/toto/.ssh/id_dsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/toto/.ssh/id_dsa.
Your public key has been saved in /home/toto/.ssh/id_dsa.pub.
The key fingerprint is:
fd:55:bf:50:a5:53:0e:21:92:0b:84:13:1c:96:63:6c toto@ubuntu
The keys randomart image is:
+--[ DSA 1024]----+
|
o+*. ... o.o|
|
.E . .. . =.|
|
o o . . o.o|
|
..
.o.|
|
S . .. .|
|
. .. .|
|
. . |
|
|
|
|
+-----------------+
toto@ubuntu:~/temp$
Crationdesrpertoiresncessairessurleserveurbeta :
[toto@beta ~]$ hostname
beta
[toto@beta ~]$ id
uid=500(toto) gid=500(toto) groupes=500(toto)
[toto@beta ~]$ mkdir -p .ssh/authorized_keys
[toto@beta ~]$
Copiedelaclpubliquedepuislastationsurleserveur :

ENI Editions - All rights reserved - Samuel CASAL

- 3-

toto@ubuntu:~/.ssh$ whoami
toto
toto@ubuntu:~/.ssh$ hostname
ubuntu
toto@ubuntu:~/.ssh$ ls
id_dsa id_dsa.pub known_hosts
toto@ubuntu:~/.ssh$ scp id_dsa.pub toto@192.168.200.102:/home/toto/.ssh/authorized_keys
toto@192.168.200.102s password:
id_dsa.pub
100% 597
0.6KB/s
00:00
toto@ubuntu:~/.ssh$

b.Crationdutunnel
Commandesutiles

ssh

Manipulations
1.

Depuislastationdetravailpublique,tablissezuntunnelversleserveurbeta
redirigeantleportlocal1234versleserveurinternealphasurleport80.Lutilisateur
propritairedutunnelseratoto.

Rsumdescommandesetrsultatlcran
tablissementdutunnel :
toto@ubuntu:~$ ssh -L 1234:192.168.199.10:80 toto@192.168.200.102
toto@192.168.200.102s password:
Last login: Mon Aug 16 13:39:04 2010 from 192.168.200.50
[toto@beta ~]$

c.Validation
Commandesutiles

navigateurweb

netstat

Manipulations
1.

Depuislastationclientesurlenavigateur,ouvrezunesessionwebversellemme
(localhost)surleport1234.Lapagewebpardfautduserveuralphadoitsafficher.
Lesdonnesnontpasttransmisesenclairentrelastationetleserveurbeta.

2.

Surleserveurbeta,constatezquunesessionSSHexistebienentreleclientetle
serveurbeta,etquunesessionhttpexistebienentreleserveurbetaetleserveur
alpha.

3.

Surleserveuralpha,constatezquunesessionhttpestbienouverteparleserveurbeta
(extrmitdutunnel).

Rsumdescommandesetrsultatlcran
Vrificationdessessionstcpsurleserveurbeta :
[root@beta ~]# netstat -n | head -5
Connexions Internet actives (sans serveurs)
Proto Recv-Q Send-Q Local Address
Foreign Address
tcp
0
0 192.168.199.1:34210
192.168.199.10:80

- 4-

State
ESTABLISHED

ENI Editions - All rights reserved - Samuel CASAL

tcp
0
0 192.168.200.102:22
192.168.200.50:46647
Sockets du domaine UNIX actives(sans serveurs)
[root@beta ~]#

ESTABLISHED

Vrificationdessessionstcpsurleserveuralpha :
alpha:/var/www# netstat -n | head -5
Connexions Internet actives (sans serveurs)
Proto Recv-Q Send-Q Adresse locale
Adresse distante
tcp6
0
0 192.168.199.10:80
192.168.199.1:45678
Sockets du domaine UNIX actives(sans serveurs)
Proto RefCnt Flags
Type
State
I-Node
Chemin
alpha:/var/www#

Etat
TIME_WAIT

3.CrationduntunnelVPNentrelastationdetravailetleserveurbeta
a.Installationdesbinaires
InstallezOpenVPNsurleclientUbuntuaveclacommandesuivante :
sudo apt-get install openvpn
OpenVPN ne fait pas partie des paquetages standard de la distribution CentOS. La solution propose ici est
dajouter le paquetage ETEL, un projet libre qui vise fournir aux distributions Fedora et Centos des logiciels
vocationprofessionnelsnonincluspardfautdanscesdistributions.Unesolutionplussimpleconsisteraitraliser
lestestssurdesdistributionsDebianouUbuntuexclusivement.
1.

Depuisleserveurbeta,tlchargezlaversionencoursdupaquetageETELladresse
suivante :http://download.fedora.redhat.com/pub/epel/5/i386/repoview/epel
release.html.

2.

Installezlepaquetageepeltlchargaveclacommandesuivante :
rpm -i epel-release-x-y.rpm

3.

Installezenfinopenvpnaveclacommandesuivante :
yum install openvpn

b.Gestiondelauthentification
Commandesutiles

openvpn

scp

Manipulations
1.

Surleclient,gnrezuneclexploitableparOpenVPN.Stockezcettecldansunfichier
cle.sec.

2.

Copiezlefichiercontenantlaclsurleserveurbeta.

Rsumdescommandesetrsultatlcran
Gnrationdelaclsurleclient :
toto@ubuntu:~$ openvpn --genkey --secret cle.sec

ENI Editions - All rights reserved - Samuel CASAL

- 5-

toto@ubuntu:~$ cat cle.sec


#
# 2048 bit OpenVPN static key
#
-----BEGIN OpenVPN Static key V1----5e1daf78432b5217c1be08b151630622
2f3df08093262bd5e8e12dfddb180f9b
1bb06c684d842bacbe9b67bb3fe76830
3e23899306d15f33451028e8e1a7d78a
d6850f6cfe666d710e5a840e00fc3d18
d1328b3474a23441353983a697ff04c5
45a8457f2e085883e4565df8a920a655
a98ee7252e9f9e8b0377a2988a261d4c
38d0e02407ed26003fab943f8dde4399
67d053533c807bede026c0be5efe2fe7
987103e4d864ca4799be62a52b2cb47c
2d1c0e76c468a3b8d69c4662debfbb0d
ea722255a0158451b5d21187d54258d1
9ff4cdbdc8f8dd4553b96a303c866f1d
2b360353c78797110ab8c06fd96e58d3
8b283865278e1629fb2054f67e4f52e9
-----END OpenVPN Static key V1----toto@ubuntu:~$
Copiedelaclsurleserveur :
toto@ubuntu:~$ scp cle.sec toto@192.168.200.102:/home/toto/cle.sec
toto@192.168.200.102s password:
cle.sec
100% 636
0.6KB/s
toto@ubuntu:~$

00:00

c.Configurationduclient
Commandesetdirectivesutiles

dev

ifconfig

remote

route

secret

vi

Manipulations

- 6-

1.

Surlastationcliente,crezunfichierdeconfiguration/etc/openvpn/client.conf.

2.

Danslefichierdeconfiguration,indiquezqueleserveurdistantestbeta.

3.

Indiquezquevoussouhaiteztravaillerenmodetunnel.

4.

Indiquezquevotreadresselocale(ctclient)sera10.9.9.2.

5.

Indiquezqueladressedistante(ctserveur)sera10.9.9.1.

6.

Indiquezquelestlefichierdeclsecrteemployer.

7.

Indiquezqueleclientdoitavoiraccsaurseaupriv.

ENI Editions - All rights reserved - Samuel CASAL

Rsumdescommandesetrsultatlcran
Fichier/etc/openvpn/client.confsurlastationcliente :
remote 192.168.200.102
dev tun
ifconfig 10.8.0.2 10.8.0.1
secret /home/toto/cle.sec
route 192.168.199.0 255.255.255.0

d.Configurationduserveur
Commandesutiles

ifconfig

vi

Directivesutiles

dev

route

secret

Manipulations
1.

Surleserveurbeta,crezunfichierdeconfiguration/etc/openvpn/serveur.conf.

2.

Danslefichierdeconfiguration,indiquezquevoussouhaiteztravaillerenmodetunnel.

3.

Indiquezquevotreadresselocale(ctclient)sera10.9.9.2.

4.

Indiquezqueladressedistante(ctserveur)sera10.9.9.1.

5.

Indiquezquelestlefichierdeclsecrteemployer.

6.

Indiquezqueleclientdoitavoiraccsaurseaupriv.

Rsumdescommandesetrsultatlcran
Fichier/etc/openvpn/serveur.confsurleserveur :
dev tun
ifconfig 10.8.0.1 10.8.0.2
secret /home/toto/cle.sec

e.Validation
Commandesutiles

Navigateurinternet

ping

Manipulations
1.

Dmarrezleserviceopenvpnsurleserveurbeta.

ENI Editions - All rights reserved - Samuel CASAL

- 7-

2.

Dmarrezleserviceopenvpnsurlastationcliente.

3.

Visualisezlesadressesipvirtuellesajoutesauxdeuxmachines.

4.

Validezlaconnexionavecunping.

5.

Depuisunnavigateursurlastationdetravail,connectezvousenhttpsurladresseIP
duserveuralpha.Vrifiezquelapagewebsaffichebien.

Rsumdescommandesetrsultatlcran
Dmarrageduservicesurleserveurbeta:
[root@beta openvpn]# service openvpn start
Dmarrage de openvpn :
[ OK ]
[root@beta openvpn]# ifconfig
eth0
Link encap:Ethernet HWaddr 08:00:27:E4:07:62
inet adr:192.168.200.102 Bcast:192.168.200.255 Masque:255.255.255.0
(...)
eth1
Link encap:Ethernet HWaddr 08:00:27:E4:6D:E5
inet adr:192.168.199.1 Bcast:192.168.199.255 Masque:255.255.255.0
(...)
lo
Link encap:Boucle locale
inet adr:127.0.0.1 Masque:255.0.0.0
(...)
tun0
Link encap:UNSPEC HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00
inet adr:10.9.9.1 P-t-P:10.9.9.2 Masque:255.255.255.255
UP POINTOPOINT RUNNING NOARP MULTICAST MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 lg file transmission:100
RX bytes:0 (0.0 b) TX bytes:0 (0.0 b)
[root@beta openvpn]#
Dmarrageduservicesurlastationcliente :
toto@ubuntu:/etc/openvpn$ sudo /etc/init.d/openvpn start
* Starting virtual private network daemon(s)...
*
Autostarting VPN client
[ OK ]
toto@ubuntu:/etc/openvpn$ ifconfig
eth0
Link encap:Ethernet HWaddr 08:00:27:7b:c8:79
inet adr:192.168.200.50 Bcast:192.168.200.255 Masque:255.255.255.0
(...)
lo
Link encap:Boucle locale
inet adr:127.0.0.1 Masque:255.0.0.0
(...)
tun0
Link encap:UNSPEC HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00
inet adr:10.9.9.2 P-t-P:10.9.9.1 Masque:255.255.255.255
UP POINTOPOINT RUNNING NOARP MULTICAST MTU:1500 Metric:1
Packets reus:0 erreurs:0 :0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 lg file transmission:100
Octets reus:0 (0.0 B) Octets transmis:0 (0.0 B)
toto@ubuntu:/etc/openvpn$
Vrificationdepuisleclient :
toto@ubuntu:/etc/openvpn$ ping -c 1 192.168.200.102
PING 192.168.200.102 (192.168.200.102) 56(84) bytes of data.
64 bytes from 192.168.200.102: icmp_seq=1 ttl=64 time=1.03 ms
--- 192.168.200.102 ping statistics --1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 1.032/1.032/1.032/0.000 ms
toto@ubuntu:/etc/openvpn$ ping -c 1 192.168.199.10
PING 192.168.199.10 (192.168.199.10) 56(84) bytes of data.

- 8-

ENI Editions - All rights reserved - Samuel CASAL

64 bytes from 192.168.199.10: icmp_seq=1 ttl=63 time=5.40 ms


--- 192.168.199.10 ping statistics --1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 5.405/5.405/5.405/0.000 ms
toto@ubuntu:/etc/openvpn$
Notez quavec le tunnel OpenVPN, on obtient des interfaces virtuelles sur lesquelles peuvent sappuyer
nimportequellesapplications.AvecletunnelSSH,onesttroitementlilapplicationassocieautunnel.

ENI Editions - All rights reserved - Samuel CASAL

- 9-

Prrequisetobjectifs
1.Prrequis
LesconnaissancesacquiseslorsdelacertificationLPIniveau1,notamment:

ditiondefichiers.
Connatrelesformatsdecompressiongzipetbzip2.
Connatreleformatdarchivagecpio.

2.Objectifs
lafindecechapitre,vousserezenmesurede:

Connatreleprincipeduneapplicationcompile.
Grerlesbibliothquesapplicatives.
RaliserunecompilationGNUclassique.
Installeretdsinstallerdessourcescompiles.
Grerdesmodulesdenoyau.
Patcheruneapplication.
Prparerlacompilationdunnoyau(tousparamtrespardfaut).
Compilerunnoyau.
Intgrerunnouveaunoyaudansunsystmeexistant.

ENI Editions - All rights reserved - Samuel CASAL

- 1-

Compilationdesapplications
1.Gnralits
a.Principedelacompilation
Lesprogrammesutilisseninformatiqueengnralappartiennentdeuxfamilles :lesprogrammesinterprtset
lesprogrammescompils.Unprogrammeinterprtestcritdansunlangagedeprogrammation(basic,perl,shell,
etc.), et doit pour son excution tre lu par un programme spcifique appel interprteur. chacune de ses
excutions,linterprteurdoitreparcourirlecodeduprogramme.Unprogrammecompilestcritavecunlangagede
programmation (Pascal, C, C++, etc.), et est ensuite pass au travers dun compilateur. Le compilateur est un
programme excutable qui lit le code du programme compiler (appel code source), et qui gnre lors de cette
opration un autre programme excutable, binaire, qui pourra sexcuter indpendamment du compilateur. La
plupartdesprogrammesutilissenenvironnementLinuxsontdetypecompil,etlenoyauLinuxenestunexemple
particulier.

b.Quandfautilcompiler ?
Lesapplicatifssontlaplupartdutempsfournissousformedepaquetagedjcompil,etprtslemploi.Dansces
conditions, la compilation est une opration qui revient au crateur du paquetage, et lutilisateur na pas sen
proccuper.LesuccsdedistributionscommeUbuntuvientenpartiedutrsgrandnombredepaquetagesprsents
etdisponibleslademande.
Il arrive toutefois quon doive compiler soimme une application. Par exemple parce quon souhaite avoir une
versiondelogicielrcentequinestpasdisponiblesousformedepaquetage,oubienquelepaquetagenexistepas
dans notre distribution. Par ailleurs, la compilation peut tre personnalise par des options, et le crateur dun
paquetage a forcment fait pour son paquet des choix arbitraires quant ces options de compilation. Dans ces
conditions,onpeutsouhaitercompilersoimmesonapplicationetobtenirainsiunfonctionnementspcifique.

c.Rappelssurlesutilitairesdedcompression
Lessourcesdeprogrammesutiliseslorsdelacompilationdapplicationssontpresquetoujoursfourniessousforme
darchives compresses. Il faut donc se souvenir des syntaxes permettant de grer les archives au format tar
compress,deloinlepluscourant.
Dcompressiondunearchiveauformattarcompressengzip
tar xzf archive.tgz
Dcompressiondunearchiveauformattarcompressenbzip2
tar xjf archive.tar.bzip2
Lextensiondesfichierseststrictementconventionnelleetpeutvarier.

2.ProcduredecompilationGNU
Danslaplupartdessituations,lacompilationestuneoprationquichoieaudveloppeur :ledveloppeurcritson
programme,lecompile,etlivrelecodeexcutableprtlemploi.Lescomptencesncessaireslacompilationsont
doncgnralementignoresdugrandpublic.Lemondeopensourcechangeunpeuladonneolescodessourcesde
tous les programmes sont par dfinition disponibles et o il arrive que frquemment que lutilisateur final doive
compilerluimmesonapplication.Uneprocduredecompilationstandardadonctdfinie,afinquunutilisateurnon
avertisoitcapablederalisercetteopration.

a.Rcuprationdessources
Le code source dune application open source est par dfinition toujours disponible, en gnral sur un site web
attach au projet de dveloppement de lapplication. Le site web sourceforge.net accueille en particulier de
nombreuxprojetsdedveloppement.

ENI Editions - All rights reserved - Samuel CASAL

- 1-

Une fois les sources tlcharges, il suffit de les extraire de leur archive et de se placer dans le rpertoire ainsi
extrait.Touteslesoprationsrelativeslacompilationseraliserontdepuislaracinedecerpertoire.

b.Configurationdelacompilation
La compilation suppose un certain nombre de prrequis : la prsence du compilateur, lventuelle prsence de
bibliothques ncessaires la compilation du programme, et surtout un fichier de rponses qui sera lu par le
compilateur pendant la compilation. Dans le cadre de la procdure standard de compilation GNU, un script nomm
configuredoitsetrouverdanslerpertoireracinedessources,etcescriptestprcismentchargderaliserces
troisoprations.Cescriptatcritparledveloppeurduprogrammeetestlivraveclessources.
Lors de son excution, ventuellement avec des options de compilation, ce script va vrifier lenvironnement et
renvoyer un message derreur en cas de dfaut de lenvironnement de compilation (compilateur et bibliothques
ncessaires).Sitoutvabien,cescriptfinitparlagnrationdefichiersderponses(unparsousrpertoireprsent
dans le rpertoire des sources) nomms Makefile. Ces fichiers de rponses sont euxmmes crs partir des
options passes au script de configuration et dun fichier modle Makefile.in. Si lobservation du contenu de ces
fichiers peut rpondre une curiosit bien lgitime, elle nest absolument pas ncessaire pour la suite des
oprations.
Excutionduscriptconfiguresansoption
Onlancelescriptdeconfigurationdepuislerpertoireracinedessources.Onconstatelafindutraitementlamention
creatingMakefilequiestlebutultimedelexcutionduscript.
[root@beta rdesktop-1.6.0]# ./configure
checking for gcc... gcc
checking for C compiler default output file name... a.out
checking whether the C compiler works... yes
checking whether we are cross compiling... no
(...)
checking for setmntent... yes
checking build system type... i686-redhat-linux-gnu
checking host system type... i686-redhat-linux-gnu
configure: creating ./config.status
config.status: creating Makefile
[root@beta rdesktop-1.6.0]#
Gestiondesdfaillancesparlescriptdeconfiguration
Lescriptdeconfigurationdtecteicilabsencedebibliothquesncessaires.Onesticiparticulirementchanceuxavecun
conseilprcisdelapartduscript,cequiestloindtrelecasgnral.
[root@beta rdesktop-1.6.0]# ./configure
checking for gcc... gcc
checking for C compiler default output file name... a.out
checking whether the C compiler works... yes
checking whether we are cross compiling... no
checking for suffix of executables...
(...)
checking for inttypes.h... yes
checking for stdint.h... yes
checking for unistd.h... yes
checking whether byte ordering is bigendian... no
checking for X... no
ERROR: Could not find X Window System headers/libraries.
Probably you need to install the libx11-dev package.
To specify paths manually, use the options --x-includes and --x-libraries.
[root@beta rdesktop-1.6.0]#

c.Personnalisationdesprogrammescompils
Ledveloppeurpeutprvoirlorsdelardactiondesonscriptdeconfigurationdesoptionsdecompilation.Lefichier
Makefile sera alors gnr en fonction des options ajoutes lors du lancement du script configure. La liste des
optionsestdisponibleentapantlacommande./configurehelp.

- 2-

ENI Editions - All rights reserved - Samuel CASAL

Excutionduscriptconfigureavecoptions
Onexcutedabordlescriptconfigureavecloptionhelppourprendreconnaissancedesoptionsdisponibles,puisavecla
oulesoptionschoisies.
[root@beta rdesktop-1.6.0]# ./configure --help
`configure configures rdesktop 1.6.0 to adapt to many kinds of systems.
Usage: ./configure [OPTION]... [VAR=VALUE]...
To assign environment variables (e.g., CC, CFLAGS...), specify them as
VAR=VALUE. See below for descriptions of some of the useful variables.
Defaults for the options are specified in brackets.
Configuration:
-h, --help
display this help and exit
--help=short
display options specific to this package
--help=recursive
display the short help of all the included packages
-V, --version
display version information and exit
-q, --quiet, --silent
do not print `checking... messages
--cache-file=FILE
cache test results in FILE [disabled]
-C, --config-cache
alias for `--cache-file=config.cache
-n, --no-create
do not create output files
--srcdir=DIR
find the sources in DIR [configure dir or `..]
(...)
[root@beta rdesktop-1.6.0]#
[root@beta rdesktop-1.6.0]# ./configure --with-ipv6
checking for gcc... gcc
(...)
configure: creating ./config.status
config.status: creating Makefile
[root@beta rdesktop-1.6.0]#

d.Compilation
Lacompilationseralisesimplementparlacommandemake,excutesansparamtrenioptiondepuislerpertoire
racinedessourcesosetrouventlesfichiersMakefileetMakefile.in.Cetteoprationestassezlongueetaboutitsi
tout se passe bien la gnration des fichiers binaires compils. Il est noter qu cette tape, ces fichiers se
trouventexclusivementdanslarborescencedessources.
Compilationmalprpare
Ontenteicideraliserunecompilationparlacommandemakesansavoirauparavantconfigurlacompilation.
[root@beta rdesktop-1.6.0]# make
make: *** Pas de cibles spcifies et aucun makefile na t trouv. Arrt.
[root@beta rdesktop-1.6.0]#
Compilationsansencombre
Lacommandedecompilationmakeatrouvsesfichierderponse.
[root@beta rdesktop-1.6.0]# make
(...)
gcc -g -O2 -Wall -I/usr/include
-DPACKAGE_NAME=\"rdesktop\"
-DPACKAGE_TARNAME=\"rdesktop\" -DPACKAGE_VERSION=\"1.6.0\"
-DPACKAGE_STRING=\"rdesktop\ 1.6.0\" -DPACKAGE_BUGREPORT=\"\"
-DSTDC_HEADERS=1 -DHAVE_SYS_TYPES_H=1 -DHAVE_SYS_STAT_H=1
-DHAVE_STDLIB_H=1 -DHAVE_STRING_H=1 -DHAVE_MEMORY_H=1
-DHAVE_STRINGS_H=1 -DHAVE_INTTYPES_H=1 -DHAVE_STDINT_H=1
-DHAVE_UNISTD_H=1 -DL_ENDIAN=1 -DHAVE_SYS_SELECT_H=1
-DHAVE_LOCALE_H=1 -DHAVE_LANGINFO_H=1 -Dssldir=\"/usr\"
-DEGD_SOCKET=\"/var/run/egd-pool\" -DWITH_RDPSND=1 -DRDPSND_OSS=1

ENI Editions - All rights reserved - Samuel CASAL

- 3-

-DHAVE_DIRENT_H=1 -DHAVE_DIRFD=1 -DHAVE_DECL_DIRFD=1 -DHAVE_ICONV_H=1


-DHAVE_ICONV=1 -DICONV_CONST= -DHAVE_SYS_VFS_H=1 -DHAVE_SYS_STATVFS_H=1
-DHAVE_SYS_STATFS_H=1 -DHAVE_SYS_PARAM_H=1 -DHAVE_SYS_MOUNT_H=1
-DSTAT_STATVFS=1 -DHAVE_STRUCT_STATVFS_F_NAMEMAX=1 -DHAVE_STRUCT_STATFS_F_NAMELEN=1
-DHAVE_MNTENT_H=1 -DHAVE_SETMNTENT=1
-DKEYMAP_PATH=\"/usr/local/share/rdesktop/keymaps/\" -o rdesktop
rdesktop.o xwin.o xkeymap.o ewmhints.o xclip.o cliprdr.o rdpsnd.o
rdpsnd_dsp.o rdpsnd_oss.o tcp.o iso.o mcs.o secure.o licence.o
rdp.o orders.o bitmap.o cache.o rdp5.o channels.o rdpdr.o serial.o
printer.o disk.o parallel.o printercache.o mppc.o pstcache.o lspci.o
seamless.o ssl.o -L/usr/lib -lcrypto
-lX11
[root@beta rdesktop-1.6.0]#

e.Lesciblesdelacommandemake
La commande make permet de raliser la compilation proprement dite, mais la mme commande appele avec
certainsargumentspermetderaliserdesactionsdiversesautourdelacompilation.Onappellecesargumentsdes
cibles.Touteslesciblesnesontpastoujoursdisponibles,etleurprsencedpenddesobjectifsdudveloppeur.Les
ciblesdinstallationdesbinairesoudenettoyagesimpledessourcessontnanmoinstoujoursdisponibles.

f.Installationdesbinaires
Depuis le rpertoire des sources, il faut ensuite taper la commandemake install pour provoquer linstallationdes
fichiers binaires compils dans leurs rpertoires de destination au sein de larborescence du systme de fichiers
Linux.Linstallationpeutaussiprovoquerlacopiedesfichiersdemanueloudeconfiguration.
Installationautomatiquedetousleslmentscompils
Lacommandemakeexcuteaveclacibleinstallcopielesfichiersbinairescompilsainsiquetoutlmentprvuparle
dveloppeur.Lesdroitsdcrituresurlesrpertoiresciblessontncessaires.
[root@beta rdesktop-1.6.0]# make install
mkdir -p /usr/local/bin
/usr/bin/install -c rdesktop /usr/local/bin
/usr/bin/install:
(...)
[root@beta rdesktop-1.6.0]#

g.Nettoyagedessources
Lacommandemakecleanexcutedepuislerpertoireracinedessourcesnettoielarborescencedetoutlment
djcompiletpermetderelanceruneautrecompilationpartirdesmmessourcesetdummeenvironnement.
La commande make mrproper permet comme son nom lindique un nettoyage complet de tout lment gnr
localement,desfichierscompilsauxfichiersdeconfiguration(Makefile)gnrsauparavant.
Nettoyagesimpledessources
Lacommandemakeexcuteaveclaciblecleaneffacetousleslmentsgnrsparlacompilationmaislaisselesfichiers
deconfigurationenplace.
[root@beta rdesktop-1.6.0]#
Makefile
[root@beta rdesktop-1.6.0]#
rm -f *.o *~ vnc/*.o vnc/*~
[root@beta rdesktop-1.6.0]#
Makefile
[root@beta rdesktop-1.6.0]#

ls Makefile
make clean
rdesktop rdp2vnc
ls Makefile

h.Dsinstallationdunprogramme
La commande make uninstall excute depuis le rpertoire racine des sources nettoie le systme de tous les

- 4-

ENI Editions - All rights reserved - Samuel CASAL

fichiersinstallsparlacommandemakeinstall.
RcapitulatifdelaprocduredecompilationstandardGNU
cd rep_sources
./configure
make
make install
Orep_sourcesreprsentelerpertoiredessources,obtenuparextractiondelarchivetarcompresse.

3.Environnementdesapplications
a.Lesbibliothques
Unebibliothque(libraryenanglais)estunensembledlmentsprprogrammsutilisableparlesdveloppeurs.Ils
peuventainsigagnerdutempsparlarutilisationdefonctionscourantesetsaffranchirdelarcrituredefonctions
triviales.Lusagedebibliothquesenenvironnementgraphiquepermetaussidedonneruneunitauxprogrammes
avecdeslmentsdinterfacescohrents.
La bibliothque libstdc++ est presque toujours disponible sur les systmes Linux car exploite par de nombreux
programmes, et les applications graphiques exploitent frquemment les bibliothques gtk ou qt. Il existe des
centaines de bibliothques actives utilises en environnement Linux. Elles sont normalement situes dans le
rpertoire/usr/lib.
La plupart des programmes sont compils de faon dynamique (par opposition statique). Cestdire quils
reposentsurlesmmesbibliothquesquecellesemployesparledveloppeur,maisquisontprsenteslocalement
surlesystme.Lesapplicationsdoiventdoncimprativementdisposerdesbonnesbibliothquesaumomentdeleur
excution.
Onpeutvrifierquellessontlesbibliothquesncessairesunexcutableparlacommandeldd.
Visualisationdesbibliothquesutilisesparunexcutable
Onobservepourchaquebibliothquelefichiercorrespondantprsentsurledisque.
alpha:~# ldd /bin/ls
linux-gate.so.1 => (0xb775b000)
librt.so.1 => /lib/i686/cmov/librt.so.1 (0xb7744000)
libselinux.so.1 => /lib/libselinux.so.1 (0xb772b000)
libacl.so.1 => /lib/libacl.so.1 (0xb7723000)
libc.so.6 => /lib/i686/cmov/libc.so.6 (0xb75c8000)
libpthread.so.0 => /lib/i686/cmov/libpthread.so.0 (0xb75af000)
/lib/ld-linux.so.2 (0xb775c000)
libdl.so.2 => /lib/i686/cmov/libdl.so.2 (0xb75ab000)
libattr.so.1 => /lib/libattr.so.1 (0xb75a6000)
alpha:~#
Lacommandeldconfigpermetdecrerlesliensentrelesapplicationsetlesbibliothquesprsentessurlesystme.
Elleregardedanssonfichierdeconfiguration/etc/ld.so.confquelssontlescheminsanalyserlorsdelarecherche
debibliothques.Unfichier/etc/ld.so.cachecontenantlalistedesbibliothquesestalorsgnr.
Priseencomptedesbibliothqueslocales
ldconfig
Affichagedesbibliothquesexploitables
ldconfig -p
Crationdufichierdecacheavecldconfig
Oneffaceicilecachepourvrifierquelefichierestbiencrparlacommande.
root@beta:~$ rm /etc/ld.so.cache

ENI Editions - All rights reserved - Samuel CASAL

- 5-

root@beta:~$ ls /etc/ld.so.cache
ls: ne peut accder /etc/ld.so.cache: Aucun fichier ou dossier de ce type
root@beta:~$ ldconfig
root@beta:~$ ls /etc/ld.so.cache
/etc/ld.so.cache
root@beta:~$
Visualisationdesbibliothques
Onconstatequelacommandeldconfigpsappuiesurlefichierdecachequelleaauparavantgnr.
[root@beta ~]# ldconfig -p
776 libs found in cache `/etc/ld.so.cache
libz.so.1 (libc6) => /usr/lib/libz.so.1
libz.so (libc6) => /usr/lib/libz.so
libxslt.so.1 (libc6) => /usr/lib/libxslt.so.1
libxslt.so (libc6) => /usr/lib/libxslt.so
libxml2.so.2 (libc6) => /usr/lib/libxml2.so.2
libxml2.so (libc6) => /usr/lib/libxml2.so
libxmlsec1.so.1 (libc6) => /usr/lib/libxmlsec1.so.1
libxmlsec1.so (libc6) => /usr/lib/libxmlsec1.so
libxklavier.so.11 (libc6) => /usr/lib/libxklavier.so.11
(...)
[root@beta ~]#
Ilestaussipossiblepourunusageponctuelderenseignerunchemindebibliothquesdansunevariablesystme
LD_LIBRARY_PATH.
Dclarationdecheminsdebibliothques
LD_LIBRARY_PATH=chemin1:chemin2:...:cheminn
export LD_LIBRARY_PATH
Olescheminxreprsententlecheminabsoludurpertoirecontenantlesdirectives.

b.Visualisationdesappelssystmes
Il est possible de tester le fonctionnement des applications en visualisant les appels systmes raliss par
lapplicationlorsdesonexcution.Lacommandestraceappliqueunprogrammeinterceptelesappelssystmes
raliss par un processus ainsi que les signaux reus par ce processus. Cette commande, utile aux dveloppeurs,
est dun usage dlicat pour les nonspcialistes. La commande ltrace, similaire se cantonne aux chargements de
bibliothqueetignorelesappelssystmes.
Exempledutilisationdelacommandestrace
Onconstatelappeldediversesbibliothqueslorsdelexcutiondelacommandeecho.
[root@beta ~]# strace echo bonjour
execve("/bin/echo", ["echo", "bonjour"], [/* 35 vars */]) = 0
brk(0)
= 0x9d71000
access("/etc/ld.so.preload", R_OK)
= -1 ENOENT (No such file or directory)
open("/etc/ld.so.cache", O_RDONLY)
= 3
fstat64(3, {st_mode=S_IFREG|0644, st_size=60638, ...}) = 0
mmap2(NULL, 60638, PROT_READ, MAP_PRIVATE, 3, 0) = 0xb7fe8000
close(3)
= 0
open("/lib/libc.so.6", O_RDONLY)
= 3
read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0\340\317\270\0004\
0\0\0"..., 512) = 512
(...)
brk(0)
= 0x9d71000
brk(0x9d92000)
= 0x9d92000
open("/usr/lib/locale/locale-archive", O_RDONLY|O_LARGEFILE) = 3
fstat64(3, {st_mode=S_IFREG|0644, st_size=56464512, ...}) = 0
mmap2(NULL, 2097152, PROT_READ, MAP_PRIVATE, 3, 0) = 0xb7de6000
close(3)
= 0

- 6-

ENI Editions - All rights reserved - Samuel CASAL

fstat64(1, {st_mode=S_IFCHR|0620, st_rdev=makedev(136, 2), ...}) = 0


mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS,
-1, 0) = 0xb7ff6000
write(1, "bonjour\n", 8bonjour
)
= 8
close(1)
= 0
munmap(0xb7ff6000, 4096)
= 0
exit_group(0)
= ?
[root@beta ~]#

ENI Editions - All rights reserved - Samuel CASAL

- 7-

Compilationdunoyau
Dupointdevuedelacompilation,lenoyauestpresqueuneapplicationcommelesautres,avecuncodesource,une
procduredecompilationetuneprocduredinstallation.

1.Lescomposantsdunoyau
LenoyauLinuxestresponsabledelagestiondumatriel.Lanotiondepilotedepriphriquenexistepasdirectement
en environnement Linux puisque les lments permettant de communiquer correctement avec un priphrique sont
comprisdanslecodedunoyau.Onserendassezvitecompteduconfortdecettesituation :lenoyaurcentcompris
dans une distribution Linux permet de grer directement lensemble des priphriques dun systme sans avoir
installer des pilotes supplmentaires. En contrepartie, le code du noyau pour grer lensemble des priphriques
existantatendancedevenirdeplusenplusimposant,etsonchargementintgralentraneraituneconsommationde
mmoire dmesure. Pour cette raison, le noyau a une structure modulaire, et seuls les modules ncessaires au
fonctionnementdusystmesontchargsenmmoire.

a.Lecurdenoyau
Ce que lon peut appeler le c ur de noyau est la partie irrductible du noyau, celle qui sera intgralement
charge en mmoire. Elle ne contient en principe que des lments dont on est sr quils seront ncessaires
lutilisation. Le c ur de noyau est un fichier se trouvant dans le rpertoire /boot et dont la taille est de quelques
MgaOctets.

b.Lesmodules
Limportancedesmodulesdenoyau
Lesmodulesontunrleprimordialcarbeaucoupdefonctionsessentiellessontgressousformedemodules.Siun
noyaunedisposepasdesmodulesncessairesaufonctionnementdusystme,lesfonctionsaffrentesneseront
toutsimplementpasdisponibles.
Tentativedechargementduneressourcenonsupporte
Cetexempleestralissurunsystmedontlenoyaunesupportepasleformatdefilesystemext3.
light:/mnt# mount /dev/hda3 partition
mount: unknown filesystem type ext3
light:/mnt#
Les modules sont des fichiers portant lextension .ko qui sont chargs en mmoire en fonction des besoins. Des
commandessontdisponiblespourconsulterlalistedesmoduleschargs,enretirerdelammoireouenchargerde
nouveaux.
Les noyaux de versions anciennes (2.4 notamment) exploitent des fichiers de modules portant lextension
.o.

Manipulationsponctuellesdesmodules
Affichagedesmoduleschargsenmmoire
lsmod
Affichagedesmodulesdisponiblessurlesystme
modprobe -l
Les fichiers correspondants ces modules se trouvent conventionnellement dans un rpertoire /lib/modules et
dansunesousarborescencedunomnoyaucourant,telquerenvoyparlacommandeunamer.
Retraitdunmodulechargenmmoire
ENI Editions - All rights reserved - Samuel CASAL

- 1-

rmmod nom_module
ou
modprobe -r nom_module
Onom_modulereprsentelenomdumoduleprsentenmmoiretelquilataffichparlacommandelsmod.Les
deuxcommandesrmmodetmodproberontlemmersultat.
Chargementdunmoduleenmmoire
insmod fichier_module
ou
modprobe nom_module
Onom_modulereprsentelenomdumoduletelquilseraitaffichparlacommandelsmod,alorsquefichier_module
reprsente le nom du fichier de module prsent sur le disque. En fait, le nom du module est obtenu en retirant
lextension.koaunomdufichier.
Chargementdunmodule
Lechargementmanueldumodulequimanquaitprcdemmentrendpossiblelemontagedelapartitionext3.
light:/mnt# insmod /lib/modules/2.6.26-2-686/kernel/fs/ext3/ext3.ko
light:/mnt# mount /dev/hda3 partition
light:/mnt# mount
/dev/hda1 on / type ext2 (rw,errors=remount-ro)
(...)
/dev/hda3 on /mnt/partition type ext3 (rw)
light:/mnt#
Chargementforcdunmodule
Lesmodulessontenprincipechargsaudmarrageenfonctiondeladtectiondumatrielprsent.Ilesttoutefois
possible de forcer le chargement dun module en alimentant un fichier de configuration des modules. Tout module
mentionndansunfichier/etc/modulesseracharginconditionnellementaudmarrage.
Configurationdesmodules
Le fichier /etc/modules.conf permet de configurer certains modules et notamment de dfinir des associations
forcesentrepriphriqueetmodules.
Exempledefichier/etc/modules.conf
# Association force du pilote tg3 avec la carte rseau
alias eth0 tg3
titredevrificationoupourvoirsilesassociationsentrelematrieletlesmodulessesontbienralises,ilest
possibledafficherdesinformationssurlesmoduleschargsaveclacommandemodinfo.
Visualisationdesinformationsliesunmodule
Onvoitnotammentlefichier.kocontenantlecodedumodule,quelquesinformationsdenvironnementetlesaliasgrs
dynamiquementparlesystmepourlesmatrielsliscemodule.
root@serveur:/boot$ modinfo r8169
filename:
/lib/modules/2.6.32-24-generic/kernel/drivers/net/r8169.ko
version:
2.3LK-NAPI
license:
GPL
description:
RealTek RTL-8169 Gigabit Ethernet driver
author:
Realtek and the Linux r8169 crew <netdev@vger.kernel.org>
srcversion:
D37E06388C6313C1D062CC3
alias:
pci:v00000001d00008168sv*sd00002410bc*sc*i*
alias:
pci:v00001737d00001032sv*sd00000024bc*sc*i*
alias:
pci:v000016ECd00000116sv*sd*bc*sc*i*
alias:
pci:v00001259d0000C107sv*sd*bc*sc*i*

- 2-

ENI Editions - All rights reserved - Samuel CASAL

alias:
pci:v00001186d00004300sv*sd*bc*sc*i*
alias:
pci:v000010ECd00008169sv*sd*bc*sc*i*
alias:
pci:v000010ECd00008168sv*sd*bc*sc*i*
alias:
pci:v000010ECd00008167sv*sd*bc*sc*i*
alias:
pci:v000010ECd00008136sv*sd*bc*sc*i*
alias:
pci:v000010ECd00008129sv*sd*bc*sc*i*
depends:
mii
vermagic:
2.6.32-24-generic SMP mod_unload modversions
parm:
rx_copybreak:Copy breakpoint for copy-only-tiny-frames (int)
parm:
use_dac:Enable PCI DAC. Unsafe on 32 bit PCI slot. (int)
parm:
debug:Debug verbosity level (0=none, ..., 16=all) (int)
root@serveur:/boot$

c.Autourdunoyau
Noussavonsmaintenantquelenoyauestconstituduneentitinscable,etdemoduleschargsenmmoirela
demande. Lors de la phase de dmarrage, le gestionnaire de dmarrage charge le noyau, et les modules
correspondants la configuration matrielle du systme sont galement chargs. Pour acclrer la phase de
dtection du matriel et le chargement des modules associs, la plupart des systmes modernes exploitent un
ramdisk(disquevirtueldontlesupportphysiqueestlammoire)contenantlensembledesmodules.Ceramdiskest
gnraprslacompilationdunoyau,etestappeldirectementparlegestionnairededmarrage.

d.Gestiondesversionsdunoyau
LenoyauporteunnumrodeversiondetypeA.B.C,parexemple2.6.15.Adonnelaversionprincipaledunoyau,
actuellement, et pour sans doute encore quelques temps, la version 2. B reprsente la version courante du
noyau.Cettevaleurestsystmatiquementpairesurlesversionsdenoyauxstablesetimpairesurlesversionsen
dveloppement. Enfin, C est incrment en fonction des volutions mineures de noyau, essentiellement les
correctionsdeboguesetlesprisesenchargedenouveauxmatriels.
Lacommandeunamerpermetdafficherlaversiondunoyauencoursdexcution.
Affichagedelaversiondunoyaucourant
toto@serveur:~$ uname -r
2.6.32-24-generic
toto@serveur:~$

2.Procduredecompilationetdexploitation
LaprocduredecompilationdoittoujourstreconsultedanslefichierREADMEprsentaveclessourcesdunoyau.
Les lments spcifiques du noyau sont documents dans un rpertoireDocumentationfourniaveclessources.Le
fichierREADMEnedocumentequelaprocduredecompilation.

a.Rcuprationdessources
Le code source du noyau est tlchargeable librement depuis le site http://www.kernel.org . Les principales
versionsysontdisponibles.LesliensFullsourcepermettentdetlchargerlecodesourcecompletdunoyau.
Lenoyautantlivrsousformedunearchivetar.bz2,ilfautdabordladcompresser.Commepourtoutecompilation
dapplication,lamajeurepartiedutravailsepasseradanslerpertoireissudelextractiondelarchive.
Si on travaille sur les sources de noyau copies lors de linstallation du systme, le rpertoire de travail devrait
tre/usr/src/linux.Ladocumentationsetrouveraalorsnaturellementdans/usr/src/linux/Documentation.Encasde
travailsurdessourcesnouvelles,unrpertoireneutreestrecommand.

b.Gnrationdufichierderponse
Lacompilationseffectueenfonctiondesinformationsdonnesdansunfichier.configquisetrouvedanslaracinedu
rpertoire des sources. Ce fichier indique pour chaque lment du noyau sil doit tre prsent dans le c ur de
noyau,prsentsousformedemodule,ouabsentdunoyaucompil.
Selonlesystmeemploy,plusieursmoyenssontnotredispositionpourgnrercefichierderponse.

ENI Editions - All rights reserved - Samuel CASAL

- 3-

Gnrationdufichierderponses :commandespossibles
makeconfig

Poselaquestionlutilisateurpourchacundesmodules.

makemenuconfig

Prsenteuneinterfacetexteamliore.

makexconfig

Prsenteuneinterfacegraphique.

makegconfig

Prsenteuneinterfacegraphique.

makedefconfig

Gnreunfichierderponseensappuyantsurtouteslesvaleursdecompilationpar
dfaut.

makeoldconfig

Gnreunfichierderponseensappuyantsurunfichier.configdjutilispour
uneversionplusanciennedunoyau.

Silacompilationdunoyauneprsentepasdedifficultparticulire,lerenseignementdufichierderponserequiert
unecomptencetendueetlaconnaissanceprcisedumatriel.
Exempledecrationdufichierderponses
Lacompilationprcisedunoyauncessiteuneconnaissancedetouteslestechnologiesmatriellesgresparcenoyau.
[root@beta linux-2.6.34.4]# make config
HOSTCC scripts/basic/fixdep
HOSTCC scripts/basic/docproc
HOSTCC scripts/basic/hash
HOSTCC scripts/kconfig/conf.o
(...)
PentiumPro memory ordering errata workaround (X86_PPRO_FENCE) [Y/n/?] y
HPET Timer Support (HPET_TIMER) [Y/n/?] y
Maximum number of CPUs (NR_CPUS) [8] (NEW) 8
SMT (Hyperthreading) scheduler support (SCHED_SMT) [Y/n/?] y
Multi-core scheduler support (SCHED_MC) [Y/n/?] y
Preemption Model
1. No Forced Preemption (Server) (PREEMPT_NONE)
> 2. Voluntary Kernel Preemption (Desktop) (PREEMPT_VOLUNTARY)
3. Preemptible Kernel (Low-Latency Desktop) (PREEMPT)
choice[1-3]: 2
Reroute for broken boot IRQs (X86_REROUTE_FOR_BROKEN_BOOT_IRQS) [N/y/?] (NEW) n
Machine Check / overheating reporting (X86_MCE) [Y/n/?] n
Toshiba Laptop support (TOSHIBA) [M/n/y/?] n
Dell laptop support (I8K) [M/n/y/?] m
Enable X86 board specific fixups for reboot (X86_REBOOTFIXUPS) [N/y/?]n
(...)
CRC-CCITT functions (CRC_CCITT) [M/y/?] m
CRC16 functions (CRC16) [M/y/?] m
CRC calculation for the T10 Data Integrity Field (CRC_T10DIF) [N/m/y/?] (NEW) m
CRC ITU-T V.41 functions (CRC_ITU_T) [M/y/?] m
CRC32 functions (CRC32) [Y/?] y
CRC7 functions (CRC7) [N/m/y/?] (NEW) n
CRC32c (Castagnoli, et al) Cyclic Redundancy-Check (LIBCRC32C) [Y/m/?] y
#
# configuration written to .config
#

[root@beta linux-2.6.34.4]#
Premireslignesdufichierdeconfiguration
[root@beta linux-2.6.34.4]# head -15 .config
#

- 4-

ENI Editions - All rights reserved - Samuel CASAL

# Automatically generated make config: dont edit


# Linux kernel version: 2.6.34.4
# Mon Aug 16 16:57:44 2010
#
# CONFIG_64BIT is not set
CONFIG_X86_32=y
# CONFIG_X86_64 is not set
CONFIG_X86=y
CONFIG_OUTPUT_FORMAT="elf32-i386"
CONFIG_ARCH_DEFCONFIG="arch/x86/configs/i386_defconfig"
CONFIG_GENERIC_TIME=y
CONFIG_GENERIC_CMOS_UPDATE=y
CONFIG_CLOCKSOURCE_WATCHDOG=y
CONFIG_GENERIC_CLOCKEVENTS=y
[root@beta linux-2.6.34.4]#
Tailleindicativedufichierdeconfiguration
[root@beta linux-2.6.34.4]# wc -l .config
3641 .config
[root@beta linux-2.6.34.4]#
Laconfigurationdesmodulespouruneversiondenoyauinstalledoitsetrouverdansunfichierconfigversiondans
lerpertoire/boot.
Visualisationdesfichiersdeconfigurationdesnoyaux
root@serveur:/boot$ ls config*
config-2.6.27-11-generic config-2.6.32-21-generic config-2.6.32-24-generic
config-2.6.28-16-generic config-2.6.32-22-generic
config-2.6.31-21-generic config-2.6.32-23-generic
root@serveur:/boot$ cat config-2.6.32-24-generic
#
# Automatically generated make config: dont edit
# Linux kernel version: 2.6.32-24-generic
# Thu Aug 19 01:38:31 2010
#
CONFIG_64BIT=y
# CONFIG_X86_32 is not set
CONFIG_X86_64=y
CONFIG_X86=y
CONFIG_OUTPUT_FORMAT="elf64-x86-64"
CONFIG_ARCH_DEFCONFIG="arch/x86/configs/x86_64_defconfig"
CONFIG_GENERIC_TIME=y
CONFIG_GENERIC_CMOS_UPDATE=y
CONFIG_CLOCKSOURCE_WATCHDOG=y
(...)
root@serveur:/boot$

c.Compilationdunoyauetdesmodules
Lacompilationseraliseleplussimplementdumondeentapantlacommandemakedepuislerpertoireracinedes
sources.Laduredeloprationdpenddelapuissancedelamachinesurlaquelleelleestralise,maisunebonne
heureestsouventncessaire.Pourunnoyauenversion2.6,lacommandemakeprovoquelacompilationdunoyau
etdesmodules.
Compilationdunoyauetdesmodules
Cestpartipouruneheureoudeux...
[root@beta linux-2.6.34.4]# make
scripts/kconfig/conf -s arch/x86/Kconfig
CHK
include/linux/version.h
UPD
include/linux/version.h
CHK
include/generated/utsrelease.h

ENI Editions - All rights reserved - Samuel CASAL

- 5-

UPD
CC
GEN
CC
(...)
CC
CC
LD
CC [M]
CC [M]
CC [M]
CC [M]
CC
CC
CC
(...)

include/generated/utsrelease.h
kernel/bounds.s
include/generated/bounds.h
arch/x86/kernel/asm-offsets.s
arch/x86/kernel/cpu/cpufreq/speedstep-lib.o
arch/x86/kernel/cpu/cpufreq/speedstep-smi.o
arch/x86/kernel/cpu/cpufreq/built-in.o
arch/x86/kernel/cpu/cpufreq/powernow-k8.o
arch/x86/kernel/cpu/cpufreq/acpi-cpufreq.o
arch/x86/kernel/cpu/cpufreq/speedstep-centrino.o
arch/x86/kernel/cpu/cpufreq/p4-clockmod.o
arch/x86/kernel/cpu/mcheck/mce.o
arch/x86/kernel/cpu/mcheck/mce-severity.o
arch/x86/kernel/cpu/mcheck/mce_intel.o

Lexcution de la commande make provoque la compilation du noyau et de ses modules. Elle appelle aussi la
commandedepmodquignrelefichiermodules.depdedpendancedesmodules.

d.Installationdesmodules
Les modules sont installs par la commande spcifique make modules_install. Ils sont copis dans un
rpertoire/lib/modules,sousunrpertoirecorrespondantlaversiondunoyau.
Visualisationdesrpertoirescontenantlesmodules
Chaqueversiondenoyauinstallasonrpertoiredemodulescorrespondant.
root@serveur:~$ ls
2.6.27-11-generic
2.6.27-7-generic
2.6.27-9-generic
root@serveur:~$

/lib/modules/
2.6.28-16-generic
2.6.31-21-generic
2.6.32-21-generic

2.6.32-22-generic
2.6.32-23-generic
2.6.32-24-generic

e.Installationdunoyau
Le noyau horsmodulessetrouvedanslerpertoiredessourcesdansunearborescencearch/x86/boot pour les
versions32bitsouarch/ia64/bootpourlesversions64bitssouslenombzImage.Soninstallationdanslesystme
enproductionsefaitencopiantsimplementcefichierdanslerpertoire/boot.Lenomutilispardfaut(bzImage)
esttoutfaitexploitable,maisilestprfrabledelerenommerpourtenircomptedelaversioncompile.
Des compilations ralises avec des versions anciennes de noyau peuvent gnrer un fichier zImage et non
bzImage.Leprfixezoubzindiqueleformatdecompressiondufichiernoyau(gzippourzetbzip2pourbz).
Unnoyaunouvellementcompildoittoujourstreinstallenplusdunoyauexistant.Nejamaisremplacerun
noyauquifonctionneparunnouveaunoyau.

Installationdunoyau
Lusageveutquelefichierdenoyauaitunnomnormalisquirefltesaversion.
root@serveur# cp arch/x86/boot/bzImage /boot/vmlinuz-2.6.15
root@serveur#

f.Crationduramdiskdesmodules
Il faut mettre disposition du noyau un ramdisk contenant lensemble des modules compils pour la nouvelle
version.Ceramdiskncessiteunfichierimage,quipeuttreconstruitavecdeuxcommandesdiffrentesenfonction
de la gnration du systme employ. La commande historique est mkinitrd. Elle tend disparatre au profit de
mkinitramfs.

- 6-

ENI Editions - All rights reserved - Samuel CASAL

Crationdunramdiskaveclacommandemkinitrd
mkinitrd nom_image version
Crationdunramdiskaveclacommandemkinitramfs
mkinitramfs -o nom_image version
Onom_imagereprsentelenomdufichierimagederamdiskcrer,etversionlenumrodeversiondunoyau.Ce
numrocorrespondenfaitaurpertoiredesmodulessitudans/lib/modules.
Exempledecrationdunramdisk
root@serveur:/boot$ mkinitrd /boot/initrd-2.6.28.img 2.6.28
root@serveur:/boot$ file initrd-2.6.28.img
initrd.img-2.6.32-24-generic: gzip compressed data, from Unix, last modified: Fri Aug 20 07:54:31 2010
root@serveur:/boot$
Le fichier ramdisk est en fait une archive cpio compresse au format gzip. Les commandes de cration de ramdisk
gnrentdirectementleursfichiersceformat.
Unsystmercentnedevraitproposerquelacommandemkinitramfs.Sitoutefoismkinitrdtaitdisponible
aussi, elle ne devrait pas tre utilise. mkinitrd sappuie sur devfs et non udev, et ne supporte pas les
disquessata.

g.Configurationdugestionnairededmarrage
Il ne suffit pas davoir compil le noyau et de lavoir plac au bon endroit, encore fautil que le gestionnaire de
dmarrage soit configur pour tre capable de charger ce noyau. Il conviendra donc dajouter une entre au
gestionnaire de dmarrage en consquence. Attention, il ne faut rien retirer la configuration du gestionnaire de
dmarrage :onnetouchepascequimarchedj.Ilsuffitdajouteruneentredanslefichierdeconfigurationdu
gestionnaireensebasantaubesoinsurlesentresdjprsentes.
Ajoutduneentreaugestionnairededmarrage
Laprservationdesentresexistantespermetdetoujourspouvoirdmarrersuruneconfigurationstable.
# noyau fonctionnel dorigine
title
Debian GNU/Linux, kernel 2.6.26-2-686
root
(hd0,0)
kernel
/boot/vmlinuz-2.6.26-2-686 root=/dev/hda1 ro quiet
initrd
/boot/initrd.img-2.6.26-2-686
# noyau ajout tester
title
ESSAI - modules statiques
root
(hd0,0)
kernel
/boot/vmlinuz-2.6.20 root=/dev/hda1 ro quiet
initrd
/boot/initrd.img-2.6.20

ENI Editions - All rights reserved - Samuel CASAL

- 7-

Patchdunoyau
1.Ajoutdepatch
Ilestpossiblepourbnficierdunnoyaurcentdetlchargerlessourcescompltesdunoyau,delescompileretde
lesinstallerentantquenouveaunoyau.Unemthodealternativeconsisteutiliserlessourcesdelanciennoyauet
delespatcheravantdelesrecompiler.
Lespatchssetlchargentsurlesitehttp://www.kernel.orgetsajoutentauxsourcesnuesdunoyau.Lapplication
dun patch se fait en gnral avec la commande patch et peut se faire spcifiquement avec un script livr avec le
noyau sappelantpatchkernel. Le script patchkernel se trouve dans un rpertoire scripts des sources du noyau,
alorsquelacommandepatchestlivreavecladistributionLinux.
Applicationdunpatchdessources
patch -pn < fichier_patch

Applicationdepatch :optionsetparamtres
pn

Dpenddelaconceptiondufichierdepatchs.Remontedenniveauxhirarchiques
danslescheminsdesfichiersexprims.

fichier_patch

Lefichiercontenantlespatchsappliquer.

Unfichierdepatchestenfaitlersultatdunecommandediffappliquedeuxarborescencesdesourcesdiffrentes.
Lefichierrsultantcontiendradoncunerfrencechacundesfichiersdelarborescencequidoiventtremodifis.Si
leniveauhirarchiquedesfichiersdcritsdanslepatchnecorrespondpasceluidessourcesmodifier,leparamtre
ppermetdedcalercettehirarchie.
Exempledapplicationdunpatch
Lesfichiersdepatchsontextrmementsensibleslaconformitdessourcesauxquellesilssontappliqus.Onnobtiendra
unrsultatsatisfaisantquesionappliquelebonpatchauxbonnessources.
[root@beta linux-2.6.34]# patch -p1 < patch-2.6.34.4
patching file Documentation/.gitignore
patching file Documentation/hwmon/ltc4245
patching file Documentation/kernel-parameters.txt
patching file Makefile
patching file arch/arm/Kconfig
patching file arch/arm/common/sa1111.c
patching file arch/arm/include/asm/atomic.h
patching file arch/arm/include/asm/tlbflush.h
patching file arch/arm/kernel/kprobes-decode.c
patching file arch/arm/kernel/perf_event.c
patching file arch/arm/mach-mx2/devices.c
patching file arch/arm/mach-omap2/board-rx51-peripherals.c
patching file arch/arm/mach-pxa/cm-x300.c
patching file arch/arm/mach-realview/Kconfig
patching file arch/arm/mach-realview/include/mach/barriers.h
patching file arch/arm/mm/cache-v7.S
patching file arch/arm/mm/copypage-feroceon.c
patching file arch/arm/mm/copypage-v4wb.c
patching file arch/arm/mm/copypage-v4wt.c
patching file arch/arm/mm/copypage-xsc3.c
(...)
[root@beta linux-2.6.34]#

2.Retraitdepatchs
Le retrait dun patch appliqu se fait avec la mme commande et la mme syntaxe, laquelle on ajoute le

ENI Editions - All rights reserved - Samuel CASAL

- 1-

commutateurR.
Applicationdunpatchdessources
patch -pn -R < fichier_patch

Applicationdepatch :optionsetparamtres
pn

Dpenddelaconceptiondufichierdepatchs.Remontedenniveauxhirarchiques
danslescheminsdesfichiersexprims.

Retirelepatchaulieudelappliquer.

fichier_patch

Lefichiercontenantlespatchsappliquer.

Exempledesuppressiondunpatch
[root@beta linux-2.6.34]# patch -p1 -R < patch-2.6.34.4
patching file Documentation/.gitignore
patching file Documentation/hwmon/ltc4245
patching file Documentation/kernel-parameters.txt
patching file Makefile
patching file arch/arm/Kconfig
patching file arch/arm/common/sa1111.c
patching file arch/arm/include/asm/atomic.h
(...)

- 2-

ENI Editions - All rights reserved - Samuel CASAL

Validationdesacquis
Testezvosconnaissancesenrpondantauxquestionssuivantes.Cesquestionsnappellentpastoujoursdesrponses
dfinitives. Les questions poses en certification, bien quabordant les mmes sujets, seront pour la plupart poses
sous forme de questionnaire choix multiples, ou bien demanderont une rponse courte, tape en toutes lettres au
clavier.

1.Questions
1 Enquoiunprogrammecritdansunlangagedeprogrammationcompilestilgnralementplusperformant
quunprogrammecritdansunlangageinterprt?
2 quoisertlescriptconfiguregnralementlivraveclessourcesdeprogrammesopensource?
3 Quelleestladiffrenceentrelescommandesmakecleanetmakemrproper?
4 Quandunprogrammeestcompildefaondynamique,dequelslmentsestildpendantdansson
environnementdexcution?
5 Commentlacommandeldconfigconnatellelesrpertoiresanalyserpourinventorierlesbibliothquesdun
systme?
6 Danslecadredunecompilationdenoyau,quellecibledelacommandemakepermetdesappuyersurun
fichier.configrsultantdunecompilationprcdente?
7 Pourquoinedevriezvouspasinstallerunnoyauenversion2.5.8?
8 Enlabsencedeconfigurationparticulire,dansquellecirconstanceunmoduledenoyauprsentsousformede
fichiersurlesystmenestilpaschargaudmarrage?
9 Quelleestlanaturedunfichierdechargementderamdiskutilisauchargementdunoyaupourladtection
despriphriques?
10 Pourquoilacommandemkinitrdatelledisparuauprofitdelacommandemkinitramfs?

2.Rponses
1 Enquoiunprogrammecritdansunlangagedeprogrammationcompilestilgnralementplusperformant
quunprogrammecritdansunlangageinterprt?
Lexcutiondun programme interprt ncessite lusagedunautreprogrammeappelinterprteur,quipourchaque
actiondcritedanslecodeduprogrammedevratraduirecetteactionenunemultitudedinstructionsprocesseur.Dans
le cas dun programme compil, le code binaire du programme compil contient directement des instructions
intelligiblesparleprocesseur.Letraitementestdoncbeaucoupplusrapide.Lacontrepartieestquelecodecompilest
intimementliaujeudinstructionsdunprocesseur,etestdoncmoinsfacilementportable.
2 quoisertlescriptconfiguregnralementlivraveclessourcesdeprogrammesopensource?
vrifier la validit de lenvironnement de compilation, et gnrer un fichier de rponse Makefile utilis par le
compilateur.Ilarrivequelessourcessoientlivressanslescriptconfigure.Cestgnralementqueledveloppeurna
passouhaitdepersonnalisationpossibledesonprogrammeavantlacompilation.
3 Quelleestladiffrenceentrelescommandesmakecleanetmakemrproper?
La commande make clean nettoie le rpertoire des sources de tous les lments rsultants de la compilation. Une
nouvelle compilation peut donc tre entreprise sur les mmes bases. La commande make mrproper efface tout
lmentautrequelessources,jusquauxlmentsdeconfiguration.Unpeucommesionavaittouteffacpuisrefait
lextractiondessourcespartirdufichiertar.Ilestnoterquecesoptionsnesontpastoujoursdisponibles(mrproper
notamment).
4 Quandunprogrammeestcompildefaondynamique,dequelslmentsestildpendantdansson
environnementdexcution?
Des bibliothques logicielles (libraries). Il est trs rare aujourdhui de trouver des excutables compils en statique.
Lespacedisqueestainsilargementoptimis,maislexcutableestplusdpendantdesonenvironnement.
5 Commentlacommandeldconfigconnatellelesrpertoiresanalyserpourinventorierlesbibliothquesdun
systme?
Enconsultantsonfichierdeconfiguration/etc/ld.so.conf.Cefichiercontientlalistedesrpertoiresanalyserpoury
trouverdesfichiersdebibliothques.
6 Danslecadredunecompilationdenoyau,quellecibledelacommandemakepermetdesappuyersurun
fichier.configrsultantdunecompilationprcdente?
Cest la cible oldconfig. Seuls les lments nouveaux non rfrencs dans lancien fichier .config feront lobjet dune
ENI Editions - All rights reserved - Samuel CASAL

- 1-

questionposelutilisateur.
7 Pourquoinedevriezvouspasinstallerunnoyauenversion2.5.8?
Parcequelanumrotationimpairedudeuximechiffreindiquequilsagitdunnoyauendveloppement.Lesversions
deproductionsontpassesdirectementdelaversion2.4laversion2.6.
8 Enlabsencedeconfigurationparticulire,dansquellecirconstanceunmoduledenoyauprsentsousformede
fichiersurlesystmenestilpaschargaudmarrage?
Sicemodulenestpasncessaire.Soitparcequilgreunmatrielabsentdusystme,soitparcequilnestappelpar
aucunefonctionlogicielle.
9 Quelleestlanaturedunfichierdechargementderamdiskutilisauchargementdunoyaupourladtection
despriphriques?
Ilsagitdunearchivecpiocompresseauformatgzip.Enlabsencedextensionnormalisepourunfichiercompress,
il faut recourir la commande file pour sen rendre compte. Attention, si vous souhaitez voir son contenu, il faut
dabordlarenommerenunfichierportantlabonneextension(gz),puisralisersonextractionaveclacommandecpio.
10 Pourquoilacommandemkinitrdatelledisparuauprofitdelacommandemkinitramfs?
Parcequelacommandeinitrdnesappuiepassurlagestiondefichierdepriphriquesmodernesudev,maissurdevfs,
etellenesaitpasgrerlesdisquesdurssata,cequidevientproblmatiquesurlessystmesrcents.

- 2-

ENI Editions - All rights reserved - Samuel CASAL

Travauxpratiques
1.Compilationduneapplication
VousregrettezlabsencedeclientRDPsurleserveurbeta.Vousdcidezdoncdetlchargerlecodesourceduclient
rdesktopetdelecompiler.

a.Tlchargementdessources
Sur le serveur beta, rendezvous sur le site www.rdesktop.org et tlchargez les sources de la dernire version
disponibledulogiciel(sectionDownloads,versionlaplusrcentedulogiciel).
Dcompressezlarchivetlchargedanslerpertoiredevotrechoix.

b.Compilationdessources
Commandesutiles

configure

make

tar

Manipulations
1.

Danslerpertoiredessources,lancezlescriptdeconfigurationdelacompilation.

2.

Lancezlacompilationdessources.

Rsumdescommandesetrsultatlcran
Extractionetpositionnementdanslerpertoiredessources :
[root@beta rdp]# ls
rdesktop-1.6.0.tar.gz
[root@beta rdp]# tar xzf rdesktop-1.6.0.tar.gz
[root@beta rdp]# ls
rdesktop-1.6.0 rdesktop-1.6.0.tar.gz
[root@beta rdp]# cd rdesktop-1.6.0
[root@beta rdesktop-1.6.0]#
Configurationdelacompilation :
[root@beta rdesktop-1.6.0]# ./configure
(...)
checking build system type... i686-redhat-linux-gnu
checking host system type... i686-redhat-linux-gnu
configure: creating ./config.status
config.status: creating Makefile
[root@beta rdesktop-1.6.0]#
Compilation :
[root@beta rdesktop-1.6.0]# make
gcc -g -O2 -Wall -I/usr/include -I/usr/include/alsa
-DPACKAGE_NAME=\"rdesktop\" -DPACKAGE_TARNAME=\"rdesktop\"
-DPACKAGE_VERSION=\"1.6.0\" -DPACKAGE_STRING=\"rdesktop\ 1.6.0\"
-DPACKAGE_BUGREPORT=\"\" -DSTDC_HEADERS=1 -DHAVE_SYS_TYPES_H=1
-DHAVE_SYS_STAT_H=1 -DHAVE_STDLIB_H=1 -DHAVE_STRING_H=1

ENI Editions - All rights reserved - Samuel CASAL

- 1-

-DHAVE_MEMORY_H=1 -DHAVE_STRINGS_H=1 -DHAVE_INTTYPES_H=1


-DHAVE_STDINT_H=1 -DHAVE_UNISTD_H=1 -DL_ENDIAN=1 -DHAVE_SYS_SELECT_H=1
-DHAVE_LOCALE_H=1 -DHAVE_LANGINFO_H=1 -Dssldir=\"/usr\"
-DEGD_SOCKET=\"/var/run/egd-pool\" -DWITH_RDPSND=1 -DRDPSND_OSS=1
-DRDPSND_ALSA=1 -DHAVE_DIRENT_H=1 -DHAVE_DIRFD=1 -DHAVE_DECL_DIRFD=1
-DHAVE_ICONV_H=1 -DHAVE_ICONV=1 -DICONV_CONST= -DHAVE_SYS_VFS_H=1
-DHAVE_SYS_STATVFS_H=1 -DHAVE_SYS_STATFS_H=1 -DHAVE_SYS_PARAM_H=1
-DHAVE_SYS_MOUNT_H=1 -DSTAT_STATVFS=1 -DHAVE_STRUCT_STATVFS_F_NAMEMAX=1
-DHAVE_STRUCT_STATFS_F_NAMELEN=1 -D_FILE_OFFSET_BITS=64
-DHAVE_MNTENT_H=1 -DHAVE_SETMNTENT=1
-DKEYMAP_PATH=\"/usr/local/share/rdesktop/keymaps/\" -o rdesktop.o -c rdesktop.c
(...)
[root@beta rdesktop-1.6.0]#

c.Installationdesbinaires
Commandesutiles

make

Manipulations
1.

Installezleslmentscompilssurlesystme.

Rsumdescommandesetrsultatlcran
Installationdeslmentscompils :
[root@beta rdesktop-1.6.0]# make install
mkdir -p /usr/local/bin
/usr/bin/install -c rdesktop /usr/local/bin
strip /usr/local/bin/rdesktop
chmod 755 /usr/local/bin/rdesktop
mkdir -p /usr/local/share/rdesktop/keymaps/
cp keymaps/?? keymaps/??-?? /usr/local/share/rdesktop/keymaps/
cp keymaps/common /usr/local/share/rdesktop/keymaps/
cp keymaps/modifiers /usr/local/share/rdesktop/keymaps/
chmod 644 /usr/local/share/rdesktop/keymaps//*
mkdir -p /usr/local/share/man/man1
cp doc/rdesktop.1 /usr/local/share/man/man1
chmod 644 /usr/local/share/man/man1/rdesktop.1
[root@beta rdesktop-1.6.0]#
Notez que les lments installs ne se cantonnent pas aux lments binaires compils, mais comprennent aussi
dautresfichierscommelesfichiersdaideoudeconfiguration.

d.Nettoyagedessources
Commandesutiles

make

Manipulations

- 2-

1.

Constatezquilexistebienunfichierexcutablerdesktoplaracinedessources.

2.

Faitesensortequelerpertoiredessourcessoitdbarrassdesrsultatsdela
compilation,toutenconservantleslmentsdeconfigurationafinquilspuissenttre
rexploitspouruneprochainecompilation.

3.

Vrifiezquelefichierexcutablerdesktopabientsupprim.

4.

VrifiezquelefichierderponseMakefileabientprservlaracinedessources.

ENI Editions - All rights reserved - Samuel CASAL

Rsumdescommandesetrsultatlcran
[root@beta rdesktop-1.6.0]# ls -l rdesktop
-rwxr-xr-x 1 root root 615042 ao 16 22:13 rdesktop
[root@beta rdesktop-1.6.0]# make clean
rm -f *.o *~ vnc/*.o vnc/*~ rdesktop rdp2vnc
[root@beta rdesktop-1.6.0]# ls -l rdesktop
ls: rdesktop: Aucun fichier ou rpertoire de ce type
[root@beta rdesktop-1.6.0]# ls -l Makefile
-rw-r--r-- 1 root root 5823 ao 16 22:01 Makefile
[root@beta rdesktop-1.6.0]#

2.Compilationetinstallationdunmoduledenoyau
Pourassurerunfonctionnementspcifiquedunecarterseau,undevosdveloppeursamodifilecodesourcedu
pilotedecarterseautg3.Vousdevezcompilerlecodesourcedupilotepourobteniretinstallerunmoduledenoyau.

a.Rcuprationdessources
TlchargezsurlesitedesditionsENIlefichierlinux3.110g.tar.gzetralisezsonextraction.

b.Suppressiondumoduleexistant
Commandesutiles

lsmod

rm

rmmod

Manipulations
1.

Vrifiezquelemoduletg3nestpasactuellementchargenmmoire.Sictaitlecas,
dchargezleaveclacommandeapproprie.

2.

Effacezlefichier/lib/modules/2.6.x/kernel/drivers/net/tg3.ko.

Rsumdescommandesetrsultatlcran
[root@beta ~]# lsmod | grep tg3
[root@beta ~]#
[root@beta ~]# rm /lib/modules/2.6.18-194.el5/kernel/drivers/net/tg3.ko
rm: dtruire fichier rgulier `/lib/modules/2.6.18-194.el5/kernel/drivers/net/tg3.ko? y
[root@beta ~]#

c.Compilationdessources
Commandesutiles

make

Manipulations
1.

Positionnezvousdanslerpertoireextraitetconstatezlabsencedefichierconfigure.
Lesdveloppeursnontpassouhaitquonpuisseinteragiraveclacompilationetont
djcritlesfichiersMakefilencessaireslacompilation.
ENI Editions - All rights reserved - Samuel CASAL

- 3-

2.

Compilezlessourcesdupilote.

Rsumdescommandesetrsultatlcran
AbsencedescriptdeconfigurationetfichierMakefiledjprsent :
[root@beta
total 1024
-rw-r--r--rw-r--r--rw-r--r--rwxr--r--rw-r--r--rw-r--r--rw-r--r--rw-r--r--rw-r--r--rw-r--r--rw-r--r--rw-r--r--rw-r--r--

tg3-3.110g]# ls -l
1
1
1
1
1
1
1
1
1
1
1
1
1

2397
2397
2397
2397
2397
2397
2397
2397
2397
2397
2397
2397
2397

305 350928 avr 13 23:19 ChangeLog


305 15153 jan 9 2009 LICENSE
305
3870 mai 13 01:16 Makefile
305
6584 avr 13 18:56 makeflags.sh
305 10921 jun 8 19:58 README.TXT
305
3445 fv 5 2010 tg3.4
305 424808 jun 9 00:45 tg3.c
305
2253 mar 31 22:20 tg3_compat2.h
305 35711 jun 4 20:08 tg3_compat.h
305 43934 mar 31 22:26 tg3_firmware.h
305 114378 jun 4 20:01 tg3.h
305
4286 jun 4 01:45 tg3_vmware.c
305
1354 jun 4 01:57 tg3_vmware.h

Compilation :
[root@beta tg3-3.110g]# make
sh makeflags.sh /lib/modules/2.6.18-194.el5/source > tg3_flags.h
make -C /lib/modules/2.6.18-194.el5/build SUBDIRS=/root/Desktop/reseau/tg3-3.110g modules
make[1]: entrant dans le rpertoire /usr/src/kernels/2.6.18-194.el5-i686
CC [M] /root/Desktop/reseau/tg3-3.110g/tg3.o
Building modules, stage 2.
MODPOST
CC
/root/Desktop/reseau/tg3-3.110g/tg3.mod.o
LD [M] /root/Desktop/reseau/tg3-3.110g/tg3.ko
make[1]: quittant le rpertoire /usr/src/kernels/2.6.18-194.el5-i686
[root@beta tg3-3.110g]#

d.Chargementdumoduledenoyauetinstallationdumodule
Commandesutiles

insmode

ls

lsmode

Manipulations
1.

Constatezlaprsencedunfichiertg3.ko.Cestlemoduledunoyaufrachement
compil.

2.

Chargezcemoduleenmmoireaveclacommandeapproprie.

3.

Installezcemoduledanssonemplacementappropri(prvuparledveloppeur).

Rsumdescommandesetrsultatlcran
Chargementdumoduleenmmoire :
[root@beta
-rw-r--r-[root@beta
[root@beta
tg3

- 4-

tg3-3.110g]# ls -l tg3.ko
1 root root 630546 ao 16 22:30 tg3.ko
tg3-3.110g]# insmod tg3.ko
tg3-3.110g]# lsmod | grep tg3
125832 0

ENI Editions - All rights reserved - Samuel CASAL

[root@beta tg3-3.110g]#
Installationdumodule :
[root@beta tg3-3.110g]# make install
make -C /lib/modules/2.6.18-194.el5/build SUBDIRS=/root/Desktop/reseau/tg3-3.110g modules
make[1]: entrant dans le rpertoire /usr/src/kernels/2.6.18-194.el5-i686
Building modules, stage 2.
MODPOST
make[1]: quittant le rpertoire /usr/src/kernels/2.6.18-194.el5-i686
gzip -c tg3.4 > tg3.4.gz
mkdir -p //lib/modules/2.6.18-194.el5/updates;
install -m 444 tg3.ko //lib/modules/2.6.18-194.el5/updates;
install -m 444 tg3.4.gz /usr/share/man/man4;\
[root@beta tg3-3.110g]#

3.Patcheruneapplication
Unamigeekvousdemandesivouspouvezmodifierseslistesdecoursesdelasemaine.Vousestimezjustetitre
quecelaconstitueraunebonnefaondesefamiliariseraveclaprocduredapplicationdepatchs.

a.Rcuprationdessourcesetdufichierdepatch
TlchargezsurlesitedesditionsENIlefichiercourses.tar.gzetralisezsonextraction.Tlchargezgalement
lefichiermodif_courses.

b.Applicationdupatch
Commandesutiles

cp

patch

tar

Manipulations
1.

Lerpertoirecoursescontientunearborescenceaveclesjoursdelasemaineetles
coursesraliserchaquejour.Placezlefichierdepatchsdirectementsouslerpertoire
courses.

2.

Affichezlalistedecoursesdulundi(fichiercoursessouslerpertoirelundi).

3.

Lepatchatconudepuislerpertoireparentdessources.Ilnestdoncpas
applicabledirectementdepuislerpertoiresources.Appliquezlepatchenretirantun
niveauderpertoire.

4.

Affichezlalistedecoursesdulundi.

Rsumdescommandesetrsultatlcran
Copiedupatch :
toto@ubuntu:~$ ls
courses.tar.gz modif_courses
toto@ubuntu:~$ tar xzf courses.tar.gz
toto@ubuntu:~$ ls courses
lundi mardi mercredi
toto@ubuntu:~$ cp modif_courses courses
toto@ubuntu:~$

ENI Editions - All rights reserved - Samuel CASAL

- 5-

Coursesdulundi :
toto@ubuntu:~/courses$ cat lundi/courses
beurre
fromage
pain
carottes
toto@ubuntu:~/courses$
Applicationdupatch(sansdcalagehirarchique) :
toto@ubuntu:~/courses$
patching file courses
Hunk #1 FAILED at 1.
1 out of 1 hunk FAILED
patching file courses
Hunk #1 FAILED at 1.
1 out of 1 hunk FAILED
patching file courses
Hunk #1 FAILED at 1.
1 out of 1 hunk FAILED
toto@ubuntu:~/courses$

patch < modif_courses

-- saving rejects to file courses.rej

-- saving rejects to file courses.rej

-- saving rejects to file courses.rej

Applicationdupatch :
toto@ubuntu:~/courses$ patch -p1 < modif_courses
patching file lundi/courses
patching file mardi/courses
patching file mercredi/courses
toto@ubuntu:~/courses$
Coursesdulundiaprsapplicationdupatch :
toto@ubuntu:~/courses$ cat lundi/courses
beurre
fromage
pain
navets
toto@ubuntu:~/courses$

c.Retraitdupatch
Naimantpaslesnavetsetcraignantdtreinvitdner,vousdcidezderetirerlepatch.
Commandesutiles

patch

Manipulations
1.

Retirezlepatch.

2.

Affichezlalistedecoursesdulundi.

Rsumdescommandesetrsultatlcran
Retraitdupatch :
toto@ubuntu:~/courses$ patch -p1 -R < modif_courses
patching file lundi/courses
patching file mardi/courses
patching file mercredi/courses
toto@ubuntu:~/courses$

- 6-

ENI Editions - All rights reserved - Samuel CASAL

Coursesdulundiaprsretraitdupatch :
toto@ubuntu:~/courses$ cat lundi/courses
beurre
fromage
pain
carottes
toto@ubuntu:~/courses$

4.Compilationetinstallationdunnouveaunoyau
Nesachantcommentoccupervotreweekend,vousentreprenezdecompilerunnouveaunoyaupourvotreserveur
alpha.Afinquelaproductionpuissereprendresansencombrelelundisuivant,vousprendrezlesoindenesupprimer
aucunnoyauexistant.

a.Installationdesoutilsdecompilation
Afindedisposerdesoutilsdecompilationsurleserveuralpha,tapezlacommandesuivante :
apt-get install gcc make

b.Tlchargementdessourcesdunnouveaunoyau
Commandesutiles

tar

Manipulations
1.

Allezsurlesitewww.kernel.org,ettlchargezlessourcescompltesduderniernoyau
stable(souslelienLatestStableKernel).

2.

Ralisezsonextractiondansunrpertoiredetravailneutre.

Rsumdescommandesetrsultatlcran
toto@alpha:~/noyau$ ls
linux-2.6.35.2.tar.bz2
toto@alpha:~/noyau$ tar xjf linux-2.6.35.2.tar.bz2
toto@alpha:~/noyau$ ls
linux-2.6.35.2 linux-2.6.35.2.tar.bz2
toto@alpha:~/noyau$

c.Configurationetcompilationdunoyau
Commandesutiles

make

Manipulations
1.

Gnrezunfichierdeconfigurationdunoyauenutilisanttouteslesvaleurspardfaut
pourlacompilation.

2.

Vrifiezlaprsencedunfichier.configdanslerpertoireracinedessources.

3.

Compilezlenoyau.

Rsumdescommandesetrsultatlcran
ENI Editions - All rights reserved - Samuel CASAL

- 7-

Gnrationdufichierdeconfiguration :
toto@alpha:~/noyau$ cd linux-2.6.35.2
toto@alpha:~/noyau/linux-2.6.35.2$ make defconfig
HOSTCC scripts/basic/fixdep
HOSTCC scripts/basic/docproc
HOSTCC scripts/basic/hash
HOSTCC scripts/kconfig/conf.o
HOSTCC scripts/kconfig/kxgettext.o
SHIPPED scripts/kconfig/zconf.tab.c
SHIPPED scripts/kconfig/lex.zconf.c
SHIPPED scripts/kconfig/zconf.hash.c
HOSTCC scripts/kconfig/zconf.tab.o
HOSTLD scripts/kconfig/conf
*** Default configuration is based on i386_defconfig
#
# configuration written to .config
#
toto@alpha:~/noyau/linux-2.6.35.2$
Il arrive souvent que la dfinition de la cible defconfig ne soit pas la plus adquate pour un usage courant. Une
mthodealternativeconsisteutiliserlacibleconfig(makeconfig),etsendormirsurlatoucheentrepourutiliser
touteslesvaleurspardfaut).
Compilationdunoyau :
toto@alpha:~/noyau/linux-2.6.35.2$ make
(...)
LD
arch/x86/boot/setup.elf
OBJCOPY arch/x86/boot/setup.bin
OBJCOPY arch/x86/boot/vmlinux.bin
HOSTCC arch/x86/boot/tools/build
BUILD
arch/x86/boot/bzImage
Root device is (3, 1)
Setup is 12060 bytes (padded to 12288 bytes).
System is 4249 kB
CRC d836c8
Kernel: arch/x86/boot/bzImage is ready (#1)
Building modules, stage 2.
MODPOST 3 modules
CC
arch/x86/kernel/test_nx.mod.o
LD [M] arch/x86/kernel/test_nx.ko
CC
drivers/scsi/scsi_wait_scan.mod.o
LD [M] drivers/scsi/scsi_wait_scan.ko
CC
net/netfilter/xt_mark.mod.o
LD [M] net/netfilter/xt_mark.ko
toto@alpha:~/noyau/linux-2.6.35.2$

d.Installationdunouveaunoyauetdesesmodules
Commandesutiles

cp

make

su

Manipulations

- 8-

1.

Prenezsincessairelidentitetlesprivilgesducompteroot.

2.

Copiezlefichierdenoyaudanssonrpertoirenormalissouslenomvmlinuzversion.
Lenomdufichiernaaucuneimportance,onessayeengnraldtrecohrentavecles

ENI Editions - All rights reserved - Samuel CASAL

noyauxexistantsetdjprsentsdansladistribution.
3.

Installezlesmodulesdenoyaudansleuremplacementnormalisenutilisantuneseule
commande.

Rsumdescommandesetrsultatlcran
Installationdunoyau :
toto@alpha:~/noyau/linux-2.6.35.2$ su
Mot de passe :
alpha:/home/toto/noyau/linux-2.6.35.2# cp arch/x86/boot/bzImage /boot/vmlinuz-2.6.35
alpha:/home/toto/noyau/linux-2.6.35.2#
Installationdesmodules :
alpha:/home/toto/noyau/linux-2.6.35.2# make modules_install
INSTALL arch/x86/kernel/test_nx.ko
INSTALL drivers/scsi/scsi_wait_scan.ko
INSTALL net/netfilter/xt_mark.ko
DEPMOD 2.6.35.2
alpha:/home/toto/noyau/linux-2.6.35.2#

e.Gnrationduramdiskdedmarrage
Commandesutiles

file

mkinitramfs

Manipulations
1.

Positionnezvousdanslerpertoire/boot.

2.

Gnrezunramdiskcorrespondantvotrenouvelleversiondenoyausouslenom
initrd.imgversion.

3.

Silaversiondevotrenoyaunestpasreconnueparlacommande,consultezle
rpertoire/lib/modules.

4.

Selonlesversions,desavertissementspeuventapparatre.

5.

Vrifiezlaprsencedunnouveaufichierimagedanslerpertoire/bootetdterminez
sanature.

Rsumdescommandesetrsultatlcran
Gnrationdufichierimage :
alpha:/boot# cd /boot
alpha:/boot# mkinitramfs -o initrd.img-2.6.35 2.6.35
Cannot find /lib/modules/2.6.35
alpha:/boot# ls /lib/modules
2.6.26-2-686 2.6.35.2
alpha:/boot# mkinitramfs -o initrd.img-2.6.35 2.6.35.2
W: mdadm: /etc/mdadm/mdadm.conf defines no arrays.
alpha:/boot#
Vrification :
alpha:/boot# file initrd.img-2.6.35
initrd.img-2.6.35: gzip compressed data, from Unix, last modified: Tue Aug 17 10:37:50 2010
alpha:/boot#

ENI Editions - All rights reserved - Samuel CASAL

- 9-

f.Configurationdugestionnairededmarrage
Commandesetfichiersutiles

/boot/grub/menu.lst

vi

Manipulations
1.

ditezlefichierdeconfigurationdugestionnairededmarragegrub.

2.

Augmentezlavaleurdetimeoutpouravoirplusdetempsauprochaindmarrage.

3.

Verslafindufichier,trouvezladerniresectionrfrenantunnoyauordinaire(non
single)etdupliquezla.

4.

Modifiezletitredunefaonquifasseapparatrelaqualitnonvalidedevotrenoyau.

5.

Modifiezlavaleurduparamtrekernelpourchargervotrenoyau.

6.

Modifiezlavaleurduparamtreinitrdpourchargervotrefichierimagedemodules.

7.

Redmarrezvotreserveuretchoisissezvotrenoyau.

8.

Nevouslaissezpasimpressionnerpardesmessagesderreur,quilssoientbloquants
ounon.Lacompilationdunnoyauestuneaffairedelonguehaleineetneserussitpas
forcmentenunedemijourne.Vousavezdailleurseulaprsencedespritde
prserverlesnoyauxexistantsaucasounchecsurviendrait!

Rsumdescommandesetrsultatlcran
Fichier/boot/grub/menu.lstmodifi:
timeout 15
(...)
## ## End Default Options ##
title
root
kernel
initrd

Debian GNU/Linux, kernel 2.6.26-2-686


(hd0,0)
/boot/vmlinuz-2.6.26-2-686 root=/dev/hda1 ro quiet
/boot/initrd.img-2.6.26-2-686

title
root
kernel
initrd

Debian GNU/Linux, kernel 2.6.26-2-686 (single-user mode)


(hd0,0)
/boot/vmlinuz-2.6.26-2-686 root=/dev/hda1 ro single
/boot/initrd.img-2.6.26-2-686

### END DEBIAN AUTOMAGIC KERNELS LIST


title
ESSAI - Utiliser hors production - noyau 2.6.35
root
(hd0,0)
kernel
/boot/vmlinuz-2.6.35 root=/dev/hda1 ro quiet
initrd
/boot/initrd.img-2.6.35

- 10 -

ENI Editions - All rights reserved - Samuel CASAL

Tableaudesobjectifs
Pourlestps,lescasesavecun(1)indiquentlabsencedetravauxpratiques(sujetstrictementthoriqueneseprtant
pasunexercice).Lesrfrencesentreparenthsesindiquentuntraitementconjointdusujetauseindunautretp.
Enfin, les (2) indiquent des lments traits de faon dissmines sur tous les chapitres et exercices (le
troubleshootingesttraitsurlensembledessujets).
Chapitre

Travauxpratiques

Exam201:DetailedObjectives
Topic201:LinuxKernel
201.1KernelComponents

CompilationsCompilationdu
noyauLescomposantsdu
noyau

(1)

201.2Compilingakernel

CompilationsCompilationdu
noyauProcdurede
compilationetdexploitation

Compilationetinstallationdun
nouveaunoyau

201.3Patchingakernel

CompilationsPatchdunoyau
Ajoutdepatch

Patcheruneapplication

201.4Customise,buildandinstall
acustomkernelandkernel
modules

CompilationsCompilationdu
noyauProcdurede
compilationetdexploitation

Compilationetinstallationdun
moduledenoyau

201.5Manage/Querykerneland
kernelmodulesatruntime

CompilationsCompilationdu
noyauLescomposantsdu
noyau

Compilationetinstallationdun
moduledenoyau

202.1Customisingsystemstartup
andbootprocesses

DmarragedusystmeLe
processusinitetlesniveaux
dexcutionConfigurationdu
processusinit

Crationdunniveau
dexcutionsurmesureavec
applicationsspcifiques

202.2Systemrecovery

Dmarragedusystme
Dmarrageetchargementdu
noyau

RinstallationdeGRUBaprs
corruption

203.1OperatingtheLinux
filesystem

GestiondustockageGestion
etconfigurationdessystmes
defichierMontagedes
filesystems

Crationetexploitationdun
volumelogiquesurledisque
RAID0

203.2MaintainingaLinux
filesystem

GestiondustockageGestion
etconfigurationdessystmes
defichierGestiondes
systmesdefichiers

Extensionduvolumelogique

203.3Creatingandconfiguring
filesystemoptions

Gestiondustockage
SauvegardesDuplicationet
synchronisationdedonnes

Crationetexploitationdun
volumelogiquesurledisque
RAID0

203.4udevDeviceManagement

GestiondustockageGestion
etconfigurationdessystmes
defichierGestiondesdisques
durs

Topic202:SystemStartup

Topic203:FilesystemandDevices

ENI Editions - All rights reserved - Samuel CASAL

(1)

- 1-

Topic204:AdvancedStorageDeviceAdministration
204.1ConfiguringRAID

GestiondustockageRAID
ConfigurationduRAID

Configurationdundisqueen
RAID0

204.2AdjustingStorageDevice
Access

GestiondustockageGestion
etconfigurationdessystmes
defichierGestiondesdisques
durs

Configurationdundisqueen
RAID0

204.3LogicalVolumeManager

GestiondustockageLogical
VolumeManager

Crationetexploitationdun
volumelogiquesurledisque
RAID0,Extensionduvolume
logique

Topic205:NetworkingConfiguration
205.1Basicnetworking
configuration

Gestiondurseaulocal
Configurationdurseau
Configurationuniverselledu
rseau

Configurationdunserveur
DHCPsurleserveuralpha

205.2AdvancedNetwork
ConfigurationandTroubleshooting

Gestiondurseaulocal
DiagnosticrseauOutilsde
diagnosticsencoucherseau

Configurationdunserveur
DHCPsurleserveuralpha

205.3Troubleshootingnetwork
issues

Gestiondurseaulocal
DiagnosticrseauOutilsde
diagnosticsencouches
transportetapplication

ExploitationduserviceDHCP

205.4Notifyusersonsystem
relatedissues

MessagerieRemiselocaledes
messagesAlternativesla
messagerie

(1)

Topic206:SystemMaintenance
206.1Makeandinstallprograms
fromsource

CompilationsCompilationdes
applicationsProcdurede
compilationGNU

Compilationduneapplication

206.2Backupoperations

Gestiondustockage
SauvegardesLesutilitaires
darchivage

Gestiondustockage
Exploitationdunespacede
swapsurfichier
Protectiondesrseaux
Configurationdunrouteuret
parefeusurleserveurB
Compilationdesapplicationset
dunoyauLinuxCompilation
duneapplicationCompilation
etinstallationdunnouveau
noyau

Topic207:DomainNameServer

- 2-

207.1BasicDNSserver
configuration

RsolutiondenomsDNS
Configurationdebasedu
serveurServeurdecache

Configurationduserveurde
cache

207.2CreateandmaintainDNS
zones

RsolutiondenomsDNS
GestiondezonesDNS

Crationdezones
personnalisesdirecteset
inverses

207.3SecuringaDNSserver

RsolutiondenomsDNS
ScurisationduDNS

Crationdunserveur
secondaire

ENI Editions - All rights reserved - Samuel CASAL

Exam202:DetailedObjectives
Topic208WebServices
208.1Implementingawebserver

ServeurwebApache
Configurationdebasedun
serveurApache

Restrictiondelaccsaux
pagesweb

208.2Maintainingawebserver

ServeurwebApache
ConfigurationdApacheavec
SSL

Authentificationlocale

208.3Implementingaproxy
server

ServeurwebApacheServeur
proxyConfigurationdeshtes
virtuels

Authentificationparannuaire
LDAP

209.1SAMBAServerConfiguration

PartagesdefichiersPartage
dedonnesavecSAMBA

Miseenplacedepartages
SAMBAsurleserveuralpha

209.2NFSServerConfiguration

PartagesdefichiersPartage
dedonnesavecNFS

MiseenplacedepartagesNFS
surleserveurbeta

Topic209:FileSharing

Topic210NetworkClientManagement
210.1DHCPconfiguration

Gestiondurseaulocal
Configurationautomatiqueavec
DHCP

Configurationdunserveur
DHCPsurleserveuralpha,

210.2PAMauthentication

Authentificationdesutilisateurs
PAM

Authentificationdupostede
travailparlannuaireLDAP

210.3LDAPclientusage

Authentificationdesutilisateurs
LDAPLesoutilsclientsLDAP

Crationetalimentationdun
annuaireLDAPsurleserveur
beta

211.1Usingemailservers

MessagerieLesMTA

Gestiondesenvois

211.2ManagingLocalEMail
Delivery

MessagerieRemiselocaledes
messages

Gestiondesenvois

211.3ManagingRemoteEMail
Delivery

MessagerieRemisedistante
desmessages

Gestiondesretraits

212.1Configuringarouter

Protectiondesrseaux
Routageetfiltrage

Configurationdunrouteuret
parefeusurleserveurB

212.2SecuringFTPservers

PartagesdefichiersPartage
defichiersavecFTP

ConfigurationdunserveurFTP
surleserveuralpha

212.3Secureshell(SSH)

ScurisationdutraficOpenSSH

CrationduntunnelSSHentre
lastationdetravailetle
serveurbeta

212.4TCPWrapper

Gestiondurseaulocal
Configurationdurseau
Autrescommandesetfichiersde

(1)

ExploitationduserviceDHCP

Topic211:EMailServices

Topic212:SystemSecurity

ENI Editions - All rights reserved - Samuel CASAL

- 3-

gestiondurseau
212.5Securitytasks

Protectiondesrseaux
Administrationdunparefeu
aveclesiptablesFiltragede
paquets

Configurationdunrouteuret
parefeusurleserveurB

Dmarragedusystme
Dmarrageetchargementdu
noyauUtilisationdeGRUBen
modeinteractif, Rinstallation
deGRUB

RinstallationdeGRUBaprs
corruption

Topic213:Troubleshooting
213.1Identifyingbootstagesand
troubleshootingbootloaders

- 4-

213.2Generaltroubleshooting

(2)

(2)

213.3Troubleshootingsystem
resources

(2)

(2)

213.4Troubleshooting
environmentconfigurations

(2)

(2)

ENI Editions - All rights reserved - Samuel CASAL

Vous aimerez peut-être aussi