Envío de email cuando hay un login por ssh
En máquinas conectadas directamente a Internet (y esto incluye el acceso a ellas vía un puerto abierto del Firewall), es recomendable estar atento a los "logins de usuario" que se producen. En entornos profesionales, además del aviso de correo que programamos aquí, es conveniente hacer uso de otras herramientas tipo SIEM o HostIDS. En mi servidor, que es pequeñito y con pocos recursos, yo utilizo lo que sigue.
He agregado esto al fichero "/etc/pam.d/sshd".
# Envío de correo cuando login session optional pam_exec.so /root/bin/send-mail-on-ssh-login.sh
El fichero completo (/etc/pam.d/sshd), como referencia y copia de seguridad, está adjunto al final de este artículo (le has agregado la extensión .txt para que sea "subible" al blog).
Y he creado el script correspondiente en "root/bin" con este contenido:
#!/bin/sh
if [ "$PAM_TYPE" != "open_session" ]
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" example@example.com
fi
exit 0
¡OJO!: has de modificar la dirección de mail "example@example.com" por la tuya propia donde quieres recibirlos.
Referencias: 1.- http://blog.th-neumeier.de/2011/02/send-email-on-ssh-login-using-pam/ 2.- http://serverfault.com/questions/400613/send-notification-email-when-the-ubuntu-server-is-remoted-via-ssh 3.- http://www.tiger-computing.co.uk/get-notified-with-every-ssh-login/ 4.- http://www.farinspace.com/secure-login-linux-server/ 5.- http://www.mydigitallife.info/how-to-get-linux-server-sends-email-alert-on-root-login/
Para avisar cuando alguien hace login como root (no permitido por ssh, sólo como "promoción interna" ;-)), añadimos al .bashrc de root lo siguiente (¡¡OJO!! No hagas copy/paste de esta línea. Es mejor que la teclees pues debe de haber -introducidos por el "parser" de coloreado de sintaxis- códigos de control extraños en algunos caracteres que no funcionan si la copias):
echo 'ALERT - Root Shell Access () on:' `date` `who` | mail -s "Alert: Root Access from `who | cut -d"(" -f2 | cut -d")" -f1`" example@example.com
Espero que te sea útil.
Si consideras alguna parte mejorable, por favor, indícamelo con un comentario. Como siempre, te estaré muy agradecido.