Recherche de site Web

Apprenez l'audit du système Linux avec l'outil Auditd sur CentOS/RHEL


L'audit du système fait simplement référence à une analyse approfondie d'un système ciblé spécifique : un audit est composé d'un examen des différentes parties qui composent ce système, avec une évaluation critique (et des tests si nécessaire) dans différents domaines d'intérêt.

Lire aussi : Lynis – Outil d'audit et d'analyse de sécurité pour les systèmes Linux

L'un des sous-systèmes critiques de RHEL/CentOS, le système d'audit Linux communément appelé auditd. Il implémente un moyen de suivre les informations relatives à la sécurité sur un système : il utilise des règles préconfigurées pour collecter de grandes quantités d'informations sur les événements qui se produisent sur le système et les enregistre dans un fichier journal, créant ainsi un essai d'audit.

Il peut enregistrer des informations telles que la date et l'heure, le type et le résultat d'un événement ; les utilisateurs qui ont provoqué l'événement, les modifications apportées aux fichiers/bases de données ; utilisations de mécanismes d'authentification système, tels que PAM, LDAP, SSH et autres.

Auditd enregistre également toutes les modifications apportées aux fichiers de configuration d'audit ou toute tentative d'accès aux fichiers journaux d'audit, ainsi que tous les efforts visant à importer ou exporter des informations vers ou depuis le système, ainsi que de nombreuses autres informations liées à la sécurité.

Pourquoi le système d’audit Linux est-il important ?

  1. Il ne nécessite aucun programme ou processus externe pour s’exécuter sur un système, ce qui le rend autonome.
  2. Il est hautement configurable et vous permet donc de visualiser toutes les opérations système de votre choix.
  3. Il aide à détecter ou à analyser les compromissions potentielles d’un système.
  4. Il est capable de fonctionner comme un système de détection indépendant.
  5. Il peut fonctionner avec les systèmes de détection d'intrusion pour permettre la détection des intrusions.
  6. Il s’agit d’un outil essentiel pour auditer les enquêtes médico-légales.

Les composants du système d'audit Linux

Le système d'audit comprend deux éléments principaux, à savoir :

  • applications et utilitaires/outils de l'espace utilisateur, et
  • Traitement des appels système côté noyau : il accepte les appels système des applications de l'espace utilisateur et les transmet à travers trois types de filtres, à savoir : utilisateur, tâche, sortie<., ou exclure.

La partie la plus importante est le démon d'audit de l'espace utilisateur (auditd) qui rassemble des informations basées sur des règles préconfigurées, à partir du noyau et génère des entrées dans un fichier journal : le Le journal par défaut est /var/log/audit/audit.log.

De plus, audispd (démon du répartiteur d'audit) est un multiplexeur d'événements qui interagit avec auditd et envoie des événements à d'autres programmes qui souhaitent effectuer des opérations en temps réel. traitement des événements.

Il existe un certain nombre d'outils en espace utilisateur pour gérer et récupérer les informations du système d'audit :

  • auditctl – un utilitaire pour contrôler le système d’audit du noyau.
  • ausearch – un utilitaire permettant de rechercher des événements spécifiques dans les fichiers journaux d'audit.
  • aureport – un utilitaire permettant de créer des rapports sur les événements enregistrés.

Comment installer et configurer l'outil d'audit dans RHEL/CentOS/Fedora

Assurez-vous d'abord de vérifier que l'outil d'audit est installé sur votre système à l'aide de la commande rpm et de l'utilitaire grep comme suit :

rpm -qa | grep audit

Si les packages ci-dessus ne sont pas installés, exécutez cette commande en tant qu'utilisateur root pour les installer.

yum install audit

Ensuite, vérifiez si auditd est activé et en cours d'exécution, émettez les commandes systemctl ci-dessous sur le terminal.

--------------- On CentOS/RHEL 7 --------------- 
systemctl is-enabled auditd
systemctl status auditd
systemctl start auditd   [Start]
systemctl enable auditd  [Enable]

--------------- On CentOS/RHEL 6 --------------- 
service auditd status
service auditd start     [Start]
chkconfig auditd on      [Enable]

Nous allons maintenant voir comment configurer auditd à l'aide du fichier de configuration principal /etc/audit/auditd.conf. Les paramètres ici vous permettent de contrôler le fonctionnement du service, comme la définition de l'emplacement du fichier journal, le nombre maximum de fichiers journaux, le format du journal, la manière de gérer les disques pleins, la rotation des journaux et bien d'autres options.

vi /etc/audit/auditd.conf

À partir de l’exemple de sortie ci-dessous, les paramètres sont explicites.

Comprendre les règles d'audit

Comme nous l'avons mentionné plus tôt, auditd utilise des règles pour collecter des informations spécifiques à partir du noyau. Ces règles sont essentiellement des options auditctl (voir page de manuel) que vous pouvez préconfigurer dans le fichier /etc/audit/rules.d/audit.rules (sur CentOS 6, utilisez le fichier /etc/audit/audit.rules), afin qu'ils soient chargés au démarrage.

Il existe trois types de règles d'audit que vous pouvez définir :

  • Règles de contrôle : elles permettent de modifier le comportement du système d'audit et certaines de ses configurations.
  • Règles du système de fichiers (également appelées surveillance des fichiers) : permettent d'auditer l'accès à un fichier ou un répertoire donné.
  • Règles d'appel système : permet la journalisation des appels système effectués par n'importe quel programme.

Ouvrez maintenant le fichier de configuration principal pour le modifier :

vi /etc/audit/rules.d/audit.rules

Notez que la première section de ce fichier doit contenir des règles de contrôle. Ajoutez ensuite vos règles d'audit (surveillance des fichiers et règles d'appel système) dans la section du milieu, et enfin la dernière section contient les paramètres d'immuabilité qui sont également des règles de contrôle.

