Lo tenía pendiente desde que monté el stack ELK con Metricbeat para sacar métricas de mis máquinas. Ahora le toca el turno a Auditbeat.
En este artículo no voy a comentar cómo instalar todos los componentes ELK, eso está ya escrito en el anterior post que he enlazado. Simplemente me voy a centrar en Auditbeat.
Primer paso, instalación del componente en Debian Stretch:
apt-get install auditbeat
Una vez instalado lo habilito para que inicie con la máquina:
systemctl enable auditbeat.service
Y deshabilito el servicio de auditd, no pueden estar corriendo a la vez como veremos más adelante:
systemctl disable auditd.service
Ahora pasamos a configurar Auditbeat. En el fichero de configuración /etc/auditbeat/auditbeat.yml lo primero que hago es apuntar a mi instancia de ElasticSearch y Kibana. En esta ocasión no voy a utilizar el stack Logstash:
output.elasticsearch: hosts: ["192.168.1.2:9200"] ... setup.kibana: host: "192.168.1.2:5601"
Auditbeat tiene dos módulos: auditd e integridad de ficheros.
El módulo auditd lee las reglas del directorio audit.rules.d como vemos:
audit_rule_files: [ '${path.config}/audit.rules.d/*.conf' ]
Es importante que en dicho directorio borremos el fichero sample de 32 bits (sample-rules-linux-32bit.conf) que viene de serie si estamos en un sistema de 64 bits y viceversa, de lo contrario al iniciar el demonio tendremos un mensaje de error. Las reglas que se cargan por defecto son suficientes para los dashboards que vamos a cargar en Kibana así que no hace falta que toquemos nada.
En cuando al módulo de integridad de ficheros añado algunos paths más sobre los que quiero monitorizar:
- module: file_integrity paths: - /bin - /usr/bin - /sbin - /usr/sbin - /etc - /boot - /root - /lib - /lib64
Una vez hecho esto tenemos todavía que dar algún paso más.
Cargamos los templates de Auditbeat en Elasticsearch:
auditbeat setup --template -E output.logstash.enabled=false -E 'output.elasticsearch.hosts=["192.168.1.2:9200"]'
Cargamos los dashboards:
auditbeat setup --dashboards
Hecho esto reiniciamos/arrancamos Auditbeat:
systemctl restart auditbeat.service
Como decía al principio no podemos tener ejecutándose a la vez auditd y auditbeat, obtendríamos el siguiente error al intentar arrancar auditbeat:
Failure receiving audit events	{"error": "failed to set audit PID. An audit process is already running (PID .....)"}
Ejemplo:
[root@jota-pc auditbeat]# tail -f auditbeat
2018-10-10T20:30:14.838+0200	INFO	[auditd]	auditd/audit_linux.go:241	Deleted 194 pre-existing audit rules.
2018-10-10T20:30:14.838+0200	INFO	[auditd]	auditd/audit_linux.go:260	Successfully added 9 of 9 audit rules.
2018-10-10T20:30:14.889+0200	INFO	[auditd]	auditd/audit_linux.go:284	audit status from kernel at start	{"audit_status": {"Mask":0,"Enabled":1,"Failure":1,"PID":16688,"RateLimit":0,"BacklogLimit":8192,"Lost":0,"Backlog":0,"FeatureBitmap":15,"BacklogWaitTime":0}}
2018-10-10T20:30:14.889+0200	INFO	[auditd]	auditd/audit_linux.go:308	Setting kernel backlog wait time to prevent backpressure propagating to the kernel.
2018-10-10T20:30:14.889+0200	ERROR	[auditd]	auditd/audit_linux.go:153	Failure receiving audit events	{"error": "failed to set audit PID. An audit process is already running (PID 16688)"}
2018-10-10T20:30:15.889+0200	INFO	pipeline/output.go:95	Connecting to backoff(elasticsearch(http://192.168.1.2:9200))
2018-10-10T20:30:15.892+0200	INFO	elasticsearch/client.go:712	Connected to Elasticsearch version 6.4.2
2018-10-10T20:30:15.894+0200	INFO	template/load.go:129	Template already exists and will not be overwritten.
2018-10-10T20:30:15.894+0200	INFO	pipeline/output.go:105	Connection to backoff(elasticsearch(http://192.168.1.2:9200)) established
2018-10-10T20:30:16.593+0200	INFO	[file_integrity]	file_integrity/eventreader_fsnotify.go:76	Started fsnotify watcher	{"file_path": ["/bin", "/etc", "/sbin", "/usr/bin", "/usr/sbin"], "recursive": false}
Un vistazo a los dashboards
Ya deberíamos tener disponibles los dashboards si los buscamos:
Tenemos un dashboard general:
Otro de integridad de ficheros:
Ejecuciones:
Y de sockets:
Con esto termino, aunque ahora me toca ponerme a trastear con los dashboards para personalizarlos un poco más.





