Post

Parseo rapido de logs de correo y Apache

Parseo rapido de logs de correo y Apache

Parseo rapido de logs de correo y Apache

Este post recopila comandos para investigar accesos, autenticaciones fallidas y origenes mas frecuentes en logs de correo y Apache.

Estos comandos son para una primera mirada rapida, no para cerrar una investigacion por si solos. En Apache, $1 suele ser la IP origen y $9 el codigo HTTP, pero puede variar si cambia el formato del log o si hay proxy delante. Antes de compartir resultados, oculta IPs y conserva el log original.

Top IPs en Apache

1
awk '{print $1}' /var/log/apache2/access.log | sort | uniq -c | sort -nr | head

Codigos HTTP mas frecuentes

1
awk '{print $9}' /var/log/apache2/access.log | sort | uniq -c | sort -nr

Top IPs en logs SSL

1
awk '{print $1}' /var/log/apache2/ssl_access.log | sort | uniq -c | sort -nr | head

Autenticaciones fallidas en mail

1
grep -i 'auth failed\|authentication failed' /var/log/mail.log

Logins IMAP por usuario/IP

1
2
3
4
5
grep -i 'imap-login' /var/log/mail.log \
  | awk '{print $0}' \
  | sort \
  | uniq -c \
  | sort -nr

Reverse DNS rapido

1
2
3
4
for ip in $(awk '{print $1}' access.log | sort -u); do
  printf '%s ' "$ip"
  dig +short -x "$ip"
done

Consejos

  • Acotar por fecha antes de contar.
  • Separar bots conocidos de accesos reales.
  • No publicar IPs completas en informes publicos.
  • Guardar salidas en ficheros timestamp si la investigacion se repite.

Jitsi y Fail2ban

1
2
3
awk '/http-bind\?room=/ {print $1, $4, $7}' /var/log/apache2/jitsi/access.log | sort -u
fail2ban-client status
tail -n 50 /var/log/fail2ban.log

Alerta simple

1
2
3
curl -fsS -X POST "https://api.telegram.org/bot<TOKEN>/sendMessage" \
  -d chat_id="<CHAT_ID>" \
  --data-urlencode text="Revisar logs en <HOSTNAME>"
This post is licensed under CC BY 4.0 by the author.