7.2 Auditoría y Logs en Linux¶
Introducción¶
En cualquier sistema Linux en producción, los logs son la principal fuente de verdad. Cuando algo falla —ya sea un servicio, una conexión o un intento de intrusión— la única forma fiable de entender qué ha ocurrido es a través de los registros generados por el sistema.
La auditoría y análisis de logs no es solo una tarea reactiva: es una disciplina crítica para la seguridad, cumplimiento normativo, diagnóstico y observabilidad. Un Sysadmin senior no solo lee logs, sino que los centraliza, correlaciona y los convierte en información accionable.
Objetivos de aprendizaje¶
Al finalizar este capítulo serás capaz de:
- Entender cómo Linux genera y gestiona logs.
- Utilizar
journalctlpara analizar eventos del sistema. - Localizar logs tradicionales en
/var/log. - Diagnosticar problemas mediante logs.
- Implementar auditoría básica del sistema.
- Identificar eventos de seguridad relevantes.
Conceptos Teóricos¶
1. ¿Qué es un log?¶
Un log es un registro cronológico de eventos generados por:
- el kernel
- servicios (
nginx,ssh, etc.) - aplicaciones
- usuarios
Ejemplo:
2. systemd-journald¶
En sistemas modernos, los logs se gestionan mediante:
- systemd-journald
Ventajas:
- centralización
- indexación
- filtrado avanzado
- persistencia opcional
3. Logs tradicionales¶
Ubicación:
Archivos importantes:
- /var/log/syslog → eventos generales
- /var/log/auth.log → autenticación
- /var/log/kern.log → kernel
- /var/log/nginx/access.log → acceso web
4. journalctl¶
Herramienta principal para consultar logs en systemd:
Permite:
- filtrar por servicio
- buscar por fecha
- seguir logs en tiempo real
5. Rotación de logs¶
Para evitar llenar el disco:
- herramienta: logrotate
Config:
6. Auditoría vs Logging¶
- Logging: registro de eventos
- Auditoría: análisis orientado a seguridad y trazabilidad
Laboratorio Práctico¶
Escenario¶
Un servicio web (nginx) falla intermitentemente. Necesitas:
- analizar logs
- identificar la causa
- detectar posibles accesos sospechosos
Paso 1: Ver logs del sistema¶
Explicación¶
-x→ contexto adicional-e→ ir al final
Paso 2: Filtrar por servicio¶
Paso 3: Tiempo real¶
Paso 4: Filtrado por tiempo¶
Ejemplo:
Paso 5: Revisar logs tradicionales¶
Paso 6: Monitorización en vivo¶
Paso 7: Buscar errores específicos¶
Paso 8: Аналizar accesos SSH¶
Paso 9: Identificar intentos fallidos¶
Paso 10: Uso de logrotate¶
Ver configuración:
Errores Comunes y Troubleshooting¶
1. Logs no persistentes¶
Por defecto, journald puede no guardar logs tras reinicio.
Solución:
Editar:
2. Disco lleno por logs¶
Ver uso:
Limpiar:
3. No aparecen logs de servicio¶
Verificar:
4. Logs rotados no accesibles¶
Leer:
5. Permisos insuficientes¶
Muchos logs requieren root:
Buenas Prácticas (Nivel Senior)¶
1. Centralización de logs¶
Usar:
- ELK Stack (Elasticsearch, Logstash, Kibana)
- Graylog
2. Política de retención¶
Ejemplo:
- logs críticos → 90 días
- logs normales → 30 días
3. Monitorización proactiva¶
Ejemplo:
Automatizar alertas.
4. Seguridad¶
Monitorizar:
5. Evitar saturación¶
Configurar límites:
6. Logs estructurados¶
Preferir aplicaciones que generen JSON logs.
7. Auditoría avanzada (auditd)¶
Instalar:
Ejemplo:
8. Correlación de eventos¶
No analizar logs de forma aislada:
- correlacionar red + sistema + app
Resumen y Siguiente Paso¶
Has aprendido a gestionar, analizar y auditar logs en Linux, utilizando tanto journald como logs tradicionales. Ahora puedes diagnosticar problemas complejos, detectar incidentes de seguridad y optimizar el almacenamiento de registros.
Este conocimiento es esencial para cualquier Sysadmin en producción.
El siguiente paso es entrar en uno de los sistemas de seguridad más potentes (y complejos) de Linux:
➡️ 7.3 SELinux y AppArmor, donde aprenderás a controlar el acceso a nivel de políticas de seguridad obligatorias (MAC).