Exemples de règles de contrôle auditées

-D		#removes all previous rules
-b  3074	#define buffer size
-f 4		#panic on failure 
-r 120		#create at most 120 audit messages per second

Exemples de règles de système de fichiers Auditd

Vous pouvez définir des surveillances de fichiers en utilisant cette syntaxe :

-w /path/to/file/or/directory -p permissions -k key_name

Où l'option :

  • w – est utilisé pour spécifier un fichier ou un répertoire à surveiller.
  • p – autorisations pour être connecté, r – pour l'accès en lecture, w – pour l'accès en écriture, x – pour exécuter l'accès et a – pour le changement de fichier ou d'attribut de directeur.
  • -k – vous permet de définir une chaîne facultative pour identifier quelle règle (ou un ensemble de règles) a créé une entrée de journal spécifique.

Ces règles permettent à l'audit de surveiller les événements apportant des modifications à ces fichiers système critiques.

-w /etc/passwd -p wa -k passwd_changes
-w /etc/group -p wa -k group_changes
-w /etc/shadow -p wa -k shadow_changes
-w /etc/sudoers -p wa -k sudoers_changes

Exemples de règles d'appel système Auditd

Vous pouvez définir une règle d'appel système à l'aide du formulaire ci-dessous :

-a action,filter -S system_call -F field=value -k key_name

où :

  • action – a deux valeurs possibles : toujours ou jamais.
  • filtre : spécifie que le filtre de correspondance des règles du noyau (tâche, sortie, utilisateur et exclusion) est appliqué à l'événement.
  • appel système : nom de l'appel système.
  • champ – spécifie des options supplémentaires telles que l'architecture, le PID, le GID, etc. pour modifier la règle.

Voici quelques règles que vous pouvez définir.

-a always,exit -F arch=b64 -S adjtimex -S settimeofday -k time_change
-a always,exit -S sethostname -S setdomainname -k system_locale

Puis enfin ajoutez les paramètres d'immuabilité à la fin du fichier, par exemple :

-e 1	#enable auditing
-e 2	#make the configuration immutable -- reboot is required to change audit rules
Exemple de fichier de configuration des règles d'audit

Comment définir des règles Auditd à l'aide de l'utilitaire auditctl

Vous pouvez également envoyer les options à auditd pendant son exécution, en utilisant auditctl comme dans les exemples suivants. Ces commandes peuvent remplacer les règles du fichier de configuration.

Pour lister toutes les règles d'audit actuellement chargées, transmettez l'indicateur -l :

auditctl -l

Ensuite, essayez d'ajouter quelques règles :

auditctl -w /etc/passwd -p wa -k passwd_changes
auditctl -w /etc/group -p wa -k group_changes
auditctl -w /etc/sudoers -p wa -k sudoers_changes
auditctl -l

Comprendre les fichiers journaux d'audit

Tous les messages d'audit sont enregistrés par défaut dans le fichier /var/log/audit/audit.log. Pour comprendre le format de l'entrée du journal, nous allons charger une règle et vérifier l'entrée du journal générée après un événement correspondant à la règle.

En supposant que nous disposions d'un répertoire de sauvegardes secret, cette règle d'audit enregistrera toute tentative d'accès ou de modification de ce répertoire :

auditctl -w /backups/secret_files/ -p rwa -k secret_backup

Maintenant, en utilisant un autre compte système, essayez de vous déplacer dans le répertoire ci-dessus et exécutez la commande ls :

cd /backups/secret_files/
ls

L'entrée du journal ressemblera à ceci.

L'événement ci-dessus est composé de trois types d'enregistrements d'audit. Le premier est type=SYSCALL :

type=SYSCALL msg=audit(1505784331.849:444): arch=c000003e syscall=257 success=yes exit=3 a0=ffffffffffffff9c a1=8ad5c0 a2=90800 a3=0 items=1 ppid=2191 pid=2680 auid=1000 uid=1000 gid=1000 euid=1000 suid=1000 fsuid=1000 egid=1000 sgid=1000 fsgid=1000 tty=pts1 ses=3 comm="ls" exe="/usr/bin/ls" subj=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023 key="secret_backup"

Le second est type=CWD.

type=CWD msg=audit(1505784331.849:444):  cwd="/backups/secret_files"

Et le dernier est type=PATH :

type=PATH msg=audit(1505784331.849:444): item=0 name="." inode=261635 dev=08:01 mode=040755 ouid=0 ogid=0 rdev=00:00 obj=unconfined_u:object_r:default_t:s0 objtype=NORMAL

Vous pouvez trouver une liste complète de tous les champs d'événement (tels que msg, arch, ses etc.) et leurs significations dans la référence du système d'audit.

C'est tout pour le moment. Dans le prochain article, nous verrons comment utiliser ausearch pour interroger les fichiers journaux d'audit : nous expliquerons comment rechercher des informations spécifiques dans les journaux d'audit. Si vous avez des questions, veuillez nous contacter via la section commentaires ci-dessous.