GNU/Linux >> Tutoriels Linux >  >> Linux

Comment utiliser le système d'audit sous Linux - Configurer, auditer les journaux et générer des rapports

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.


Linux
  1. Comment Linux gère-t-il plusieurs séparateurs de chemins consécutifs (/home////nom d'utilisateur///fichier) ?

  2. Comment surveiller les modifications des fichiers /etc/shadow et /etc/passwd avec Auditd ?

  3. CentOS / RHEL :Comment récupérer à partir d'un fichier /etc/passwd supprimé

  4. Comment monter et démonter un système de fichiers sous Linux

  5. Dans mon fichier /etc/hosts/ sous Linux/OSX, comment créer un sous-domaine générique ?

Comment générer et utiliser la clé SSH dans le système Linux ?

Comment installer et utiliser YouTube-DL sur le système Linux

Comment installer et configurer AnyDesk sur le système Linux

Comment installer et configurer Django sur le système Linux

Comment installer et configurer PrestaShop sur le système Linux

Comment installer et configurer Elasticsearch sur le système Linux