viernes, enero 17, 2014

Monitorear archivos log

Me surgio la necesidad de monitorear un archivo log para detectar los intentos fallidos por ssh a mi servidor, claro lo pude seguir haciendo con un cat /var/log/messages | grep "Invalid user" pero estarlo haciendo cada cierto tiempo la verdad se me olvidaba, asi que me puse a investigar como realizar un pequeño bash script que lo monitoreara por mi y al mismo tiempo me enviara un correo y esto fue lo que encontre:

#!/bin/sh

tail -fn0 /var/log/messages | \
while read line ; do
        echo "$line" | grep -q "Invalid user"
        if [ $? = 0 ]
        then
                 echo "$line" | mail -s "Server Hack" xtokio@gmail.com
        fi
done

Lo que hace es estar a la espera de nuevas lineas en el archivo log y validar si la linea agregada contiene la palabra "Invalid user" , si la encuentra entonces envio un correo para avisar.
No es la mejor ni la única opción, es un hack que con el tiempo se consumirá la memoria del servidor.