Noticia Recibir notificación por email cuando alguien acceda como root por SSH

Los que administramos servidores debemos llevar un control lo más estricto posible sobre todo lo que sucede en el servidor, una de las cosas que muchas veces necesitamos saber es cuándo se conecta un usuario por SSH (root incluído), para ello con un paquete y una línea nos llegaría a nuestro email notificaciones.

¿Se imaginan que cada vez que alguien se conecte por SSH con root les llegue un email que diga?

O sea, recibirían un email que les diría algo como esto:


[ miserver ] Alerta: Acceso a Terminal de Root el: 2014/01/21 (200.55.51.151)

O sea:


[ $NOMBRE_VPS ] Alerta: Acceso a Terminal de Root el: $FECHA ($IP_DE_QUIEN_SE_CONECTO)

Para lograr esto primero deben instalar un paquete llamado mailx.

Suponiendo que su servidor use Debian o alguna distro basada en él (recomiendo solo Debian, no Ubuntu ni similares para servidores) sería:

apt-get install mailx

Nota: El anterior comando es ejecutado como root directamente en el servidor, como es un VPS no se debe usar sudo de no ser estrictamente necesario.

Luego debemos poner en el .bashrc de root la siguiente línea:

echo 'ALERTA - Acceso a Terminal de Root en:' `hostname` 'el:' `date +'%Y/%m/%d'` `who | grep -v localhost` | mail -s "[ `hostname` ] Alerta: Acceso a Terminal de Root el: `date +'%Y/%m/%d'` `who | grep -v localhost | awk {'print $5'}`" [email protected]

Para editar /root/.bashrc usen algún editor en terminal como nano:

nano /root/.bashrc

Recuerden que deben especificar al final de la línea su email, simplemente cambien [email protected] por el email al que desean lleguen las notificaciones

Luego de poner (en cualquier lugar del archivo) la línea que les puse antes, salvamos el archivo con Ctrl + O (O de oso) y salimos del mismo con Ctrl + X

Listo, cada vez que alguien entre a la terminal de root se cargará el archivo .bashrc, que es algo que se hace por default siempre, y al cargarse el archivo se ejecutará la línea que envía el email, quedándonos en nuestra bandeja de entrada algo como:



La explicación de la línea es algo realmente simple:

  1. Mediante mailx envío el correo, con el parámetro -s “_____” especifico el asunto, y le paso con echo “____” y una tubería el contenido del body.
  2. `hostname` con esto saco el hostname o nombre de host, o sea, el nombre del VPS.
  3. `date +’%Y/%m/%d’` el comando date me muestra la fecha del sistema, el resto de las letras simplemente indica cómo deseo que se me muestre la fecha.
  4. who | grep -v localhost` Si ejecutan who en su ordenador les mostrará los usuarios activos, con un grep -v localhost me aseguro que solo muestre los que se han conectado desde una ubicación diferente al servidor en sí, o sea, SSH básicamente
  5. `who | grep -v localhost | awk {‘print $5′}` Lo que diferencia esta línea de la anterior es el awk, mediante el awk y la impresión de la 5ta columna es que saco la IP desde donde se conectaron al SSH

En fin, la línea es algo extensa y puede parecer compleja de entender, no obstante son muchos caracteres raros pero todo es bastante simple :)

Como siempre, espero les haya resultado de interés.

Saludos


RurtSba3ukA


Continúar leyendo...