Aes-256-cbc : Risques et Alternatives
Aes-256-cbc : Risques et Alternatives
4
1. INTRODUCTION
Dans un système Linux chaque utilisateur possède un compte, ce compte a un aspect sécuritaire puisqu'il définit les
permissions et les autorisations dont dispose l'utilisateur sur les fichiers et les dossiers.
Les comptes utilisateurs sont aussi organisés en groupe, un compte utilisateur doit appartenir au moins à un groupe, les
groupes sont utilisés pour faciliter la gestions des utilisateurs.
Les données des comptes et des groupes utilisateurs sont stockés dans des fichiers, il est important de connaître la
structure et le contenu de ces fichiers pour superviser les utilisateurs du système
Il existe plusieurs commandes permettant de manipuler les comptes et les groupes utilisateurs (affichage, création,
modification et suppression)
5
1. LES UTILISATEURS
Année
204
Universi
taire
1. LES COMPTES UTILISATEURS
Dans /etc il existe un ensemble de fichiers textes contenant des informations sur les comptes et les groupes utilisateurs
définies dans le système, par exemple si on veut vérifier si un utilisateur est définie sur le système il faut le chercher dans
le fichier /etc/passwd
Le fichier /etc/passwd fournit un ensemble d'informations sur les comptes utilisateurs définies sur le système.
Alors que le fichier /etc/shadow contient les informations sur le mot de passe des comptes utilisateurs.
7
. LES COMPTES UTILISATEURS: LE FICHIER /ETC/PASSWD
Chaque ligne du fichier /etc/passwd est relative à un utilisateur, la figure suivante montre les 10 lignes du fichier
/etc/passwd
Chaque ligne du fichier /etc/passwd est composée d'un ensemble de champs séparés par deux points
1. LES COMPTES UTILISATEURS: LE FICHIER /ETC/PASSWD
login root C'est le nom utilisé par l'utilisateur pour ouvrir une
session sur le système,ce nom est affiché aussi pour
indiquer l’appartenance d'un fichier à un utilisateur
(avec ls -l)
root est le compte administrateur qui possède des
privilège d'administration sur le système
Le tableau suivant décrit les différents champs du fichier /etc/passwd en prenant comme exemple la première ligne
(root:x:0:0:root:/root:/bin/bash)
1. LES COMPTES UTILISATEURS: LE FICHIER /ETC/PASSWD
Mot de passe x Anciennement les mot de passe était enregistrés dans
/etc/passwd mais pour des raisons de sécurité ils sont
maintenant enregistrés dans /etc/shadow
Le x indique que le mot de passe ne se trouve pas ici mais
dans /etc/shadow
UID (identifiant 0 Chaque compte utilisateur est identifié d'une façon unique
de l'utilisateur) dans le système par un identifiant appelé UID
L'UID est le paramètre qui définit réellement un utilisateur dans
le système
Certain UID sont spécial :0 définit le compte administrateur les
UID inférieurs à 500 (ou à 1000 dans certaine distributions)
identifie les comptes systèmes spéciaux
GID:identifiant 0
du groupe C'est l'identifiant du groupe principal auquel appartient le
primaire compte utilisatur,les groupes sont aussi identifiés par un
identifiant numérique appelé GID
Lorsqu'un utilisateur crée un fichier ce fichier appartient à
l'utilisateur (UID) et aussi à son groupe principal (GID)
1. LES COMPTES UTILISATEURS: LE FICHIER /ETC/PASSWD
commentaire Root Ce champ peut contenir des informations supplémentaire sur l'utilisateur comme son nom
réel ou toute autre information.
Ce champ est appelé aussi le champ GECOS (General Electric Comprehensive Operating
System ) il contient un ensemble de champ séparés par virgule représentant des
informations sur l'utilisateur comme son nom,son numéro de téléphone ou autre informations.
L'administrateur peut changer ces informations contenues dans GECOS avec la commande
chfn et les utilisateurs peuvent afficher ces informations avec la commande finger.
Répertoire /root Ce champ indique l'emplacement de répertoire personnel de l'utilisateur un utilisateur régulier
personnel aura comme répertoire personnel /home/username (avec username le nom de l'utilisateur
ex:/home/bob).
L’utilisateur root possède un emplacement différent pour son répertoire personnel:/root.
Les comptes systèmes n'ont pas souvent de répertoires personnels car ils n'ont pas besoin
de stocker des données ou des fichiers.
Shell /bin/bash Définit le shell qui sera utilisé par l'utilisateur lors de l'ouverture d'une session en ligne de
commande ou lorsqu'il ouvre un terminal.
L'utilisateur peut changer de shell en tapant le nom du shell qu'il souhaite utiliser par
exemple:/bin/tcsh
1. LES COMPTES UTILISATEURS: LE FICHIER /ETC/SHADOW
Le fichier /etc/shadow contient les informations relatives aux mots de passes des comptes utilisateurs
Sysadmin:$6$….I1:15020:5:30:7:60:15050:
Le tableau suivant décrit ces différents champs en prenant comme exemple la première ligne:
Mot de passe $6$….I1 C'est le mot de passe crypté du compte,Le cryptage est
irréversible c’est à dire on ne peut pas trouver le mot de
passe à partir de la valeur crypté
Les comptes systèmes on comme valeur dans ce champ *
(les comptes systèmes seront discutés par la suite dans ce
chapitre)
1. LES COMPTES UTILISATEURS: LE FICHIER /ETC/SHADOW
Dernier 15020 Ce champ indique le nombre de jours écoulé depuis le dernier changement du mot de passe.
changement 15020 est le nombre de jours depuis 1 janvier 1970 jusqu'au jours ou le mot de passe a été changé.
Lorsque l'utilisateur change son mot de passe cette valeur est générée automatiquement.
avertissement 7 Ce champ indique le nombre de jours avant l'expiration du mot de passe provoquant l'avertissement
de l'utilisateur qu'il doit changer son mot de passe.
Par exemple si ce champ vaut 7 et max vaut 30 alors durant les 7 jours qui précédent le délai max
l'utilisateur va etre avertit à l'ouverture de session qu'il doit chnager son mot de passe
1. LES COMPTES UTILISATEURS: LE FICHIER /ETC/SHADOW
inactif 60 C'est un délai supplémentaire après le dépassement de nombre de jours mentionné dans le
champ max durant lequel l'utilisateur peut changer son mot de passe avant que son compte ne
soit bloqué.
Avec une valeur de 60 l'utilisateur a 60 jours de délai pour changer son mot de passe avant que
son compte ne soit bloqué
expire 15050 C'est le nombre de jour depuis le 1 janvier 1970 jusqu'au jour ou le compte sera désactivé.
Un compte déactivé ne sera supprimé l'administrateur peut le réactiver.
Les comptes avec une date d'expiration sont fournies à des employeurs temporaires
Les utilisateurs ne peuvent pas voir le contenu de /etc/shadow pour des raisons de Sécurité pour cela il faut
ouvrir une session en tant qu’administrateur
1. LES COMPTES UTILISATEURS: AFFICHER LES INFORMATIONS D'UN COMPTE UTILISATEUR
Pour visualiser les informations concernant un compte utilisateur à partir du fichier /etc/passwd ou /etc/shadow on peut
utiliser la commande grep et afficher uniquement la ligne relative à l'utilisateur cherché
Exemple : si on veut afficher les informations sur l'utilisateur sysadmin on écrit grep 'sysadmin' /etc/passwd
getent est une autre commande qui permet d’afficher les informations d'un compte utilisateur à partir des fichiers
/etc/passwd ou /etc/shadow, l'avantage de getent est qu'elle peut afficher les comptes utilisateurs locaux ou ceux définit sur
un serveur réseau
Si on utilise plusieurs comptes pour ouvrir une session, on peut vérifier le compte utilisé actuellement
pour l'ouverture de session en utilisant la commande id
La commande id sans argument affiche:le nom du compte, son ID et aussi les groupes auquel appartient
le compte courant.
Si on passe un nom d'utilisateur comme argument à la commande id celle-ci va afficher les informations
sur ce compte utilisateur.
1. LES COMPTES UTILISATEURS: LES COMPTES SYSTÈME
En plus des comptes utilisateurs réguliers on trouve un ensemble de comptes système permettant de définir
des comptes pour les services s’exécutant sur le système
Les comptes système ont un UID entre 1 et 499,alors que les comptes normaux ont un UID supérieur à
500(ou à 1000 dans certain système)
Les informations sur les comptes systèmes sont aussi stockées dans les fichiers /etc/passwd et
/etc/shadow mais certain champ relatifs aux comptes systèmes diffèrent de ceux des comptes utilisateurs
normaux
Par exemple :
• les comptes système ont la valeur /sbin/nologin dans le champ Shell du fichier /etc/passwd
• bin:x:1:1:bin:/bin:/sbin:/sbin/nologin
• Les comptes systèmes ont la valeur * dans le champ mot de passe du fichier /etc/shadow
• bin:*:15513:0:99999:7:::
2. LES GROUPS
Les privilèges d'accès au système n'est pas définit uniquement par le compte utilisateur mais aussi par
l'appartenance à un groupe.
Chaque utilisateur doit appartenir au moins à un groupe
Le fichier /etc/passwd indique le groupe principal auquel appartient un compte utilisateur pour voir les
autres groupes secondaires il faut consulter le fichier /etc/group
Le fichier /etc/group contient la liste de tous les groupes définies sur le système
Pour afficher les informations relatives à un groupe particulier on utilise la commande grep ou
getent
• [sysadmin@localhost ~]$ grep mail /etc/group
• mail:x:12:mail,postfix
• [sysadmin@localhost ~]$ getent group mail
• mail:x:12:mail,postfix 28/03/2025
2. LES GROUPES: LE FICHIER /ETC/GROUP
Le fichier /etc/group contient 4 champs qui sont délimité par deux points décrivant
les groupe du système
Le fichier /etc/group a la structure suivante:
Exemple :
mail:x:12:mail,postfix
On peut changer le groupe propriétaire pour une arborescence de fichiers et de répertoires en utilisant
l'option -R de chgrp
Il existe aussi la commande chown qui permet de changer l'utilisateur propriétaire d'un fichier, mais cette
commande peut-être utilisée uniquement par le root
Parfois on a besoin d'un certain privilège pour exécuter des commandes ou pour modifier des fichiers, il
faut alors ouvrir une session en tant qu'administrateur ou root.
L'Ouverture de session directement en tant que root reste dangereux car ça peut causer des problèmes et
des dysfonctionnement pour le système en exécutant certaine commandes dont on ne sait pas le résultat.
C'est pour cette raison que le compte root est désactivé sur certaine distribution comme Ubuntu
La solution est d’exécuter uniquement des commandes en tant que root lorsque les privilèges
d'administrateur sont demandés.
Si le compte root est désactivé(comme pour Ubuntu) on utilise la commande sudo pour exécuter des
commandes en tant que root
Si le compte root est activé on utilise la commande su pour basculer un compte régulier vers le compte
root et exécuter des commandes demandant les privilèges root.
28/03/2025
3. L'UTILISATION DE LA COMMANDE SU
La commande su permet d’exécuter le Shell en tant qu'un autre utilisateur, par défaut si le compte
utilisateur n'est pas spécifié alors su permet d’exécuter le Shell en tant que root.
L'option -l de su ou – permet d'ouvrir le Shell comme si l'utilisateur est directement connecté en tant que
root
Les commandes suivantes sont équivalentes et permettent exécuter le Shell en tant que root
su -l root
su -
su –l
Le mot de passe root vous sera demandé une fois l'une de ces commandes entrées
Pour revenir à votre shell par défaut(compte utilisateur original) il faut utiliser la commande exit.
3. L'UTILISATION DE LA COMMANDE SUDO (SUBSTITUTE USER DO)
Exemple:pour afficher le fichier /etc/shadow il faut avoir les privilège du root on doit alors faire appel à
la commande sudo pour afficher ce fichier en tant qu'administrateur
La commande w offre plus de détaille sur les utilisateurs connecté au système par rapport à la commande
who
[sysadmin@localhost ~]$ w
10:44:03 up 50 min, 4 users, load average: 0.78, 0.44, 0.19
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
root tty2 - 10:00 43:44 0.01s 0.01s -bash
sysadmin tty1 :0 09:58 50:02 5.68s 0.16s pam: gdm-password
sysadmin pts/0 :0.0 09:59 0.00s 0.14s 0.13s ssh [Link]
sysadmin pts/1 [Link] 10:00 0.00s 0.03s 0.01s w
La première ligne du résultat de la commande w donne le temps écoulé depuis le démarrage du système ,le
nombre d'utilisateurs connecté et la charge moyenne (charge CPU).
28/03/2025
3. L'UTILISATION DE LA COMMANDE W
Nous avons vu que les données des comptes utilisateurs sont stockées dans le fichier /etc/passwd et les mots de passe
dans /etc/shadow, créer un nouveau utilisateur revient à ajouter une nouvelle ligne à ces deux fichiers, mais cette
technique n'est pas recommandée car on risque de commettre une erreur et empêcher par conséquence tous les
utilisateurs d’accéder au système.
En utilisant les commandes appropriées pour ajouter un nouveau utilisateur ces fichiers vont être modifie d'une façon
automatique et sure.
Dans certaine distribution lorsqu'on crée un nouveau utilisateur un groupe nommé groupe privé d'utilisateur (User
Private Group UPG) est créé automatiquement ce groupe aura le même nom que celui du nouveau utilisateur et aura un
seul membre qui est le nouveau utilisateur.
Pour les distributions qui ne créent pas d'UPG les nouveaux utilisateurs auront comme groupe principal le groupe
« users »,l’administrateur peut alors créer des groupes qui seront privé pour le nouveau utilisateur, mais le plus souvent
on a besoin de créer des groupes contenant plusieurs utilisateurs qui ont besoin de collaborer.
Les comptes utilisateurs peuvent être modifier à tout moment (les ajouter ou les retirer d'un groupe) mais un compte
utilisateur doit appartenir au moins un groupe (le groupe principal)
Avant de créer de nouveaux utilisateurs il faut tout d'abord planifier quel utilisateur doit appartenir à quel groupe, il est
recommandé de créer les groupes en premier puis les utilisateurs car c'est plus simple côté gestion.
. CRÉATION D'UN GROUPE
La raison principale pour créer des groupes est de permettre aux utilisateurs de partager des fichiers, par
exemple ça peut être le cas de personnes qui travaillent ensemble sur un projet et qui ont besoin de partager
les documents relatifs à ce projet
Après la création ou la modification d'un groupe on peut vérifier sa configuration en consultant le fichier
/etc/group
research:x:506:
. CRÉATION D'UN GROUPE
❑ Si l'option -g n'est pas utilisée la commande groupadd fournit automatiquement un GID dont la valeur sera
supérieur au plus grand GID courant se trouvant dans /etc/group.
On vient de voir que dans certain système un groupe UPG est créé automatiquement lors de la création
d'un nouveau utilisateur, groupe aura un GID supérieur à 500.
Pour éviter les conflits entre les groupes créer manuellement et les groupes UPG on peut attribuer un
GID inférieur à 500 aux groupes qu'on va créer manuellement en utilisant l'option -r de :
groupadd
Il faut noter que les GID inférieurs à 500 sont réservé pour les comptes systèmes
[root@localhost ~]# groupadd -r sales
[root@localhost ~]# getent group sales
sales:x:491:
. CRÉATION D'UN GROUPE: CONSIDÉRATIONS POUR LES NOMS DE GROUPES
Pour nommer un groupe il faut respecter les points suivant pour que le groupe puissent
fonctionner correctement avec les autres systèmes ou services
– Le premier caractère doit être une lettre minuscule(a-z) ou le caractère sous-ligné(_)
– Le nom ne doit pas dépasser 32 caractères ou 16 pour certain systèmes)
– Après le premiers caractères les autres caractères peuvent être alphanumérique, sous-ligné(_) ou
tiret(-)
– Le dernier caractère ne doit pas être un tiret (-)
. MODIFICATION D'UN GROUPE
La commande groupmod peut être utilisée pour modifier le nom d'un groupe (option -n) ou son GID
(option -g).
Le changement du nom d'un groupe n'affecte en rien appartenance des fichiers au groupes car le système
utilise le GID pour définir l'accès aux fichiers.
[root@localhost ~]# ls -l [Link]
-rw-r-----. 1 root sales 0 Aug 1 13:21 [Link]
[root@localhost ~]# groupmod -n clerks sales
[root@localhost ~]# ls -l [Link]
-rw-r-----. 1 root clerks 0 Aug 1 13:21 [Link]
. MODIFICATION D'UN GROUPE
❑ D'autre part si on modifie le GID du groupe tous les fichiers associé au groupe ne le seront plus et ne seront
associé à aucun nom du groupe, ils seront associé à un GID uniquement
❑ Ces fichiers qui ne sont pas associé à un nom de groupe sont appelé fichier « orphelin »
[root@localhost ~]# groupmod -g 10003 clerks
[root@localhost ~]# ls -l [Link]
-rw-r-----. 1 root 491 13370 Aug 1 13:21 [Link]
On peut chercher ces fichiers avec find en utilisant l'option -nogroup
[root@localhost ~]# find / -nogroup
/root/[Link]
. SUPPRESSION D'UN GROUPE
● Avant de créer un nouveau utilisateur avec la commande useradd on peut définir ou modifier certaine
valeur qui vont être appliquées par défaut par la commande useradd au nouveau utilisateur
● Ceci peut être fait on modifiant le fichier de configuration /etc/default/useradd ou en utilisant l'option -D
de la commande useradd.
● Vérifier si ces valeurs sont « raisonnables » avant de créer l'utilisateur vont permettre de garantir que le
compte utilisateur qu'on va créer sera configuré correctement.
EXPIRE Cette valeur indique la date d'expiration du compte,par défaut cette valeur n'est pas
définie
Pour définir une date d'expiration on utilise l'option -e de [Link] paramètre
affecte le champ suivant de /etc/shadow :
bob:pw:15020:5:30:7:60:15050:
SHELL /bin/bash Ce paramètre définit le shell par défaut que le nouveau utilisateur va utiliser
Pour changer le shell par défaut on utilise l'option -s de [Link] paramètre
affecte le champ suivant dans /etc/passwd :bob:x:600:600:bob:/home/bob:/bin/bash
SKEL /etc/skel Définit le répertoire « squelette » dont le contenu sera copié dans le répertoire
personnel du nouveau utilisateur,cela permet de définir des fichiers de configuration
intiale pour le compte nouvellement créé.Pour changer la valeur par défaut de ce
paramètre on utilise l'option -k de useradd
CREATE_MAI yes « spool » est un fichier où les e-mail reçu par l'utilisateur vont être stockés
L_SPOOL Pour ne pas créer ce fichier on place dans ce paramètre la valeur « no »
8. CRÉATION D'UN UTILISATEUR:LE FICHIER /ETC/DEFAULT/USERADD
Pour modifier les paramètres par défaut de la commande useradd on édite directement le fichier
/etc/default/useradd ou bien une façon plus sur est d'utiliser la commande useradd -D.
Exemple :on veut modifier le paramètre INACTIVE pour que les utilisateurs puissent utiliser leur
compte expiré durant 30 jours supplémentaires.
Le fichier /etc/[Link] contient aussi des valeurs par défaut qui vont être appliquées aux nouveaux
utilisateurs qui vont être créer avec useradd.
Ce fichier peut être éditer avec n'importe quel éditeur de texte pour modifier les valeurs par défaut qu'il
contient.
[root@localhost ~]# grep -Ev '^#|^$' /etc/[Link]
MAIL_DIR /var/spool/mail
PASS_MAX_DAYS 99999
PASS_MIN_DAYS 0
PASS_MIN_LEN 5
PASS_WARN_AGE 7
UID_MIN 500
UID_MAX 60000
GID_MIN 500
GID_MAX 60000
CREATE_HOME yes
UMASK 077
USERGROUPS_ENAB yes
ENCRYPT_METHOD SHA512
MD5_CRYPT_ENAB no 28/03/2025
9. CRÉATION D'UN UTILISATEUR:LE FICHIER /ETC/[Link]
UID_MIN:ce champ indique UID minimal qu'on peut attribuer à un utilisateur régulier
ENCRYPT_METHOD:définit la méthode de cryptage du mot de passe dans /etc/shadow ce paramètre remplace le dernier
paramètre MD5_CRYPT_ENAB
9. CRÉATION D'UN GROUPE
les groupes sont utilisés pour contrôler les accès au sein du système.
il est géré par un administrateur spécifique au groupe (ou par défaut le super-utilisateur).
[Link]
208
Chapitre 3 :Gestion des
Module : Système d’exploitation 1
utilisateurs
Les droits d ’ accés
Propriétaire
✓ autorisation d’écriture (w)
210
Autres utilisateurs
Chapitre 3 :Gestion des
Module : Système d ’ exploitation 1
utilisateurs
Les Droits d’accès des fichiers et des répertoires
Année
211
Universi
taire
Chapitre 3 :Gestion des
Module : Système d ’ exploitation 1
utilisateurs
Afficher les droits d’accès d’un fichier ou d’un répertoire
Année
212
Universi
taire
Chapitre 3 :Gestion des
Module : Système d’exploitation 1
utilisateurs
Droits d’ accés
Année
213
Universi
taire
Chapitre 3 :Gestion des
Module : Système d’exploitation 1
utilisateurs
Droit d ’ accés à un répertoire
R lirelecontenudufichier affichercontenudurépertoire
W modifierlecontenudu ajouteretsupprimerfichier
fichier
X lancerunfichierexécutable rendrelerépertoirecourant
Année
214
Universi
taire
Chapitre 3 :Gestion des
Module : Système d’exploitation 1
utilisateurs
D’une façon générale
La commande ls -l en console permet d'afficher les détails d'un répertoire ou
d'un fichier. On y découvre alors une somme importante d'information.
38
Chapitre 3 :Gestion des
Module : Système d’exploitation 1
utilisateurs
Modification des droits d’ accés aux fichiers
Propriétaire
Exemple:
On veut modifier la protection du fichier toto de la manière suivante :
rx rw rwx
1. autorisant un accès lecture et exécution au propriétaire,
2. lecture et écriture au groupe
3. un accès sans restriction aux autres (cas très rare).
Le deuxième mode:
le mode symbolique, permet une description absolue ou relative
des droits d’accès, comme suit :
chmod [qui]op[permission] fich/rep
combinaison de lettre
u (user), g (groupe), o permission :
(other=autre) ou a r (read=lecture),
(all=tous) pour ugo w (write=écriture),
x (exécution).
$ chmod u -w file
Supprime le droit d’écriture au propriétaire.
Exemple:
Syntaxe : umask x
Où x est un nombre exprimé sous forme octale qui déterminera les
permissions
Chapitre 3 :Gestion des
Module : Système d’exploitation 1
utilisateurs
Pour un répertoire :
Année
227
Universi
taire
Chapitre 3 :Gestion des
Module : Système d’exploitation 1
utilisateurs
$ adduser login_utilisateur
Notons :
▪ la création du répertoire personnel dans
/home/login_utilisateur
Exemples :
1. useradd -m user
2. useradd -c "login de test" -d /home/logtest -s /bin/bash -g users -u 123
Chapitre 3 :Gestion des
Module : Système d ’ exploitation 1
utilisateurs
Administration des utilisateurs
234
[-e date_expiration] [-f inactivité]
[-g groupe_initial] [-G groupe[,...]]
[-l nom_connexion] [-p mot_de_passe]
[-s shell] [-u uid [ -o]] [-L|-U] login
Remarque :
usermod ne permet pas de modifier le nom d'un utilisateur qui est actuellement connecté. (
s’assurer avant d’exécuter cette commande que l'utilisateur nommé n'est pas en train
d'exécuter un quelconque programme ).
il faut modifier le nom du propriétaire de tous les fichiers crontab ainsi le nom du propriétaire
de n'importe quel travail at manuellement
userdel [ - r] login_utilisateur
235
Chapitre 3 :Gestion des
Module : Système d’exploitation 1
utilisateurs
Administration des utilisateurs
$ passwd login_utilisateur
À noter :
▪ l’option -d pour supprimer le mot de passe
▪ l’option – l pour le verrouiller
▪ l’option -u pour le déverrouiller
236
Chapitre 3 :Gestion des
Module : Système d’exploitation 1
utilisateurs
237
-f : Force le changement de mot de passe à la prochaine connexion
-d : Désactiver un mot de passe en supprimant la saisie du mot de
passe pour un compte donné. Disponible uniquement pour root.
-k : Indique que la mise à jour ne devrait être effectuée que pour
les mots de passe expirés; un utilisateur conserve son mot de
passe non expirés.
-l : Verrouille le compte spécifié, elle n'est disponible que pour root.
Le verrouillage est effectué en rendant le mot de passe crypté
invalide (en le préfixant par un !).
-u : L'inverse de l'option précédente - il déverrouillera le mot de
passe du compte. disponible uniquement pour root.
Chapitre 3 :Gestion des
Module : Système d’exploitation 1
utilisateurs
Administration des
Changement régulié du mot de passe
Cette fonctionnalité vous permet de gérer le nombre maximum de
jours pendant lesquels un utilisateur peut utiliser le même mot de
passe.
238
La commande passwd a quatre options pour gérer les expirations :
-n min : (rarement utilisée) est appliquée pour définir le nombre
minimum de jours requis pour qu’un utilisateur change son mot de
passe.
-x max : Définit le nombre maximal de jours pendant lesquels
l'utilisateur peut utiliser son mot de passe sans le changer.
-c garde : pour envoyer un avertissement à l'utilisateur lorsque son
mot de passe est sur le point d’expirer. L'argument de cette option
spécifie combien de jours l'utilisateur sera avant que son mot de
passe expire.
– i inact : Cette option permet la gestion de l’expiration du mot de
Chapitre 3 :Gestion des
Module : Système d’exploitation 1
utilisateurs
Administration des groupes
Gestion des groupes
▪ Pour créer un nouveau groupe :
$ addgroup nom_du_groupe
239
• Objectifs : Gérer les services système avec systemd, créer des
services personnalisés.
• Contenu :
• Gestion des services : systemctl start, stop, restart, enable, disable
• Création de services : fichiers de configuration .service
• Activités :
• Gestion de services existants.
• Création d'un service personnalisé.
77
1. PROCESSUS DE DÉMARAGE
78
2. LE BIOS ET L’UEFI
79
2. LE BIOS ET L’UEFI
80
2. LE BIOS ET L’UEFI
81
3. LE GRUB GRAND UNIFIED BOOTLOADER
82
3 . LE GRUB GRAND UNIFIED BOOTLOADER
83
3.1. LE GRUB GRAND UNIFIED BOOTLOADER
84
3.2. INITRAMFS
85
. INITRAMFS
86
.3. MODIFIER DES PARAMÈTRES DE DÉMARRAGE
87
4. SYSTEMD
88
. SYSTEMD
89
4. SYSTEMD
90
4. SYSTEMD
91
4. SYSTEMD
92
4.1. LES UNITS SYSTEMD
93
4.1. LES UNITS SYSTEMD
94
4.2. GESTION DES SERVICES
95
4.2. GESTION DES SERVICES
96
4.2. GESTION DES SERVICES
97
4.3. GESTION DES CIBLES (TARGET)
98
4.3. GESTION DES CIBLES (TARGET)
99
4.4. LES FICHIERS DE CONFIGURATION SYSTEMD
100
4.5. CREER UN SERVICE SYSTEMD
101
4.5. EXERCICE
102
4.5. CREER UN SERVICE SYSTEMD
103
4.5. CREER UN SERVICE SYSTEMD
❑ Saisir le texte ci-dessus dans le fichier my-script avec l’éditeur vi ou bien l’éditeur
nano
104
4.5. CREER UN SERVICE SYSTEMD
105
4.5. CREER UN SERVICE SYSTEMD
106
4.5. CREER UN SERVICE SYSTEMD
107
4.5. CREER UN SERVICE SYSTEMD
108
4.5. CREER UN SERVICE SYSTEMD
109
4.5. CREER UN SERVICE SYSTEMD
110
4.5. CREER UN SERVICE SYSTEMD
111
4.5. CREER UN SERVICE SYSTEMD
112
4.5. CREER UN SERVICE SYSTEMD
113
• Objectifs : Automatiser les tâches répétitives avec cron.
• Contenu :
• Syntaxe de cron : crontab -e, format des tâches
• Planification de scripts : tâches de maintenance, sauvegardes
• Activités :
• Création de tâches cron pour divers scénarios.
• Évaluation : Exercice pratique sur la planification de tâches.
114
1. INTRODUCTION
Une tâche cron est une tâche exécutée automatiquement dans un système
d’exploitation. Afin d’exécuter ces tâches, le système fournit régulièrement des
commandes. Il peut parfaitement s’agir d’une simple tâche, mais, en règle générale,
on utilise plusieurs tâches complexes, donc plusieurs cron jobs. Ces tâches ont le
grand avantage de permettre un degré de personnalisation élevé.
Chaque tâche cron est composée de trois éléments :
• Un script à exécuter ;
• Une commande qui exécute régulièrement le script ;
• Une action ou le log du script.
116
2. QU’EST-CE QU’UN CRON JOB ?
Un exemple concret d’utilisation de cette fonction ? Les tâches régulières d’un serveur. Ainsi,
on peut, entre autres, lancer automatiquement l’envoi d’une newsletter, la collecte de
statistiques ou le nettoyage de banques de données avec des tâches cron.
Tous les systèmes d’exploitation disposant d’un système cron, et donc d’un daemon cron,
peuvent exécuter des cron jobs. C’est le cas de tous les systèmes Unix et BSD (Berkeley
Software Distribution) comme macOS ou Linux.
Les systèmes d’exploitation peuvent exécuter des tâches selon la planification définie au
préalable, exactement comme le prévoit leur dénomination « Command run on notice »
(commande exécutée à date). Les tâches de routine peuvent ainsi se lancer de manière
parfaitement automatisée. Outre la condition d’utiliser un système d’exploitation avec un
daemon cron, il faut respecter d’autres prérequis pour pouvoir mettre en place des cron jobs :
• Un serveur dédié ;
• Un Secure Shell (SSH) ou, pour l’accès, un client Telnet ;
• Un client FTP pour transférer des fichiers et télécharger les fichiers cron.
117
3. QUELLES TÂCHES PEUT-ON EXÉCUTER AVEC DES CRON JOBS ?
Les tâches planifiées sont le plus souvent utilisées pour sauvegarder des données, et
de loin. Par exemple, si vous souhaitez mettre en place une sauvegarde avec tar pour
archiver vos données, les tâches cron seront parfaitement adaptées. Généralement, on
les utilise aussi pour nettoyer des bases de données et exploiter les statistiques de
visite des sites Web.
Les tâches cron peuvent être associées à un système de gestion de contenus pour
envoyer automatiquement une newsletter ou surveiller les stocks des boutiques en
ligne. Ces tâches permettent de contrôler le remplissage des serveurs et peuvent
adapter automatiquement de nouvelles informations dans la description des
produits, comme la moyenne des évaluations client.
118
3. QUELLES TÂCHES PEUT-ON EXÉCUTER AVEC DES CRON JOBS ?
Les possibilités de personnalisation sont le grand avantage des cron jobs. Pour adapter
une tâche planifiée cron, l’utilisateur dispose d’une base de trois variables qui
doivent être systématiquement renseignées :
1. PATH : affiche le chemin d’accès à la commande ou au script ;
2. SHELL : indique l’interpréteur de commandes à utiliser pour exécuter le script ;
3. MAILTO : renseigne l’utilisateur à qui il faut envoyer les résultats de la tâche cron ; en règle générale,
l’abonné.
Avec ces trois variables fixes, auxquelles peuvent venir s’ajouter d’autres, les
utilisateurs peuvent définir eux-mêmes leurs propres cron jobs. Généralement, on
utilise des scripts SHELL, PHP et PERP pour ces commandes.
120
5. COMMENT FONCTIONNE UN CRON JOB ?
Pour qu’une tâche cron puisse exécuter ce qu’on attend d’elle, il faut tout d’abord fournir une
commande. Ensuite, le daemon cron s’exécute en arrière-plan et effectue des tâches non
interactives. Sous Windows, c’est ce qu’on appelle en général un « service ».
Les tâches cron sont, par principe, au repos, et attendent de recevoir une commande : ou
bien directement du système d’exploitation, ou bien d’un autre ordinateur en réseau. La
commande est transmise par le biais d’un fichier cron (un simple fichier texte), qui planifie la
tâche pour un instant donné.
Les tâches cron sont définies et configurées dans un tableau appelé crontab. Ce tableau liste
les temps à respecter et la suite de commandes à exécuter.
Le fichier système standard Crontab « crontab » est placé dans le répertoire /etc/cron.*/.
121
6. EXEMPLES DE CRON JOBS SIMPLES
Avec le logiciel crontab, on peut éditer des crontabs. Voici la commande correspondante :
[root@localhost ~]# crontab -e
Gérer les tâches cron d'un autre utilisateur (nécessite des privilèges).
[root@localhost ~]# crontab -u <user>
122
6. EXEMPLES DE CRON JOBS SIMPLES
La syntaxe est relativement claire. Ainsi, chaque cron job respecte le format suivant :
* * * * * Commande à exécuter
- - - - -
| | | | |
| | | | +----- Jour de la semaine (0 - 7) (Dimanche correspond à 0 et 7)
| | | +------- Mois (1 - 12)
| | +--------- Jour (1 - 31)
| +----------- Heure (0 - 23)
+------------- Minute (0 - 59)
Structure d'une ligne de crontab : minute, heure, jour du mois, mois, jour de la semaine, Caractères spéciaux :
commande.
• * : Tous les valeurs possibles.
0 5 * * * /path/to/command : Exécuter une commande tous les jours à 5h00.
• , : Séparation des valeurs.
*/15 * * * * /path/to/command : Exécuter une commande toutes les 15 minutes.
• - : Intervalle de valeurs.
0 0 1 * * /path/to/command : Exécuter une commande le premier jour de chaque mois à minuit.
/ : Incrément des valeurs • / : Incrément des valeurs.
123
6. EXEMPLES DE CRON JOBS SIMPLES
Exemple 1 : cron job pour exécuter une sauvegarde : Pour exécuter une sauvegarde tous
les matins à 6 heures, rédigez la commande suivante : [root@localhost ~]# 0 6 * * * /usr/bin/[Link]
Exemple 2 : jouer un son toutes les 30 minutes : On peut aussi utiliser les tâches cron
pour jouer un son à intervalles réguliers : [root@localhost ~]# */30 * * * * /usr/bin/play_sound.sh
Exemple 3 : email de rappel : Le cron job suivant envoie un email de rappel à 8 heures et
18 heures :
[root@localhost ~]# 0 8,18 * * * /usr/bin/send_reminder_mail.sh
Exemple 4 : Merci, Admin On peut aussi utiliser une tâche cron pour ne jamais oublier le
jour de présence de l’administrateur système :
[root@localhost ~]# 0 0 30 07 * (echo "Merci à tous les admins système" | mail -s "Un admin ne dort pas, il root." user@[Link])
124
6. EXEMPLES DE CRON JOBS SIMPLES
Exemple 1 : cron job pour exécuter une sauvegarde : Pour exécuter une sauvegarde tous
les matins à 6 heures, rédigez la commande suivante : [root@localhost ~]# 0 6 * * * /usr/bin/[Link]
Exemple 2 : jouer un son toutes les 30 minutes : On peut aussi utiliser les tâches cron
pour jouer un son à intervalles réguliers : [root@localhost ~]# */30 * * * * /usr/bin/play_sound.sh
Exemple 3 : email de rappel : Le cron job suivant envoie un email de rappel à 8 heures et
18 heures :
[root@localhost ~]# 0 8,18 * * * /usr/bin/send_reminder_mail.sh
Exemple 4 : Merci, Admin On peut aussi utiliser une tâche cron pour ne jamais oublier le
jour de présence de l’administrateur système :
[root@localhost ~]# 0 0 30 07 * (echo "Merci à tous les admins système" | mail -s "Un admin ne dort pas, il root." user@[Link])
125
CONFIGURATION RÉSEAU AVANCÉE
126
CONFIGURATION RÉSEAU AVANCÉE
Introduction
Statique
Dynamique
CONFIGURATION RÉSEAU AVANCÉE
YAML (YAML Ain't Markup Language) est un format de sérialisation de données lisible par
l'homme.
Utilisé pour écrire des configurations de manière claire et structurée.
Couramment utilisé dans les outils de gestion de la configuration et d'automatisation (comme
Netplan, Ansible, Docker Compose).
Avantages de YAML :
Indentation : Utilise des espaces pour indenter les niveaux de hiérarchie (pas de tabulations).
Clés et valeurs : Utilisation de paires clé-valeur.
Listes : Définies par des tirets (-).
130
CONFIGURATION RÉSEAU AVANCÉE
UFW, abréviation de Uncomplicated Firewall , a été créé en 2006 par Canonical Ltd. Il a
été développé pour faciliter la configuration des pare-feu sur les systèmes Linux en
simplifiant la sécurisation des systèmes en offrant une interface convaincante pour
contrôler le trafic réseau.
Ce pare-feu vise à :
UFW joue un rôle important dans la sécurisation des systèmes Linux en offrant une
solution simple adaptable et efficace pour la gestion des pare-feu.
CONFIGURATION RÉSEAU AVANCÉE
Définition des règles: L’utilisateur spécifie les règles de pare-feu à l’aide de la syntaxe de UFW. Ces règles
déterminent quels types de trafics sont autorisés ou bloqués, ainsi que les conditions spécifiques telles que les
adresses, les ports et les protocoles .
Activation de UFW: une fois que les règles dont définies, l’utilisateur active UFW pour qu’il commence à
appliquer ces règles.
Traitement du trafic : UFW analyse le trafic réseau entrant et sortant à partir des règles définies. IL autorise et
bloque les paquets en fonction de ces règles
Journalisation des événements: UFW enregistre des informations détaillées surle trafics réseau et les décisions
prises par le pare-feu.
UFW fonctionne en appliquant les règles de pare-feu définies par l’utilisateur pour contrôler le trafic réseau et
renforcer la sécurité du système Linux
CONFIGURATION RÉSEAU AVANCÉE
UFW offre des commandes simples pour définir les règles, autoriser ou bloquer de sports, des protocoles, et des
adresses IP spé[Link] que les commandes peuvent varier légèrement en fonction de la distribution spécifique
que vous utilisez.
UFW est préinstallé sur la plupart des distributions Linux. Avant de procéder a l’installation il est important de
vérifier si ufw est déjà présent sur votre système en utilisant la commande : Sudo ufw statuts
Cependant, s’il n’est pas installé sur votre système, vous pouvez l’installer
à l’aide de la commande suivante : Sudo apt-get install ufw
Si vous commencez tout juste à utiliser votre pare-feu, les premières règles à définir sont vos politiques par
défaut cela signifie que ces politiques sont appliquées automatiquement.
Ces règles contrôlent la manière de traiter le trafic qui ne correspond pas explicitement à d’autres règles. Par
défaut, Ufw est configuré pour refuser toutes les connexions entrantes et autoriser toutes les connexions
sortantes.
Sudo ufw default allow outgoing : Commande définit la politique par défaut pour le trafic sortant
Sudo ufw default deny incoming : Commande définit la politique pardéfaut pour le trafic entrant
CONFIGURATION RÉSEAU AVANCÉE
II. Les outils de l'administrateur
Pour créer et ajouter une règle d’interdiction ou rejet :
réseau
C’est le même principe que précédemment, simplement, on utilise la commande ufw deny
Par exemple pour interdire les connexions entrantes vers le port SSh, en spécifiant le protocole TCP
I. Configuration statique
A- Outil ifconfig
A- Outil ifconfig
Exemples:
A- Outil IFCONFIG
I. Configuration statique
A- Outil IFCONFIG
# ifconfig
I. Configuration statique
A- Outil ip
Exemples:
I. Configuration statique
A- Outil ip
La commande arp
La commande arp
La commande netstat
La commande netstat
Sans argument, donne l'état des connexions,
-a afficher toutes les informations sur l'état des connexions,
-i affichage des statistiques,
-c rafraîchissement périodique de l'état du réseau,
-n affichage des informations en mode numérique sur l'état des connexions,
-r affichage des tables de routage,
-t informations sur les sockets TCP
-u informations sur les sockets UDP.
CONFIGURATION RÉSEAU AVANCÉE
La commande netstat
Affichage et état des tables de routage avec netstat : netstat -nr ou netstat -r
Kernel IP routing table
Destination Gateway Genmask Flags MSS Window irtt Iface
[Link] * [Link] U 1500 0 0 eth0
[Link] * [Link] U 3584 0 0 lo
CONFIGURATION RÉSEAU AVANCÉE
II. Les outils de l'administrateur réseau
La commande netstat
La commande traceroute
La commande traceroute
La commande dig
La commande route
La commande route définit le chemin emprunté par les paquets entre son point
de départ et son point d'arrivée.
• Activités :
• Installation et configuration d'Apache.
• Configuration pour différents environnements.
159
Le devops — ou DevOps — est un mouvement en ingénierie informatique et une pratique
technique visant à l'unification du développement logiciel et de l'administration des
infrastructures informatiques, notamment l'administration système.
DevOps repose sur une culture de la collaboration entre développeurs et équipes
opérationnelles, qui partagent les responsabilités et combinent le travail. Il améliore l'efficacité
des équipes et permet d'accélérer les transferts de tâches et la création de code conçu pour un
environnement d'exécution spécifique.
160
01 – Présentation de Serveur HTTP Apache
Introduction
protocole.
• Les principaux serveur web dans le marché sont:
Nginx
✓ Apache 41%
✓ Nginx
✓ IIS
✓ ListeSpeed Apache Nginx IIS ListeSpeed Google Servers
✓ Google servers
01 – Présentation de Serveur HTTP Apache
Apache
• Les développeurs qui ont créé HTTP ont décidé d'utiliser un protocole
client/serveur basé sur du texte pour fournir un moyen simple de
transférer des données entre le serveur et les clients.
• Étant donné que HTTP est basé sur du texte, toutes les commandes sont
envoyées par le client sous forme de texte et toutes les réponses du
serveur sont renvoyées sous forme de texte.
• La figure montre une session de base entre un navigateur client et un
serveur Web pour récupérer un fichier de page Web.
• Le navigateur envoie une requête HTTP au serveur Web, en entamant au
préalable une connexion TCP, demandant une ressource spécifique sur le
serveur. À son tour, le serveur Web renvoie une réponse HTTP
spécialement formatée avec le fichier de données.
• Il est utile de connaître les demandes et les réponses de base, en
particulier si vous devez résoudre des problèmes liés à une connexion
Web.
02 – Fonctions du Serveur HTTP Apache
Requêtes clients
• Une fois qu'une connexion HTTP est établie avec un serveur distant, le client doit envoyer des requêtes sur
lesquelles le serveur peut agir.
• Les requêtes HTTP se composent d'un mot-clé, éventuellement suivi d'informations supplémentaires dont
le serveur peut avoir besoin pour traiter la requête (comme le nom d'un fichier à renvoyer).
• le système ne démarre pas automatiquement le serveur Web Apache. Pour ce faire, vous
devrez utiliser la commande systemctl :
#systemctl enable httpd
#systemctl start httpd
03 – Configuration du serveur HTTP
Installation du service HTTPD
• Une fois le serveur apache démarre on vérifie par le navigateur en saisissant l’adresse IP
du serveur dans la barre des URL, le server répond par une page par défaut :
03 – Configuration du serveur HTTP
Installation du service HTTPD
DIRECTIVES DESCRIPTION
Listen Le port TCP (et l'adresse IP facultative)
pour écouter les demandes des clients
User/Group Le compte utilisateur/groupe utilisé pour
démarrer le démon du serveur Apache
ServerAdmin Adresse e-mail de l'administrateur du
serveur
ServerName Le nom de domaine du serveur
ServerRoot L'emplacement des fichiers de
configuration de base
DocumentRoot L'emplacement du dossier de données
par défaut
Include Inclure les paramètres de configuration
définis dans un fichier externe
LoadModule Charger et activer le module de
fonctionnalités spécifié dans le serveur
… …
04 – Directives de configuration dans [Link]
Explication et exemples
• Par défaut, les paramètres que vous définissez • Vous pouvez également définir des paramètres
dans la zone de configuration principale sont conditionnels, qui s'appliquent uniquement
appelés paramètres globaux. Ils s'appliquent au lorsque des conditions spécifiques sont
serveur Web Apache principal lors de son remplies, par exemple si TEST est vrai, les
démarrage. Vous définissez les paramètres directives situées à l'intérieur vont être
conditionnels sous la forme d'un bloc de appliquées. Si TEST est faux, tout ce qui se
directives. Le bloc utilise le format suivant trouve entre les balises de début et de fin est
ignoré.
<IfDefine variable>
Directive • La section <IfModule test>...</IfModule>
permet de conférer à des directives un
</IfDefine> caractère conditionnel basé sur la présence
• Exemple: d'un module spécifique. Les directives situées
dans une section <IfModule> ne s'appliquent
<IfDefine TEST> que si test est vrai. Si test est faux, tout ce qui
Define servername [Link] se trouve entre les balises de début et de fin est
ignoré.
</IfDefine>
• Exemple:
<IfModule dir_module>
DirectoryIndex [Link]
</IfModule>
04 – Directives de configuration dans [Link]
Explication et exemples
• Vous pouvez utiliser les paramètres de répertoire, qui s'appliquent uniquement à des
répertoires spécifiques sur le serveur.
• La condition <Directory> spécifie les directives qui s'appliquent uniquement au chemin de
répertoire spécifié dans le paramètre :
<Directory "/">
AllowOverride None
</Directory>
• Les directives spécifiées dans ce bloc s'appliquent uniquement lorsque les clients tentent
d'accéder aux fichiers stockés dans ce dossier.
05 – Modules du Serveur HTTP Apache
Exemples et descriptions
Journalisation
177
APACHE & MOD_SSL
178
COMPARAISON DES SERVEURS HTTP SUR LE MARCHÉ
179
COMPARAISON DES SERVEURS HTTP SUR LE MARCHÉ
180
INSTALLATION D' APACHE (1)
181
INSTALLATION D' APACHE (2)
182
INSTALLER APACHE (3)
• A partir du dépôt ou des portages des distribution Unix ou
GNU/Linux
183
INSTALLER APACHE (4)
ou
– ~$ sudo service apache2 [start|restart|stop|reload|force-
reload|status]
Programme apachectl
– avec SSL : apachectl startssl (au-lieu de start)
184
SITES WEB « VIRTUELS »
185
SITES VIRTUELS PAR NOM
186
SITES VIRTUELS PAR IP
187
SI UNE SEULE IP EST DISPONIBLE…
188
DNS & SITES WEB
• Proposition
– utiliser pour chaque site un enregistrement de type A
([Link] IN A [Link]) plutôt qu’un CNAME
– utiliser l’IP du serveur
– il n’y a pas de numéro de port : c’est dans l’URL que cela se
trouve
189
CONFIGURATION D’APACHE (1)
190
CONFIGURATION D’APACHE (2)
191
CONFIGURATION D’APACHE (3)
</Nom de la section>
192
CONFIGURATION D’APACHE (3)
• Listen 80
– indique sur quelle(s) IP et numéros de ports Apache doit
accepter les connexions
– il faut indiquer toutes les combinaisons qui seront utilisées
Listen 80
Listen 443
193
CONFIGURATION D’APACHE (4)
• User / Group
– ne pas oublier de « ne pas faire tourner Apache sous l’identité privilégiée » !
• HostnameLookups Off
– il est conseillé de conserver cette option : sinon délais supplémentaires liés au DNS
significatifs
– les logiciels de statistiques s’occuperont de cela plus tard
194
CONFIGURATION D’APACHE (5)
• NameVirtualHost *:80
– permet de définir les adresses et numéro de ports
utilisés pour de l’hébergement virtuel par nom
– toutes les autres adresses sont par définition
« virtuelles par adresse »
– n’a pas de sens pour HTTPS (c’est à dire *:443
par exemple)
195
CONFIGURATION VIRTUALHOST (1)
• Serveur virtuel basé sur le nom
<VirtualHost *:80>
ServerAdmin admin@[Link]
DocumentRoot /var/www/[Link]/htdocs
ServerName [Link]
ServerAlias [Link]
ErrorLog /var/www/[Link]/logs/error_log
CustomLog /var/www/[Link]/logs/access_log common
</VirtualHost>
196
CONFIGURATION VIRTUALHOST (2)
197
CONFIGURATION VIRTUALHOST (3)
198
CONFIGURATION SSL SECURE SOCKETS LAYER
• Un VirtualHost par IP/Port
<VirtualHost [Link]:443>
ServerAdmin admin@[Link]
DocumentRoot /var/www/[Link]/htdocs
ServerName [Link]
ServerAlias [Link]
ErrorLog /var/www/[Link]/logs/error_log
CustomLog /var/www/[Link]/logs/access_log common
SSLEngine On
SSLCipherSuite ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+SSLv2:+EXP:+eNULL
SSLCertificateFile /local/apache/[Link]/[Link]
SSLCertificateKeyFile /local/apache/[Link]/[Link]
</VirtualHost>
199
CRÉATION DES FICHIERS ET RÉPERTOIRES
• apachectl configtest
– permet de vérifier la bonne syntaxe du fichier de configuration
• apachectl graceful
– recharge le fichier de configuration sans interrompre brutalement les
connexions en cours
• apachectl restart
– la même chose en plus violent
• apachectl start / startssl / stop
– arrêt et redémarrage d’Apache
• Il est conseillé d'utiliser les scripts de démarrage et redémarrage fournis
par le système d'exploitation pour une meilleur cohérence des processus
d'Apache : ~$ sudo service apache2 start|restart|reload|stop|status
201
CRÉER SON AUTORITÉ DE CERTIFICATION ?
• Possibilité 1 : non
– les programmes classiques (par exemple Apache +
mod_ssl) savent générer avec OpenSSL un certificat
auto-signé
– c’est facile mais pas homogène
• Possibilité 2 : oui
– assure un minimum d’homogénéité dans votre entité
– c’est rigolo et intéressant de manipuler et comprendre
ces outils
202
EXERCICES AVEC APACHE
203
• Objectifs : Appliquer les bonnes pratiques de sécurité sur un serveur
Linux.
• Contenu :
• Sécurité SSH : configuration de sshd_config, authentification par clés
• Hardening de serveur : désactivation des services inutiles, configuration de
pare-feu
• Outils de sécurité : audits de sécurité avec Lynis
• Activités :
• Configuration sécurisée de SSH.
• Audit de sécurité du serveur.
204
SÉCURISÉ QUOI.. ?
« SSH, ou Secure Socket Shell, est un protocole réseau qui permet aux
administrateurs d'accéder à distance à un ordinateur, en toute sécurité. »
Fondée en 1995 par Tatu Ylonen, chercheur à l'Université de technologie d'Helsinki, Finlande
205
POURQUOI SSH ?
Les trois exigences de sécurité fondamentales pour une technologie d’accès à distance
: confidentialité, intégrité et authentification
La plupart des technologies antérieures manquent de confidentialité et d’intégrité. Par
exemple, Telnet et FTP transmettent le nom d'utilisateur et les mots de passe en texte
clair.
Ils sont vulnérables aux attaques telles que l’usurpation d’adresse IP, le DoS, le MITM et
les écoutes clandestines.
Secure Shell satisfait aux trois exigences en utilisant :
Cryptage des données pour assurer la confidentialité
Authentification basée sur l'hôte et (ou) sur le client
Intégrité des données à l'aide de MAC et de hachages
3/28/2025 206
SAVEURS DE SSH
SSH-2 a été introduit afin de corriger plusieurs bugs dans SSH-1 et inclut également
plusieurs nouvelles fonctionnalités
Les deux versions présentent des problèmes techniques et sont vulnérables aux
attaques connues (discutées plus tard).
SSH-1 est plus populaire de nos jours en raison de problèmes de licence avec SSH-2
OpenSSH est une version gratuite de SSH avec développement de code open source.
Il prend en charge les deux versions et est principalement utilisé dans
l'environnement UNIX.
3/28/2025 207
SCHÉMA DU FONCTIONNEMENT
3/28/2025 208
LE PROTOCOLE D'ÉCHANGE SSH-1
SSH-TRANS
TCP/IP
[Source: ‘Analysis of Secure shell vulnerability’ – white paper ] 3/28/2025 213
SSH EST-IL VRAIMENT SÉCURISÉ ?
3/28/2025 218
ETUDE DE CAS : L'EXPLOIT 'GOBBLES' (SUITE)
3/28/2025 219
ETUDE DE CAS : L'EXPLOIT 'GOBBLES' (SUITE)
3/28/2025 220
ETUDE DE CAS : L'EXPLOIT 'GOBBLES' (SUITE)
221
SSH TOOLS
Il existe plusieurs outils SSH commerciaux et gratuits pour les
plateformes UNIX et Windows.
Windows -
PuTTY
TeraTerm
Bitvise SSH Client
SecureCRT
UNIX –
Le package RedHat Linux et OpenBSD sont accompagnés d'outils tels que ssh,
sshd (démon), scp (copie sécurisée), sftp (ftp sécurisé), etc.
OpenSSH 3/28/2025 222
MODE DE FONCTIONNEMENT DE SSH
L'établissement du dialogue entre le client et le serveur suit un protocole particulier :
1. établissement d'une couche transport sécurisée
2. chiffrement des données à l'aide de clefs symétriques pendant la transaction
Le client peut s'authentifier en toute sécurité, et accéder aux applications conformes aux spécifications du
protocole.
Mode de fonctionnement de la couche transport SSH
La couche transport assure le chiffrement et le déchiffrement des données. Elle assure également la
compression pour améliorer le transfert. Le client et le serveur négocient plusieurs éléments afin que la session
puisse s'établir.
1. l'échange des clés
2. l'algorithme de clé publique à utiliser
3. l'algorithme de chiffrement symétrique à utiliser
4. l'algorithme d'authentification de message à utiliser
5. l'algorithme repère (hash) à utiliser
3/28/2025 223
• Objectifs : Comprendre et utiliser Docker pour la conteneurisation
des applications.
• Contenu :
• Concepts de base : images, conteneurs, Dockerfile
• Utilisation de Docker : docker build, docker run, docker-compose
• Gestion de conteneurs : création, déploiement et gestion
• Activités :
• Création et gestion de conteneurs Docker.
• Déploiement d'une application avec Docker.
224
QU’EST-CE QUE DOCKER ?
Docker est une application autonome open source qui fonctionne comme un moteur utilisé pour
exécuter des applications conteneurisées. Il est installé sur votre système d'exploitation, de
préférence sous Linux, mais peut également être installé sur Windows et macOS.
Une application exécutée dans un conteneur est isolée du reste du système et des autres conteneurs, mais
donne l'illusion de s'exécuter dans sa propre instance de système d'exploitation.
Plusieurs conteneurs Docker peuvent être exécutés simultanément sur un seul système d'exploitation, vous
pouvez gérer ces conteneurs avec Docker.
Les applications Docker s'exécutent dans des conteneurs qui peuvent être utilisés sur n'importe quel
système : un ordinateur portable, sur site ou dans le cloud.
Nous pouvons simplement dire que Docker est un service de gestion de conteneurs.
225
QU'EST-CE QU'UN CONTENEUR DOCKER ?
La virtualisation est une technologie qui vous permet de créer des services informatiques utiles à l'aide de
ressources traditionnellement liées au matériel. Il vous permet d'utiliser toute la capacité d'une machine
physique en répartissant ses capacités entre de nombreux utilisateurs ou environnements.
227
COMMENT FONCTIONNE LA VIRTUALISATION ?
Hyperviseurs populaires
228
VIRTUALISATION VS CONTENEURISATION
229
VIRTUALISATION VS CONTENEURISATION
230
VIRTUALISATION VS CONTENEURISATION
231
VIRTUALISATION VS CONTENEURISATION
232
À QUI S’ADRESSE DOCKER ?
Docker est un outil conçu pour profiter à la fois aux développeurs et aux administrateurs système, ce qui
en fait une partie intégrante de nombreux DevOps.
Non. Docker n'est qu'un ensemble d'outils qui fonctionnent avec les fonctionnalités de conteneur
fournies par Linux et Windows. La prise en charge des conteneurs fait partie de Linux depuis longtemps
et est devenue une fonctionnalité stable et fiable.
Le principal concurrent de Docker est rkt, produit par une société appelée CoreOS.
233
L'ARCHITECTURE DOCKER
Image d'architecture Docker
Une image est un modèle en lecture seule avec des instructions pour créer un conteneur Docker. vous pouvez créer une image basée sur
l'image Ubuntu ou SQL Server.
Récipient
Un conteneur est une instance exécutable d'une image. Vous pouvez créer, démarrer, arrêter, déplacer ou supprimer un conteneur à l'aide
de l'API Docker ou de la CLI.
Enregistrement
Un registre Docker stocke les images Docker. Docker Hub est un registre public que tout le monde peut utiliser, et Docker est configuré
pour rechercher des images sur Docker Hub par défaut. Vous pouvez même gérer votre propre registre privé.
Client
Le client Docker est le principal moyen par lequel de nombreux utilisateurs de Docker interagissent avec Docker. Lorsque vous utilisez des
commandes telles que docker run, le client envoie ces commandes à dockerd, qui les exécute. La commande docker utilise l'API Docker.
Démon Docker
Le démon Docker écoute les requêtes de l'API Docker et gère les objets Docker tels que les images, les conteneurs, les réseaux et les
volumes.
234
L'ARCHITECTURE DOCKER
Espaces de noms
Docker utilise une technologie appelée espaces de noms pour fournir un espace de travail isolé appelé conteneur.
Lorsque vous exécutez un conteneur, Docker crée un ensemble d'espaces de noms pour ce conteneur. Ces espaces
de noms fournissent une couche d'isolation. Chaque aspect d'un conteneur s'exécute dans un espace de noms
distinct et son accès est limité à cet espace de noms.
235
INSTALLATION
236
DOCKER - DOCKER COMPOSE - DOCKER SWARM - KUBERNETES
Docker :
Docker est une plate-forme de conteneurisation qui crée, déploie et exécute facilement des applications
dans des conteneurs Docker, qui contiennent toutes les dépendances (frameworks, bibliothèques, bacs,
etc.).
Le conteneur lui-même peut être déplacé très facilement d'un environnement à un autre. Vous pourrez
également garantir que le code testé fonctionnera réellement dans l’environnement de production.
Docker Compose:
Docker Compose est utilisé pour configurer et démarrer plusieurs conteneurs Docker sur le même hôte,
une seule machine hôte. Vous n'avez donc pas besoin de démarrer chaque conteneur séparément.
Docker Compose est utilisé pour exécuter plusieurs conteneurs en tant que service unique. Chacun des
conteneurs fonctionne ici de manière isolée mais peut interagir les uns avec les autres si nécessaire.
237
DOCKER - DOCKER COMPOSE - DOCKER SWARM - KUBERNETES
Docker Swarm:
Docker swarm est un outil d'orchestration de conteneurs qui vous permet d'exécuter et de connecter des
conteneurs sur plusieurs hôtes.
Docker Swarm peut effectuer des tâches telles que la mise à l'échelle, le démarrage d'un nouveau
conteneur en cas de panne, la mise en réseau de conteneurs et bien d'autres encore..
Kubernetes :
Kubernetes est un outil d'orchestration de conteneurs similaire à Docker swarm.
Kubernetes « K8s » orchestre les applications conteneurisées à exécuter sur un cluster d'hôtes. Le
système K8s automatise le déploiement et la gestion d'applications cloud natives à l'aide d'une
infrastructure sur site ou de plateformes de cloud public..
238
DOCKER - DOCKER COMPOSE - DOCKER SWARM - KUBERNETES
239
TAGS
Les balises Docker font référence aux images Docker.
240
FICHIER DOCKER : DOCKERFILE
Docker peut créer des images automatiquement en lisant les instructions d'un Dockerfile. Un
Dockerfile est un document texte qui contient toutes les commandes qu'un utilisateur peut
appeler sur la ligne de commande pour assembler une image.
241
COMMANDE DOCKER MONITORING
Commande Description
docker info Afficher les informations générales de votre Docker
Afficher les containers en cours de fonctionnement (-
docker ps (-a)
a = afficher aussi les containers arrêtés)
docker stats --all Affiche les statistiques des conteneurs
Afficher les images téléchargées et construites sur
docker image ls
votre machine
docker network ls Afficher les réseaux créer sur votre machine
docker inspect <container> Inspecter la configuration d'un conteneur
Visualiser les logs d'un conteneur (--tail = afficher les
docker logs (--tail) <container>
logs en live)
docker exec -it <container> bash Exécuter des commandes dans un conteneur actif
242
COMMANDE DOCKER DÉMARRER
docker run [OPTIONS] IMAGE[:TAG|@DIGEST] [COMMAND] [ARG...]
Option Description
-i Garder STDIN ouvert, même si pas attaché
-t Allouer un pseudo-terminal
-p Configurer le port
-v Lier un dossier sur le serveur au conteneur
-c Créer un partage
-d Activer le mode daemon. Le conteneur sera actif et en tâche de fond
-e Forcer Docker a utiliser un driver exec spécifique
--name Identifier un conteneur par un nom au lieu d’un ID
--dns Définir un DNS personnalisé
--net="<mode>" Définir le mode réseau entre “Bridge”, “none”, “container:” et “host”
--network Connecter le container à un réseau existant
--add-host Modifier le contenu du fichier “hosts” en y ajoutant les valeurs spécifiées
--link Ajouter un lien vers un autre conteneur 243
COMMANDE DOCKER GESTION DES CONTAINERS
Commande Description
Démarrer un container à partir d'une image avec les
docker run <image> <options>
options configurées
docker ps Afficher tous les containers en cours d'exécutions
docker ps -a Afficher tous les containers
docker stop <container> Arrêter un container
docker stop $(docker ps -aq) Arrêter tous les containers
docker restart <container> Redémarrer un container
docker kill <container> Envoyer la commande kill à un container
docker rm <container> Supprimer un container
docker rm $(docker ps -aq) Supprimer tous les containers
244
COMMANDE DOCKER GESTION DES IMAGES
Commande Description
docker search <mot_clé> Rechercher une image
docker pull <image:tag> Télécharger l'image depuis le repo
docker push <dossier/image> Envoyer l'image au repo
docker image Afficher les images téléchargées sur la machine
docker rmi <image> Supprimer une image
docker rmi $(docker image -q) Supprimer toutes les images
docker build <options> Créer une image (voir /Docker/Image)
245
COMMANDE DOCKER GESTION DES RÉSEAUX
Commande Description
246
COMMANDE DOCKER DOCKER-COMPOSE
Commande Description
247
DATA MANAGEMENT
Les volumes sont stockés dans une partie du système de fichiers hôte gérée par
Docker (/var/lib/docker/volumes/ sous Linux).
Les processus non Docker ne doivent pas modifier cette partie du système de
fichiers.
Les volumes constituent le meilleur moyen de conserver les données dans Docker.
Un volume donné peut être monté simultanément dans plusieurs conteneurs.
Les supports de liaison peuvent être stockés n'importe où sur le système hôte.
Les processus non Docker sur l'hôte Docker ou un conteneur Docker peuvent les modifier à tout moment.
Pour utiliser les montages liés, le fichier ou le répertoire n'a pas besoin d'exister déjà sur votre hôte Docker. S’il n’existe pas,
il sera créé à la demande.
248
DATA MANAGEMENT
249
• Objectifs : Utiliser Ansible pour automatiser la configuration et le
déploiement.
• Contenu :
• Concepts de base : playbooks, roles, inventories
• Utilisation de Ansible : ansible-playbook, création de playbooks
• Activités :
• Création et exécution de playbooks pour diverses tâches.
250
INTRODUCTION
Qu'est-ce qu'Ansible
Pourquoi Ansible
Cas d'utilisation d'Ansible
Architecture d'Ansible
Gestion de la configuration avec Ansible
251
QU'EST-CE QU'ANSIBLE
252
POURQUOI ANSIBLE
Pas d'Agent - Tant que la machine peut être accédée via SSH et qu'elle a
Python, elle peut être configurée avec Ansible.
Idempotent - Toute l'architecture d'Ansible est structurée autour du concept
d'idempotence. L'idée principale est que vous ne faites les choses que si elles
sont nécessaires et que les actions sont répétables sans effets secondaires.
Déclaratif, pas Procédural - Les autres outils de configuration ont tendance à
être procéduraux : faites ceci puis faites cela, etc. Ansible fonctionne en
écrivant une description de l'état de la machine souhaitée et prend ensuite les
mesures pour remplir cette description.
Courbe d'Apprentissage Minime - Ansible est assez facile à apprendre. Il ne
nécessite aucune connaissance supplémentaire.
253
CAS D'UTILISATION D'ANSIBLE
Provisionnement
Gestion de la Configuration
Déploiement d'Applications
Livraison Continue
Sécurité et Conformité
Orchestration
254
ARCHITECTURE D’ANSIBLE
255
INVENTAIRE
L'inventaire est une description des nœuds accessibles par Ansible. Par
défaut, l'inventaire est décrit par un fichier de configuration, dont
l'emplacement par défaut est dans ./etc/ansible/hosts. Le fichier de
configuration répertorie soit l'adresse IP, soit le nom d'hôte de chaque nœud
accessible par Ansible.
Chaque hôte est assigné à un groupe tel que serveurs web, serveurs de base
de données, etc. Le fichier d'inventaire peut être dans l'un des nombreux
formats tels que yaml, INI, etc.
256
EXEMPLE D'UN FICHIER D'INVENTAIRE
257
PLAYBOOK
Les playbooks sont des fichiers YAML simples. Ces fichiers sont des descriptions de
l'état souhaité de vos systèmes. Ansible s'occupe ensuite de faire en sorte que vos
systèmes atteignent cet état, peu importe leur état actuel. Les playbooks rendent
vos installations, mises à jour et gestion quotidienne répétables et fiables.
Les playbooks sont simples à écrire et à maintenir. Ils sont écrits dans un langage
naturel, ce qui les rend très faciles à faire évoluer et à éditer.
Un playbook contient des pièces (plays). Les pièces contiennent des tâches. Les
tâches appellent des modules.
258
EXEMPLE D'UN PLAYBOOK
259
MODULES
Il y a plus de 1000 modules fournis par Ansible pour automatiser chaque partie de
l'environnement. Les modules sont comme des plugins qui font le travail réel dans
Ansible, ce sont eux qui sont exécutés dans chaque tâche de playbook.
Chaque module est principalement autonome et peut être écrit dans un langage de
script standard (comme Python, Perl, Ruby, Bash, etc.). L'une des propriétés
directrices des modules est l'idempotence, ce qui signifie que même si une
opération est répétée plusieurs fois, elle placera toujours le système dans le même
état.
260
MODULES
261
RÔLES
Les rôles sont un moyen de regrouper les tâches dans un seul conteneur. Nous
pourrions avoir un rôle pour configurer MySQL, un autre pour configurer iptables,
etc.
Les rôles facilitent la configuration des hôtes. N'importe quel rôle peut être exécuté
sur n'importe quel hôte ou groupe d'hôtes tels que :
262
CERTAINES ENTREPRISES QUI UTILISENT ANSIBLE
263
GESTION DE LA CONFIGURATION AVEC ANSIBLE
Ansible est la solution la plus simple pour configurer les nœuds. Il est conçu pour être minimaliste,
cohérent, sécurisé et hautement fiable. Tout développeur, testeur ou responsable informatique peut
facilement configurer les nœuds. Toute personne en informatique peut facilement écrire des
playbooks.
Les configurations Ansible sont des descriptions de données simples de votre infrastructure (lisibles
par l'homme) garantissant que chaque membre de votre équipe pourra comprendre la signification
de chaque tâche de configuration.
Ansible ne nécessite rien de plus qu'un mot de passe ou une clé SSH pour commencer à gérer les
systèmes et peut commencer à les gérer sans installer de logiciel agent.
264
• Objectifs : Installer et configurer Tomcat pour les applications Java.
• Contenu :
• Installation : téléchargement et configuration de Tomcat
• Configuration avancée : [Link], [Link]
• Intégration : avec outils de développement Java
• Activités :
• Installation et configuration de Tomcat.
265
• Objectifs : Utiliser Terraform pour provisionner et gérer
l'infrastructure.
• Contenu :
• Concepts de base : fichiers de configuration .tf
• Utilisation de Terraform : terraform init, apply, destroy
• Activités :
• Création de scripts Terraform pour provisionner des ressources.
266
• Objectifs : Implémenter un pipeline CI/CD complet.
• Contenu :
• Pipeline CI/CD : utilisation de Git, Jenkins, et Docker
• Techniques de déploiement : bleu-vert, canari
• Déploiement automatisé : sur serveur avec Apache, Tomcat, Docker
• Activités :
• Création d'un pipeline CI/CD.
• Déploiement automatisé d'une application.
267