Audit système avec auditd
L'audit du système est une tâche très importante qui devrait faire partie de chaque serveur. Cela nous permet de vérifier les moindres détails liés à ce qui se passe exactement dans le système. auditd est un composant de l'espace utilisateur du système d'audit Linux. Cela signifie que les utilisateurs du système pourront exécuter auditd pour configurer des règles et des alertes pour la fonctionnalité d'audit avec le système Linux.
L'une des meilleures choses à propos d'auditd est qu'il est étroitement intégré au noyau, il nous donne donc le pouvoir de surveiller presque tout ce que nous voulons, vraiment. Afin de permettre aux utilisateurs de voir ce qui se passe, auditd peut enregistrer tous les événements liés à l'audit sur un disque et nous pouvons utiliser divers outils tels que ausearch ou aureport pour parcourir les fichiers journaux.
Par défaut, aucune règle n'est configurée. Nous devons écrire nos règles dans le fichier /etc/audit/audit.rules fichier de configuration qui sera lu et les actions d'audit correspondantes seront appliquées.
Installer Auditd
Maintenant que nous comprenons un peu ce qu'est auditd, continuons et travaillons avec auditd avec le cas d'utilisation précédent :
1. Installez les packages auditd. Les packages auditd font partie des systèmes CentOS 7 d'installation par défaut. Nous pouvons le vérifier avec la commande suivante :
# rpm -qa | grep audit audit-libs-2.6.5-3.el7_3.1.x86_64 audit-2.6.5-3.el7_3.1.x86_64 audit-libs-python-2.6.5-3.el7_3.1.x86_64
2. Si le package ne fait pas partie de notre système, nous pouvons continuer et l'installer :
# yum install audit
3. Assurez-vous que le démon d'audit est en cours d'exécution. Nous allons utiliser la commande suivante :
# systemctl status auditd auditd.service - Security Auditing Service Loaded: loaded (/usr/lib/systemd/system/auditd.service; enabled; vendor preset: enabled) Active: active (running) since Wed 2018-10-24 04:33:48 UTC; 4min 21s ago Docs: man:auditd(8) https://people.redhat.com/sgrubb/audit/ Process: 425 ExecStartPost=/sbin/augenrules --load (code=exited, status=0/SUCCESS) Main PID: 424 (auditd) CGroup: /system.slice/auditd.service └─424 /sbin/auditd -n
Puisque nous avons un démon d'audit opérationnel, voyons comment nous pouvons utiliser auditd pour réaliser les 4 cas d'utilisation.
Règles d'audit pour copier, déplacer, supprimer et tuer les commandes
1. Effectuez une sauvegarde du fichier de configuration existant (règles auditées) :
# cp /etc/audit/audit.rules /etc/audit/audit.rules.bkp
2. Modifiez le fichier /etc/audit/audit.rules et ajoutez les règles suivantes pour le rendre persistant :
# vi /etc/audit/audit.rules # Audit Copy, Move, Delete & Create file commands -a exit,always -F arch=b64 -S execve -F path=/bin/cp -k Copy -a exit,always -F arch=b64 -S execve -F path=/bin/mv -k Move_Rename -a exit,always -F arch=b64 -S execve -F path=/bin/rm -k Delete -a exit,always -F arch=b64 -S execve -F path=/bin/vi -k Create_Edit_View_File # Audit shutdown & Reboot command -a exit,always -F arch=b64 -S execve -F path=/sbin/reboot -k Reboot -a exit,always -F arch=b64 -S execve -F path=/sbin/init -k Reboot -a exit,always -F arch=b64 -S execve -F path=/sbin/poweroff -k Reboot -a exit,always -F arch=b64 -S execve -F path=/sbin/shutdown -k Reboot # Audit mount unmount commands -a exit,always -F arch=b64 -S execve -F path=/bin/mount -k mount_device -a exit,always -F arch=b64 -S execve -F path=/bin/umount -k unmount_device # Kill Process -a exit,always -F arch=b64 -S kill -k Kill_Process
3. Redémarrez le service auditd pour appliquer les modifications.
# service auditd restart
4. Répertoriez les règles ajoutées pour vérifier qu'elles sont correctes :
# auditctl -lRemarque :bash (et de nombreux autres shells) a une commande "kill" intégrée qui n'exécute pas réellement /usr/bin/kill. Donc, si la commande intégrée est exécutée à la place, comm=bash est correct. Il n'y a aucun moyen de forcer le système à utiliser le programme externe /usr/bin/kill. comm=tuer ne se produira pas dans tous les cas, car les shells peuvent appeler l'appel système directement sans exécuter le programme externe nommé "kill"