Openssh et envoi de mail

Tags: #<Tag:0x00007f50a2a894c8> #<Tag:0x00007f50a2a893b0> #<Tag:0x00007f50a2a891f8>

Bonjour à tous,
dans le cas d’un serveur ssh, je souhaiterais que ce dernier m’envoie un petit mail lors d’une connection (pas plus d’une ou deux connections attendues par semaine et uniquement deux utilisateurs avec un shell de connection). Idéalement même les échecs de connections devraient être transmis… Je pourrais ensuite enjoliver le tout pour recevoir des mails du type :

connection utilisateur TOTO depuis l'IP XXX.XXX.XXX.XXX, date : 28 avril 2019, 16h34

J’ai exploré plusieurs pistes, mais rien de bien folichon jusqu’à présent… :frowning:
Avez-vous une idée géniale pour faire ça proprement ?

Mes pistes :

  1. Modifier le ~/.bash_profile ou le ~/.profile des utilisateurs pour envoyer un mail automatiquement
    Simple et efficace, mais ça exige que ces fichiers soient en lecture seule par les utilisateurs (pour éviter de supprimer cette fonction). Par ailleurs, si on change le shell de connection ces deux scripts ne seront pas lus ! Enfin on passe à côté des erreurs de login/mot de passe.

  2. Modifier /etc/profile pour envoyer un mail
    Les utilisateurs ne peuvent plus modifier ce fichier, ce qui est un avantage.
    Mais ne perd-on pas l’information de savoir quel est l’utilisateur qui se connecte ? Par ailleurs, on est toujours shell-dependant et on passe aussi à côté des erreurs de login/mot de passe

  3. Modifier /etc/passwd pour pointer vers un executable qui enverrait un mail PUIS exécuterait bash
    Alors ça ça ne me paraît pas propre du tout…

  4. Je peux faire un force-command côté serveur ssh pour envoyer un mail PUIS exécuter bash
    Mais dans ce cas là, mes utilisateurs ne peuvent plus faire “ssh mon_serveur whoami” (ou n’importe quelle autre commande passée en argument…). En peaufinant, on devrait pouvoir résoudre ce problème, ceci dit…

  5. On peut également modifier /etc/sshrc
    mais la doc dit que ce fichier peut purement et simplement être by-passé si les utilisateurs ont leur propre sshrc ! Par ailleurs, la doc indique bien que sshrc répond à un besoin assez spécifique…

If ~/.ssh/rc exists, runs it; else if /etc/ssh/sshrc exists, runs it; otherwise runs xauth. The “rc” files are given the X11 authentication protocol and cookie in
standard input. See SSHRC, below.
(…)
The primary purpose of this file is to run any initialization routines which may be needed before the user’s home directory becomes accessible; AFS is a particular example of
such an environment.

  1. Est-ce que systemd et ses services “oneshot” ne pourraient pas m’aider ici ? Mais j’ai un peu lu la doc, et je n’ai rien vu qui puisse répondre à mon problème…

Tiens, une autre solution que je n’avais pas envisagée…
A creuser…

http://blog.th-neumeier.de/2011/02/send-email-on-ssh-login-using-pam/

Donut

Salut,
Tu as pensé a fail2ban, une bonne série de regex faites maison filtrant les logs ?

Alors là je te déconseille de t’envoyer un mail à chaque fois, tu va être surpris par le nombre d’échecs de connection ssh:
sur mon serveur à la maison qui est donc sur une IP de FAI, pas une IP qui est sensée être scannée en permanence, j’ai eu rien qu’hier plus de 500 ip foutues en jail par fail2ban (sans parler des centaines de tentatives de relai smtp et de tentative d’accés http sur diverses urls phpmyadmin/cpanel/plesk/webmin et autre que je n’ai bien sûr pas installés sur mon serveur).
Sur certains de mes serveurs en ligne, avec plusieurs noms de domaine associés, ça se compte en millier quotidiennement.
Si tu veux avoir un rapport sur les échecs de connection, installes logwatch, ça te fera une synthèse par mail de ce qu’il trouve de notable dans les logs.

Ca me semble être la meilleure piste à creuser, même s’il y a un infinitif à la place du participe passé et que ça pique les yeux.

J’avoue !

Mais “tu va être surpris”, ça pique aussi :wink:

A oui tiens.
J’ai oublié le ‘z’…

Bonjour à tous,
super merci pour la suggestion de fail2ban, ça semble bien correspondre à mon besoin !
Je vais regarder ça de près.

Ailleurs sur le net, il m’a également été suggéré d’utiliser pam_mail.so, qui est une autre solution possible.

Bonne journée à tous !

Donut

tu peux aussi mettre une commande dans ton fichier bash http://blogmotion.fr/systeme/notification-connexion-ssh-4246.

Par contre, pour plus de sécurité il faut installer fail2ban et le configurer pour qu’il ban les ip sur 6 mois pour être tranquille et qu’il surveille plusieurs tentatives sur 24h car il y a pas mal de “méchants” qui connaissent fail2ban (ou son principe) et attendent de se faire déblaklister pour revenir.