Sous Linux la connexion est gérée par le système d’authentification PAM (Pluggable Authentication Modules). Comme son nom l'indique tout se passe dans différents modules qui permettent d'ajouter des fonctions comme différents systèmes pour l’authentification (LDAP, NSS) ou alors des fonction à exécuter lors de la connexion (montage de répertoires).
pam_exec
Le module pam_exec permet d'exécuter une commande arbitraire lors de la connexion. Il est donc de faire tout ce que l'on veut.
Pour l'activer il suffit d'ajouter la ligne suivante dans votre fichier
/etc/pam.d/common-session
:
[...]
session optional pam_exec.so commande
[...]
Remplacer commande
par la commande à exécuter.
Plusieurs variables d'environnements sont spécialement définies:
$PAM_TYPE
$PAM_USER
$PAM_RUSER
$PAM_RHOST
$PAM_SERVICE
$PAM_TTY
Notification de connexion par email
Une des fonction classiques de ce module est d'avoir une notification par
email lors d'une connexion. Pour cela il suffit de créer un script
/usr/local/bin/send-mail-on-login.sh>
qui :
- ne prendra en compte que les ouvertures de nouvelles connexions
- limitera à un nombre limité d'utilisateur (admin
et root
ici)
- Envoi les information par mail à l'administrateur
#!/bin/sh
if ([ "$PAM_TYPE" != "open_session" ] ||
([ "$PAM_USER" != "root" ] &&
[ "$PAM_USER" != "admin" ]))
then
exit 0
else
{
echo "User: $PAM_USER"
echo "Remote Host: $PAM_RHOST"
echo "Service: $PAM_SERVICE"
echo "TTY: $PAM_TTY"
echo "Date: `date`"
echo "Server: `uname -a`"
} | mail -s "$PAM_SERVICE login on `hostname -s` for account $PAM_USER" root
fi
exit 0
Ne pas oublier de le rendre executable à l'aide de la commande suivante:
# chmod + x /usr/local/bin/send-mail-on-login.sh
et de modifier le fichier /etc/pam.d/common-session
en accord:
[...]
session optional pam_exec.so /usr/local/bin/send-mail-on-login.sh
[...]
Maintenant à chaque connexion de root
ou admin
, un email sera
envoyer à l'administrateur. Par exemple pour une connexion d'admin
en
ssh :
User: admin
Remote Host: dslb-000-000-000-000.pools.arcor-ip.net
Service: sshd
TTY: ssh
Date: mercredi 22 juin 2011, 22:46:38 (UTC+0200)
Server: Linux test 2.6.32-5-amd64 #1 SMP Mon Mar 7 21:35:22 UTC 2011 x86_64 GNU/Linux