Mail all'accesso

6 risposte [Ultimo contenuto]
Ritratto di Dudoleitor
Dudoleitor
(Geek)
Offline
Geek
Iscritto: 24/09/2014
Messaggi: 56

Buongiorno a tutti,
ormai è da un po' che ho a che fare con debian e con il mondo linux in generale anche se ci sono vari aspetti in cui non so proprio come muovermi, quindi mi scuso in partenza se la mia domanda è banale.
Ho un piccolo VPS con Debian Jessie (64 bit) presso OVH e vorrei che mi inviasse una mail ogni volta gli utenti root e dudoleitor (quello che uso per l'accesso ssh) effettuano il login.
Il mail server è già configurato correttamente.
Ho aggiunto in fondo al file .bashrc in /root e in /home/dudoleitor questa riga
echo "Attenzione - Accesso root su vpsxxxxxx il" `date` "proveniente da" `who` | mail -s "Accesso shell root" dudoleitor@dudoleitor.com
che funziona correttamente: se entro con utente root piuttosto che dudoleitor manda la mail.

La mia domanda è: se un qualche bot o maleintenzionato riuscisse ad avere accesso ad uno dei due utenti, posso stare sicuro che il file .bashrc (e di conseguenza la stringa per l'invio della mail) venga sempre eseguito? Non ci sono modi per non eseguirlo?

Ho cercato di mettere in sicurezza il più possibile il server: firewall iptables con solo le porte necessarie aperte, cambiato la porta, disabilitato il rootlogin e forzato il login tramite chiave pubblica nelle configurazioni di ssh, pachetti sempre aggiornati; però non si può mai sapere dove potrei aver commesso un errore.

Grazie in anticipo,
Dudoleitor

Ritratto di mcortese
mcortese
(Moderatore)
Offline
Moderatore
Iscritto: 27/02/2009
Messaggi: 2918

Ci sono innumerevoli modi per aggirare un comando in .bashrc. Il più semplice è usare l'opzione --rcfile, ma l'aggressore potrebbe anche decidere di lanciare la shell /bin/sh invece di /bin/bash.

Secondo me un monitoraggio come questo va previsto al momento del login o dell'apertura della sessione (ad esempio con un modulo di PAM come pam_exec), non all'interno della sessione stessa.

Ritratto di Dudoleitor
Dudoleitor
(Geek)
Offline
Geek
Iscritto: 24/09/2014
Messaggi: 56

Grazie per l'interessamento. Mi scuso se solo ora ti rispondo ma non ho potuto fare diversamente.
Come posso fare per far mandare la mail al momento del login?

Ritratto di mcortese
mcortese
(Moderatore)
Offline
Moderatore
Iscritto: 27/02/2009
Messaggi: 2918

Come già suggerito, io andrei su pam_exec (8). Scriverei uno script che usa le variabili PAM_* per confezionare e mandare una mail. Ad esempio:

#!/bin/sh
if [ "$PAM_TYPE" = "open_session" ]; then
    who="$PAM_USER ($PAM_RUSER@$PAM_RHOST)"
    where=`hostname -f`
    when=`date`
    what="$PAM_SERVICE (tty $PAM_TTY)"
    echo "On $when, $who logged in to $where using $what" | sendmail -s "Login to $where" dudoleitor@dudoleitor.com
fi
Naturalmente puoi personalizzare il messaggio come vuoi, ad esempio inviando la mail solo se $PAM_USER è root, o altre condizioni, oppure includendo altre informazioni. Salva lo script come /usr/local/bin/mail_on_login (o con un altro nome che ti suggerisca a cosa serve) e ricorda di renderlo eseguibile:
chmod a+x /usr/local/bin/mail_on_login

Infine, devi dire a PAM di eseguire questo script (tramite il modulo pam_exec.so) ogni volta che un qualsiasi servizio (login, ssh, GDM...) tenta di aprire una sessione. In pratica occorre aggiungere una riga come questa al file /etc/pam.d/common-session:

session optional pam_exec.so /usr/local/bin/mail_on_login

Nota: non ho testato il tutto, spero di non aver commesso qualche errore grossolano...

Ritratto di Dudoleitor
Dudoleitor
(Geek)
Offline
Geek
Iscritto: 24/09/2014
Messaggi: 56

Ho provato a fare quanto mi hai detto e quando entro con l'utente dudoleitor esce questo errore:
/usr/local/bin/mail_on_login fallita: codice di uscita 75
Scusa se ti scrivo per questo problemino ma il problema è che non so dove mettere le mani

Ritratto di mcortese
mcortese
(Moderatore)
Offline
Moderatore
Iscritto: 27/02/2009
Messaggi: 2918

Temo di aver fatto un errore nello script: il comando per mandare la mail è mail, non sendmail. Chiedo scusa!

Ritratto di Dudoleitor
Dudoleitor
(Geek)
Offline
Geek
Iscritto: 24/09/2014
Messaggi: 56

Ho apportato la modifica ed ora funziona senza problemi, grazie mille!