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 EC2 Linux ?

Dernière mise à jour : 29/05/2020

Je souhaite suivre les activités, telles que l'activité des utilisateurs, les modifications de fichiers et de répertoire sur mon instance Linux Amazon Elastic Compute Cloud (Amazon EC2). Comment configurer le système d'audit Linux pour y parvenir ?

Brève description

Auditd est le composant d'espace utilisateur du système d'audit Linux. Auditd est utile pour suivre les activités suspectes et vous aide à identifier les domaines pour lesquels vous pouvez prendre des mesures de sécurité supplémentaires.

Auditd permet de :

  • Suivre l'utilisateur ou l'application qui accède aux fichiers et répertoires ou qui les modifie.
  • Suivre l'utilisateur qui exécute des commandes spécifiques.

Solution

1.    Connectez-vous à votre instance EC2 à l'aide de SSH comme ec2-user/ubuntu/root user. Remplacez ubuntu par le nom d'utilisateur de votre AMI.

2.    Exécutez la commande suivante pour installer le package d'audit :

RHEL et CentOS :

# sudo yum install audit

SUSE Linux :

# sudo zypper install audit

Ubuntu :

# sudo apt install auditd

3.    Créez des règles d'audit.

Les règles d'audit sont définies dans le fichier /etc/audit/audit.rules. Les règles d'audit personnalisées sont définies dans le fichier /etc/audit/rules.d/custom.conf. Les règles d'audit définies dans les fichiers sont persistantes. Les règles peuvent également être implémentées lors de l'exécution.

Exécutez la commande auditctl pour créer vos règles d'audit.

Exemples de règles

Suivez l'utilisateur ou l'application qui accède à un fichier ou répertoire donné 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

Suivez 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

Voici une liste de la syntaxe utilisée dans les exemples précédents :

-a – Ajoutez une nouvelle règle.
-w – Insérez une surveillance pour l'objet du système de fichiers à 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 sur une règle d'audit. La clé de filtre identifie de façon unique les enregistrements d'audit générés par une règle.
-F – Utilisez ce champ pour spécifier des options supplémentaires telles que l'architecture, PID, GID, auid, etc.
-S – Est un appel système. Il s'agit d'un nom ou d'un nombre.

Pour obtenir la syntaxe et la liste complète des commutateurs, consultez auditctl(8) et audit.rules(7) sur la page principale Linux.

Remarque : pour vous assurer que vos règles persistent 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/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

RHEL 7, CentOS 7 ou Amazon Linux 2 :

# 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 après avoir apporté des modifications. Assurez-vous que le service auditd est défini pour s'exécuter au démarrage.

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

Remarque : Une bonne pratique consiste à utiliser la commande service au lieu de la commande systemctl dans CentOS et RHEL 7 lors du redémarrage du service auditd. L'utilisation de la commande systemctl peut entraîner des erreurs.

5.    Exécutez la commande ausearch pour lire les journaux d'audit.

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"

Cet article vous a-t-il été utile ?


Besoin d'aide pour une question technique ou de facturation ?