ELK Stack – Installazione Auditbeat
Auditbeat (disponibile per Linux, macOS e in beta per Windows) è ulteriore data-injection dello Stack Eastic che permette il monitoraggio dell’attività degli utenti e dei processi memorizzando i dati in Elasticsearch e analizzandoli tramite Kibana.
Auditbeat non utilizza auditd ma comunica direttamente con l’audit framework di Linux, collezionando gli stessi dati ed inviandoli in real-time allo Stack Elastic. Come gli altri beats, anche Auditbeat aggrega in un singolo evento i messaggi prima di inviarli.
Auditbeat permette di effettuare anche file-monitor per monitorare cambiamenti su file/directory critiche del sistema (Linux, macOS e Windows). Le modifiche ai files vengono inviate ad Elasticsearch e ogni messaggio contiene metadati ed hash crittografici del file per successive analisi.
L’installazione è molto semplice:
# yum -y update # yum -y install auditbeat
All’interno del file di configurazione di auditbeat ( /etc/auditbeat/auditbeat.yml ) troviamo la configurazione dei moduli di cui è composto:
- auditbeat
- file_integrity
- system
Modifichiamo il file di configurazione di Auditbeat in modo da:
- configurare i singoli moduli
- configurare il forward degli eventi verso Elasticsearch
- abbassare il livello di log da info (default) a warning:
#========================== Modules configuration ============================= auditbeat.modules: - module: auditd audit_rule_files: [ '${path.config}/audit.rules.d/*.conf' ] audit_rules: | -a always,exit -F arch=b32 -S all -F key=32bit-abi <== 32-bit system -a always,exit -F arch=b64 -S execve,execveat -k exec <== 64-bit system ## Identity changes. -w /etc/group -p wa -k identity -w /etc/passwd -p wa -k identity -w /etc/gshadow -p wa -k identity ## Unauthorized access attempts. -a always,exit -F arch=b64 -S open,creat,truncate,ftruncate,openat,open_by_handle_at -F exit=-EACCES -k access -a always,exit -F arch=b64 -S open,creat,truncate,ftruncate,openat,open_by_handle_at -F exit=-EPERM -k access - module: file_integrity paths: - /bin - /usr/bin - /sbin - /usr/sbin - /etc - module: system datasets: - host # General host information, e.g. uptime, IPs - login # User logins, logouts, and system boots. - package # Installed, updated, and removed packages - process # Started and stopped processes - socket # Opened and closed sockets - user # User information # How often datasets send state updates with the current state of the system (e.g. all currently running processes, all open sockets). state.period: 12h # Enabled by default. Auditbeat will read password fields in /etc/passwd and /etc/shadow and store a hash locally to detect any changes. user.detect_password_changes: true # File patterns of the login record files. login.wtmp_file_pattern: /var/log/wtmp* login.btmp_file_pattern: /var/log/btmp* ... #-------------------------- Elasticsearch output ------------------------------ output.elasticsearch: hosts: ["192.168.xxx.xxx:9200"] <== indirizzo/porta del nostro nodo elasticsearch username: "auditbeat_writer" <== user per connettersi a Elasticsearch (vedi dopo) password: "auditbeat_writer_password" <== pwd connettersi a Elasticsearch (vedi dopo) ... #================================ Logging ===================================== logging.level: warning <== impostiamo il livello di logging a warning
Come abbiamo già fatto per gli utenti filebeat_setup e filebeat_writer, creiamo in Kibana i ruoli e gli utenti per gestire il beat:
Management –> Security –> Roles –> Create role:
Rolename auditbeat_setup Cluster privileges monitor + manage_ilm + manage_ml index.name auditbeat-* index.privileges manage + read Rolename auditbeat_writer Cluster privileges monitor + read_ilm + cluster:admin/ingest/pipeline/get + cluster:admin/ingest/pipeline/put + cluster:admin/ilm/put index.name auditbeat-* index.privileges create_doc + view_index_metadata + create_index
Management –> Security –> Users –> Create user:
Username auditbeat_setup password <scelta da voi> Roles auditbeat_setup + kibana_user + ingest_admin + beats_admin Username auditbeat_writer password <scelta da voi> Roles auditbeat_writer
Cancelliamo eventuali indici auditbeat presenti in elasticsearch (ATTENZIONE: questa operazione, soprattutto se effettuata su sistemi in produzione, cancellerà tutti i dati presenti in Elasticsearch relativi all’indice auditbeat-*):
# curl -XDELETE -u auditbeat_setup:auditbeat_setup_password 'http://192.168.xxx.xxx:9200/auditbeat-*'
Creiamo in Elasticsearch gli indici che raccolgono i dati di Auditbeat e in Kibana le dashboard per analizzare i dati raccolti:
# auditbeat setup -e \ -E output.elasticsearch.username=auditbeat_setup \ -E output.elasticsearch.password=auditbeat_setup_password \ -E setup.kibana.host=192.168.xxx.xxx:5601 Overwriting ILM policy is disabled. Set `setup.ilm.overwrite:true` for enabling. Index setup finished. Loading dashboards (Kibana must be running and reachable) Loaded dashboards
Abilitiamo ed avviamo il servizio tramite systemd:
# systemctl enable --now auditbeat
I dati generati da Auditbeat, possono essere visualizzati ed analizzati tramite l’interfaccia Kibana dello Stack Elastic.
ELK Stack – Kibana Auditbeat Dashbords →