Remarque :
- Ce tutoriel est disponible dans un environnement d'atelier gratuit fourni par Oracle.
- Il utilise des exemples de valeur pour les informations d'identification Oracle Cloud Infrastructure, la location et les compartiments. A la fin de votre atelier, remplacez ces valeurs par celles propres à votre environnement cloud.
Audit d'Oracle Linux avec Auditd
Introduction
Auditd est un démon système de l'espace utilisateur qui s'exécute en arrière-plan et génère des journaux sur les différentes activités effectuées sur Oracle Linux.
Ce tutoriel vous guide tout au long de l'installation, de la configuration et de l'utilisation de auditd.
Objectifs
Dans cet exercice, vous allez apprendre à :
- Installer les packages d'audit
- Gérer le service d'audit
- Créer des règles d'audit
- Rechercher dans les journaux d'audit
Prérequis
- Un système sur lequel Oracle Linux 8 est installé avec la configuration suivante :
- un utilisateur non root avec des droits d'accès
sudo
- un utilisateur non root avec des droits d'accès
Installation du package d'audit
Remarque : lorsque vous utilisez l'environnement d'atelier gratuit, reportez-vous à Oracle Linux Lab Basics pour obtenir des instructions de connexion et d'utilisation.
Oracle Linux installe le package d'audit par défaut.
S'il n'est pas déjà connecté, ouvrez un terminal et connectez-vous via SSH au système ol8-server.
ssh oracle@<ip_address_of_ol8-server>
Vérifiez si le système a préinstallé le package audit
.
sudo dnf list installed "audit"
Si ce n'est pas sur le système, installez-le.
sudo dnf install -y audit
Le fichier de configuration par défaut du démon auditd
se trouve dans /etc/audit/auditd.conf
.
Gérer le service d'audit
Une fois le package d'audit installé, démarrez le service auditd
. Tout d'abord, vérifiez le statut actuel.
sudo systemctl status auditd
Exemple de sortie :
[oracle@ol8-server ~]$ sudo systemctl status auditd * auditd.service - Security Auditing Service Loaded: loaded (/usr/lib/systemd/system/auditd.service; enabled; vendor pres> Active: active (running) since Fri 2022-04-01 23:59:52 GMT; 2min 38s ago Docs: man:auditd(8) https://github.com/linux-audit/audit-documentation Main PID: 1385 (auditd) Tasks: 2 (limit: 100140) Memory: 2.5M CGroup: /system.slice/auditd.service `-1385 /sbin/auditd Apr 01 23:59:52 localhost.localdomain augenrules[1388]: backlog_wait_time 60000 Apr 01 23:59:52 localhost.localdomain augenrules[1388]: enabled 1 Apr 01 23:59:52 localhost.localdomain augenrules[1388]: failure 1 Apr 01 23:59:52 localhost.localdomain augenrules[1388]: pid 1385 Apr 01 23:59:52 localhost.localdomain augenrules[1388]: rate_limit 0 Apr 01 23:59:52 localhost.localdomain augenrules[1388]: backlog_limit 8192 Apr 01 23:59:52 localhost.localdomain augenrules[1388]: lost 0 Apr 01 23:59:52 localhost.localdomain augenrules[1388]: backlog 0 Apr 01 23:59:52 localhost.localdomain augenrules[1388]: backlog_wait_time 60000 Apr 01 23:59:52 localhost.localdomain systemd[1]: Started Security Auditing Ser> lines 1-21/21 (END)
La sortie indique que le service est (running)
et enabled
.
Le statut enabled
indique que nous avons configuré le service pour qu'il démarre à l'initialisation. Si ce n'est pas le cas, démarrez le service en tant qu'utilisateur root pour collecter les informations d'audit et les écrire dans les journaux.
Démarrez le service.
sudo service auditd start
Configurez auditd
pour qu'il démarre au moment de l'initialisation.
sudo systemctl enable auditd
Remarque : la façon uniquement d'interagir correctement avec le démon auditd utilise la commande
service
.
La commandeservice
garantit l'enregistrement de la valeurauid
. Utilisez la commandesystemctl
uniquement avec les actionsenable
etstatus
.
Activation et désactivation temporaires de l'audit
L'utilitaire de contrôle d'audit, auditctl
, interagit avec le composant Audit du noyau pour gérer les règles et contrôler de nombreux paramètres et paramètres du processus de génération d'événements.
Vérifiez le statut du sous-système d'audit du noyau.
sudo auditctl -s
Exemple de sortie :
[oracle@ol8-server ~]$ sudo auditctl -s enabled 1 failure 1 pid 1399 rate_limit 0 backlog_limit 8192 lost 0 backlog 0 backlog_wait_time 60000 loginuid_immutable 0 unlocked
Désactivez temporairement auditd
.
sudo auditctl -e 0
Réactivez auditd
.
sudo auditctl -e 1
Remarque :
pid
affiche l'ID de processus de serviceauditd
. La valeurpid
0
indique que le service n'est pas en cours d'exécution.
L'indicateur d'activation auditctl -e
accepte également la valeur 2
, qui verrouille la configuration d'audit.
Si la configuration d'audit est verrouillée de cette manière, une réinitialisation est nécessaire pour la déverrouiller. Vous trouverez plus de détails dans man auditctl
.
Localiser les journaux et les règles d'audit
Par défaut, Oracle Linux stocke les journaux d'audit dans /var/log/audit/audit.log
.
Les règles d'audit se trouvent dans /ect/audit/audit.rules
. Oracle Linux génère l'ensemble de règles par défaut à partir du fichier /etc/audit/rules.d/audit.rules
.
sudo cat /etc/audit/audit.rules
sudo cat /etc/audit/rules.d/audit.rules
Exemple de sortie :
## First rule - delete all -D ## Increase the buffers to survive stress events. ## Make this bigger for busy systems -b 8192 ## This determine how long to wait in burst of events --backlog_wait_time 60000 ## Set failure mode to syslog -f 1
Règles avec l'utilitaire de contrôle d'audit
Utilisez le programme auditctl
pour contrôler le comportement, obtenir le statut et ajouter ou supprimer des règles.
Ajoutez une règle d'audit qui consigne toute tentative de lecture ou de modification du fichier /etc/ssh/sshd_config
.
sudo auditctl -w /etc/ssh/sshd_config -p rwxa -k sshd_config
Où :
-w
: crée une montre sur le chemin donné.-p
: définit les droits d'accès [read,write,execute,attribute] qui déclenchent la surveillance.-k
: définit un filtre de clé qui identifie de manière unique les enregistrements d'audit produits par une règle.
Affichez la règle.
sudo auditctl -l
De nouvelles règles sont ajoutées en bas de la liste, mais il est également possible de les ajouter en haut.
Vérifiez si la nouvelle règle a été ajoutée au fichier /etc/audit/audit.rules
.
sudo cat /etc/audit/audit.rules
Exemple de sortie :
[oracle@ol8-server ~]$ sudo cat /etc/audit/audit.rules ## This file is automatically generated from /etc/audit/rules.d -D -b 8192 -f 1 --backlog_wait_time 60000
La règle n'apparaît pas dans le fichier. Pourquoi pas ?
Les règles créées par auditctl
ne sont pas ajoutées au fichier audit.rules
. Par conséquent, ces modifications sont transitoires et ne survivent pas à la réinitialisation du système.
Rendez la règle permanente en l'ajoutant à un fichier d'ensemble de règles personnalisé dans /etc/audit/rules.d/my.rules
. Le format de la règle ajoutée correspond à la syntaxe de la commande auditctl
sans utiliser auditctl
. Les règles doivent être écrites par ligne et combinées pour optimiser les performances.
sudo tee /etc/audit/rules.d/my.rules > /dev/null <<'EOF'
-w /etc/ssh/sshd_config -p rwxa -k sshd_config
EOF
Affichez la règle.
sudo cat /etc/audit/rules.d/my.rules
Testez la règle.
cat /etc/ssh/sshd_config
La commande renvoie cat: /etc/ssh/sshd_config: Permission denied
et génère l'événement ci-dessous dans audit.log
.
sudo cat /var/log/audit/audit.log | grep sshd_config
Exemple de sortie :
type=CONFIG_CHANGE msg=audit(1648918923.746:266810): auid=1001 ses=15792 subj=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023 op=add_rule key="sshd_config" list=4 res=1AUID="oracle" type=SYSCALL msg=audit(1648923583.793:268315): arch=c000003e syscall=257 success=no exit=-13 a0=ffffff9c a1=7ffd08b6c575 > a2=0 a3=0 items=1 ppid=3406680 pid=3428336 auid=1001 uid=1001 gid=1001 euid=1001 suid=1001 fsuid=1001 egid=1001 sgid=1001 fsgid=1001 tty=pts0 ses=15792 comm="cat" exe="/usr/bin/cat" subj=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023 key="sshd_config"ARCH=x86_64 SYSCALL=openat AUID="oracle" UID="oracle" GID="oracle" EUID="oracle" SUID="oracle" FSUID="oracle" EGID="oracle" SGID="oracle" FSGID="oracle" type=PATH msg=audit(1648923583.793:268315): item=0 name="/etc/ssh/sshd_config" inode=67688941 dev=fc:00 mode=0100600 ouid=0 ogid=0 rdev=00:00 obj=system_u:object_r:etc_t:s0 nametype=NORMAL cap_fp=0 cap_fi=0 cap_fe=0 cap_fver=0 cap_frootid=0OUID="root" OGID="root"
Rechercher les journaux d'audit
Une autre façon de rechercher les journaux consiste à utiliser la commande ausearch
.
Obtenez les mêmes informations à l'aide de cette commande.
sudo ausearch --key sshd_config
Exemple de sortie :
Email option is specified but /usr/lib/sendmail doesn't seem executable. ---- time->Sat Apr 2 17:02:03 2022 type=CONFIG_CHANGE msg=audit(1648918923.746:266810): auid=1001 ses=15792 subj=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023 op=add_rule key="sshd_config" list=4 res=1 ---- time->Sat Apr 2 18:19:43 2022 type=PROCTITLE msg=audit(1648923583.793:268315): proctitle=636174002F6574632F7373682F737368645F636F6E666967 type=PATH msg=audit(1648923583.793:268315): item=0 name="/etc/ssh/sshd_config" inode=67688941 dev=fc:00 mode=0100600 ouid=0 ogid=0 rdev=00:00 obj=system_u:object_r:etc_t:s0 nametype=NORMAL cap_fp=0 cap_fi=0 cap_fe=0 cap_fver=0 cap_frootid=0 type=CWD msg=audit(1648923583.793:268315): cwd="/home/oracle" type=SYSCALL msg=audit(1648923583.793:268315): arch=c000003e syscall=257 success=no exit=-13 a0=ffffff9c a1=7ffd08b6c575 > a2=0 a3=0 items=1 ppid=3406680 pid=3428336 auid=1001 uid=1001 gid=1001 euid=1001 suid=1001 fsuid=1001 egid=1001 sgid=1001 fsgid=1001 tty=pts0 ses=15792 comm="cat" exe="/usr/bin/cat" subj=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023 key="sshd_config"
La sortie de ausearch
est plus facile à utiliser et à lire en fonction du format de sortie. Nous pouvons ajouter la facilité de lecture du journal en ajoutant l'option -i
ou --interpret
. Cette option interprète les entités numériques en texte, par exemple en convertissant un élément uid
en nom de compte.
sudo ausearch -i -k sshd_config
Exemple de sortie :
Email option is specified but /usr/lib/sendmail doesn't seem executable. ---- type=CONFIG_CHANGE msg=audit(04/02/2022 17:02:03.746:266810) : auid=oracle ses=15792 subj=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023 op=add_rule key=sshd_config list=exit res=yes ---- type=PROCTITLE msg=audit(04/02/2022 18:19:43.793:268315) : proctitle=cat /etc/ssh/sshd_config type=PATH msg=audit(04/02/2022 18:19:43.793:268315) : item=0 name=/etc/ssh/sshd_config inode=67688941 dev=fc:00 mode=file,600 ouid=root ogid=root rdev=00:00 obj=system_u:object_r:etc_t:s0 nametype=NORMAL cap_fp=none cap_fi=none cap_fe=0 cap_fver=0 cap_frootid=0 type=CWD msg=audit(04/02/2022 18:19:43.793:268315) : cwd=/home/oracle type=SYSCALL msg=audit(04/02/2022 18:19:43.793:268315) : arch=x86_64 syscall=openat success=no exit=EACCES(Permission denied) a0=0xffffff9c a1=0x7ffd08b6c575 a2=O_RDONLY a3=0x0 items=1 ppid=3406680 pid=3428336 auid=oracle uid=oracle gid=oracle euid=oracle suid=oracle fsuid=oracle egid=oracle sgid=oracle fsgid=oracle tty=pts0 ses=15792 comm=cat exe=/ usr/bin/cat subj=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023 key=sshd_config
Pour plus d'options de formatage et de méthodes de recherche dans audit.log
, reportez-vous à man ausearch
.
Charger des règles préconfigurées
Oracle Linux fournit un script qui fusionne tous les fichiers de règles d'audit de composant trouvés dans /etc/audit/rules.d
. Après la fusion, le nouveau fichier remplace le fichier /etc/audit/audit.rules
existant. Ce script est intégré au fichier de service auditd
et s'exécute lorsque le service démarre.
Vérifiez s'il existe des modifications de règle à charger.
sudo augenrules --check
Les états de sortie, Rules have changed and should be updated
. Cette modification est due au fichier my.rules
précédemment créé dans/etc/audit/rules.d
.
Supprimez la règle personnalisée sshd_config
précédemment ajoutée pour suivre facilement les ajouts de nouvelles règles.
sudo auditctl -D -k sshd_config
Fusionnez le fichier de règles personnalisées my.rules
.
sudo augenrules --load
Exemple de sortie :
[oracle@ol8-server ~]$ sudo augenrules --load No rules enabled 1 failure 1 pid 1395 rate_limit 0 backlog_limit 8192 lost 0 backlog 0 backlog_wait_time 60000 enabled 1 failure 1 pid 1395 rate_limit 0 backlog_limit 8192 lost 0 backlog 0 backlog_wait_time 60000 enabled 1 failure 1 pid 1395 rate_limit 0 backlog_limit 8192 lost 0 backlog 0 backlog_wait_time 60000
Vérifiez les règles d'audit actives.
sudo auditctl -l
Exemple de sortie :
[oracle@ol-lab-2022-03-23-182415-0 ~]$ sudo auditctl -l -w /etc/ssh/sshd_config -p rwxa -k sshd_config
Ajoutez des règles supplémentaires à un nouveau fichier, new.rules
.
Remarque : seuls les fichiers se terminant par
.rules
sont lus paraugenrules
et chargés.
sudo tee /etc/audit/rules.d/new.rules > /dev/null <<'EOF'
-w /etc/passwd -p wa -k passwd_changes
-w /etc/selinux/ -p wa -k selinux_changes
EOF
Chargez les nouvelles règles.
sudo augenrules --load
Vérifiez à nouveau les règles actives.
sudo auditctl -l
Les nouvelles règles sont chargées et fusionnées dans le fichier audit.rules
.
sudo cat /etc/audit/audit.rules
Le système a créé un fichier de sauvegarde /etc/audit/audit.rules.prev
dans le cadre de la fusion.
sudo ls -l /etc/audit
Les informations fournies par le système d'audit Oracle Linux aident à détecter les intrusions.
Consultez les pages man
des utilitaires indiqués. Utilisez ensuite ce que vous avez appris pour ajouter des règles d'audit personnalisées à votre système pour des événements de journalisation particuliers.
Pour plus d'informations
Voir d'autres ressources connexes :
Ressources de formation supplémentaires
Explorez d'autres ateliers sur docs.oracle.com/learn ou accédez à davantage de contenu de formation gratuit sur le canal Oracle Learning YouTube. En outre, accédez à education.oracle.com/learning-explorer pour devenir explorateur Oracle Learning.
Pour consulter la documentation du produit, consultez Oracle Help Center.