Journaux de connexion

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