Académique Documents
Professionnel Documents
Culture Documents
ADMINISTRATION
DES SYSTÈMES
COURS
Retrouvez la liste de nos formations sur www.cned.fr
Pour plus d’informations, appelez le 05 49 49 94 94
Du lundi au vendredi, 8 h 30-18 h.
Coût d’une communication ordinaire.
*8014273* 8 2953 TG PA 00 15
www.cned.fr
BTS Services informatiques aux organisations – 2e année
Spécialité Solutions d’infrastructure, systèmes et réseaux
ADMINISTRATION
DES SYSTÈMES
Julien Grandidier – Alain Tarlowski
Sommaire
Conseils généraux 3
Séquence 1 : Préparation à l'installation des Serveurs (gestion des disques) 5
Séquence 2 : Les journaux d'événements ou logs 17
Séquence 3 : Planification des tâches et Scripting avancé 23
Séquence 4 : Gestion des performances 49
Séquence 5 : Continuité de service : haute disponibilité 55
Séquence 6 : Sécurité des accès + Accès distant 65
Séquence 7 : Dépannage 81
Les cours du CNED sont strictement réservés à l’usage privé de leurs destinataires et ne sont pas destinés à une utilisation collective.
Les personnes qui s’en serviraient pour d’autres usages, qui en feraient une reproduction intégrale ou partielle, une traduction sans
le consentement du CNED, s’exposeraient à des poursuites judiciaires et aux sanctions pénales prévues par le Code de la propriété
intellectuelle. Les reproductions par reprographie de livres et de périodiques protégés contenues dans cet ouvrage sont effectuées
par le CNED avec l’autorisation du Centre français d’exploitation du droit de copie (20, rue des Grands Augustins, 75006 Paris).
© CNED 2015
Conseils généraux
Savoir-faire
• Justifier le choix d'une solution de mise en production d'un système.
• Justifier le choix d'une solution de gestion de la disponibilité d'un serveur.
• Installer et configurer une solution de disponibilité de serveurs.
• Installer et configurer une solution d'administration sécurisée à distance du système
d'un serveur et d'une solution technique d'accès.
• Sécuriser un serveur et une solution technique d'accès.
• Administrer un système.
Page 3
• Contrôler et améliorer les performances d'un système.
• Automatiser une tâche d'administration.
• Valider et documenter une solution.
Savoirs associés
• Mise en production, méthodes, technologies, techniques, normes et standards associés
• Disponibilité des systèmes, méthodes, technologies, techniques, normes et stan-
dards associés
• Sécurité des systèmes, méthodes, technologies, techniques, normes et standards
associés
• Langage de commande et scripting
8 2953 TG PA 00
Séquence 1
Préparation à l'installation des
serveurs (gestion des disques)
Ça y est c'est décidé, aujourd'hui sera le grand jour où vous allez mettre en
place un serveur de données. Mais attention, avant de dégainer votre cd
d'installation et de vous précipiter sur l'ordinateur, calmez-vous un instant
et posez-vous les bonnes questions. En effet, la mise en place d'un serveur
ne s'improvise pas et vous risquez de payer plus tard très cher les erreurs
de conception. L'une des premières étapes consiste à bien préparer le sup-
port qui stockera toutes les données nécessaires à votre serveur. C'est ce
que nous allons essayer de mettre en évidence à travers cette première
séquence à savoir " Comment gérer efficacement la machine avant même
l'installation du système d'exploitation ".
u Contenu
1. Le Raid ou comment améliorer la sécurité .............................................................. 6
2. Le système de Fichiers (FS, File System).................................................................. 13
3. Le SWAP ou comment avoir une mémoire d'éléphant...................................... 15
8 2953 TG PA 00
1. Le Raid ou comment améliorer la sécurité
de votre stockage de données à moindre coût
1A. Objectifs du RAID
Lorsque l'on souhaite mettre en place un serveur professionnel, on est en droit d'attendre
certaines exigences en termes de sécurité et de performances pour les données stockées.
Une façon courante d'améliorer ces deux aspects est d'utiliser des disques durs en RAID. Le
RAID (Redundant Array of Inexpensive Disks) permet d'agglomérer logiquement plusieurs
disques physiques (on parlera de grappe Raid). On utilise ainsi plusieurs disques physiques,
qui forment ce que l'on appelle une grappe RAID, couplés avec un pilote (logiciel) afin de
faire croire au système, de manière logique, que la " grappe RAID " n'est en fait qu'un seul
et même disque physique. Tout cela afin d'obtenir :
• une capacité de stockage plus grande ;
• une plus grande fiabilité des données ;
• des performances accrues en écriture et en lecture, et tout cela pour un coût relati-
vement faible en comparaison des services rendus.
Pour fonctionner, le RAID a besoin d'un contrôleur dédié. Ce contrôleur prend la plupart
du temps la forme d'une carte externe comportant des connecteurs afin d'y brancher les
disques durs qui fonctionneront en RAID. Ces cartes sont réservées au monde profession-
nel de par leur prix et leurs caractéristiques.
Séquence 1
Préparation
à l'installation
des serveurs
Page 6
Fort heureusement, il existe aussi des solutions hybrides permettant au grand public
d'expérimenter le Raid. En effet, désormais la plupart des cartes mères intègrent une
puce permettant de gérer de manière " logiciel " le Raid. De son côté, Linux permet lui
aussi de gérer nativement le Raid de manière logicielle. Bien sur, les performances et la
fiabilité ne peuvent rivaliser avec les cartes dédiées car ce sont alors le processeur et le
contrôleur qui doivent gérer le RAID.
8 2953 TG PA 00
1B. Les différents types de RAID
1B1. Le Raid 0 (striping)
Ce mode nécessite à minima deux disques. Ils formeront un seul volume logique. Chaque
opération de lecture et d'écriture sera fractionnée sur chacun des disques. Ce mode est
surtout utilisé pour effectuer rapidement de grandes quantités de calculs ou d'opéra-
tions transitoires (calculs scientifiques, montage vidéo) mais pas pour stocker sur le long
terme des données critiques (archivage de documents par exemple). En effet, ce mode
permet d'améliorer grandement la vitesse de transfert, aussi bien en lecture qu'en écri-
ture. Le fait de faire fonctionner de concert plusieurs disques permet de répartir l'effort
sur l'ensemble des disques composant la grappe. Ainsi si vous utilisez " N " disques,
chaque disque ne devra écrire (ou lire) que " 1/N*taille_du_fichier "
Prenons un exemple avec 3 disques pour un fichier de 9 Mo. Au final, chaque disque
n'écrira que 1/3*9 Mo soit 3 Mo au lieu de 9 Mo. Ici on mettra donc 3 fois moins de temps
pour écrire le fichier.
On peut donc dire que (en théorie) le Raid 0 permet d'être " N " fois plus rapide qu'un
disque utilisé individuellement ("N” étant le nombre de disques). Bien sûr le gain réel
est moindre avec de nombreux facteurs entrant en jeu comme la vitesse des disques, les
limites de transfert du périphérique raid, etc.
Allez un petit schéma pour finir ce paragraphe. Nous supposons que nous disposons
de 2 disques durs ayant respectivement pour taille 100 Go et 200 Go. Nous disposons Séquence 1
donc d'un disque logique de 200 Go. En effet, on doit s'aligner sur la taille du plus petit
disque. Cela fonctionne donc comme si nous disposions de 2 disques de 100 Go chacun. Préparation
à l'installation
des serveurs
Page 7
8 2953 TG PA 00
Avec la grappe RAID 0 de notre schéma ci-dessus, le système voit un disque logique
d'une taille totale de 200 Go (100+100). On ne peut donc utiliser l'intégralité de l'espace
disque du disque physique 2 utilisé pour stocker des données car les blocs de données
sont répartis sur l'ensemble des disques.
Séquence 1
Préparation
à l'installation
En conclusion sur le RAID 0, tout l'espace disque est disponible pour les données dans le
des serveurs
cas des disques de même taille et ce mode est donc peu coûteux. En contrepartie le pro-
Page 8 blème de la sécurité des données est aggravé ici. En effet, si un seul disque de la grappe
venait à dysfonctionner, on perdrait l'ensemble des données stockées sur la grappe. On
n'a donc aucune tolérance de panne.
8 2953 TG PA 00
Ne perdons pas les bonnes habitudes et faisons un petit schéma avec 3 disques dans la
grappe RAID 1 + un disque " Spare ".
Séquence 1
Préparation
à l'installation
Par rapport à ce schéma, le système voit un disque logique d'une taille de 100 Go qui
des serveurs
correspond à la taille du plus petit des disques de la grappe. Les disques 2 et 3 ne sont
que des copies du disque 1. Le disque " Spare " ne sera utilisé qu'en cas de panne de l'un Page 9
des 3 disques de la grappe.
Rappel : le disque 1 représente le disque principal. Les disques 2 et 3 ne sont que des
copies du contenu du disque 1. Le Spare reste vide tant qu'il n'y a pas de disque défec-
tueux. Imaginons maintenant que le disque 1 tombe en panne. Le disque " Spare " pren-
dra le relais et rejoindra la grappe. Le contrôleur commencera à recopier les données sur
8 2953 TG PA 00
le " Spare " qui deviendra le nouveau disque 1. L'ancien disque 1 défectueux est sorti de
la grappe. Il suffira de le remplacer par un nouveau disque " Spare " pour retrouver un
mode de fonctionnement identique à ce que l'on avait avant la panne. D'un point de vue
utilisateur, à part un léger ralentissement dû à la reconstruction, rien ne sera perceptible.
Ce mode permet d'avoir une grande tolérance de panne mais son coût reste prohibitif :
l'espace disque disponible sera limité au disque initial (au plus petit dans le cas de
disques de tailles différentes. Tous les disques additionnels ne rajouteront aucun espace
supplémentaire.
1B3. Le RAID 5
Le mode RAID 5 nécessite au minimum 3 disques. Les données seront réparties sur
l'ensemble des disques comme sur le RAID 0, mais afin d'ajouter une couche de sécurité,
ce mode va utiliser la " parité " afin de pouvoir reconstruire facilement les données per-
dues en cas de défaillance d'un des disques de la grappe. Les données et les parités sont
réparties sur l'ensemble de la grappe.
Arrêtons-nous un instant sur cette notion de " parité ". Je vous rassure, cela n'a rien
de politique. Cette notion permet tout simplement à partir de deux valeurs connues
de déduire la valeur d'une troisième via un calcul prédéfini. Dans le cadre du RAID 5, la
parité est le résultat d'un " OU EXCLUSIF ", également appelé " XOR ", entre les données
des blocs des différents disques. Pour expliquer au mieux ce fonctionnement relative-
ment complexe de la parité, nous allons emprunter un exemple de raisonnement issu du
Séquence 1 fonctionnement des équations du premier degré. Attention ce qui nous intéresse dans
ce qui va suivre, c'est le raisonnement permettant de déduire une valeur à partir de 2
Préparation
à l'installation
autres et pas le fonctionnement des équations du premier dégrée.
des serveurs
Entrons dans le vif de notre démonstration. Supposons que nous disposons de 2 valeurs
dénommées respectivement A1 et B1, avec A1 = 2 et B1=7, et que la parité utilisée réponde
Page 10
au calcul " A1+B1 ". Ainsi par rapport à nos deux valeurs A1 et B1, la valeur de parité
de (A1+B1) sera de (2+7)=9. Imaginons maintenant que A1 soit stocké sur le disque n°1,
que B1 soit stocké sur le disque n°2 et que la valeur de la parité (A1 +B1) soit stockée sur
le disque n°3. Zut, un problème survient sur notre disque n°2 et malheureusement nous
venons de perdre ce dernier et tout ce qu'il contient. Dans le cadre du RAID 5, ce n'est pas
grave car il nous reste d'une part A1 et d'autre part la valeur de parité " A1+B1 " stockés
sur les deux autres disques. Nous pouvons donc en déduire que : 2 + B1 = 9.
Il devient alors facile de retrouver B1 qui vaut (9-2) c'est-à-dire 7. Vous voyez ce n'est pas
compliquer de reconstruire les valeurs d'un disque à partir des valeurs des deux autres
et du calcul de parité.
Rappel : dans le cadre du RAID 5, la parité est le résultat d'un " OU EXCLUSIF ", égale-
ment appelé " XOR ", entre les données des blocs des différents disques. Je sais, je sais,
vous attendez un petit schéma concernant le RAID 5. Alors le voici avec 3 disques dans
la grappe RAID 5 + un disque " Spare ".
8 2953 TG PA 00
Séquence 1
Par rapport à ce schéma, le système voit un disque logique d'une taille totale de 200 Go Préparation
(100+100+100-100). En effet, avec 3 disques, un disque est perdu pour gérer la parité et à l'installation
le disque " Spare " n'est là que pour faciliter la reprise sur incident. des serveurs
Page 11
A partir de cette exemple, nous voyons que si l'on perd le disque 2, on perd automatiquement
À données
les partir dedescetblocs
exemple, nous
B1 et B3 voyons
ainsi que la que
paritési issue
l'on des
perdblocs
le disque
A2 et C2.2, on perd automati-
Cependant, on voit
également que, grâce à la notion RAID 5, la reconstruction du disque 2 sera facilementA2
quement les données des blocs B1 et B3 ainsi que la parité issue des blocs et C2.
recalcu-
lée à partir deson
Cependant, disques 1 et 3. Ainsi
voit également B1 grâce
que, sera reconstruit
à la notion grâce
RAIDà 5,A1laetreconstruction
la parité de (A1+B1), B3
du disque
sera reconstruit
2 sera facilementà partir de parité
recalculée de (B3+C3)
à partir et de C3
des disques 1 etet3.laAinsi
paritéB1(A2+C2) sera reconstruite
sera reconstruit grâce à
avec
A1 etA2laet C2. Cette
parité reconstruction
de (A1+B1), comme vousà partir
B3 sera reconstruit lʼavez de
devinez
paritésedefait à lʼaide
(B3+C3) du C3
et de disque
et la
« Spare ». Cela ne veut pas dire que le disque « Spare » est obligatoire mais il permet de réali-
parité (A2+C2) sera reconstruite avec A2 et C2. Cette reconstruction comme vous l'avez
ser lʼopération de reconstruction sans intervention humaine. Sʼil nʼy a pas de disque « Spare »
devinez
est se fait
bien il faut à l'aide
juste croire du
en disque " Spare
votre bonne ". et
étoile Cela ne veut
espérer pas dire
quʼaucun que additionnel
disque le disque "neSpare
tom-"
bera en panne avant le remplacement du disque défectueux et sa reconstruction. Séquence 1
Le mode RAID 5 permet donc de combiner de très bonnes performances en écriture et lecture
(proches du Raid 0) tout en supportant la perte d'un disque. On l'utilise souvent dans le cas de Préparation à
l'installation
petits fichiers (par exemple : pour certaines bases de données qui utilisent un fichier par table). des Serveurs
1B4. Les modes « hybrides » 8 2953 TG PA 00
Les modes « hybrides » sont Raid 10 (1+0) et Raid 01 (0+1). Ces modes permettent de faire un Page 11
RAID 0 de RAID 1 (1+0) ou un RAID 1 de RAID 0 (0+1). Heu, je crois que je vous ai perdu.
est obligatoire mais il permet de réaliser l'opération de reconstruction sans intervention
humaine. S'il n'y a pas de disque " Spare " eh bien il faut juste croire en votre bonne
étoile et espérer qu'aucun disque additionnel ne tombera en panne avant le remplace-
ment du disque défectueux et sa reconstruction.
Le mode RAID 5 permet donc de combiner de très bonnes performances en écriture et
lecture (proches du Raid 0) tout en supportant la perte d'un disque. On l'utilise souvent
dans le cas de petits fichiers (par exemple : pour certaines bases de données qui utilisent
un fichier par table).
Séquence 1
Préparation
à l'installation
des serveurs
Page 12
Dans cet exemple ci-dessus, nous avons deux grappes de Raid 0 qui fonctionnent en
miroir (RAID 1).
8 2953 TG PA 00
Dans cet autre exemple ci-dessus, nous avons deux grappes de RAID 1 qui fonctionnent
en RAID 0.
L'intérêt est donc combiner la vitesse du Raid 0 avec la fiabilité du Raid 1.
8 2953 TG PA 00
En résumé, à vous de bien choisir le FileSystem que vous allez utilisez. Voici quelques axes
de réflexion par rapport à ce choix.
• Quelle longueur de noms de fichiers est-il capable de gérer ?
• Le FS est-il plus à l'aise avec de nombreux petits fichiers ? Ou au contraire traîte-t-il
plus efficacement les très gros fichiers (plusieurs Go voire plusieurs dizaines de Go) ?
• Le FS gère-t-il la journalisation ? (Permet de garder une trace des écritures à faire
jusqu'à leur terme, afin de garantir l'intégrité des données en cas de panne).
Il est évident que votre choix sera restreint en fonction de l'architecture utilisée (Linux,
Unix, Windows, AIX, HP-UX, OpenSolaris…). Votre choix de type de système de fichiers
est donc très important pour le bon fonctionnement de votre serveur. Toute l'organisa-
tion de vos fichiers dépendra de votre choix.
Pour répondre à toutes ces questions rien ne vaut une bonne planification.
• Quels sont mes besoins ? En termes de puissance de calcul, d'espace de stockage ?
• Le serveur sera-il critique pour l'organisation ?
• Bref on réfléchit et on ne se précipite pas ! Cela vous fera gagner énormément de
temps lorsque les problèmes surgiront (ne vous inquiétez pas, ce n'est qu'une ques-
tion de temps...).
Avant de conclure ce paragraphe, voici un tableau récapitulatif sur les différents FS :
du nom d'un fichier
casse (minuscules/
Taille Maximale
Taille Maximale
Taille Maximale
Journalisation
d'un Volume
Sensible à la
d'un Fichier
majuscules)
Robustesse
Nom de FS
(d'origine)
OS Natifs
Séquence 1
Rapidité
Année
Préparation
à l'installation
des serveurs
8 2953 TG PA 00
3. Le SWAP ou comment avoir une mémoire d'éléphant
Votre serveur, comme tout ordinateur, possède une certaine quantité de mémoire vive.
Cette mémoire vive sera partagée et utilisée par les nombreux processus et services qui
tourneront dessus. Mais que se passe-t-il lorsqu'il n'y a plus de mémoire vive disponible ?
Eh bien vous risquez de voire votre belle machine " planter " ! Cela n'est pas l'idéal, vous
en conviendrez aisément. C'est pour cela que l'on a mis au point le SWAP.
En fait, le SWAP permet d'utiliser de l'espace sur disque pour créer une zone de mémoire
virtuelle. Cette mémoire virtuelle pourra être utilisée au cas où un processus ne dispo-
serait pas de suffisamment de mémoire pour fonctionner. Bien évidemment, un disque
dur étant BEAUCOUP plus lent que la mémoire vive, vous risquez d'avoir un ralentisse-
ment sensible dès lors qu'une application nécessite l'utilisation du SWAP, mais cela sera
toujours mieux qu'un blocage de la machine ou du processus. Quelle est la taille idéale
pour le SWAP ?
On a souvent coutume de dire que la taille idéale doit se situer entre 1 à 2 fois la quan-
tité de mémoire vive présente sur le serveur, donc pour un serveur disposant de 8 Go de
RAM, il faudrait utiliser entre 8 et 16 Go d'espace disque pour le SWAP. Cette taille n'est
donnée qu'à titre indicatif, cela sera de votre ressort de l'adapter au plus proche de vos
besoins, en fonction de vos processus. Mais cela fournit une base acceptable.
Sous Linux on créera une partition swap avec la commande " mkswap " et on l'activera
avec la commande " swapon ". Voici des exemples d'utilisation de ces commandes :
Séquence 1
mkswap /dev/sda3
Préparation
Ú Création et formatage du swap sur sda3 (3ème partition du disque sda) à l'installation
swapon /dev/sda3 des serveurs
8 2953 TG PA 00
Séquence 2
Les journaux d'événements ou
logs
Administrer un système nécessite d'être au courant de tous les événements
le concernant. On y trouve d'une part ceux prévus et attendus et d'autre
part les (mauvaises) surprises. Dans cette séquence, nous allons donc voir
ensemble comment connaître tout ce qui se passe sur notre serveur adoré.
Non, non, ce n'est pas de l'espionnage mais du bon sens.
u Contenu
1. Quel est l'intérêt des journaux d'événements ?.................................................. 18
2. Les journaux d'événements sous Windows.......................................................... 18
Page 17
3. Les journaux d'événements sous Linux.................................................................. 20
Conclusion........................................................................................................................ 22
8 2953 TG PA 00
1. Quel est l'intérêt des journaux d'événements ?
Vous avez certainement déjà entendu parler des journaux d'événements également
appelés " Fichiers de Logs ". Vous y avez alors prêté peu d'attention car vous n'en aviez
pas forcément l'utilité ou vous avez essayé de voir à quoi cela peut correspondre dans la
littérature informatique ou sur Internet. En fait, ces fichiers de logs sont extrêmement
importants par rapport au métier que vous souhaitez exercer. En effet, une part non
négligeable du travail d'administrateur système consiste à s'assurer que les serveurs qui
sont sa responsabilité fonctionnent correctement. Comme un administrateur ne peut pas
être 24 h/24, 7 j/7 derrière ses serveurs, il doit déléguer son travail à certaines applications
qui vont enregistrer les événements qui vont survenir, des plus graves aux plus anecdo-
tiques. Il suffira alors ensuite de consulter les journaux d'événements (fichiers de Logs)
afin d'analyser les problèmes et réagir le plus rapidement possible en leur apportant une
solution. Il existe des journaux d'événements dans les différents systèmes d'exploitation.
8 2953 TG PA 00
On peut accéder à ces différents journaux en exécutant le programme " eventvwr.exe ".
Nous obtenons alors l'écran suivant :
Séquence 2
Les
journaux
d'événements
ou logs
Page 19
8 2953 TG PA 00
3. Les journaux d'événements sous Linux
Sous Linux, c'est le daemon " syslogd " qui dirige les différents messages d'erreur.
L'administrateur peut configurer le fichier " /etc/syslogd.conf " afin de décider où seront
redistribuer les messages d'erreurs : vers la console, une application, un fichier…
Les messages d'erreurs proviennent d'un sous-système et chaque application est associée
à un sous-système. Ces sous-systèmes sont :
• auth : messages de sécurité / authentification ;
• cron : messages des daemon " cron " et " at " ;
• daemon : messages d'un daemon du système ;
• ftp : message du daemon " ftp " ;
• kern : messages du noyau ;
• lpr : messages du sous-système d'impression ;
• mail : message du sous-système de courrier ;
• news : messages du sous-système de news ;
• syslog : messages internes de " syslog " ;
• user : messages utilisateur générique ;
• uucp : messages des programmes en rapport avec " UUCP " (Unix to Unix Copy
Protocol) ;
• local0 à local7 : utilisés par les applications n'entrant pas dans les catégories précé
Séquence 2 entes.
Les journaux Les messages sont accessibles par niveau de priorité. Il en existe 8 ; 9 en réalité mais le
d'événements niveau 8 est spécial, organisés par ordre de priorité décroissante (0 le plus prioritaire, 7
ou logs le moins) :
Voyons maintenant la syntaxe permettant de configurer le fichier " syslog.conf " donc
nous avons parlé plus haut. En fait, chaque ligne correspond à une source de messages
que l'on sépare par " ; " et la destination souhaitée (en chemin absolu c'est-à-dire décrit
à partir de la racine de l'arborescence).
Une source peut avoir 3 formes :
• sous-système.Priorité : on n'enregistre que les messages de priorité égale ou supé-
rieur à la priorité indiquée.
Exemple : " mail.err " : redirige les message d'erreur de mail de niveau err ou supé-
rieur (err, crit, alert et emerg) ;
8 2953 TG PA 00
• sous-système.!Priorité : on n'enregistre que les messages de priorité inférieure à la
priorité indiquée.
Exemple : " kern.!err " : redirige les message d'erreur de kern de niveau inférieur à
err (warn, notice, info,debug) ;
• sous-système.=Priorité : on n'enregistre que les messages de priorité égale à la
priorité indiquée.
Exemple : " mail.=info " : redirige uniquement les messages d'erreur de mail de
niveau info.
La destination est normalement un fichier, par exemple /var/log/admin/mail ou tout
autre fichier approprié :
mail.err /var/log/admin/mail
Remarque : attention à bien écrire le chemin en chemin absolu !
Il est également possible d'utiliser le terminal d'un hôte précis comme destinataire du
message, par exemple " Julien " :
mail.err Julien
On peut aussi désigner l'ensemble des utilisateurs connectés grâce à " * " :
mail.err *
Ou encore indiquer un autre ordinateur grâce à " @ " :
mail.err @FCSecu Séquence 2
Vous avez compris ? Alors essayons ensemble. Comment pouvez-vous dire que vous Les
voulez écrire tous les messages critiques dans /var/log/admin/critical, sans enregistrer les journaux
d'événements
messages du noyau ? ou logs
Page 21
Réponse : *.crit;kern.none /varl/log/admin/critical
Compris ? Allez encore une pour la route. Comment enregistrer les messages du noyau
qui ont une priorité entre info et warning uniquement dans /var/log/admin/kernel ?
Un autre exercice ? Ah vous y prenez goût ! Alors le voici . Comment rediriger l'ensemble
des messages vers une machine distante du nom de " travis " ?
Bravo. Allez une dernière pour la forme. Comment rediriger les messages de niveau
supérieur à " alert " à " root " et " julien " ?
8 2953 TG PA 00
Réponse : *.alert root,julien
4. Conclusion
La gestion des journaux ou logs occupera une part importante dans votre vie d'adminis-
trateur. Vous pourrez ainsi gérer de manière efficace vos serveurs, réagissant rapidement
aux problèmes, et vous pourrez même être capable de les anticiper et donc de les éviter.
Les logs et leur analyse sont une des armes les plus puissantes dont vous disposez pour
vaincre la plupart des pannes, ou tout du moins pour la comprendre (ce qui fournit déjà
50% de la solution...).
Séquence 2
Les journaux
d'événements
ou logs
Page 22
8 2953 TG PA 00
Séquence 3
Planification des tâches
et Scripting avancé
Pour autant que soit passionnant le travail d'administrateur système, vous
verrez rapidement qu'une part non négligeable de votre travail consiste à
faire et refaire de nombreuses fois la même chose. Mais comme nos ordi-
nateurs sont performants et les systèmes d'exploitation bien conçus, nous
allons pouvoir nous aider des capacités formidables d'automatisation des
tâches. Nous allons tout d'abord voir comment automatiser la planifica-
tion des tâches, puis nous verrons quelques techniques avancées afin de
créer des scripts plus complexes.
u Contenu
Page 23
1. La planification des tâches........................................................................................ 24
2. Scripting avancé........................................................................................................... 29
2A. Associer des commandes.............................................................................. 29
2B. Les redirections.............................................................................................. 31
2B1. Rediriger la sortie standard.......................................................................... 31
2B2. Rediriger la sortie standard version 2. ........................................................ 31
2B3. Rediriger la sortie « erreur »......................................................................... 31
2B4. Rediriger l’entrée standard........................................................................... 32
2C. Quelques variables d'environnement de « bash »..................................... 32
2D. Mettre en place des scripts shell.................................................................. 33
2D1. Avant de commencer avec les scripts-shell sous Linux............................... 33
2D2. Les paramètres de position.......................................................................... 33
2D3. Les instructions de la programmation "shell"............................................. 35
2D4. Des exemples ? Alors allons-y !.................................................................... 40
2D5. Poussons l’utilisation des scripts plus loin................................................... 45
8 2953 TG PA 00
1. La planification des tâches
Lancer tel script tous les mardis à 20 h puis tel autre à l'extinction de la machine, quel
administrateur n'a jamais été confronté à cette problématique ? Heureusement, tous
les OS modernes intègrent des outils permettant de planifier facilement l'exécution de
tâches. Ces outils vont aider les administrateurs à automatiser de nombreuses tâches
administratives courantes, aussi bien sur les serveurs que sur les postes de travail. Cette
automatisation procurera un gain de temps non négligeable ainsi qu'un niveau de fia-
bilité accru par rapport à une intervention humaine. Il existe plusieurs fonctionnements
différents des planificateurs de tâches, mais on peut résumer ainsi leur fonctionnement :
" un événement déclenche une action sous certaines conditions ".
L'événement déclencheur : c'est un critère (ou un ensemble de critères) qui déclenchera
l'exécution de la tâche programmée. Les critères les plus courants étant le temps (date et
heure) ou un événement précis (extinction de l'ordinateur, au démarrage, au lancement
de tel ou tel processus).
Les conditions : ce critère souvent optionnel permet d'ajuster plus finement l'événement
déclencheur. Ainsi la tâche ne sera lancée que sur le déclencheur ET sur l'ensemble des
conditions réunies. Exemple : lancer une défragmentation du disque chaque mardi à 17 h
si le PC n'est pas utilisé.
Les actions : quelle commande exécuter lorsque l'événement et les conditions sont réunis ?
Séquence 3 Pour les OS de Microsoft (Windows 7, Server 2008, Vista), voici la liste des déclencheurs
basiques acceptés :
Planification
des tâches • sur une planification : une fois (date + heure), tous les jours, toutes les semaines,
et Scripting avancé tous les mois, et les diverses combinaisons ;
• à l'ouverture d'une session : à la connexion d'un utilisateur ;
Page 24 • au démarrage : lorsque l'ordinateur démarre ;
• en période d'inactivité : le paramètre d'inactivité est configurable dans les conditions ;
• sur un événement : on utilise des requêtes d'événement XML, le journal d'événe-
ment pour choisir l'événement déclencheur ;
• lors de la création/modification de tâches ;
• connexion à une session utilisateur : peut être utiliser pour déclencher des actions
en fonction de la connexion d'un utilisateur spécifique ;
• déconnexion d'une session utilisateur : idem lors de la déconnexion ;
• lors du verrouillage du poste de travail : l'action se déclenchera lorsque l'utilisateur
décidera de verrouiller son poste ;
• lors du déverrouillage du poste de travail : idem que lors du verrouillage.
On peut ajouter à la liste précédente les quelques conditions suivantes.
• Conditions d'inactivité : utilisation quasi-nulle du processeur, absence d'activité du
clavier et de la souris pendant 15 minutes...
• Conditions d'alimentation : l'ordinateur est-il alimenté normalement ou est-il
connecté à un batterie de secours (onduleur) ?
• Conditions de réseau : telle connexion réseau est-elle disponible ?
8 2953 TG PA 00
Et pour terminer voici quelques actions que l'on peut associer :
Page 25
8 2953 TG PA 00
Création d'un déclencheur
Séquence 3
Planification
des tâches
et Scripting avancé
8 2953 TG PA 00
Récapitulatif des tâches
Séquence 3
Planification
des tâches
Sous Unix et GNU/Linux, on utilisera volontiers " cron " et " at " pour toutes les tâches
et Scripting avancé
d'automatisation et de planification. Commençons par définir le rôle de la commande
" cron ". Page 27
La commande " cron " permet la programmation d'événements. Elle utilise un fichier de
nom " crontab " qui se trouve dans le répertoire " /etc/ ". C'est un simple fichier texte,
qui se présente sous la forme d'une table (un tableau si vous préférez), qui est donc
facilement éditable.
Une " crontab " utilise 6 champs dont voici la liste :
Minutes Heures Jours du mois Mois Jour de la semaine Commande à exécuter
0 18 * * 1-5 Mon_script.sh
Ú Cette ligne a pour but de programmer le lancement du script de nom " mon_script.sh
" tous les jours de la semaine (du lundi au vendredi) à 18 h.
0,30 * * * * df-h>>/home/julien/espace_disque
Ú Permet de copier l'espace utilisé par les différents " fs " montés dans un fichier de
nom " espace_disque " se trouvant dans le répertoire " /home/julien " tous les jours de
l'année, et ce, toutes les demi-heures (chaque heure à 0 minute puis à 30 minutes).
8 2953 TG PA 00
Pour en terminer avec la " crontab ", voici quelques commandes et arguments permet-
tant d'agir sur ce fichier :
–– crontab -e : permet d'éditer le fichier de crontab ;
–– crontab -l : permet de lire le fichier de crontab ;
–– crontab -r : supprime le fichier de crontab.
Bien sur il existe aussi des utilitaires graphiques tels que " kcron " afin de faciliter la
tâche de l'utilisateur. Voici une capture d'écran de cette utilitaire :
Séquence 3
Planification
des tâches
et Scripting avancé
Page 28
8 2953 TG PA 00
2. Scripting avancé
Précédemment, nous avons mis en avant le fait qu'il est possible d'automatiser certaines
tâches récurrentes réalisées par un administrateur. Quel que soit le système d'exploita-
tion utilisé, ce dernier offre toujours un ensemble d'actions préprogrammées et directe-
ment opérationnelles mais il offre aussi un langage de programmation permettant de
personnaliser les tâches que l'on souhaite automatiser. On dit que ce langage permet de
créer des scripts-shell. Dans les cours de première année de BTS SIO et notamment dans
le cours et le TP de la matière " Support des services et des réseaux ", vous avez déjà eu
l'occasion de manipuler des langages de scripting comme " PowerShell " ou " WSH "
présents dans l'environnement Windows. Nous n'allons pas revenir sur ceux-ci mais dans
ce paragraphe, nous allons mettre plutôt en avant la création des scripts " bash " dans
l'environnement LINUX.
Il est bien entendu nécessaire de vérifier que le résultat envoyé par un processus à
Page 29
un autre processus peut être traité par ce dernier.
Processus1 ; Processus2 ; Processus3 .....
Ú Les processus s'enchaînent les uns après les autres. Attention, ils ne s'exécutent
pas en même temps, mais les uns après les autres, et ils ne communiquent pas
ensemble comme précédemment. Chacun garde sa propre entrée standard (par
défaut le clavier) et sa propre sortie standard (par défaut l'écran).
Processus1 && Processus2
Ú Processus1 s'exécute en premier. Si tout s'est bien passé, Processus2 s'exécute à
son tour. Cela permet de lancer l'exécution d'un processus de manière conditionnelle.
Remarque : il faut savoir que tout processus qui se termine renvoie au noyau de
l'OS, un code indiquant s'il s'est bien terminé (code 0 (Zéro)) ou s'il s'est terminé par
une erreur (code différent de 0).
Processus1 || Processus2
Ú Processus1 s'exécute en premier. S'il retourne au noyau de l'OS un code différent
de zéro indiquant que le processus ne s'est pas bien terminé, on tente de déclencher
Processus2. Par contre si Processus1 se termine bien, Processus2 ne s'exécute pas.
Attention, il s'agit de deux caractères " pipe " consécutifs.
Rappel : le caractère " pipe " s'obtient par la combinaison de touches " AltGr " + "
la touche 6 du pavé machine à écrire ".
8 2953 TG PA 00
Processus1 || Processus2
Processus1 s'exécute en premier. S'il retourne au noyau de lʼOS un code différent de
zéro indiquant que le processus ne sʼest pas bien terminé, on tente de déclencher
Processus2. Par contre si Processus1 se termine bien, Processus2 ne s'exécute pas.
Attention, il s'agit de deux caractères « pipe » consécutifs. Rappel: le caractère
« pipe » s'obtient par la combinaison de touches « AltGr » + « la touche 6 du pavé
Allez ! Desmachine
exemples.
à écrire ».
ls -l | grep '^d'
Allez des
Ú exemples
Permet d'afficher uniquement le nom des répertoires. En effet, un répertoire est
repéré par la présence du caractère " d " en début de ligne suite à la commande
-l | grep
" lsls–l ". '^d' côté, la commande " grep " permet de filtrer parmi les lignes qu'on
De son
lui Permet en
transmet d'afficher
entréeuniquement le nom des répertoires.
celles qui correspondent au motifEn fourni
effet, unen
répertoire est repéré
paramètre. Dans
par la présence du caractère « d » en début de ligne suite à la commande
notre cas, le motif indique que l'on doit trouver le caractère " d " en début de ligne. « ls –l ». De
son côté, la commande « grep » permet de filtrer parmi les lignes qu'on lui transmet
cat /etc/passwd
en entrée celles| cut qui
-d: -f1 | sort | more
correspondent au motif fourni en paramètre. Dans notre cas, le
Ú Avec motif
cetindique
exemple,que l'on
vous doit trouver
voyez le caractère
qu'il « d »de
est possible encombiner
début de ligne.
un certain nombre
de commandes afin d'obtenir le résultat souhaité. Dans notre cas, nous obtenons la
listecatdes
/etc/passwd
comptes créés | cut -d: -f1 | en
placés sort | more
ordre alphabétique. Détaillons cette ligne.
catAvec
• " cet exemple, vous voyez qu'il estcontenu
/etc/passwd" permet de lister le possible du
de fichier
combiner un certainlanombre
contenant liste desde
commandes
comptes. afin d'obtenir le résultat souhaité. Dans notre cas, nous obtenons la liste
• "cutdes-d:comptes
-f1" prend créés lesplacés
lignesenqui ordre
lui alphabétique.
sont transmises Allez
endétaillons
entrée et cette
les ligne.
découpent en
• "cat /etc/passwd" permet de lister le contenu du fichier contenant la liste des
colonne en considérant que le séparateur de colonne est le caractère ":" (option
comptes.
"-d:")
• "cut -d: il-f1"
puis neprend
gardelesenlignes
résultat
qui luiquesontlatransmises
colonne n°1 (option
en entrée et "-f1").
les découpent en
Séquence 3
• "sort" colonne
trie lesendonnées
considérant quiquelui le
sontséparateur
transmisesde colonne
en entrée.est le caractère ":" (option
Planification des • "more" "-d:")effectue
puis il neun garde en résultat
affichage page queécran
la colonne n°1 (option
par page écran "-f1").
Tâches et Scripting • "sort" trie les données qui lui sont transmises en entrée.
Avancé • "more" effectue
cat /etc/passwd un affichage
| cut -d: page
-f1,6 | sed écran par page écran
-e 's/:/==>/g'
Ú Permet de lister le login et le répertoire de connexion des comptes utilisateurs
Page 303 caten/etc/passwd
Séquence créés ajoutant |une
cut flèche
-d: -f1,6entre
| sed le
-e login
's/:/==>/g'
et le nom du répertoire de connexion.
Planification
En Permet
fait, de lister leles
en exécutant login et lepremières
deux répertoire commandes
de connexion du
deschaînage,
comptes utilisateurs créés
nous pouvons
des tâches en ajoutant
constater qu'il y une
a unflèche entre le login
double-points quietsubsiste
le nom du répertoire
entre de connexion.
le login et le nom Endu fait, en
réper-
et Scripting avancé exécutant les
toire de connexion. deux premières commandes du chainage, nous pouvons constater qu'il
y a un double-points qui subsiste entre le login et le nom du répertoire de connexion.
Nous utilisons la commande
Nous utilisons " sed
la commande " pour
« sed substituer
» pour lesles
substituer double-points
double-points par uneflèche.
par une flèche.
Page 30
8 2953 TG PA 00
8 2953 TG PA 00
2B. Les redirections
Dans la création des scripts ou des commandes complexes, il peut être intéressant parfois
de rediriger l'entrée standard et/ou la sortir standard. En effet, Par défaut, lorsqu'un
processus (programme) attend des données de la part de l'utilisateur, il se met en attente
d'une saisie clavier. De même lorsqu'un processus (programme) affiche des données, il
les affiche, par défaut, à l'écran. Il est possible de modifier cela avec des caractères de
redirection afin de récupérer des résultats intermédiaires dans un ou plusieurs fichiers
ou envoyer des données à une commande afin qu'elle les traite sans intervention d'un
utilisateur.
8 2953 TG PA 00
Voici un exemple d'utilisation très pratique de la redirection de la sortie " erreur ".
Nous avons vu précédemment que la commande " find " effectue une recherche à par-
tir du répertoire spécifié en paramètre et dans tous les sous-répertoires de ce dernier.
Cependant si l'utilisateur qui lance la commande " find " n'a pas les permissions " x "
et " r " sur les différents répertoires parcourus la recherche ne pourra s'y dérouler et
générera des messages d'erreurs qui risquent de polluer l'écran et masquer les résultats
trouvés. La parade dans ce cas consiste à rediriger les messages d'erreurs vers la poubelle
ce qui permet de ne voir s'afficher que les résultats trouvés. Pour mieux comprendre,
expliquons la commande suivante :
find / -name "M*" 2> /dev/null
Cette ligne de commande permet de rechercher, à partir du répertoire " / ", un fichier
dont le nom commence par un " M " majuscule en évitant de polluer l'écran par des
messages d'erreurs qui se déclenchent lorsque l'utilisateur tente d'ouvrir un répertoire
ou un sous-répertoire sur lequel il n'a aucun droit. Il ne reste donc à l'écran que les mes-
sages intéressant pour lui.
Planification Exemple :
des tâches
wall < MonMessage
et Scripting avancé
Cette ligne de commande permet d'envoyer un message à tous les utilisateurs connec-
Page 32 tés (commande " wall "). Le message a été préalablement saisi dans le fichier de nom
" MonMessage " à l'aide d'un éditeur de texte comme " vim ".
8 2953 TG PA 00
Voici une liste de variables d'environnement. Attention, cette liste n'est pas complète
mais on y trouve les variables d'environnement les plus fréquentes. Pour les autres, vous
pouvez consulter Internet sur le mot clé " bash " ou taper la commande " man bash ".
8 2953 TG PA 00
Nom paramètre Commentaires
Contient une valeur représentant le nombre d'arguments passés sur la ligne de
$# commande. Attention, le nom du programme script-shell n'est pas comptabilisé
dans "$#".
S* Contient la liste de l'ensemble des arguments passés sur la ligne de commande.
Contient la valeur de sortie de la dernière commande exécutée. Elle vaut 0 si la
$?
commande s'est déroulée sans problème.
Voici un exemple qui permet de lister les paramètres (les arguments) passés sur la ligne
de commande par l'utilisateur. Si vous voulez le tester, placez-vous sur un nouveau
fichier, tapez le programme qui suit et placez la permission "x" sur ce fichier. Ce script
utilise des instructions de contrôle que nous verrons juste après, donc pas d'inquiétude.
Cependant, veillez dès à présent à bien marquer les espaces comme dans le code qui suit
1 # Programme pour tester les arguments
2 echo "Le nom du programme est : $0"
3 if [ $# -eq 0 ]
4 then
5 echo "Aucun argument sur la ligne de commande"
6 else
7 echo "Voici la liste des arguments"
8 for Arg in $*
Séquence 3
9 do
Planification 10 echo $Arg
des tâches
et Scripting avancé 11 done
12 fi
Page 34
Remarque : les numéros à gauche du " script-shell " ne font pas partie du code, ils sont
là uniquement pour nous repérer plus facilement dans les explications qui vont suivre.
Il ne faut donc pas les taper dans le fichier script.
Explications :
• Ligne 1 : il s'agit d'une ligne de commentaires. Le shell ignore le texte qui est écrit
après.
• Ligne 2 : nous faisons appel au paramètre de position " $0 " afin d'afficher le nom
du programme script-shell exécuté.
• Ligne 3 : nous mettons en place une instruction de contrôle " if ". Le script, en fonc-
tion du résultat du test de la condition, placée entre les crochets, exécutera soit la
partie " then " du programme (ligne 5) soit la partie " else " (lignes 7-11).
• Ligne 5 : cette ligne ne sera interprétée par le shell, que si la condition de la ligne 3
est vraie. Dans ce cas, on affiche la phrase prévue. Remarque: la commande " echo "
possède une option "-e" qui permet d'utiliser des paramètres d'affichage.
• Lignes 7-11 : ces lignes ne seront interprétées par le shell, qui si la condition de
la ligne 3 est fausse. Dans ce cas, on affiche la phrase prévue suivie de la liste des
arguments passés sur la ligne de commande.
• Lignes 8-11 : ces lignes mettent en place une boucle " for " qui permet d'exécuter,
plusieurs fois de suite, les instructions qu'on lui donne (ici la ligne 10). Dans notre
cas, la variable de nom " Arg " va prendre, à chaque tour de boucle, une valeur dans
la liste des arguments " $* ".
8 2953 TG PA 00
Rappel : pour afficher le contenu de cette variable à un moment donné, on préfixe son
nom par le caractère " $ ".
Option Commentaires
Séquence 3
-e Permet de tester si le fichier existe.
-f Permet de tester si le fichier est un fichier ordinaire. Planification
des tâches
-d Permet de tester si le fichier est un répertoire.
et Scripting avancé
-r Permet de tester si le fichier à la permission "Read".
-w Permet de tester si le fichier à la permission "Write" Page 35
-x Permet de tester si le fichier à la permission "Executable".
-s Permet de tester si le fichier n'est pas vide.
b) Dans le cas d'une chaîne de caractères, la " condition " prend la forme suivante :
Option ChaineCaractères
Nous pouvons utiliser les options suivantes :
Option Commentaires
-z Permet de tester si la chaîne de caractères est vide.
-n Permet de tester si la chaîne de caractères n'est pas vide.
c) Dans le cas d'une chaîne de caractères, la "condition" peut également avoir la forme
suivante :
ChaineCaractères Option ChaineCaractères
avec les options suivantes :
Option Commentaires
Permet de tester si les deux chaînes de caractères sont égales.
=
8 2953 TG PA 00
Attention : les deux chaînes de caractères doivent être placées entre guillemets.
d) Dans le cas des expressions numériques, la condition peut avoir la forme suivante :
Valeur Option Valeur
Nous pouvons utiliser les options suivantes :
Option Commentaires
-eq Permet de tester si les deux valeurs numériques sont égales.
=
Permet de tester si les deux valeurs numériques sont
-ne
différentes.
Permet de tester si la première valeur est strictement plus
-lt
petite que la deuxième.
Permet de tester si la première valeur est strictement plus
-gt
grande que la deuxième.
Permet de tester si la première valeur est plus petite ou égale
-le
à la deuxième.
Permet de tester si la première valeur est plus grande ou
-ge
égale à la deuxième.
e) Il est possible de combiner des conditions en utilisant les options suivantes :
Option Commentaires
! Négation de la condition
Des exemples :
• Ce premier exemple permet de récupérer le nom d'un fichier passé sur la ligne de
commande puis vérifier si le fichier existe ou non.
if [ -e $1 ]
then
echo "Le fichier existe"
else
echo "Le fichier n'existe pas"
fi
• Dans le programme précédent, on ne contrôle pas le fait qu'un utilisateur passe bien
un argument à la suite de la commande afin que celle-ci fonctionne. Corrigeons cela.
8 2953 TG PA 00
if [ $# -eq 0 ]
then
echo "Il faut au moins 1 argument"
else
if [ -e $1 ]
then
echo "Le fichier existe"
else
echo "Le fichier n'existe pas"
fi
fi
• Voici un exemple dans lequel on demande à l'utilisateur de saisir une valeur puis nous
regardons si la valeur saisie est dans l'intervalle [100-200]. Voici le code :
echo "entrez une valeur"
read Valeur
if [ $Valeur -ge 100 -a $Valeur -le 200 ]
then
echo "Votre valeur est entre 100 et 200"
else
echo "Votre valeur est en dehors de l'intervalle [100,200]"
fi
2D3.2 La conditionnelle
Voici la syntaxe générale de la conditionnelle.
Séquence 3
if Condition
then
Planification
instructions des tâches
fi et Scripting avancé
Page 37
Fonctionnement : Si la condition est " vraie ", on exécute les instructions situées entre le
" then " et le " fi ". Dans le cas contraire, on ne fait rien.
Exemple : nous voulons afficher un message d'erreur s'il n'y a pas d'argument sur la ligne
de commande.
if [ $# -eq 0 ]
then
echo "Aucun argument sur la ligne de commande"
fi
2D3.3 L'alternative
Voici la syntaxe générale de l'alternative.
if Condition
then
instructions "Alors"
else
instructions "Sinon"
fi
Fonctionnement : si la condition est " vraie ", on exécute les instructions du bloc " Alors "
situées après le " then " et avant le " else ". Dans le cas contraire, on exécute les instruc-
tions du bloc " Sinon " situées entre le " else " et le " fi ".
8 2953 TG PA 00
Exemple : nous voulons afficher un message d'erreur s'il n'y a pas d'argument sur la ligne
de commande mais par contre s'il y en a, nous souhaitons afficher la valeur du premier
argument.
if [ $# -eq 0 ]
then
echo "Aucun argument sur la ligne de commande"
else
echo "vous avez fourni en premier argument: $1"
fi
2D3.4 La répétitive
Voici la syntaxe générale de la répétitive.
while Condition
do
instructions
done
Fonctionnement : il s'agit d'une boucle. Ainsi tant que la condition est à " VRAI ", on
exécute les instructions du bloc situées entre le " do " et le " done ". Dès que la condition
passe à " FAUX ", on sort de la boucle, c'est-à-dire que l'on va après le " done ".
Exemple : nous voulons que l'utilisateur fasse la saisie d'une valeur obligatoire. Nous
Séquence 3
allons donc boucler sur la saisie tant que celui-ci n'a pas tapé de valeur. Voici le code :
Planification echo "Entrez une valeur"
des tâches read Valeur
et Scripting avancé
while [ -z $Valeur ]
do
Page 38 echo "Vous devez saisir une valeur"
read Valeur
done
echo "Vous avez saisi $Valeur"
Remarque : l'instruction " read ", lorsqu'elle est exécutée, permet de bloquer le déroule-
ment des instructions jusqu'à ce que l'utilisateur tape quelque chose au clavier et appuie
sur la touche "Entrée". Dans ce cas, la donnée saisie est placée dans la variable dont on
passe le nom en paramètre de la commande " read ". Si l'utilisateur tape directement sur
la touche " Entrée " sans rien saisir avant, le programme continue alors son déroulement
et la variable passée en paramètre de la commande " read " est vide de contenu.
2D3.5 La boucle " for "
Voici la syntaxe générale du " for "
Remarque : à la différence de l'instruction " while" qui boucle jusqu'à ce que la condi-
tion prenne la valeur " FAUX ", l'instruction " for " passe en revue les éléments de la liste
des valeurs qu'on lui fournit à la suite du mot-clé " in ". Cela signifie que les instructions
vont se répéter tant que l'instruction " for " n'a pas traité tous les éléments de la liste.
Exemple :
8 2953 TG PA 00
echo "On commence la boucle for"
for UneValeur in a b c d e
do
echo "La boucle traite la valeur $UneValeur"
done
echo "Fin de la boucle for"
Remarque : le caractère "|" (pipe) employé dans le script, pour l'énumération des
voyelles, a pour signification "ou".
Rappel : il est obtenu par la séquence de touches "AltGr" + "touche 6 du pavé machine
à écrire".
2D3.7. L'instruction " break "
L'instruction " break " permet de quitter une boucle avant son terme sans attendre que
la condition prenne la valeur " FAUX ".
Exemple : nous allons reprendre l'exemple donné dans le cas du " while " et le modifier
comme suit. Nous souhaitons boucler tant que l'utilisateur n'a rien saisi mais nous l'auto-
risons à quitter la saisie en tapant le mot " fin ". Voici la modification :
8 2953 TG PA 00
echo "Entrez une valeur"
read Valeur
while [ -z $Valeur ]
do
echo "Vous devez saisir une valeur ou fin pour terminer"
read Valeur
if [ "$Valeur" = "fin" ]
then
break
fi
done
echo "Vous avez saisi $Valeur"
Remarque : pour comparer deux chaînes de caractères, il faut que les deux soient placées
entre guillemets.
2D3.8. Les anti-quotes
Les caractères "anti-quotes", obtenus par la combinaison des touches "AltGr" + "Touche
7 du pavé machine à écrire", permettent de substituer le texte d'une commande par son
résultat. Par exemple, en tapant les commandes suivantes, nous obtenons :
echo `pwd`
Ú affiche le nom du répertoire courant. En effet, la partie `pwd` est exécutée avant
que la commande "echo" ne soit évaluée.
echo "il y a `who | wc -l` personne(s) connectée(s)"
Séquence 3
Ú permet d'afficher le nombre de personnes connectées
Planification 2D3.9. Spécifier un shell
des tâches
et Scripting avancé Si vous utilisez différents "shells" ou que vous souhaitiez partager vos scripts, il peut être
utile de préciser quel "shell" est utilisé par faire fonctionner votre script. En effet, d'un
Page 40 shell à l'autre, il peut y avoir des différences dans la syntaxe des instructions du " shell ". Il
est donc recommandé de toujours préciser, sur la première ligne du script, le nom du shell
à utiliser avec la ligne suivante : #!NomDuShell. Par exemple, si on souhaite préciser que
c'est le " bash " qu'il faut utiliser, il faut écrire au début du script : #!/bin/bash . Cette ligne
oblige le shell courant à exécuter le script avec un shell " bash " même si vous utilisez par
exemple " C shell " comme shell par défaut quand vous vous connectez.
Remarque : cette ligne n'est pas prise pour une ligne de commentaires car le "#" est
suivi d'un point d'exclamation et l'ensemble prend donc une autre signification pour le
"shell".
2D4. Des exemples ? Alors allons-y !
Exemple 1 : nous allons mettre en place un script qui va demander à l'utilisateur d'entrer
un nom de fichier, avec éventuellement des caractères jokers, et le nom d'un répertoire
avec si nécessaire le chemin pour l'atteindre. Le script va ensuite rechercher, à l'aide de
la commande " find ", les différents répertoires de l'arborescence contenant le fichier
cherché et ce à partir du répertoire fourni. Au final, le script affiche les réponses trouvées
ainsi que leur nombre. Voici une capture d'écran de l'affichage souhaité.
8 2953 TG PA 00
Ce script va également contrôler le fait que :
• l'utilisateur saisisse un nom de fichier et ne se contente pas de taper tout simplement
sur la touche " Entrée " sans rien saisir. En cas de problème, le script redemande en
boucle le nom d'un fichier et ce tant que l'utilisateur ne s'exécute pas.concernant
la saisie du répertoire point de départ de la recherche, si l'utilisateur tape directe-
ment sur la touche "Entrée" sans saisir de nom de répertoire, par défaut, le script
va lancer la recherche à partir du répertoire de connexion de l'utilisateur (voir la
première capture d'écran ci-dessous). Si l'utilisateur saisit le nom d'un répertoire
avec son chemin, le script contrôle le fait que celui-ci existe bien. Dans la négative,
Séquence 3
le script s'arrête (voir la deuxième capture d'écran ci-dessous).
Planification
des tâches
et Scripting avancé
Page 41
1 #!/bin/bash
2
3 # Le script attend la saisie d'un nom de fichier et d'un répertoire
4 echo "Entrez le nom d'un fichier"
5 read NomFich
6 while [ -z $NomFich ]
7 do
8 echo "Il FAUT un nom de fichier !"
8 2953 TG PA 00
9 echo "Entrez le nom d'un fichier"
10 read NomFich
11 done
12 echo "Entrez le nom du répertoire de départ de la recherche"
13 read RepDep
14
15 # Vérification du répertoire de recherche
16 if [ -z $RepDep ]
17 then
18 RepDep=$HOME
19 else
20 # Vérifier l'existence du répertoire
21 ls $RepDep &>/dev/null
22 if [ $? -ne 0 ]
23 then
24 echo "Repertoire inexistant"
25 exit
26 fi
27 fi
Séquence 3
28
Planification
29 # Lancer la recherche
des tâches
et Scripting avancé 30 echo "La recherche va s'effectuer avec les permissions de l'utilisateur : $LOGNAME"
31 echo "et à partir du répertoire : $RepDep"
Page 42
32 echo -e "\nRecherche en cours ..."
33 NbRep=`find $RepDep -name "$NomFich" -type f 2>/dev/null | tee LesReponses | wc -l`
34 echo -e "Fin de la recherche\n"
35
36 # Affichage du résultat de la recherche
37 if [ $NbRep -eq 0 ]
38 then
39 echo "Il n'y a pas de solution trouvée"
40 else
41 echo "Il y a $NbRep solution(s) trouvée(s) dans"
42 cat LesReponses | more
43 rm LesReponses
44 fi
8 2953 TG PA 00
car elle permet au script de s'arrêter et d'attendre la saisie d'un nouveau nom de
fichier. Sans cette ligne, la boucle serait infinie puisque la variable "NomFich" res-
terait à jamais vide.
• Ligne 12 à 13 : ces lignes permettent de faire la saisie du nom du répertoire qui sera
le point de départ de la recherche.
• Ligne 16 : cette ligne contrôle le fait que la variable " RepDep " n'est pas vide.
• Ligne 18 : cette ligne ne s'exécute que si le test de la ligne 16 est VRAI, c'est-à-dire
que la "RepDep" est vide. Dans cette ligne, on affecte à la variable "RepDep" le
nom du répertoire de connexion de l'utilisateur courant et ce grâce à la variable
d'environnement " HOME ".
• Ligne 20 à 26 : ces lignes ne s'exécutent que si le test de la ligne 16 est FAUX, c'est-
à-dire que la " RepDep " n'est pas vide.
• Ligne 21 : l'instruction de cette ligne permet de savoir si le répertoire du départ
de la recherche existe. En effet, la commande " ls " enverra un message d'erreur
si le répertoire, dont il tente de lister le contenu, n'existe pas. Pour ne pas polluer
l'écran avec le message d'erreur le cas échéant, nous redirigeons la sortie erreur vers
la poubelle. De même pour ne pas polluer l'écran avec le contenu du répertoire de
départ, s'il existe, on redirige la sortie standard vers la poubelle.
• Ligne 22 : il s'agit d'une ligne de test. Le paramètre " $? " permet de savoir si la
dernière commande exécutée s'est bien terminée ou non. Ce paramètre contient
la valeur 0 si la dernière commande exécutée s'est bien terminée et une valeur
d'erreur différente de 0 si la dernière commande exécutée ne s'est pas bien termi-
Séquence 3
née. Dans notre cas, la dernière commande exécutée est celle de la ligne 21. Ainsi
si le répertoire de départ n'existe pas, la ligne 21 se termine sur une erreur et donc Planification
le paramètre " $? " est différent de 0. des tâches
et Scripting avancé
• Ligne 24 à 25 : ces lignes ne s'exécutent que si le test de la ligne 22 est VRAI, c'est-
à-dire que la " RepDep " n'existe pas.
Page 43
Remarque : la commande " exit " permet d'interrompre l'exécution du script.
• Ligne 30 à 32 : ces lignes affichent de l'information à l'écran.
• Ligne 33 : cette ligne permet d'affecter, à la variable " NbRep ", le résultat de la
commande délimitée par des " anti-quotes "
Rappel : une commande placée entre anti-quotes est exécutée en premier.
Cette commande est divisée en trois parties. Dans la première partie, on réalise la
recherche à l'aide de la commande " find ". Les résultats trouvés sont envoyés sur
l'entrée standard de la commande " tee ". La commande " tee " envoie ce qu'elle reçoit
sur son entrée standard vers deux sorties différentes à savoir vers le fichier de nom "
LesReponses " et vers l'entrée standard de la commande " wc ". Le fichier "LesReponses"
va donc contenir les résultats envoyés par la commande " find ". La commande " wc –l
" permet de compter le nombre de lignes qui arrivent sur son entrée standard donc le
nombre de lignes " Résultats " produites par " find ". Un petit schéma :
8 2953 TG PA 00
Remarque : la commande "find" peut essayer d'ouvrir des répertoires sur lesquels l'utili-
sateur n'a pas les permissions "x" et "r". Dans ce cas des messages d'erreurs apparaissent
que nous envoyons alors à la poubelle.
• Ligne 34 : affichage d'un texte pour l'utilisateur.
• Ligne 37 à 44 : ces lignes affichent les résultats de la recherche.
• Ligne 39 : affichage du texte concernant le fait qu'aucun résultat n'a été trouvé.
• Ligne 41 : affiche le nombre de résultats trouvés.
• Ligne 42 : affiche du contenu du fichier " LesReponses " en mode page par page.
Cela permet de lister les résultats trouvés par la commande " find ".
• Ligne 43 : on efface le fichier " LesReponses " car nous n'en avons plus besoin.
Exemple 2 : il existe un fichier de nom " /etc/profile " qui est un fichier de configuration
de l'environnement des utilisateurs appelé à chaque connexion réussie d'un utilisateur.
Nous allons compléter le code de ce fichier avec le code ci-dessous Précaution : faites
une copie de ce fichier avant de le modifier, comme cela, en cas d'erreur, vous pourrez
le restaurer dans son état initial.
case $LOGNAME in
root) echo "Vous êtes root"
echo "Voici les utilisateurs connectés"
who ;;
alain|pierre) echo "Vous êtes $LOGNAME"
if [ -e $HOME/temp ]
then
Séquence 3 if [ -d $HOME/temp ]
then
Planification echo "Je vide le répertoire temp"
des tâches rm $HOME/temp/* 2> /dev/null
et Scripting avancé else
echo "Je supprime le fichier temp"
Page 44 rm $HOME/temp
echo "Mise en place du répertoire temp"
mkdir $HOME/temp
fi
else
echo "Mise en place du répertoire temp"
mkdir $HOME/temp
fi
echo "Restriction des permissions sur temp"
chmod 700 $HOME/temp ;;
*) echo "l'utilisateur $LOGNAME vient de se connecter" > $HOME/message
write root < $HOME/message 2> /dev/null
rm $HOME/message ;;
esac
Ce code réalise différentes tâches qui dépendent du nom de login ($LOGNAME) de l'uti-
lisateur qui est en train de se connecter. Ainsi :
• S'il s'agit de " root ", on affiche la liste des utilisateurs actuellement connectés.
• S'il s'agit de " alain " ou de " pierre ", on crée dans le répertoire de connexion de
celui-ci repéré par la variable d'environnement " HOME ", un répertoire de nom
" temp ". Si ce répertoire existe, on vide son contenu en prenant la précaution
d'envoyer dans la poubelle les messages d'erreurs qui peuvent apparaître notam-
ment lorsque le répertoire est déjà vide. Si le nom " temp " est déjà associé à un
fichier se trouvant dans le répertoire de connexion, on le supprime puis on crée le
répertoire " temp ". Si le répertoire " temp " n'existe pas, on le crée et on modifie
8 2953 TG PA 00
les permissions sur celui-ci.
• Si l'utilisateur qui se connecte n'est pas un de ceux cités au-dessus, on envoie un
message via la commande " write " à " root " pour l'avertir de la connexion de
l'utilisateur. Pour cela, on place le message à envoyer dans un fichier dont en envoie
ensuite le contenu sur l'entrée standard de la commande " write ". Attention, si
l'utilisateur " root " n'est pas connecté, la commande " write " envoie un message
d'erreur que l'on transfère dans la poubelle. Le fichier de message crée est supprimé,
ceci pour éviter de laisser des traces sur le répertoire de connexion de l'utilisateur.
Exemple 3 : nous allons écrire un script qui affiche le nom des utilisateurs connectés ainsi
que le nom du terminal sur lequel ils sont connectés. Pour cela, nous allons utiliser une
boucle " for " à qui on transmet une liste d'informations associant le nom de login de
l'utilisateur et le nom de son terminal de connexion.
Voici le code :
for Nom in `who | sed 's/[ ][ ]*/:/g' | cut -d: -f1,2`
do
echo "l'utilisateur `echo $Nom | cut -d: -f1` est sur `echo $Nom | cut
-d: -f2`"
done
Page 45
Voilà, nous n'irons pas plus loin dans la programmation " shell " mais vous voyez qu'elle
permet de faire beaucoup de chose et donc d'automatiser des tâches répétitives.
8 2953 TG PA 00
2D5.1. Les alias
Les alias permettent de créer des raccourcis vers des commandes Linux ou des scripts. Il
ne reste plus ensuite qu’à appeler l’alias sur la ligne de commande pour déclencher la
com-mande associée.
• Pour créer un alias, il suffit de taper la commande :
alias NomAlias = 'Commande‘
alias NomAlias = "Commande"
• Pour lister les alias existants, il suffit de taper la commande « alias »
• Pour supprimer un alias, il faut utiliser la commande « unalias NomAlias »
• Pour conserver un alias de manière définitive, il faut le placer dans le fichier de
confi-guration de l’utilisateur « .bash_profile » ou le fichier de configuration géné-
rale « /etc/profile »
Exemples :
alias Qui1="who | more"
alias Qui2="who | sed -e 's/ */ /g' | cut –d' ' -f1 | sort | more"
¢ la commande « sed » mise en place ici permet de remplacer un ensemble
d’espaces par un seul. Au final, cette commande liste par page les utilisateurs
connectés par ordre alphabétique
Supposons maintenant que nous ayons mis en place le script « qui.sh » suivant dans un
Séquence 3 répertoire de nom « /MesScripts »:
for for Nom in `who | sed 's/[ ][ ]*/:/g' | cut -d: -f1,2`
Planification do
des tâches
echo "l'utilisateur `echo $Nom | cut -d: -f1` est sur `echo $Nom |
et Scripting avancé
cut -d: -f2`"
done
Page 46
8 2953 TG PA 00
Voici le code que l’on peut placer dans « /etc/profile » qui correspond au fichier de confi-
guration générale.
1 #!/bin/bash
2 # Message personnel
3 JeSuis=$(whoami)
4 DateConnect=$(date +'%d %h %Y %H:%M')
5 LastConnect=$(cat /temp/historique | grep $JeSuis | tail -n1 | cut -d" " -f3-7)
6 echo "$JeSuis connexion le $DateConnect" >> /tmp/historique
7 NbConnect=$(cat /tmp/historique | grep "^$JeSuis" | wc -l)
8 if [ $NbConnect -eq 1 ]
9 then
10 Suite="ère"
11 else
12 Suite="ème"
13 fi
14 echo "***********************************************************"
15 echo
16 echo " Bonjour LINUXIEN "
17 echo
Séquence 3
18 echo " Je te souhaite la bienvenue dans ce nouveau monde "
Planification
19 echo
des tâches
20 echo " Ton login est : $JeSuis " et Scripting avancé
8 2953 TG PA 00
2D5.3. Commandes réseaux et scripts
Les scripts linux peuvent faire intervenir différentes commandes réseaux permettant de
réaliser une configuration IP, une configuration de VLAN ou encore une connexion SSH.
Nous n’allons pas détailler ici toutes les possibilités mais dans la partie TP de ce cours,
vous verrez comment réaliser une connexion SSH à travers un exemple mais aussi « scp
». En résumé, les scripts permettent de faciliter le travail d’un administrateur dans tous
les do-maines alors n’hésitez pas à y consacrer du temps.
Séquence 3
Planification
des tâches
et Scripting avancé
Page 48
8 2953 TG PA 00
Séquence 4
Gestion des performances
Votre serveur tourne maintenant comme une horloge, les utilisateurs sont
satisfaits et votre responsable aussi, tout va pour le mieux dans le meilleur
des mondes, vous pouvez donc vous reposez un peu et... STOP ! Un système
ça vieillit, ça s'encrasse, vous devez donc veillez à gérer au mieux votre
système pour éviter que votre " Ferrari " ne se transforme en " Lada ".
u Contenu
1. Surveiller les Ressources Système............................................................................. 50
2. Adapter les Ressources Système............................................................................... 53
3. Les Benchmarks............................................................................................................... 53
Page 49
8 2953 TG PA 00
1. Surveiller les Ressources Système
Cela peut paraître bête, mais pour tout système d'exploitation et pour tout logiciel, les
éditeurs vous fournissent des spécifications recommandés pour que votre système tourne
correctement. Respectez cela scrupuleusement. D'une manière générale, il faut faire
attention aux éléments suivants :
• la puissance de calcul : le nombre et la puissance des processeurs ;
• la taille mémoire : RAM et disque (SWAP) ;
• les performances d'entrées/sorties : concerne les disques mais aussi les communica-
tions réseau.
Mais cela ne suffit pas. En fonction de l'usage fait du serveur, des services hébergés et du
nombre d'utilisateurs, les ressources du serveur (Mémoire, taux d'occupation du proces-
seur, etc) vont fluctuer et peuvent arriver à saturation. Votre rôle est donc de surveiller
continuellement la disponibilité de ces ressources. Mais comme vous avez de nombreuses
autres tâches à effectuer, il va falloir là aussi automatiser celle-ci notamment en réalisant :
• une surveillance de l'utilisation des ressources afin d'éviter tout blocage ;
• une détection de tout goulot d'étranglement qui ralentirait le système ;
• une réponse rapide aux problèmes : diminuer la charge ou rajouter des ressources
système.
En ce qui concerne la surveillance, il existe de nombreux outils système dépendant de
votre système d'exploitation qui vous permettront de monitorer l'usage de vos res-
Séquence 4 sources.
8 2953 TG PA 00
Séquence 4
Gestion
des performances
Page 51
8 2953 TG PA 00
Séquence 4
Gestion
des performances
Page 52
8 2953 TG PA 00
2. Adapter les Ressources Système
En ce qui concerne le fait de rajouter des ressources systèmes :
• CPU : vous pouvez à priori opter pour un processeur plus puissant ou alors rajouter
un processeur supplémentaire ou possédant plus de cores (" coeur " de processeur,
unité de calcul). La limite technique dépendra de la carte-mère.
• Mémoire RAM : ici aussi, la carte-mère vous dictera la limite physique. Rajouter de
la RAM sur un serveur est souvent très efficace.
• Les entrées-sorties : ici vous pouvez utiliser des systèmes RAID, opter pour des
disques et des cartes interfaces plus rapides ou qui fonctionnent en équilibrage de
charge (loadbalancing : on répartie la charge de travail entre plusieurs serveurs afin
d'améliorer les performances)
• Gérer efficacement le SWAP : même si le swap n'est pas indispensable au fonction-
nement des OS modernes, il peut encore vous sauvez d'un crash système en cas
d'utilisation trop importante de la RAM.
En ce qui concerne le fait de diminuer la charge :
• Faire la chasse aux services inutiles. À quoi peut bien servir une interface graphique
sur un serveur utilisé uniquement pour héberger des sites web ?
• Encadrer au mieux les ressources disponibles par application et par utilisateur : cela
évitera tout accaparement des ressources en un point unique.
• Faites tourner les opérations routinière et demandant de nombreuses ressources
(sauvegarde, scans antivirus, etc...) durant des périodes où la charge est faible (sou- Séquence 4
vent la nuit ou le week-end).
Gestion
des performances
3. Les Benchmarks
Page 53
Afin de savoir si votre serveur tiendra bien la charge, il vaut mieux le tester avant la mise
en production. Pour cela vous pouvez utiliser des Benchmarks (test de performance) afin
de tester divers comportements dans différents domaines :
• Test d'endurance : on simule une charge très importante pendant une période
étendue afin de vérifier la stabilité du système. Il existe des outils dédiés, souvent
disponible avec le serveur en lui-même (par exemple avec Apache).
• Test de charge : on simule un nombre prédéfinis d'utilisateurs pendant une période
fixe.
• Test de charge en épis : on simule des montées soudaines en charge.
Il existe des outils de benchmarks pour à peu près tous les types de systèmes :
• pour les serveurs web (notamment apache) ;
• pour les bases de données ( MySQL, PostgresSQL) ;
• pour les File Systems et les disques ;
• pour le serveur FTP, de messagerie... ;
• pour les CPU, le réseau ;
• etc...
8 2953 TG PA 00
Séquence 5
Continuité de service : haute
disponibilité
Bien maintenant que tout est installé et configuré aux petits oignons, vous
désirez goûter à un repos à priori bien mérité... Que nenni ! Votre rôle en
tant qu'administrateur et réseau est certes que tout fonctionne correcte-
ment, mais aussi et surtout que votre architecture soit fiable et " survive
" aux nombreux désastres qui ne manqueront pas vous tomber dessus :
crashs disques, incendies, tremblements de terre, etc. ! Quelle dure vie que
la notre, mais c'est aussi pour cela que l'on aime l'informatique. Heureuse-
ment des solutions existent pour se prémunir de tous ces maux et de faire
en sorte que la nuisance pour l'utilisateur soit quasi-nulle. Bien, mainte-
nant que le contexte est posé, intéressons-nous à nos objectifs.
u Contenu
1. Les éléments vitaux à surveiller................................................................................ 56
1A. La disponibilité des services........................................................................................ 56
1B. La disponibilité des données...................................................................................... 56
1C. La tolérance aux catastrophes................................................................................... 56
2. Notions importantes pour la Haute-Disponibilité......................................... 56
2A. Fiabilité et Disponibilité.................................................................................. 56
2B. La méthode des « 9 »...................................................................................... 57
3. Des outils.......................................................................................................... 58
4. Les sauvegardes............................................................................................... 59
4A. La sauvegarde complète................................................................................. 59
4B. La sauvegarde différentielle........................................................................... 61
4C. La sauvegarde incrémentielle......................................................................... 62
4D. Le support de sauvegarde.............................................................................. 63
8 2953 TG PA 00
1. Les éléments vitaux à surveiller
8 2953 TG PA 00
On peut alors parler du MTTR (" Mean Time To Repair ") qui permet de connaître l'inter-
valle de temps où un service est indisponible c'est-à-dire jusqu'à son rétablissement. Tout
cela, nous permet d'écrire les formules suivantes, afin de calculer la disponibilité d'un
système (qui dépend de la fiabilité de ses composants) :
Autrement dit, si l'on veut obtenir un système qui soit fiable on a deux leviers d'action :
• soit obtenir un MTTF fort, c'est-à-dire que l'intervalle entre deux pannes du système
est grand ;
• soit obtenir un MTTR faible, c'est-à-dire que le temps pour rétablir mon système est
le plus court possible.
Bien évidemment réunir ces deux conditions serait l'idéal...
Maintenant vous me détestez et vous vous dites que même au Scrabble ces acronymes
et formules ne vous serviront à rien. Erreur ! Mais comme je suis un gars sympa, on va
essayer d'expliquer ça autrement.
Séquence 5
2B. La méthode des " 9 "
Continuité
Il existe une autre méthode pour évaluer le niveau de disponibilité. Cette dernière est de service : haute
plus accessible, mais moins précise. En fait, elle consiste à ne va pas tenir compte de la disponibilité
fréquence des pannes mais uniquement de leur durée afin d'évaluer le niveau de dispo-
nibilité. Cette méthode est la méthode dite de la " méthode des 9 ". Les " 9 " c'est bon Page 57
pour la santé qu'ils disaient. Eh bien sachez que pour votre serveur aussi ! Cette méthode
consiste à évaluer la durée d'arrêt cumulée du service sur un an. Si par exemple vous ne
pouvez accepter qu'un arrêt cumulé de 5 minutes sur un an alors votre service doit être
disponible 99,999 % du temps. Comment on calcule cela ? Eh bien grâce à un " simple "
produit en croix. Voyons cela :
• 100% de disponibilité représente sur un an 365 jours de 24 h soit 8 760 h ou encore
525 600 minutes (Ú 8 760*60).
• Voyons maintenant ce que représente, en minute, 99,999 % de fiabilité sur un an. Il
suffit de calculer 99,999% de 525 600 minutes. Cela donne le calcul (99,999 * 525 600) /
100 soit 525 594,74 minutes de fonctionnement cumulé. Ce résultat représente donc
une tolérance de 5 minutes de pannes sur un an. En effet, 525 600-525 594,74 = 5,256
minutes.
8 2953 TG PA 00
Le tableau ci-dessous représente une généralisation du calcul précédent en fonction du
nombre de " 9 ".
3. Des outils
Il existe des outils qui pourront nous aider dans notre quête de la HD !
• Onduleurs (UPS : Uninterruptible Power System) : cela peut paraître bête, mais sans
courant point d'informatique... Et si la panne devait durer, assurez-vous que l'ondu-
leur est capable d'arrêter proprement le serveur via un signal.
• Alimentation redondante : deux ou même trois alimentations pour se protéger en
cas de défaillance de l'alimentation principale.
• Utilisation du RAID : voir la séquence 1
• Cartes réseaux additionnelles : on est capable de créer une interface réseau virtuelle
qui va regrouper plusieurs interfaces physiques grâce au Channel Bonding (que l'on
retrouve aussi sur de nombreux switchs).
• Réplication des bases de données : permet de basculer facilement les données d'une
8 2953 TG PA 00
base sur une autre machine.
• Utiliser des Systèmes de Fichiers Journalisés.
• Changement à chaud des périphériques (Hotplug) : est-on capable de brancher-
débrancher un disque dur suite à une panne ou est-on obligé d'arrêter le système
(changement à froid) ?
• Climatisation et hygrométrie : eh oui on évite d'installer la salle serveur dans un
sauna ou un hammam...
• Surveillance de l'état du système : on va surveiller la température des différents
composants ainsi que le bon fonctionnement des ventilateurs.
• Redémarrage à distance de la machine : notamment grâce au Wake-On-Lan (réveil
par le réseau), pour éviter de devoir prendre l'avion en urgence pour un simple
reset.
• Accès Distant : dans le même ordre d'idée, un tunnel SSH vous évitera bien des
tracas.
• Remontée des événements : à vous de mettre en place les bon outils (à vos scripts s'ils
n'existent pas déjà) afin de surveiller vos systèmes RAID, Chanel Bonding et autres !
• Sauvegardes : complètes, différentielles, incrémentielles.
4. Les sauvegardes
Précédemment, nous avons mis en avant les principes permettant de créer un système
Séquence 5
fiable (haute disponibilité) afin d'héberger des services critiques pour l'entreprise. Mais
si malgré tous nos efforts, l'impensable arrivait, l'horrible se produisait, emportant dans Continuité
le néant nos " To " de données si précieuses ? Devra-t-on repartir à zéro ? Heureusement de service : haute
disponibilité
non, car nous avions pris la peine de sauvegarder !!! Les sauvegardes : l'assurance-vie de
vos données ! Il faut savoir qu'il existe principalement 3 modes de sauvegarde : complètes,
Page 59
différentielles, incrémentielles.
8 2953 TG PA 00
2 Go (Eh oui vous êtes en forme !). La sauvegarde fera donc au total 4 Go (1 + 1 + 2 Ú
4) alors qu'au final vous n'avez effectué que pour 2 Go de changement depuis la veille.
En résumé, la taille totale de mon jeu de sauvegarde (lundi + mardi + mercredi) fait 1 +
2 + 4 soit 7 Go et pour revenir dans l'état de mercredi il me suffit d'avoir la sauvegarde
complète de mercredi. Allez un petit schéma pour la route.
Séquence 5
Continuité
de service : haute
disponibilité
Page 60
8 2953 TG PA 00
4B. La sauvegarde différentielle
La sauvegarde différentielle est un mode plus fin que la sauvegarde complète sur
laquelle elle se base. Ici, la sauvegarde différentielle inclut l'ensemble des fichiers modi-
fiés depuis la dernière sauvegarde complète. Elle nécessitera donc moins de temps que
la sauvegarde complète et surtout beaucoup moins d'espace disque. En cas de problème
il suffira de disposer de la sauvegarde complète de base ainsi que de la dernière sauve-
garde différentielle.
Reprenons notre petit scénario précédent. Le lundi nous faisons notre première sauve-
garde du disque qui sera donc la sauvegarde complète de base. Lors de la sauvegarde du
mardi, on ne copiera que le nouveau fichier d'1 Go que nous avons créé. C'est beaucoup
mieux ! Et que se passe-t-il lors de la sauvegarde du mercredi ? Eh bien comme la sau-
vegarde se focalise sur les changements par rapport à la sauvegarde complète de base,
vous sauvegarderez uniquement les deux nouveaux fichiers respectivement d'1 Go et
de 2 Go créés mardi et mercredi. Zut ce n'est pas super non plus, car ma sauvegarde du
mardi contenait déjà le nouveau fichier d'1 Go !
Au final, la taille totale de mon jeu de sauvegarde fera 1 + 1 + 3 soit 5 Go. Pour revenir
dans l'état de mercredi il me faut avoir la sauvegarde complète du lundi et la sauvegarde
différentielle de mercredi. Voici toujours le petit schéma qui va bien.
Séquence 5
Continuité
de service : haute
disponibilité
Page 61
8 2953 TG PA 00
4C. La sauvegarde incrémentielle
La sauvegarde incrémentielle est le mode souvent privilégié dans le cas de sauvegardes
fréquentes. Ce mode permet également de revenir à un point précis dans le temps mais
cette fois-ci, on ne sauvegarde que les fichiers qui ont été modifiés depuis la dernière
sauvegarde (base ou incrémentielle). Ce mode est le plus rapide et le plus économe en
termes d'espace de stockage pour les sauvegardes quotidiennes. Le problème est que
Séquence 5 si vous venez à perdre une sauvegarde incrémentielle, la chaîne se trouvant rompue,
Continuité
l'ensemble des sauvegardes incrémentielles ultérieures seront alors inutilisables !!!
de service : haute
Et voici le retour de notre scénario. Après la sauvegarde complète de lundi, la sauvegarde
disponibilité
du mardi ne comportera que le nouveau fichier d'1 Go et la sauvegarde du mercredi ne
Page 62
comportera que le nouveau fichier de 2 Go (seule nouveauté depuis la sauvegarde du
mardi). Au final, la taille totale de mon jeu de sauvegarde est de 1 + 1 + 2 soit 4 Go. Pour
revenir dans l'état de mercredi il me faut avoir la sauvegarde complète du lundi ainsi que
les sauvegardes incrémentielles de mardi ET de mercredi. Si par malheur la sauvegarde
de mardi était perdue ou corrompue la sauvegarde de mercredi serait inutilisable !!!
Schéma quand tu nous tiens :
8 2953 TG PA 00
Séquence 5
Continuité
de service : haute
disponibilité
Page 63
8 2953 TG PA 00
Voilà pour clore notre séquence parlant de haute disponibilité (HD), on peut dire qu'il
n'y a aucune solution miracle tout dépend de la situation :
–– Quel est votre budget de sauvegarde ?
–– Quel est le support de sauvegarde le plus approprié en fonction de la taille de
vos données ?
–– Combien de temps doit-on garder ces sauvegarde ?
–– Où seront-elles stockées ?
–– Fera-t-on de multiples copies de ces sauvegardes ?
–– Combien de temps durera le processus de sauvegarde ?
–– Pour répondre à ces questions, posez-vous en d'autres :
–– Que faut-il sauvegarder ? À quelle fréquence ?
–– Combien coûterait à la société la perte de ces données ?
Séquence 5
Continuité
de service : haute
disponibilité
Page 64
8 2953 TG PA 00
Séquence 6
Sécurité des accès
+ accès distant
Sécuriser l'accès à votre serveur est bien sûr une chose très importante.
Vous ne voulez pas que le premier venu puisse venir détruire votre créa-
tion et les nombreuses heures passées à tout configurer dans les moindres
détails ! Cela se révèle encore plus important lorsque vous devez avoir un
contrôle distant de votre machine. En effet, qui dit risque plus grand dit
protection plus grande. C'est ce que nous allons voir dans cette séquence.
u Contenu
1. Les mots de passe........................................................................................................ 66
2. Connexion à distance sécurisée.............................................................................. 67 Page 65
2A. Quelques notions de sécurité.................................................................................. 67
2B. Comment garantir l’intégrité....................................................................... 67
2B1. La notion d’empreinte.................................................................................. 67
2B2. Chiffrer à l’aide d’un algorithme secret....................................................... 69
2B3. Chiffrer à l’aide d’un algorithme public et d’une clé secrète..................... 70
2B4. Mélanger les chiffrements est-ce raisonnable ?......................................... 74
2B5. Récapitulons tout cela................................................................................... 77
2B6. La taille de la clé est-ce important ?............................................................ 77
2B7. Garantir la sécurité et la distribution des clés publiques........................... 77
3. Comment administrer à distance un serveur de manière sécurisée : SSH
ou VPN............................................................................................................78
3A. SSH................................................................................................................. 78
3B. VPN................................................................................................................. 79
8 2953 TG PA 00
1. Les mots de passe
Une des façons les plus simples et les plus répandues de protéger l'accès à un système
consiste à mettre en place un mot de passe. Cette méthode d'authentification peut aussi
être une très importante faille de sécurité si l'on met en place de mauvais mots de passe
ou encore pire, si l'on en met pas du tout ! Ce mode de protection peut paraître évident
certes mais quelques précautions sont tout de même à prendre en compte.
Qu'est ce qu'un bon mot de passe ? Et bien le but est de créer un mot de passe qui soit
suffisamment résistant et difficile à deviner. Pour cela, on veillera à :
• utiliser un mot de passe suffisamment long (8 caractères et plus) ;
• être capable de taper rapidement le mot de passe afin d'éviter toute mémorisation
par un éventuel " espion " ;
• utiliser une combinaison de chiffres, de caractères spéciaux, de lettres en minuscules
et en majuscules ;
• changer fréquemment de mot de passe. La fréquence de ces changements dépen-
dra du niveau de confidentialité souhaité.
Cela nous aidera à poser de bonnes bases pour notre politique de mots de passe au sein
de l'entreprise. Mais en tant qu'administrateur système et réseau, voilà ce qu'il faudra à
tout prix éviter :
• utiliser des informations facilement récupérables comme mot de passe : nom,
prénom, date de naissance, nom des parents ou des enfants, numéro de sécurité
Séquence 6 sociale, nom de votre chien/ chat, etc ;
• prendre des mots du dictionnaire (peu importe la langue) ;
Sécurité des accès
+ Accès distant • utilise des " ruses " (qui n'en sont pas car elles sont facilement modélisés) telles
qu'écrire un mot à l'envers, un mot précédé d'un chiffre, des suites de lettres ou de
Page 66 chiffres sur le clavier comme " azertyuiop " ou encore " aqwse " qui forme un " V " ;
• taper son mot de passe alors que quelqu'un regarde par dessus votre épaule ;
• ne JAMAIS écrire son mot de passe sur un papier, un email ou le dire par téléphone ;
• et surtout ne jamais divulguer votre mot de passe, et ce à quiconque. On a tous
été confronté à une situation ou vous êtes dans l'impossibilité physique de vous
connecter à une machine alors qu'un collègue, lui, le peut. On est alors tenté de lui
donner notre mot de passe, ERREUR !!!
Maintenant voici quelques astuces afin de créer facilement des mots de passe qui ne
soient pas trop durs à retenir. Vous pouvez utiliser une phrase que vous aimez, par
exemple " le Réseau et la Plongée sont mes 2 passions ", et vous n'utilisez que la pre-
mière lettre de chaque mot :
" lRelPsm2p ". Avouez qu'il est plus facile de retenir la phrase " clé " plutôt que le
mot de passe effectif. Vous pouvez aussi " mixer " deux mots, par exemple bts et
SIO : " bStIsO ".
Voilà donc quelques conseils pour choisir de " bons " mots de passe. En tant qu'admi-
nistrateur, c'est à vous que revient la tâche d'apprendre à vos utilisateurs ces diverses
techniques. Cependant, il est bien souvent plus facile d'imposer aux utilisateurs les mots
de passe, vous serez ainsi assuré du respect des règles de sécurité que vous aurez mis en
place.
Si vraiment vous n'avez aucune imagination, vous pouvez utiliser des générateurs de
mots de passe tels que " pwgen " ou bien " apg ", tous deux disponibles sous Linux. Il
8 2953 TG PA 00
existe aussi des générateurs sous Windows ou même en ligne, attention tout de même,
seuls les logiciels libres vous permettront d'être fixé sur leur qualité (leur code étant
visible par tous).
8 2953 TG PA 00
On utilise principalement deux algorithmes :
• MD5 (Message Digest 5) qui utilise des empreintes de 128 bits ;
• SHA (Secure Hash Alogrithm) qui utilise entre 160 bis (SHA-1) et 512 bits (SHA-512)
pour les empreintes.
Séquence 6
Page 68
8 2953 TG PA 00
2B2. Chiffrer à l'aide d'un algorithme secret
Cette méthode simple et à priori efficace consiste à inventer un " langage " secret (en
fait un algorithme) qui ne sera connu que des personnes autorisées. On utilise cet algo-
rithme aussi bien pour chiffrer que pour déchiffrer.
Néanmoins on se trouve confronté à deux problèmes majeurs.
La force de cette méthode de chiffrement repose sur le fait que la méthode de chiffre-
ment soit secrète. Or plus on va utiliser cette méthode avec un nombre important de
correspondants et moins notre secret le restera. En effet, c'est bien connu, un secret ne le
reste que s'il est connu d'une seule personne, commencez à le divulguer et vous courrez
à votre perte. En fait, Il suffit qu'un " espion " arrive à déchiffrer l'algorithme de chiffre-
ment et l'ensemble de nos messages n'auront plus de secret pour lui.
Allez un exemple. Bien entendu, les exemples suivants sont volontairement simplistes,
ils ne sont là que pour expliquer simplement les principes de fonctionnement et ne sont
évidemment pas utilisés en informatique car même un processeur des années 80 pourrait
déchiffrer de tels algorithmes en quelques millièmes de secondes... !!! Mais ce n'est pas
le problème car notre but est de comprendre le principe alors allons-y.
Deux utilisateurs, " Alice " et " Bob ", veulent s'échanger des informations. Ils se mettent
tout les deux d'accord sur le un principe de chiffrement et suivent la procédure suivante :
Séquence 6
Page 69
8 2953 TG PA 00
Comme vous l'aurez deviné, l'algorithme secret consiste simplement à inverser l'ordre de
lettres de chaque " mot " : la 1re lettre devient la dernière, la 2e devient l'avant-dernière
et ainsi de suite. Si je communique avec une seule personne, je diffuse mon " secret " à
cette seule personne, mais si je dois communiquer avec 10 000 personnes ? Mon secret
a de grande chance de ne plus en être un. Et puis il y a de bonnes chances que mon "
secret " soit percé par un espion (il faut dire que l'algorithme n'est pas très solide mais
encore une fois, ce n'est qu'un exemple).
Voyons maintenant une autre technique de chiffrage qui consiste à chiffrer à l'aide d'un
algorithme public et d'une clé secrète.
Séquence 6
Page 70
8 2953 TG PA 00
Pour illustrer ce type de chiffrement prenons un exemple proche du chiffrement avec un
algorithme secret :
Message clair de Alice pour Bob : " voici mon message "
Algorithme : décaler de + " valeur_clé " l'alphabet
Message chiffré si la clé vaut 2 : " xqkek oqp oguucig "
Message chiffré si la clé vaut 3 : " yrlfl prq phvvdjh "
Ici, même si l'algorithme est connu de tous, la force du chiffrement réside dans la " dif-
ficulté " de trouver la clé correspondante puisqu'il n'existe pas une unique solution mais
bien plusieurs, tout dépendant de la clé utilisée, Vous pouvez donc communiquer avec
de nombreux correspondants différents en utilisant le même algorithme. Vous n'aurez
qu'à faire varier la clé pour obtenir des messages chiffrés différents.
En réalité on utilise deux principes de fonctionnement différents avec les clés.
Le premier principe est le chiffrement symétrique : dans ce mode, on chiffre et déchiffre
avec la même clé. L'émetteur chiffre son message avec la clé et le destinataire déchif-
frera le message chiffré grâce à une clé identique à celle utilisée par l'émetteur. Cette
technique possède de solides avantages. En effet, elle est beaucoup plus rapide que le
chiffrement asymétrique (cf ci-après) et est très robuste lorsque l'on utilise des clés de
grande taille. Néanmoins cette méthode de confidentialité n'offre aucune authentifi-
cation (sauf si il n'y a que deux correspondants) et surtout, son point faible réside dans
la nécessité de s'échanger la clé. Un espion pourrait donc la copier lors de l'échange et
cette probabilité ne fait qu'augmenter au cas où un grand nombre de personnes vou-
draient échanger avec la même clé. En effet, il faut autant de copies de la clé que de Séquence 6
Page 71
8 2953 TG PA 00
Un autre problème prend forme lorsque l'on doit communiquer avec un nombre impor-
tant de correspondants. On utilisera une clé différente pour chaque participant. Cela
devient rapidement un vrai casse-tête : il faut garder en mémoire quelle clé correspond
à chaque personne. De plus cela génère un grand nombre de clés différentes. Ainsi, si
pour 3 personnes il suffit d'avoir 3 clés différentes, pour 4 personnes il en faut 6, pour
10 on a besoin de 45 clés et pour 100 il en faut... 4950 !!! La formule à utiliser est pour
" N " participants, on a besoin de " N(N-1)/2 " clés différentes. Faites vous un dessin si
vous n'êtes pas convaincus.
Cela est donc très contraignant et surtout pose encore un problème accru de sécurité lors
de l'échange de clé (risque d'interception).
Résumons :
8 2953 TG PA 00
Comme vous l'aurez compris, il n'est pas possible d'utiliser la même clé pour chiffrer et
déchiffrer un même message. En effet même si les clés sont liées mathématiquement, les
clés sont très différentes.
Un autre avantage de ce chiffrement asymétrique est que si vous arrivez à déchiffrer un
message avec la clé publique d'Alice, alors vous pouvez être sûr que le message émane
d'Alice ou tout du moins qu'il a été chiffré à l'aide de la clé privée d'Alice. Un message
ne peut être déchiffré avec une clé publique que si le message a été chiffré avec la clé
privée correspondante. Cela nous permet d'obtenir l'authentification des messages. En
effet seule Alice est supposée avoir un exemplaire de sa clé privée car on ne partage
JAMAIS une clé privée.
Ainsi pour être sûr qu'une seule personne, par exemple Bob, sera capable de lire un
message, il faut le chiffrer avec la clé publique de Bob, car seul Bob détient la clé privée
permettant de déchiffrer un message chiffré avec la clé publique de Bob.
Prenez une aspirine ce n'est pas fini...
Si maintenant Alice veut faire comprendre à Bob que le message émane bien d'elle, alors
elle ne pourra pas utiliser la clé publique de Bob. Cela ne sera pas suffisant pour prouver
l'authenticité du message car de nombreuses personnes disposent de la clé publique de
Bob. Non, Alice devra utiliser la clé privée d'Alice pour chiffrer le message. Ainsi Bob sera
assuré que le message provient bien d'Alice et de personne d'autre. C'est donc un très
gros avantage par rapport au chiffrement symétrique qui ne permet pas l'authentifica-
tion car les clés sont les mêmes pour chaque correspondant.
Le chiffrement asymétrique est beaucoup plus lent que le chiffrement symétrique parce Séquence 6
qu'il utilise des opérations mathématiques beaucoup plus complexes et nécessite donc Sécurité des accès
un temps de traitement accru. Par contre gérer les clés est beaucoup plus facile. Si vous + Accès distant
devez communiquez avec 1 000 personnes, vous n'aurez qu'à envoyer 1 000 fois votre
clé publique (1 seule clé publique envoyée à tout le monde : la vôtre), au lieu de garder Page 73
note des clés de chacun des 1 000 correspondants (1 clé symétrique par correspondant).
De plus certains algorithmes asymétriques permettent aussi la non-répudiation.
Avantages • Gestion et distribution des clés beaucoup plus aisée qu'avec le chiffrement
asymétrique
• Permet l'authentification et la non-répudiation
Inconvénients • Beaucoup plus lent que le chiffrement symétrique
• Demande de nombreux calculs intensifs.
Voici quelques algorithmes utilisant le chiffrement asymétrique :
• Diffie-Hellman ;
• DSA (Digital Signature Algorithm) ;
• RSA (Rivest-Shamir-Adleman).
Résumons un peu
Si vous voulez de la confidentialité, vous allez chiffrer votre message avec la clé publique
du destinataire : seul le destinataire possède la clé privée pour le déchiffrer.
Si vous voulez de l'authentification, vous allez chiffrer votre message avec votre propre
clé privé. Le destinataire est ainsi assuré que s'il arrive à déchiffrer le message grâce à la
clé publique de l'émetteur, le message a bien été chiffré par la seule personne possédant
la clé privée correspondante : l'émetteur. Mais attention !!! Si vous chiffrer avec votre clé
privée, n'importe qui pourra déchiffrer votre message car il suffit d'avoir pour cela votre
clé publique ! On n'a ici que de l'authentification. Ah ! Quel dilemme !
8 2953 TG PA 00
2B4. Mélanger les chiffrements est-ce raisonnable ?
Pour trouver une solution à notre problème évoqué à la fin du paragraphe précédent,
c'est-à-dire avoir de la confidentialité et de l'authentification, cela consiste à utiliser à la
fois du chiffrement avec la clé publique et la clé privée.
Nous avons vu au début de la séquence que l'on peut utiliser le hachage pour être sur
qu'un message n'a pas été modifié. Reprenons notre exemple d'Alice qui désire envoyer
un message chiffré et authentique à Bob. Si Alice utilise sa clé privée pour chiffrer
l'empreinte du message (on dit qu'elle " signe " son message), l'authenticité de cette
empreinte est donc acquise pour Bob qui pourra utiliser la clé publique d'Alice pour
déchiffrer l'empreinte.
Et pour la confidentialité, il suffit à Alice de chiffrer son message avec la clé publique
de Bob.
Séquence 6
Page 74
8 2953 TG PA 00
On a ainsi l'authenticité, la confidentialité et même en bonus l'intégrité. Mais le pro-
blème reste bien sur le fait que l'on est obligé de chiffrer (et donc de déchiffrer) deux
fois au lieu d'une.
Efficace mais très coûteux en terme de performance. L'idéal serait d'utiliser les clés symé-
triques, beaucoup plus économes en temps de traitement. Mais le problème de sécurité
se pose lors de l'échange des clés. En effet si notre clé symétrique se fait intercepter par
un espion, celui-ci pourra alors déchiffrer tous nos messages et même usurper notre
identité !
Encore une fois la solution réside dans l'emploi des deux méthodes : chiffrement asymé-
trique ET symétrique ! En fait, ici on va appliquer la technique du chiffrement asymé-
trique sur le chiffrement symétrique ! Ils sont fous les informations !!!!
Séquence 6
Dans ce cadre, ce sont donc les clés symétriques qui vont être chiffrées par la méthode
du chiffrement asymétrique. On sécurisera ainsi l'échange de clés symétriques. Pour Sécurité des accès
le reste le fonctionnement et les fonctionnalités offertes restent les mêmes : intégrité + Accès distant
(grâce à l'empreinte), authenticité (grâce à la signature de l'empreinte) et chiffrement
(ici symétrique). Page 75
8 2953 TG PA 00
Séquence 6
Page 76
À partir de ce moment là, Alice et Bob pourront discuter de manière sécurisée en utili-
sant le chiffrement symétrique.
8 2953 TG PA 00
2B5. Récapitulons tout cela
Symètrique Asymétrique
Clés Une seule clé est partagée entre deux Une personne possède une clé publique
(ou plus) personnes et l'autre possède la clé privée
correspondante
Échange de clés Doit s'exécuter grâce à des moyens Une clé publique est disponible pour
sécurisés tout un chacun tandis que la clé privée
correspondante est gardée secrète par
le propriétaire
Vitesse Moins complexe et donc plus rapide Plus complexe et donc plus lent
Usage Souvent utilisé pour chiffrer des fichiers Souvent utilisé pour la distribution de
et des canaux de communication clés et les signatures digitales
Sécurité fournie Confidentialité Confidentialité, authentification et non-
répudiation
2B7. Garantir la sécurité et la distribution des clés publiques Sécurité des accès
+ Accès distant
Garantir la sécurité et le distribution des clés publiques est en effet quelque chose
d'essentiel pour que toute cette belle théorie puisse fonctionner. On a donc besoin pour Page 77
cela d'une personne de confiance, qui puisse nous garantir que la clé publique distribuée
par Alice est bien celle d'Alice et qu'elle n'a pas été contrefaite. Cette " personne " de
confiance est appelée le tiers de confiance ou encore " Certificate Authority (CA) ". Son
existence même repose sur le fait que l'on puisse lui faire confiance, elle qui détient de
très nombreuses clés publiques.
Lorsqu'un tel organisme m'envoie la clé publique d'Alice, elle m'envoie surtout un cer-
tificat. Ce certificat comporte des informations sur le propriétaire de la clé publique qui
sont signées avec la clé privé du CA ! Ainsi si l'on fait confiance au CA, on considère alors
que l'identité du propriétaire de la clé publique envoyée est bien la bonne.
Ces certificats utilisent la norme x509. Voici les différents composants d'un certificat x509 :
• version ;
• numéro de Série ;
• signature de l'algorithme ;
• émetteur ;
• validité ;
• société ou personne identifié par ce certificat ;
• clé publique et algorithme utilisé ;
• signature du CA et algorithme utilisé.
8 2953 TG PA 00
Exemple de certificat :
Version: 3 (0x2)
Numéro de série: 1 (0x1)
Signature Algorithm: md5WithRSAEncryption
Emetteur: C = FR, L = Paris, O = Hervé Schauer Consultants Files XE9,
OU = autorité de certification, CN = HSC CA / Email = ca@hsc.fr
Validité:
Pas Avant: 8 juin 1999 14:52:40 GMT
Pas après: 7 juin 2000 14:52:40 GMT
Objet: C = FR, L = Paris, O = Hervé Schauer Consultants Files XE9, OU =
Equipe technique, CN = Ghislaine Labouret / Email = Ghislaine.Labouret
@ hsc.fr
Sous réserve info à clé publique:
Algorithme à clé publique: rsaEncryption
RSA à clé publique: (1024 bits)
Module (1024 bits):
00: b3: 4e: 75:76: fc: 4c: c3: bd: 61:6 c: 14:41:08 f: 47:
...
Exposant: 65 537 (0x10001)
8 2953 TG PA 00
SSH vous permettra d'administrer efficacement votre serveur en ligne de commande
(voire graphiquement) à distance et ce de manière sécurisée. Nous verrons tout cela plus
en détail dans les TP.
SSH est facilement utilisable sous Linux et sous Windows, notamment grâce à Putty (un
client telnet et SSH).
3B. VPN
VPN (Virtual Private Network) permet lieu aussi de créer un tunnel sécurisé entre deux
postes. Mais contrairement à SSH, qui ne transmettra de manière chiffrée que les com-
mandes à l'intérieur du tunnel, le VPN chiffrera la TOTALITE des informations transitant
entre les postes.
Il existe de nombreux protocoles pour créer un VPN :
• IPSec
• PPTP
• L2F
• L2TP
• OpenVPN
• PPP + SSH
Ces différents protocoles peuvent fonctionner à différents niveaux de la couche OSI :
• au niveau liaison : PPTP, PPTP, L2F et L2TP ;
• au niveau réseau : IPSec ;
Séquence 6
• au niveau application : PPP + SSH.
Sécurité des accès
+ Accès distant
Page 79
Les deux machines pourront alors communiquer comme si elles étaient dans le même
réseau local. On utilise en effet normalement des adresses privées pour identifier les
connexions sécurisées VPN ( 10.0.0.0/8, 172.16.0.0/12 et 192.168.0.0/16).
8 2953 TG PA 00
Séquence 7
Dépannage
Malgré tous vos efforts et vos idées de génie, un ordinateur n'étant qu'un
assemblage de composants électroniques sur lequel on va greffer de nom-
breuses strates logicielles, la grande méchante panne arrivera. C'est mal-
heureusement certain.
u Contenu
1. Les étapes d'un bon dépannage............................................................................... 82
2. Un exemple de logiciel de gestion de parc : GLPI................................................ 83
3. Quelques liens utiles..................................................................................................... 87
Page 81
8 2953 TG PA 00
1. Les étapes d'un bon dépannage
Fort de toutes les nouvelles connaissances que vous avez accumulées à travers les diffé-
rents cours, vous montez un serveur digne de ce nom et vous pensez pouvoir goûter un
repos bien mérité. Eh bien non, dans le monde formidable qui est le nôtre et malgré vos
multiples efforts, le pire arrivera forcément, à savoir la panne ! Qu'elle soit logicielle et/
ou matérielle son unique but sera de ruiner votre journée (ou plus dans le cas des plus
virulentes). Eh bien soit, retroussons-nous les manches et essayons de dépanner notre
serveur.
L'art du dépannage efficace consiste à isoler la défaillance au sein d'un enchevêtrement
complexe de causes possibles. Certains problèmes seront en effet détectés très facile-
ment alors que d'autres vous demanderont des efforts non négligeables. Bien entendu,
tout cela vous demandera de bien connaître le fonctionnement de votre serveur afin
d'être réellement efficace. Le mieux est de procéder par étapes. Il est possible de résumer
la méthodologie du dépannage en 7 étapes que voici :
1. Quel est le problème ?
Essayez de décrire le plus clairement et le plus simplement possible ce qui ne va pas. Ici
on parle de fiche incident ou ticket devant faire apparaître :
• date/ heure du problème ;
• description rapide du problème rencontré ;
• urgence / criticité de la panne ;
• de qui émane le ticket ;
Séquence 7
• qui devra résoudre le problème ;
Dépannage • en combien de temps ;
• état d'avancement de la résolution.
Page 82
2. Quel sont les logiciels et le matériel utilisés ?
Collectez des informations sur le système et ses composants. Ici on va recueillir des infor-
mations sur le processeur, la mémoire, l'OS, le matériel spécifique (configuration RAID,
cartes additionnelles…), les logiciels installés avec leur version, les firmwares.
À cette étape, il faut essayer de rassembler les informations concernant les messages
d'erreurs apparus, disséquer les logs (cf séquence 2 de ce support).
3. Analyse du problème
Essayez de rechercher des pannes similaires sur les sites officiels des fabricants, sur les
forums, les mailings lists, les FAQ (Foire Aux Questions) ou bien encore sur Internet
notamment sur Google. Bien souvent, un simple copier/coller du message d'erreur pro-
duit vous épargnera souvent de nombreuses heures de recherches ! Bref, Internet étant
une source gigantesque d'information, la solution à votre problème aura probablement
été rencontrée par quelqu'un d'autre auparavant, et sera donc documentée.
En fonction des informations récupérées vous pourrez éliminer un grand nombre de
causes possibles et surtout, trouver les causes probables du dysfonctionnement.
4. Préparation du plan d'attaque !
Endossez vos habits de général d'État-major et développez un plan d'attaque digne de
ce nom. Grâce à votre analyse précédente vous pourrez décider des différentes actions
afin de circonscrire le problème. Ici la règle d'or est : " On ne change qu'un seul para-
8 2953 TG PA 00
mètre à la fois ! ". C'est la seule façon de vous y retrouver et de voir les changements
induits par votre action.
5. A l'attaque !
Mise en oeuvre du plan.
6. Résultats du plan : Que s'est-il passé ?
A-t-on réussi à circonscrire le problème ? Si " Oui ", on continue vers l'étape suivante. Si
" Non ", alors retour à l'étape 4. Dans ce dernier cas, on est obligé de préparer un nou-
veau plan d'attaque.
7. Analyse des résultats
Le but est de documenter au maximum la résolution du problème, afin de gagner un
maximum de temps, au cas où le problème se poserait à nouveau.
trés en les recensant (gestion des tickets) tout en ayant un oeil sur l'inventaire du parc.
Page 83
Aujourd'hui, le plus répandu est GLPI. Voici quelques captures d'écran montrant les dif-
férentes possibilités de ce logiciel.
8 2953 TG PA 00
a) Liste des ordinateurs du parc
Séquence 7
Dépannage
Page 84
8 2953 TG PA 00
b) Détails d'un ordinateur
Séquence 7
Dépannage
Page 85
8 2953 TG PA 00
c) Liste des tickets
Séquence 7
Dépannage
Page 86
8 2953 TG PA 00
d) Détail d'un ticket
Séquence 7
Dépannage
Page 87
8 2953 TG PA 00