Introduction
En administration système et en cybersécurité, une base de référence de sécurité (security baseline) est un niveau standardisé de configuration de sécurité minimale pour un système ou un réseau. L'établissement de bases de référence est une étape fondamentale pour renforcer les systèmes (hardening), réduire la surface d'attaque et garantir une posture de sécurité cohérente au sein d'une organisation. Les contrôles de conformité (compliance controls) sont les mécanismes et procédures utilisés pour vérifier que ces bases de référence sont respectées et maintenues.
Dans ce laboratoire, vous acquerrez une expérience pratique de ces concepts sur un système Linux. Vous apprendrez à définir une base de référence de sécurité simple pour les nouveaux comptes utilisateurs, à vérifier que la base de référence est correctement appliquée, et à configurer le démon d'audit Linux (auditd) pour surveiller les fichiers de configuration critiques contre les modifications non autorisées. Ce processus est crucial pour maintenir l'intégrité du système et répondre aux exigences de conformité réglementaire.
À la fin de ce laboratoire, vous serez capable de :
- Modifier les paramètres par défaut des utilisateurs à l'échelle du système.
- Créer de nouveaux utilisateurs qui respectent une base de référence de sécurité définie.
- Vérifier la conformité à l'aide de commandes Linux standard.
- Configurer
auditdpour surveiller les modifications apportées aux fichiers critiques. - Rechercher et examiner les journaux d'audit pour les événements de sécurité.
Définir une base de référence de sécurité Linux simple pour les valeurs par défaut des utilisateurs
Dans cette étape, vous allez définir une base de référence de sécurité simple en configurant les politiques de mot de passe par défaut pour tous les nouveaux utilisateurs créés sur le système. Nous allons modifier le fichier /etc/login.defs, qui contrôle ces paramètres par défaut.
Tout d'abord, ouvrons le fichier de configuration à l'aide de nano avec les privilèges sudo, car il s'agit d'un fichier de niveau système.
sudo nano /etc/login.defs
Dans l'éditeur nano, faites défiler vers le bas pour trouver les trois paramètres suivants liés à l'expiration des mots de passe et modifiez leurs valeurs. Vous pouvez utiliser Ctrl + W pour rechercher du texte dans nano.
PASS_MAX_DAYS: Le nombre maximum de jours pendant lesquels un mot de passe peut être utilisé. Nous le définirons à90.PASS_MIN_DAYS: Le nombre minimum de jours autorisés entre les changements de mot de passe. Nous le définirons à7.PASS_WARN_AGE: Le nombre de jours d'avertissement avant l'expiration d'un mot de passe. Nous le définirons à14.
Trouvez ces lignes et modifiez-les pour qu'elles ressemblent à ceci :
#
## Password aging controls:
#
## PASS_MAX_DAYS Maximum number of days a password may be used.
## PASS_MIN_DAYS Minimum number of days allowed between password changes.
## PASS_WARN_AGE Number of days warning is given before a password expires.
#
PASS_MAX_DAYS 90
PASS_MIN_DAYS 7
PASS_WARN_AGE 14
Après avoir effectué les modifications, enregistrez le fichier et quittez nano en appuyant sur Ctrl + X, puis Y, et enfin Entrée.
Vous avez maintenant établi une base de référence de sécurité simple pour les politiques de mots de passe sur votre système. Tout nouvel utilisateur créé à partir de maintenant héritera de ces paramètres.
Vérifier la conformité de la base de référence avec les commandes système
Dans cette étape, vous allez vérifier que la base de référence que vous avez définie à l'étape précédente est correctement appliquée. La manière la plus directe de le faire est de créer un nouvel utilisateur et d'inspecter les propriétés de son compte.
Tout d'abord, créons un nouvel utilisateur nommé compliance_user. La commande useradd appliquera automatiquement les paramètres par défaut de /etc/login.defs. L'option -m garantit qu'un répertoire personnel est créé pour l'utilisateur.
sudo useradd -m compliance_user
Cette commande ne produira aucune sortie en cas de succès. Maintenant, nous pouvons vérifier les paramètres d'expiration des mots de passe pour notre nouvel utilisateur en utilisant la commande chage (change age) avec l'option -l (list).
sudo chage -l compliance_user
Vous devriez voir une sortie similaire à la suivante. Notez comment les valeurs pour "Maximum number of days between password change", "Minimum number of days between password change", et "Number of days of warning before password expires" correspondent à la base de référence que nous avons définie dans /etc/login.defs.
Last password change : Aug 05, 2025
Password expires : Nov 03, 2025
Password inactive : never
Account expires : never
Minimum number of days between password change : 7
Maximum number of days between password change : 90
Number of days of warning before password expires : 14
Cette sortie confirme que notre base de référence est efficace et que le système est conforme à notre nouvelle politique pour les nouveaux utilisateurs.
Configurer Auditd pour la surveillance des appels système
Dans cette étape, vous allez configurer le démon d'audit Linux (auditd) pour surveiller notre fichier de configuration de base, /etc/login.defs, afin de détecter tout changement. Il s'agit d'un contrôle de conformité essentiel, car il fournit un journal de qui a modifié le fichier et quand.
Le service auditd utilise un ensemble de règles pour déterminer quels événements enregistrer. Nous allons ajouter une nouvelle règle pour surveiller toute opération d'écriture ou de modification d'attributs sur notre fichier.
Nous ajouterons notre règle au fichier /etc/audit/rules.d/audit.rules. L'utilisation de echo et tee est un moyen sûr d'ajouter une ligne à un fichier système.
Exécutez la commande suivante pour ajouter la règle d'audit :
sudo echo "-w /etc/login.defs -p wa -k login_defs_changes" | sudo tee -a /etc/audit/rules.d/audit.rules
Décortiquons cette règle :
-w /etc/login.defs: Spécifie le chemin du fichier à surveiller.-p wa: Définit les permissions à auditer.wcorrespond à l'accès en écriture, etaaux modifications d'attributs.-k login_defs_changes: Assigne une clé personnaliséelogin_defs_changesà ces événements d'audit, ce qui facilite leur recherche ultérieure.
Pour que la nouvelle règle prenne effet, vous devez redémarrer le service auditd.
sudo systemctl restart auditd
Maintenant, auditd surveille activement /etc/login.defs pour toute modification.
Générer et examiner les journaux d'audit pour l'application des politiques
Dans cette étape, vous allez tester la règle d'audit en déclenchant un événement, puis en examinant les journaux générés. Cela démontre que votre contrôle de conformité fonctionne comme prévu.
Pour déclencher la règle d'audit, nous devons modifier le fichier /etc/login.defs. Une façon simple de le faire sans modifier le contenu est d'utiliser la commande touch, qui met à jour les horodatages d'accès et de modification du fichier. Cette action sera détectée par auditd comme un changement d'attribut.
sudo touch /etc/login.defs
Cette action devrait avoir créé un événement dans le journal d'audit. Les journaux sont stockés dans /var/log/audit/audit.log, mais ils peuvent être volumineux. Une meilleure façon de trouver des événements spécifiques est d'utiliser la commande ausearch avec la clé que nous avons définie à l'étape précédente.
Recherchons tous les événements marqués avec notre clé, login_defs_changes :
sudo ausearch -k login_defs_changes
La sortie contiendra un ou plusieurs enregistrements liés à la commande touch. Elle ressemblera à ceci (les horodatages et les identifiants varieront) :
----
time->Tue Dec 12 08:35:15 2023
type=PROCTITLE msg=audit(1702370115.321:101): proctitle=746F756368002F6574632F6C6F67696E2E64656673
type=PATH msg=audit(1702370115.321:101): item=0 name="/etc/login.defs" inode=131409 dev=00:1e mode=0100644 ouid=0 ogid=0 rdev=00:00 nametype=NORMAL cap_fp=0 cap_fi=0 cap_fe=0 cap_fver=0 cap_frootid=0
type=CWD msg=audit(1702370115.321:101): cwd="/home/labex/project"
type=SYSCALL msg=audit(1702370115.321:101): arch=c000003e syscall=257 success=yes exit=3 a0=ffffff9c a1=7ffc62e212d0 a2=90800 a3=0 items=1 ppid=1102 pid=1125 auid=1000 uid=0 gid=0 euid=0 suid=0 fsuid=0 egid=0 sgid=0 fsgid=0 tty=pts0 ses=3 comm="touch" exe="/usr/bin/touch" key="login_defs_changes"
Recherchez key="login_defs_changes" à la fin de l'enregistrement SYSCALL. Cela confirme que auditd a correctement enregistré l'événement de modification de notre fichier de configuration critique, prouvant que notre contrôle de surveillance est actif et efficace.
Résumé
Félicitations pour avoir terminé ce laboratoire ! Vous avez parcouru avec succès le processus fondamental d'application d'une base de référence de sécurité et de mise en œuvre d'un contrôle de conformité sur un système Linux.
Dans ce laboratoire, vous avez appris à :
- Définir une base de référence de sécurité pour les politiques de mots de passe utilisateur en modifiant
/etc/login.defs. - Vérifier que la base de référence est correctement appliquée aux nouveaux utilisateurs avec la commande
chage. - Configurer le démon d'audit Linux (
auditd) pour surveiller un fichier de configuration critique afin de détecter les changements. - Déclencher et examiner les journaux d'audit à l'aide de
ausearchpour confirmer que votre contrôle de surveillance fonctionne.
Ces compétences sont fondamentales pour tout administrateur système ou professionnel de la sécurité responsable du renforcement des systèmes, du maintien de la posture de sécurité et du respect des normes de conformité telles que les CIS Benchmarks ou les directives NIST. En établissant des bases de référence claires et en surveillant continuellement les écarts, vous pouvez améliorer considérablement la sécurité et l'intégrité de votre infrastructure informatique.



