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>"
|