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.