Avant de commencer à discuter du système d'audit, je voudrais poser quelques questions. Comment surveillez-vous les commandes exécutées par l'utilisateur ? Comment surveillez-vous si un fichier ou un répertoire a été accédé ? Comment enregistrez-vous divers événements liés à la sécurité ? Comment surveillez-vous les appels système, l'accès au réseau, etc… et enfin comment générez-vous un rapport à partir de cela ? Eh bien, le système d'audit Linux est la réponse à toutes les questions ci-dessus.
Le système d'audit Linux permet à un administrateur de configurer des règles d'audit pour surveiller les appels système, l'accès au réseau, les fichiers, etc. et générer un rapport récapitulatif - qui peut ensuite être analysé et étudié pour toute activité suspecte. À partir de la version 2.6, le noyau Linux est livré avec auditd démon et lorsqu'il est démarré, il lit les règles préconfigurées à partir de /etc/audit/audit.rules . L'administrateur peut utiliser auditctl commande pour contrôler le système d'audit, créer des règles etc… Les deux autres commandes importantes sont :
- ausearch – commande qui permet d'interroger les journaux d'audit en fonction des critères donnés.
- aurapport – commande utilisée pour générer des rapports.
Les fichiers de configuration d'audit se trouvent dans /etc/audit et se connecte à /var/log/audit.
- /etc/audit/audit.rules – fichier où les règles permanentes sont créées et chargées lorsqu'elles sont auditées démon est démarré.
- /etc/audit/audit.conf – fichier de configuration d'audit
- /etc/audit/rules.d/ – dossier contenant les fichiers de règles personnalisées.
Vous trouverez ci-dessous la liste des informations que l'audit enregistrera :
- Horodatage, type et résultat de l'événement
- UID, GID qui a déclenché l'événement
- Étiquettes de sensibilité du sujet et de l'objet
- Accès à tous les systèmes d'authentification tels que SSH, Kerberos etc…
- Vérifications de l'intégrité des fichiers
- Importation et exportation d'informations.
- Inclure ou exclure des événements en fonction de l'identité de l'utilisateur, du sujet et d'autres attributs
- Tentative de modification des fichiers de configuration et des journaux d'audit.
Comment configurer auditd dans CentOS et Ubuntu ?
Sur CentOS :
# yum install audit
Sur Ubuntu :
# apt-get install auditd :::::::::: Setting up auditd (1:2.4.5-1ubuntu2) ... update-rc.d: warning: start and stop actions are no longer supported; falling ba ck to defaults Processing triggers for libc-bin (2.23-0ubuntu3) ... Processing triggers for systemd (229-4ubuntu6) ... Processing triggers for ureadahead (0.100.0-19) ...
Une fois le package installé, le auditd démon sera lancé automatiquement. Sinon, vous pouvez le démarrer en utilisant les commandes ci-dessous :
# /etc/init.d/auditd start
Liste des règles d'audit actives :
# auditctl -l No rules
Comment créer des règles d'audit ?
Créons une règle pour surveiller le fichier /etc/passwd
# auditctl -w /etc/passwd -p war -k audit-passwd
La commande ci-dessus crée une surveillance sur le fichier /etc/passwd .
- –w /etc/passwd – crée une montre pour le fichier /etc/passwd
- -p guerre – définit le filtre d'autorisation – w pour l'écriture, r pour la lecture, a pour la modification d'attribut et e pour l'exécution.
- –k audit-passwd – ici audit-passwd est une clé permettant d'identifier la règle de manière unique à partir des journaux.
Fondamentalement, la commande ci-dessus suit /etc/passwd pour toute personne qui tente d'écrire, de lire ou de modifier les attributs du fichier.
Maintenant que la règle est créée, connectons-nous en tant qu'utilisateur non privilégié et essayons d'accéder à /etc/passwd fichier.
$ grep "someinformation" /etc/passwd
$ vim /etc/passwd
Les deux commandes ci-dessus ont été exécutées par un utilisateur local appelé "ubuntu" et ces événements devraient être enregistrés dans /var/log/audit/audit.log fichier.
Comment trouver qui a modifié ou accédé à /etc/passwd ?
Nous utiliserons ausearch commande :
# ausearch -f /etc/passwd -i
type=PROCTITLE msg=audit(08/05/2016 11:56:10.088:72) : proctitle=grep --color=auto henry /etc/passwd type=PATH msg=audit(08/05/2016 11:56:10.088:72) : item=0 name=/etc/passwd inode=56913 dev=fd:01 mode=file,644 ouid=root ogid=root rdev=00:00 nametype=NORMAL type=CWD msg=audit(08/05/2016 11:56:10.088:72) : cwd=/home/ubuntu type=SYSCALL msg=audit(08/05/2016 11:56:10.088:72) : arch=x86_64 syscall=openat success=yes exit=3 a0=0xffffffffffffff9c a1=0x7ffebf6cb887 a2=O_RDONLY|O_NOCT TY a3=0x0 items=1 ppid=14098 pid=14992 auid=ubuntu uid=ubuntu gid=ubuntu euid=ubuntu suid=ubuntu fsuid=ubuntu egid=ubuntu sgid=ubuntu fsgid=ubuntu tty=pts0 s es=1302 comm=grep exe=/bin/grep key=audit-passwd ---- type=PROCTITLE msg=audit(08/05/2016 11:56:12.028:74) : proctitle=vim /etc/passwd type=PATH msg=audit(08/05/2016 11:56:12.028:74) : item=0 name=/etc/passwd inode=56913 dev=fd:01 mode=file,644 ouid=root ogid=root rdev=00:00 nametype=NORMAL type=CWD msg=audit(08/05/2016 11:56:12.028:74) : cwd=/home/ubuntu type=SYSCALL msg=audit(08/05/2016 11:56:12.028:74) : arch=x86_64 syscall=open success=yes exit=3 a0=0x556072132500 a1=O_RDONLY a2=0x0 a3=0x556072347f50 items =1 ppid=14098 pid=14993 auid=ubuntu uid=ubuntu gid=ubuntu euid=ubuntu suid=ubuntu fsuid=ubuntu egid=ubuntu sgid=ubuntu fsgid=ubuntu tty=pts0 ses=1302 comm=vi m exe=/usr/bin/vim.basic key=audit-passwd
La sortie du journal ci-dessus indique que l'utilisateur a appelé ubuntu avait accédé au fichier /etc/passwd en utilisant les commandes grep et vim . Par défaut, la sortie du journal utilisera UID et GID, mais l'option '-i ' mappera l'uid et le gid aux noms correspondants (nom d'utilisateur et nom de groupe lisibles par l'homme).
Comment créer une veille pour surveiller les modifications par un utilisateur particulier ?
#auditctl -w /usr/local/test -p wa -F uid=1001 -k audit-temp
Rechercher des événements dans le journal :
#ausearch -ua 1001 -i
La commande ci-dessus listera tous les événements déclenchés par l'identifiant d'utilisateur 1001 .
Créer des règles permanentes
Remarque :Les règles créées à l'aide de auditctl sont temporaires et seront actives jusqu'à auditd démon est redémarré. Les commandes ci-dessous expliquent ce scénario.
# auditctl -l -w /etc/passwd -p rwa -k audit-passwd -a always,exit -S all -F dir=/etc -F perm=wa -F uid=1001 -F key=audit-temp -a always,exit -S all -F dir=/usr/local/test -F perm=wa -F uid=1001 -F key=audit
La commande ci-dessus imprime la liste des règles actives. Essayons maintenant de redémarrer auditd démon.
# /etc/init.d/auditd restart [ ok ] Restarting auditd (via systemctl): auditd.service.
Vérifiez à nouveau les règles actives.
# auditctl -l No rules
Une fois audité démon est redémarré, toutes les règles qui ont été créées à l'aide de auditctl seront supprimées (car elles étaient temporaires). Si vous avez expérimenté l'utilisation de auditctl et que vous souhaitez créer ces règles de manière permanente, vous pouvez soit modifier /etc/audit/audit.rules fichier ou créez un nouveau fichier de règles sous /etc/audit/rules.d/ dossier.
# echo "-D" > /etc/audit/rules.d/new.rules # auditctl -l >> /etc/audit/rules.d/new.rules
La première commande ajoute une action de règle de suppression avant d'ajouter le nouvel ensemble de règles.
Comment générer un rapport d'audit ?
Rapport de synthèse :
# aureport Summary Report ====================== Range of time in logs: 08/05/2016 11:45:39.464 - 08/08/2016 06:14:14.328 Selected time for report: 08/05/2016 11:45:39 - 08/08/2016 06:14:14.328 Number of changes in configuration: 7 Number of changes to accounts, groups, or roles: 5 Number of logins: 1 Number of failed logins: 6 Number of authentications: 8 Number of failed authentications: 6 Number of users: 3 Number of terminals: 8 Number of host names: 2 Number of executables: 37 Number of commands: 39 Number of files: 13 Number of AVC's: 0 Number of MAC events: 0 Number of failed syscalls: 12 Number of anomaly events: 0 Number of responses to anomaly events: 0 Number of crypto events: 0 Number of integrity events: 0 Number of virt events: 0 Number of keys: 2 Number of process IDs: 214 Number of events: 1337
La commande ci-dessus imprimera le rapport récapitulatif de tous les événements enregistrés.
Imprimer un rapport récapitulatif de toutes les tentatives de connexion infructueuses
# aureport --login --summary -i Login Summary Report ============================ total auid ============================ 6 henry 1 ubuntu
Générer un rapport récapitulatif des événements de fichiers exécutables :
# aureport -x --summary
Générer un rapport de tous les fichiers d'audit interrogés et de la plage horaire des événements qu'ils incluent
# aureport -t Log Time Range Report ===================== /var/log/audit/audit.log: 08/05/2016 11:45:39.464 - 08/08/2016 06:17:01.068
Générer un rapport de tous les événements enregistrés dans la plage de dates :
# aureport --start 08/05/2016 00:00:00 --end 08/07/2016 00:00:00
Générer un rapport depuis ausearch sortie
# ausearch -k audit-temp | aureport -f -i
Comment supprimer toutes les règles d'audit ?
# auditctl -D
Remarque :La commande ci-dessus supprimera toutes les règles actives dans le auditd en cours d'exécution démon. Cependant, les règles permanentes dans le fichier /etc/audit/audit.rules seront chargées chaque fois que le auditd est lancé.
Est-ce que tout est audité peut faire? Non ! Le système d'audit Linux est capable de faire plus et ce qui est répertorié ici n'est qu'une infime partie de ce système puissant. Consultez les pages de manuel de auditd , auditctl , ausearch et aureport pour plus d'informations.