Diseñado para monitorizar la actividad del sistema a partir de un archivo de configuración que contiene los patrones que se deben buscar y las acciones que se deben realizar al encontrarlos.
Ejemplo básico de configuración para vigilar /var/log/auth.log:
$ nano ~/.swatchdogrc
watchfor /Failed password for/
echo
exec /home/tux/bin/swatchdogrc.sh "$0"
watchfor /FAILED/
echo red
throttle 300, lines=10
mail=admin@correo.com, subject="Failed Login Attempt"
watchfor /ssh.*: Failed password/
echo
bell
watchfor /segfault|kernel panic/
throttle 00:05:00
exec /home/tux/bin/fyi_kernel.sh "$0"
throttle 300, lines=10 enviará un correo electrónico cada 300 segundos, incluso si el error ocurre más de 10 veces en ese período, throttle 00:05:00 indica que como máximo avise 1 vez cada 5 minutos y el archivo que se lanza con el exec para mostrar un texto en pantalla y hasta que no se cierre permanece en la pantalla. Ver fyi:
$ nano ~/bin/swatchdog.sh
#!/bin/bash
msg="$*"
fyi -t 0 -i "/home/tux/Imatges/logos/gnu.png" "$msg"
$ swatchdog -c ~/.swatchdogrc -t /var/log/auth.log --daemon
$ swatchdog -c ~/.swatchdogrc -t /var/log/secure
$ swatchdog -c ~/.swatchdogrc -t '/var/log/nginx/site1/access_log /var/log/messages /var/log/auth.log' --daemon
Tambien es posible un swatchdog por log con configuraciones distintas:
$ swatchdog -c ~/.sw_auth.rc -t /var/log/auth.log --daemon
$ swatchdog -c ~/.sw_msgs.rc -t /var/log/messages --daemon
$ swatchdog -c ~/.sw_nginx.rc -t /var/log/nginx/site1/access_log --daemon
$ swatchdog -c ~/.swatchdogrc -t '/var/log/messages /var/log/auth.log' --tail-program-name=/usr/bin/tail --tail-args='-F' --pid-file=/run/swatchdog-logs.pid --daemon
Nota.- Si se usa --daemon, al recibir HUP o ALRM no recarga la config, simplemente termina; se tiene que relanzar.
1.-
Activar/desactivar el servicio con systemd
# nano /etc/systemd/system/swatchdog.service
[Unit]
Description=Swatchdog Log Monitor
After=network.target syslog.target
[Service]
Type=simple
ExecStart=/usr/bin/swatchdog -c /home/tux/.swatchdogrc -t /var/log/syslog
Restart=on-failure
[Install]
WantedBy=multi-user.target
# systemctl enable swatchdog.service
# systemctl start swatchdog.service
# systemctl status swatchdog.service