Pratica Pratica con il Stack ELK
SIEM & Monitoring Blog Series: ELK Stack
In questo secondo episodio della nostra mini-serie ELK Stack all'interno della più ampia SIEM & Monitoring Blog Series, ci spostiamo dai concetti fondamentali all'implementazione pratica. Questo post ti guiderà nella configurazione di un ambiente di test ELK funzionale utilizzando Docker su una macchina virtuale Ubuntu, offrendoti un'area di prova per esplorare come Elasticsearch, Logstash e Kibana lavorano insieme per elaborare e visualizzare i dati.
Che tu sia un amministratore di backup o un professionista IT, questa guida offre un laboratorio personalizzabile dove puoi sperimentare con l'analisi dei messaggi Syslog di Veeam Backup & Replication e inoltrarli nel tuo stack ELK. L'obiettivo è fornire un ambiente sicuro e flessibile per l'apprendimento e il testing, non per il deployment in produzione.
Configurazione di Docker
Requisiti: Avrai bisogno di una VM server Ubuntu.
1. Prima di tutto, installeremo docker:
curl -fsSL https://get.docker.com | sh
sudo usermod -aG docker $USER
2. Disconnettiti e riconnettiti per verificare che Docker sia stato installato correttamente.
docker --version
docker compose version

Configurazione ELK
1. Esegui i seguenti comandi nella tua VM Ubuntu:
mkdir elk-stack
cd elk-stack
mkdir -p logstash/pipeline
mkdir -p elasticsearch
2. Crea il file di configurazione di Elasticsearch:
cat > elasticsearch/elasticsearch.yml << 'EOF'
cluster.name: "docker-cluster"
network.host: 0.0.0.0
discovery.type: single-node
xpack.security.enabled: false
xpack.monitoring.collection.enabled: true
EOF
3. Crea i file di configurazione per Logstash.
4. Nella riga di comando incolla questo comando per creare il file di configurazione di Logstash:
cat > logstash/pipeline/logstash.conf << 'EOF'
input {
tcp { port => 5000 codec => json_lines tags => ["tcp"] } syslog { port => 5514 tags => ["syslog"] } }
filter { if "syslog" in [tags] { if [program] =~ /Veeam/ { mutate { add_field => { "source_type" => "veeam" } add_field => { "category" => "backup" }
add_field => { "vendor" => "veeam" } } if [message] =~ /Job \[/ { grok { match => { "message" => "Job \[%{DATA:job_name}\]" } } } if [message] =~ /Success/ { mutate { add_field => { "backup_status" => "success" } } } else if [message] =~ /Warning/ { mutate { add_field => { "backup_status" => "warning" } } } else if [message] =~ /Error|Failed/ { mutate { add_field => { "backup_status" => "error" } } } } }
mutate { add_field => { "processed_by" => "logstash" } } }
output { if [source_type] == "veeam" { elasticsearch { hosts => ["http://elasticsearch:9200"] index => "veeam-logs-%{+YYYY.MM.dd}" } } else { elasticsearch { hosts => ["http://elasticsearch:9200"] index => "logs-%{+YYYY.MM.dd}" } } } EOF
5. Qui creeremo il nostro file docker-compose.yml che avrà tutti i componenti necessari per la configurazione del nostro laboratorio di test.
cat > docker-compose.yml << 'EOF'
servizi:
elasticsearch:
image: docker.elastic.co/elasticsearch/elasticsearch:7.17.0
container_name: elasticsearch
environment:
- discovery.type=single-node
- xpack.security.enabled=false
- cluster.name=docker-cluster
- network.host=0.0.0.0
- "ES_JAVA_OPTS=-Xms512m -Xmx512m"
ports:
- "9200:9200"
volumes:
- elasticsearch_data:/usr/share/elasticsearch/data
reti:
- elk
logstash:
immagine: docker.elastic.co/logstash/logstash:7.17.0
nome_contenitore: logstash
porte:
- "5044:5044"
- "5000:5000/tcp"
- "5514:5514/udp"
- "9600:9600"
volumi:
- ./logstash/pipeline:/usr/share/logstash/pipeline:ro
ambiente:
- "LS_JAVA_OPTS=-Xmx256m -Xms256m"
- ELASTICSEARCH_HOSTS=http://elasticsearch:9200
dipende_da:
- elasticsearch
reti:
- elk
kibana:
immagine: docker.elastic.co/kibana/kibana:7.17.0
nome_contenitore: kibana
porte:
- "5601:5601"
ambiente:
- ELASTICSEARCH_HOSTS=http://elasticsearch:9200
- SERVER_HOST=0.0.0.0
depends_on:
- elasticsearch
networks:
- elk
volumes:
elasticsearch_data:
networks:
elk:
driver: bridge
EOF
6. Ora avvia i contenitori:
- docker compose up -d
Accesso a Kibana nel tuo browser
Ora che tutto è configurato, puoi aprire Kibana nel tuo browser. Per impostazione predefinita, Kibana funziona sulla porta 5601, quindi dovrai navigare all'URL appropriato in base a dove è ospitato il tuo ambiente Docker.
Ad esempio, se la tua configurazione Docker è in esecuzione su una VM chiamata docker01, dovresti andare a:
Se la tua VM ha un nome DNS personalizzato come geoffsvm, allora l'URL sarebbe: http://geoffsvm:5601
In alternativa, se non hai un nome DNS configurato, puoi utilizzare l'indirizzo IP della VM:
http://[il-tuo-ip-vm]:5601
In definitiva, assicurati solo di puntare all'host corretto e di utilizzare la porta 5601, che è quella predefinita per Kibana.

Nota: Se in qualsiasi momento desideri ricominciare da capo, esegui i seguenti passaggi per cancellare la configurazione:
Per rimuovere tutti i contenitori, le reti e i volumi eseguire i seguenti comandi:
docker compose down --volumes --remove-orphans
docker system prune -a --volumes -f
Configurazione di Veeam VBR per inviare dati Syslog a ELK
Per ingerire i log nella nostra configurazione per vedere come funziona, configureremo Veeam VBR per inoltrare i suoi messaggi syslog a ELK:
1. Vai al menu a discesa in alto a sinistra e fai clic su "Opzioni".

2. Quindi fai clic sulla "Scheda di inoltro eventi."

3. Qui, aggiungeremo il server syslog che abbiamo creato in Docker.
Fai clic su "Aggiungi" e inserisci i dettagli.
Quindi, fai clic su uno dei seguenti:
- “Applica” per salvare e chiudere la finestra.
- “OK” per salvare e mantenere la finestra aperta.


Una volta premuto applica o ok, Veeam invierà il suo primo messaggio di test syslog a Elasticsearch.
VERIFICA Scoperta Log in Kibana
4. Torna all'interfaccia di Kibana.
5. Nel menu a discesa in alto a sinistra, fai clic su “Scopri.” Qui ti verrà presentato un invito a creare una nuova vista dei dati, inclusa una vista dei dati syslog per campo:

6. Fai clic su “Crea vista dei dati.”

Puoi vedere che il nostro server Elasticsearch ha già ricevuto alcuni messaggi syslog da Veeam. Quando configuri le impostazioni del server syslog in Veeam, invia automaticamente un messaggio di test. Questo ti consente di verificare che il tuo sistema di monitoraggio o SIEM stia ricevendo i log correttamente.
Nomineremo la nostra vista dei dati Veeam_Logs e utilizzeremo un modello di indice che corrisponde ai log già ingeriti.

7. Fai clic su “Salva vista dei dati in Kibana.”
8. Premi "Scopri" nel menu a sinistra della pagina per vedere i messaggi di log da VBR.


Conclusione
Con il tuo laboratorio ELK attivo e funzionante, hai fatto un passo importante verso la costruzione di un ambiente SIEM funzionale. In questo post, abbiamo esaminato la configurazione dei contenitori Docker per Elasticsearch, Logstash e Kibana, configurato una pipeline Logstash per i messaggi syslog di Veeam e esplorato quei log in Kibana. Ora hai una solida base per ingerire e visualizzare i dati di log in un ambiente di test controllato.
Nel post finale di questa mini-serie il mese prossimo, costruiremo su questa base approfondendo ElasticSecurity ed esplorando come migliora il rilevamento delle minacce e l'allerta all'interno dell'ecosistema ELK. Introdurremo anche Fluentd come alternativa a Logstash, confrontando i due strumenti e mostrando come configurare Fluentd per inoltrare i log a Elasticsearch. Se sei interessato a casi d'uso di monitoraggio della sicurezza, creazione di dashboard e ottimizzazione della tua pipeline di log, non vorrai perderti ciò che verrà dopo.