Loginuid (auid)
Loginuid (en anglais login UID, appelé auid, audit user ID, par les outils d'audit) : identité supplémentaire que le noyau attache à chaque processus, en plus de son UID et de son UID effectif. Elle est fixée une fois, à la connexion, par le module PAM pam_loginuid, qui écrit l'UID de la personne authentifiée dans /proc/self/loginuid ; tous les descendants en héritent, et ni sudo, ni su, ni un programme setuid ne la modifient.
C'est ce qui permet d'attribuer une action à une personne même après sudo -i : un événement d'audit qui porte uid=0 auid=1001 a été exécuté par root, mais remonte à la connexion de l'UID 1001. Les processus lancés au démarrage par systemd n'ont jamais traversé de connexion : leur auid est non défini, valeur 4294967295 (soit -1 sur 32 bits), écrite unset dans les règles. D'où le couple de filtres -F auid>=1000 -F auid!=unset, qui isole les actions humaines ; le premier seul inclurait tous les services, puisque 4294967295 est supérieur à 1000. ausearch -ul <uid> cherche par auid.
Par défaut, un processus doté de CAP_AUDIT_CONTROL peut réécrire son loginuid. La règle de contrôle --loginuid-immutable, en tête des règles d'audit, l'interdit une fois la valeur fixée ; elle n'est pas activée par défaut parce qu'elle empêche les conteneurs qui lancent leur propre sshd avec pam_loginuid de fonctionner.
Dans les cours
- Linux : administration système, leçon 15 : Tracer et contrôler l'intégrité : auditd et AIDE
- Linux : administration système, leçon 13 : Authentification : PAM, NSS et annuaires