Tecnico

Pratica Pratica con il Stack ELK

Geoff Burke avatarGB
Geoff Burke · 9 minuti da leggere
Condividi:

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: 

  1. docker compose up -d  
  2. 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: 

http://docker01:5601 

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.

Rimani aggiornato

Inviando questo modulo, confermo di aver letto e accettato la Informativa sulla privacy.

Puoi annullare l'iscrizione in qualsiasi momento.