Condividi su Facebook
Ricevere una mail al login tramite ssh
Scritto da: Monska il 16/09/2009 alle 00:40
Tag: Programmazione, Linux, Bash, Informatica.Visto 409 volte.


Mail SSH Login

Spesso è utile, per ragioni di sicurezza, o solo per monitorare le attività sul nostro server, sapere quando qualcuno si connette tramite SSH senza per forza dover rimanere connessi al server.
Per esempio, ed è quello che sarà spiegato in questa guida, si può impostare l'invio di una mail ad uno specifico destinatario, nel momento in cui un determinato utente accede al sistema tramite ssh.

Per permettere il corretto funzionamento dello script, è necessario disporre dei seguenti comandi:

Code:

last
tr
cut
head
grep
mutt

comandi che sono spesso integrati di default nei sistemi GNU/Linux. In caso contrario provvedere all'installazione di tali comandi per il corretto funzionamento.

Passiamo ora allo script e alla sua descrizione nel dettaglio:

Code:

TEXT=$(last -n 1 | tr -s ' ' ' ' | cut -d ' ' --fields=1,3,4,5,6,7 | head -n 1 | grep -v :0)
if [ "$TEXT" != "" ]
then
   DESTINATARIO="destinatario@dominio"
   echo $TEXT > $HOME/.mailSsh
   mutt -s "Login in ssh" $DESTINATARIO login<$HOME/.mailSsh
   rm $HOME/.mailSsh
fi

Con la prima linea di codice salviamo nella variabile $TEXT una stringa del tipo:

Code:
<USER> <FROM> <DATE>

solo se è un accesso di tipo esterno.
Il controllo avviene basandosi sul DISPLAY utilizzato, che se diverso da :0 o :0.0 risulta essere un DISPLAY remoto (matching effettuato con il comando grep -v :0 che permette di eliminare dalla lista tutte le linee contenenti la stringa :0; per ulteriori informazioni si veda la pagina di manuale di grep).

Il controllo if [ "$TEXT" != "" ] permette di capire se ci sono o meno accessi remoti.
Nel caso la condizione sia verificata, il login appenna effettuato è un login di tipo remoto; si procede quindi con l'invio.
Assegnamo alla variabile $DESTINATARIO l'indirizzo a cui la mail dovrà arrivare.
Salviamo la variabile $TEXT in un file di testo con echo $TEXT > $HOME/.mailSsh e spediamo la mail con mutt -s "Login in ssh" $DESTINATARIO login<$HOME/.mailSsh.
Rimuoviamo quindi il file di testo temporaneo con rm $HOME/.mailSsh.

Abbiamo creato quindi uno script bash che invia mail nel caso di accesso tramite ssh.

Salviamo quindi lo script nella cartella /usr/bin o creiamo in tale cartella un link al nostro script.
Decidiamo ora gli utenti che vogliamo monitorare.
Posizioniamoci quindi nella cartella $HOME dell'utente, ed andiamo ad editare il file

Code:

.bashrc

aggiungendo in coda al file l'esecuzione del comando che abbiamo creato.
Il risultato dovrebbe essere una cosa del tipo:

Code:
# .bashrc

# Source global definitions
if [ -f /etc/bashrc ]; then
   . /etc/bashrc
fi

# User specific aliases and functions
alias ll='ls -l'
alias la='ls -al'

mailForSshLogin

La procedura può essere ripetuta su tutti gli utenti che si vogliono monitorare.

Possiamo ora eseguire dei test di login alla nostra macchina per controllare il corretto funzionamento dello script.

Potete scaricare direttamente lo script da qui


Aggiungi un commento:
Nick:
captchaInserire il codice: