Elasticsearch e Fluentd
Il Stack EFK
Abbiamo già esaminato lo stack ELK, ma come promesso all'inizio della serie, volevamo anche presentarvi un'alternativa a Logstash. Fluentd è più leggero e alcuni amministratori lo preferiscono.
Come nei nostri blog precedenti, puoi impostare un ambiente di lavoro clonando il nostro repository Git e seguire le istruzioni.
Perché EFK per la Sicurezza?
Lo stack EFK offre diversi vantaggi per il monitoraggio della sicurezza. Come abbiamo già accennato, Elasticsearch fornisce capacità di ricerca rapida su enormi set di dati, rendendolo ideale per analizzare i log di sicurezza provenienti da più fonti. Fluentd, proprio come Logstash nei nostri esempi precedenti, funge da strato di registrazione unificato che può analizzare, trasformare e instradare i dati di log da varie fonti in Elasticsearch. Kibana funge da frontend di visualizzazione, mentre Elastic Security aggiunge capacità SIEM dedicate, inclusi la ricerca di minacce, la gestione dei casi e le regole di rilevamento automatico.
Nelle prossime sezioni, discuteremo le principali differenze tra Fluentd e Logstash.
Architettura e Prestazioni
Logstash è costruito in Java/JRuby e tende ad essere più intensivo in termini di risorse, con un utilizzo di memoria più elevato ma un'eccellente capacità di elaborazione. Utilizza un'architettura basata su pipeline con fasi di input → filtro → output, particolarmente adatta per trasformazioni complesse.
Fluentd è scritto in Ruby con parti critiche per le prestazioni in C, rendendolo più leggero in termini di utilizzo della memoria e più efficiente per lo streaming di log ad alto volume. Utilizza un sistema di instradamento basato su tag che può essere più flessibile per scenari complessi di instradamento dei log.
Capacità di Parsing Syslog
Logstash eccelle nel parsing syslog con:
- Plugin di input syslog integrati ricchi che gestiscono vari formati RFC (RFC3164, RFC5424)
- Pattern grok potenti per il parsing personalizzato
- Supporto regex forte per l'estrazione di messaggi complessi
- Eccellente gestione dei dati strutturati all'interno dei messaggi syslog
Fluentd offre:
- Buon supporto syslog tramite plugin come fluent-plugin-syslog
- Parsing più leggero ed efficiente per scenari ad alto throughput
- Migliore adattamento per scenari in cui è necessario preservare la struttura originale del messaggio
- Configurazione più semplice per l'ingestione di syslog di base
Configurazione e Facilità d'Uso
Logstash utilizza un linguaggio specifico del dominio che è intuitivo per il pensiero basato su pipeline, ma può diventare complesso per regole di elaborazione intricate. La configurazione è molto espressiva per la trasformazione dei dati.
Fluentd utilizza un formato di configurazione più diretto che molti trovano più facile da comprendere e mantenere, specialmente per scenari con un alto volume di instradamento.
Ecosistema e Plugin
Logstash ha un ecosistema maturo con estesi plugin di filtro specificamente progettati per l'elaborazione e l'arricchimento dei log. Si integra perfettamente con l'intero Elastic Stack.
Fluentd ha un ampio ecosistema di plugin ed è più neutrale rispetto ai fornitori, rendendo più facile l'integrazione con vari backend oltre Elasticsearch.
Utilizzo della Memoria e delle Risorse
Per l'elaborazione di syslog specificamente, Fluentd utilizza tipicamente meno memoria e ha un'impronta più piccola, il che può essere cruciale in ambienti con risorse limitate o quando si elaborano volumi molto elevati di dati syslog.
Logstash richiede più risorse ma fornisce maggiore potenza di elaborazione per trasformazioni e filtraggio complessi.
Affidabilità e Durabilità dei Dati
Entrambi gestiscono syslog in modo affidabile, ma Fluentd ha meccanismi di buffering e ripetizione integrati che alcuni trovano più robusti per garantire la consegna dei dati. Logstash richiede configurazioni aggiuntive per garanzie di affidabilità simili.
Quale dovrei scegliere?
Se sei già investito nell'ecosistema Elastic e richiedi capacità avanzate di trasformazione dei dati, Logstash è una scelta forte. Per coloro che danno priorità all'efficienza delle risorse e a una configurazione più semplice—specialmente per l'ingestione di syslog—Fluentd potrebbe essere la scelta migliore.
Pratica con EFK
Configurare Elastic Security
Elastic Security è la base delle capacità SIEM di Elastic. Nella prossima sezione, utilizzeremo il nostro ambiente di lavoro EFK Docker Stack per esplorarlo nella pratica.
1. Clona il repository Git: https://github.com/object1st/efk-stack.git
Nota: Il repository è organizzato come mostrato di seguito. Più avanti nel processo di configurazione, dovrai aggiungere le password che crei ai file di configurazione fluentd.conf e kibana.yml.
2. Assicurati di aver installato docker e docker compose nella tua VM di test Ubuntu.Controlla il nostro blog precedente per istruzioni su questo processo.
3. Cambia nella directory.
cd efk-stack
4. Esegui questo comando per avviare l'ambiente:
docker compose up -d
5. Controlla se tutti i container sono in esecuzione:
docker ps
6. Controlla per assicurarti che i servizi siano in esecuzione senza errori nei container:
docker logs elasticseach
docker logs kibana
docker logs fluentd
Nota: Per Kibana e Fluentd, vedrai un errore poiché non abbiamo ancora impostato la sicurezza.
Configurare Password e Integrazione della Sicurezza
Passo 1: Imposta le Password per Elasticsearch
1. Per iniziare, dovrai creare password per gli utenti integrati in Elasticsearch. Esegui il seguente comando:
docker exec -it elasticsearch bin/elasticsearch-setup-passwords interactive
2. Questo ti chiederà di impostare password per diversi utenti. Devi solo ricordare le password per i seguenti due utenti:
- elastic
- kibana_system
3. Per gli altri utenti, puoi inserire qualsiasi password—non saranno necessarie per questo tutorial.
Passo 2: Aggiungi le Password ai File di Configurazione
1. Una volta create le password, aggiungile al tuo file di configurazione di Kibana:
File: kibana.yaml
2. Aggiorna o aggiungi le seguenti righe con le password che hai impostato:
3. Assicurati di sostituirlo con la password effettiva che hai creato.
Passo 3: Riavvia i Container di Kibana
Dopo aver aggiornato il file kibana.yaml con la password corretta, riavvia il container di Kibana per applicare le modifiche:
docker compose restart kibana
Passo 4: Aggiorna la Configurazione di Fluentd
Successivamente, aggiorna il tuo file fluentd.conf per includere la password di Elasticsearch che hai creato in precedenza. Questo assicura che Fluentd possa autenticarsi correttamente quando invia log a Elasticsearch.
Nota: Assicurati che la password sia memorizzata in modo sicuro e non esposta nel controllo di versione.
Passo 5: Riavvia Fluentd
Una volta aggiornata la configurazione, riavvia il container di Fluentd:
docker compose restart fluentd
Passo 6: Verifica lo Stato dei Container
Per confermare che sia Kibana che Fluentd stiano funzionando correttamente, controlla i loro log:
Log di Fluentd:
docker logs fluentd
Log di Kibana:
docker logs kibana
Cerca eventuali errori o avvisi che potrebbero indicare problemi di autenticazione o connettività.
Passo 7: Accedi a Kibana
1. Verrai accolto dalla seguente schermata di accesso:
2. Accedi utilizzando la password che hai creato per l'utente Elastic.
Ingestione di un Messaggio Syslog di Test in Fluentd
Per testare la tua configurazione, invierai un messaggio syslog di esempio in Fluentd, che lo analizzerà e lo inoltrerà a Elasticsearch. Kibana ti permetterà quindi di visualizzare i dati e creare avvisi utilizzando Elastic Security.
Passo 1: Crea un Modello di Indice
Prima di inviare dati, devi definire un modello di indice che corrisponda alla struttura dei log che Fluentd invierà.
- Naviga nella cartella Esempi nel tuo repository clonato.
- Apri il file denominato create_index_template.txt.
- Sostituisci la password segnaposto con la tua reale password Elastic.
- Copia l'intero contenuto del file.
- Incollalo nel tuo terminale e premi “Invio” per eseguire il comando.
- Se hai successo, dovresti vedere una risposta simile:
Questo conferma che il modello di indice è stato creato ed è pronto a ricevere dati.
Passo 2: Invia un Messaggio di Test Veeam Syslog
Esegui il seguente comando nel tuo terminale per simulare un avviso di ransomware Veeam:
echo '<14>1 2025-03-20T14:06:09.662307+02:00 VBRSRV01 Veeam_MP - - [origin enterpriseId="31023"] [categoryId=0 instanceId=41600 DetectionTimeUTC="03/20/2025 13:05:41" OibID="0e54d3bf-add8-48eb-9122-fad3ac1e8fb3" ActivityType="EncryptedData" UserName="TECH\user1" ObjectName="VM01" VbrHostName="vbrsrv01.tech.local" Description="Potential malware activity detected"]' | nc -u -q0 localhost 5514
Questo messaggio sarà acquisito da Fluentd, analizzato e inviato a Elasticsearch.
Passo 3: Crea un Modello di Indice in Kibana
1. In Kibana, vai su Gestione Stack → Modelli di Indice.
2. Clicca su “Crea modello di indice.”
3. Nel campo del nome del modello di indice, inserisci:
veeam-logs-*
4. Seleziona il campo timestamp appropriato dal menu a discesa.
5. Clicca su “Crea modello di indice.”
Ora dovresti vedere i dati del messaggio di test che hai appena inviato.
Creazione di Regole di Rilevamento in Elastic Security
Con i dati che fluiscono in Elasticsearch, ora puoi creare regole di rilevamento per identificare attività sospette.
Passo 1: Crea una Chiave API per le Regole di Rilevamento
Esegui il seguente comando per generare una chiave API per Elastic Security:
curl -u elastic:Yourelasticpassword -X POST "localhost:9200/_security/api_key" \
-H "Content-Type: application/json" \
-d'{
"name": "kibana-detection-rules",
"role_descriptors": {
"kibana_security": {
"cluster": ["manage_security", "monitor"],
"indices": [
{
"names": ["*"],
"privileges": ["read", "write", "create_index", "view_index_metadata"]
}
]
}
}
}'
Passo 2: Inizializza il Motore di Rilevamento
Esegui questo comando per inizializzare il motore di rilevamento in Kibana:
curl -u elastic:YOURELASTICPASSWORD -X POST "localhost:5601/api/detection_engine/index" -H 'Content-Type: application/json' -H 'kbn-xsrf: true'
Passo 3: Crea una Regola di Rilevamento Personalizzata
1. In Kibana, vai su Sicurezza → Regole.
2. Clicca su “Crea nuova regola.”
3. Scegli “Query personalizzata.”
4. Sotto Modelli di indice, rimuovi i valori predefiniti e aggiungi:
veeam-logs-*
5. Nel campo della query personalizzata, inserisci:
activity_type: "EncryptedData"
6. Compila i dettagli della regola:
- Nome: Veeam Avviso di Ransomware
- Descrizione: Rileva potenziali attività di ransomware da avvisi Veeam
- Severità: Alta
- Punteggio di Rischio: 75
7. Clicca su “Continua” e configura il programma:
- Per i test iniziali, considera di impostare un intervallo di programma breve—come ogni 20 secondi—per verificare rapidamente che gli avvisi vengano attivati come previsto. Puoi regolare questo intervallo in seguito in base alle tue esigenze operative.
8. Salta le azioni della regola per ora (opzionale). Non aggiungeremo azioni alla regola, ma puoi sperimentare se vuoi provare approcci diversi.
9. Clicca su “Crea & attiva regola.”
Passo 4: Attiva di Nuovo l'Avviso
Invia un altro messaggio di test per attivare la regola:
echo '<14>1 2025-03-20T14:06:09.662307+02:00 VBRSRV01 Veeam_MP - - [origin enterpriseId="31023"] [categoryId=0 instanceId=41600 DetectionTimeUTC="03/20/2025 13:05:41" OibID="0e54d3bf-add8-48eb-9122-fad3ac1e8fb3" ActivityType="EncryptedData" UserName="TECH\user1" ObjectName="VM01" VbrHostName="vbrsrv01.tech.local" Description="Potential malware activity detected"]' | nc -u -q0 localhost 5514
Ora dovresti vedere l'avviso apparire nella sezione Sicurezza → Avvisi. Puoi cliccare sull'avviso per visualizzare i dettagli e riconoscerlo.
Creazione di Dashboard di Sicurezza
Per costruire un dashboard di sicurezza, vai su Analisi → Dashboard e aggiungi queste visualizzazioni:
- Tentativi di Autenticazione Falliti nel Tempo: Un grafico a linee che mostra quando si verificano i fallimenti di accesso, aiutandoti a individuare schemi di attacco e periodi di alta attività.
- Top IP Sorgente per Tentativi Falliti: Una tabella che elenca gli indirizzi IP con il maggior numero di accessi falliti, rendendo facile identificare i trasgressori abituali.
- Distribuzione Geografica degli Attacchi: Una mappa che mostra da dove provengono gli attacchi, fornendoti una visione globale delle origini delle minacce.
- Rapporto di Successo vs Fallimento dell'Autenticazione: Un grafico a torta che confronta accessi riusciti e falliti per evidenziare attività insolite.
- Cronologia del Punteggio di Rischio: Un istogramma che mostra come i punteggi di rischio cambiano nel tempo, aiutandoti a rilevare picchi nei livelli di minaccia.
Funzionalità di Sicurezza Avanzate
Elastic Security offre strumenti per migliorare il rilevamento e l'analisi delle minacce:
- Cronologia: Consente agli analisti di esaminare gli eventi di sicurezza in dettaglio e comprendere come si svolgono gli attacchi.
- Regolazione delle Regole di Rilevamento: Aiuta a ridurre i falsi allarmi mantenendo il rilevamento accurato. Regola regolarmente le regole in base al comportamento normale del sistema. Utilizza l'apprendimento automatico per individuare attività insolite.
- Gestione dei Casi: Traccia le indagini e mantiene registri di audit. Le regole di rilevamento possono creare automaticamente casi con dettagli pertinenti per accelerare la risposta.
Considerazioni per la Produzione
Per distribuzioni sicure e affidabili:
- Rafforzamento della Sicurezza: Utilizza la crittografia TLS, applica autenticazione e autorizzazione, e applica aggiornamenti regolari. Distribuisci Elasticsearch in un cluster per alta disponibilità e imposta backup.
- Pianificazione delle Risorse: Elasticsearch ha bisogno di sufficiente memoria e di archiviazione veloce. Imposta politiche di retention dei log che bilanciano sicurezza e costi. Utilizza la gestione del ciclo di vita degli indici per gestire automaticamente i dati obsoleti.
- Sicurezza della Rete: Utilizza firewall per limitare l'accesso ai componenti EFK. Segmenta la tua rete per mantenere il sistema di sicurezza separato da altre infrastrutture.
Conclusione
Il stack EFK con Elastic Security ti offre una solida base per monitorare e rilevare minacce. Con questa configurazione, puoi raccogliere, elaborare e analizzare i log di sicurezza, rilevare minacce automaticamente e visualizzare i dati attraverso dashboard.
Man mano che il tuo sistema cresce, espandi le tue fonti di log, crea regole di rilevamento personalizzate e connettiti a feed di intelligence sulle minacce esterne. Un monitoraggio della sicurezza efficace richiede aggiornamenti regolari, regolazioni e analisti esperti. Lo stack EFK fornisce gli strumenti—il successo dipende da come li utilizzi.