Comment configurer les règles d'audit Linux pour suivre l'activité des utilisateurs, les modifications de fichiers et les modifications de répertoire sur mon instance Linux EC2 ?

Lecture de 4 minute(s)
0

Je souhaite suivre l'activité des utilisateurs, les modifications de fichiers et les modifications de répertoire sur mon instance Linux Amazon Elastic Compute Cloud (Amazon EC2).

Brève description

Le démon d'audit (auditd) est le composant de l'espace utilisateur du système d'audit Linux. Utilisez auditd pour suivre un utilisateur ou une application qui accède à des fichiers et à des répertoires ou les modifie. Vous pouvez également utiliser auditd pour identifier quel utilisateur exécute des commandes spécifiques.

Résolution

Pour utiliser auditd pour suivre l'activité, procédez comme suit :

  1. Connectez-vous à votre instance EC2 via SSH en tant que ec2-user/ubuntu/root user. Remplacez ubuntu par le nom d'utilisateur de votre Amazon Machine Image (AMI).

  2. Installez les outils d'audit :

    RHEL et CentOS

    # sudo yum install audit

    SUSE Linux

    # sudo zypper install audit

    Ubuntu

    # sudo apt install auditd
  3. Exécutez la commande auditctl pour créer des règles d'audit. Les définitions des règles d'audit se trouvent dans le fichier /etc/audit/audit.rules. Les définitions des règles d'audit personnalisées se trouvent dans le fichier /etc/audit/rules.d/custom.conf. Ces définitions sont persistantes. Vous pouvez également implémenter des règles lors de l'exécution.

    Exemples de règles

    Suivez l'utilisateur ou l'application qui accède à un certain fichier ou répertoire ou le modifie :

    # sudo auditctl -a always,exit -F arch=b64 -S rename,rmdir,unlink,unlinkat,renameat -F auid\>=500 -F auid\!=-1 -F dir=/root/test/ -F key=delete

    Identifiez l'utilisateur qui exécute une commande spécifique. Dans l'exemple suivant, la commande est sudo :

    # sudo auditctl -w /bin/sudo -p rwxa -k sudo

    Cet exemple utilise la liste de syntaxe suivante :

    -a - Ajoutez une nouvelle règle.
    -w - Insérez une montre pour l'objet du système de fichiers dans un chemin spécifique, par exemple /etc/shadow.
    -p \ - Définissez des filtres d'autorisations pour un système de fichiers.
    -k - Définissez une clé de filtre pour une règle d'audit. La clé de filtre identifie de manière unique les enregistrements d'audit produits par une règle.
    -F - Utilisez ce champ pour spécifier des options supplémentaires telles que l'architecture, le PID, le GID, l'auid, etc.
    -S - Utilisez ce champ pour un appel système. Il s'agit d'un nom ou d'un numéro.

    Pour une liste complète de la syntaxe et des commutateurs, consultez auditctl(8) et audit.rules(7) sur la page de manuel Linux de die.net.

    **Remarque :**Pour vous assurer que vos règles sont conservées après un redémarrage, modifiez audit.rules, puis ajoutez la règle suivante au fichier :

    RHEL 6, CentOS 6 ou Amazon Linux 1 :

    #sudo vi /etc/audit/audit.rules
    
    -a always,exit -F arch=b64 -S rename,rmdir,unlink,unlinkat,renameat -F auid>=500 -F auid!=-1 -F dir=/root/test/ -F key=delete
    -w /bin/sudo -p rwxa -k sudo

    RHEL 7, CentOS 7, Amazon Linux 2 ou Amazon Linux 2023 :

    # sudo vi /etc/audit/rules.d/audit.rules
    
    -a always,exit -F arch=b64 -S rename,rmdir,unlink,unlinkat,renameat -F auid>=500 -F auid!=-1 -F dir=/root/test/ -F key=delete
    -w /bin/sudo -p rwxa -k sudo
  4. Redémarrez le service auditd. Configurez le service auditd pour qu'il s'exécute au démarrage :

    # sudo chkconfig auditd on
    # sudo service auditd start
    # sudo service auditd stop
    # sudo service auditd restart

    Remarque :Lorsque vous redémarrez le service auditd dans CentOS et Red Hat Enterprise Linux (RHEL) 7, il est recommandé d'utiliser la commande service au lieu de la commandesystemctl. La commande systemctl peut provoquer des erreurs.

  5. Pour lire les journaux d'audit, exécutez la commande ausearch.

    Exemples de journaux d'audit

    Dans l'exemple suivant, l'utilisateur ec2-user (uid = ec2-user) a supprimé le fichier**/root/test/example.txt** :

    # sudo ausearch -i -k delete
    type=PROCTITLE msg=audit(04/04/20 19:41:51.231:3303) : proctitle=rm -rf /root/test/example.txt
    type=PATH msg=audit(04/04/20 19:41:51.231:3303) : item=1 name=/root/test/example.txt inode=16777349 dev=ca:01 mode=file,777 ouid=root ogid=root
    rdev=00:00 nametype=DELETE cap_fp=none cap_fi=none cap_fe=0 cap_fver=0
    type=PATH msg=audit(04/04/20 19:41:51.231:3303) : item=0 name=/tmp/test/ inode=16777328 dev=ca:01 mode=dir,777 ouid=root ogid=root rdev=00:00 nametype=PARENT cap_fp=none cap_fi=none
    cap_fe=0 cap_fver=0
    type=CWD msg=audit(04/04/20 19:41:51.231:3303) : cwd=/home/ec2-user
    type=SYSCALL msg=audit(04/04/20 19:41:51.231:3303) : arch=x86_64 syscall=unlinkat success=yes exit=0 a0=0xffffff9c a1=0xc5f290 a2=0x0 a3=0x165 items=2 ppid=3645
    pid=933 auid=ec2-user uid=ec2-user gid=ec2-user euid=ec2-user suid=ec2-user fsuid=ec2-user egid=ec2-user sgid=ec2-user fsgid=ec2-user tty=pts0 ses=1 comm=rm exe=/usr/bin/rm key=delete

    Dans l'exemple suivant, l'utilisateur ec2-user (uid= 1000) a exécuté la commande sudo su - avec le privilège sudo :

    # sudo ausearch -k sudo
    
    time->Mon Apr  6 18:33:26 2020
    type=PROCTITLE msg=audit(1586198006.631:2673): proctitle=7375646F007375002D type=PATH msg=audit(1586198006.631:2673): item=1 name="/lib64/ld-linux-x86-64.so.2" inode=5605 dev=103:05 mode=0100755 ouid=0 ogid=0 rdev=00:00 objtype=NORMAL cap_fp=0000000000000000 cap_fi=0000000000000000 cap_fe=0 cap_fver=0
    type=PATH msg=audit(1586198006.631:2673):
     item=0 name="/usr/bin/sudo" inode=12800710 dev=103:05 mode=0104111 ouid=0 ogid=0 rdev=00:00 objtype=NORMAL cap_fp=0000000000000000 cap_fi=0000000000000000 cap_fe=0 cap_fver=0
    type=CWD msg=audit(1586198006.631:2673):  cwd="/home/ec2-user"
    type=EXECVE msg=audit(1586198006.631:2673): argc=3 a0="sudo" a1="su" a2="-"
    type=SYSCALL msg=audit(1586198006.631:2673): arch=c000003e syscall=59 success=yes exit=0 a0=e8cce0 a1=e8c7b0 a2=e61720 a3=7ffde58ec0a0 items=2 ppid=2658 pid=3726 auid=1000 uid=1000 gid=1000 euid=0 suid=0 fsuid=0 egid=1000 sgid=1000 fsgid=1000
    tty=pts0 ses=4 comm="sudo" exe="/usr/bin/sudo" key="script"
AWS OFFICIEL
AWS OFFICIELA mis à jour il y a 6 mois