La journalisation des connexions se fait avec un script /usr/local/sbin/login.sh
#!/bin/bash
# Script PAM pour journaliser les ouvertures et fermetures de session
[ -z "$PAM_USER" ] && exit 1
[ -z "$PAM_TYPE" ] && exit 1
timestamp=$(date '+%Y-%m-%d %H:%M:%S')
client="$HOSTNAME"
logfile="/var/log/connexions/users.log"
dirpath=$(dirname "$logfile")
if [ ! -d "$dirpath" ]; then
mkdir -p "$dirpath"
chmod 700 "$dirpath"
fi
case "$PAM_TYPE" in
open_session)
action="Ouverture de session"
;;
close_session)
action="Fermeture de session"
;;
*) # inutile ??
exit 0
;;
esac
echo "$timestamp - $action de $PAM_USER sur $client" >> "$logfile"
Ce script est exécuté par root on peut donc restreindre les droits
chmod 700 /usr/local/sbin/login.sh
Il est appelé à l’ouverture et la fermeture de session par le module PAM pam_exec.so
On modifie le fichier /etc/pam.d/sddm pour ajouter la ligne
session optional pam_exec.so /usr/local/sbin/login.sh
Pour conserver les logs sur la durée légale (1 an) et faire une compression-sauvegarde hebdomadaire :
Créer un fichier /etc/logrotate.d/connexions
/var/log/connexions/*.log {
weekly
rotate 52
compress
missingok
notifempty
create 600 root root
}
FIX : voir pour utiliser le partage de raplog