Monitorare i log di sistema con Graylog2

Da Guide@Debianizzati.Org.
Vai alla navigazione Vai alla ricerca
Debian-swirl.png Versioni Compatibili

Debian 9 "stretch"

Introduzione

Graylog è uno strumento di gestione del registro libero e open source basato su Java, Elasticsearch e MongoDB che può essere utilizzato per raccogliere, indicizzare e analizzare qualsiasi log server da una postazione centralizzata. Si può facilmente monitorare i SSH login e attività insolite per il debug di applicazioni e i registri utilizzando Graylog. Graylog fornisce un linguaggio di query avanzate, abilità di avviso, una pipeline di elaborazione per la trasformazione dei dati e molto altro.
Graylog è costituito da tre componenti:

  1. Elasticsearch: Memorizza tutti i messaggi di in ingresso e fornire una struttura di ricerca.
  2. MongoDB: È usato per database, memorizza le configurazioni e le meta-informazioni.
  3. Graylog server: riceve ed elabora i messaggi da vari input e fornire un'interfaccia web per l'analisi e il monitoraggio.

Prerequisiti

  • Un server che esegue Debian 9.
  • Minimo 4 GB DI RAM.
  • Un indirizzo IP statico, es: 192.168.0.187

Installazione prerequisiti

Prima di iniziare, sarà necessario installare Java 8 e altri pacchetti necessari al vostro sistema. Non tutte le richieste sono disponibili pacchetti in Debian 9 repository standard, quindi sarà necessario aggiungere all'elenco di origine del pacchetto Debian Backports:

# nano /etc/apt/sources.list

Aggiungere la seguente riga:

deb http://ftp.debian.org/debian jessie-backports main

Aggiorniamo la lista dei pacchetti:

# apt-get update -y
# apt-get upgrade -y

Una volta che il sistema sia aggiornato, installare tutti i pacchetti con il comando seguente:

# apt-get install apt-transport-https openjdk-8-jre-headless uuid-runtime pwgen -y

Una volta installati tutti i pacchetti necessari, si può procedere ad installare MongoDB.

Installare MongoDB

MongoDB è necessaria per memorizzare la configurazione e le meta-informazioni. MongoDB è disponibile in Debian 9; è possibile installare MongoDB eseguendo semplicemente il seguente comando:

# apt-get install mongodb - y

Una volta installato MongoDB, si può procedere ad installare Elasticsearch.

Installare Elasticsearch

Elasticsearch non è disponibile nei repository Debian e occorre perciò abilitare un repository esterno.
Scarichiamo prima di tutto la chiave del repository:

# wget -qO - https://packages.elastic.co/GPG-KEY-elasticsearch | apt-key add -

Quindi aggiungiamo il repository:

# nano /etc/apt/sources.list

Aggiungendo le seguenti linee:

deb https://packages.elastic.co/elasticsearch/2.x/debian stable main

Salviamo e aggiorniamo il sistema:

# apt-get update -y

Quindi installiamo Elasticsearch:

# apt-get install curl elasticsearch -y

Al termine dell'installazione occorre modificarne la configurazione:

# nano /etc/elasticsearch/elasticsearch.yml

introducendo i seguenti cambiamenti:

cluster.name: graylog
network.host: 192.168.0.187
discovery.zen.ping.timeout: 10s
discovery.zen.ping.multicast.enabled: false
discovery.zen.ping.unicast.hosts: ["192.168.0.187:9300"]

Salviamo e abilitiamo il demone all'avvio:

# systemctl start elasticsearch
# systemctl enable elasticsearch

Aspettiamo qualche secondo e verifichiamo che tutto funzioni, con il seguente comando di test:

# curl -XGET 'http://192.168.0.187:9200/_cluster/health?pretty=true'

Assicuriamoci che nell'output lo stato sia marcato come "green":

{
  "cluster_name" : "graylog",
  "status" : "green",
  "timed_out" : false,
  "number_of_nodes" : 1,
  "number_of_data_nodes" : 1,
  "active_primary_shards" : 1,
  "active_shards" : 1,
  "relocating_shards" : 0,
  "initializing_shards" : 0,
  "unassigned_shards" : 1,
  "delayed_unassigned_shards" : 0,
  "number_of_pending_tasks" : 0,
  "number_of_in_flight_fetch" : 0,
  "task_max_waiting_in_queue_millis" : 0,
  "active_shards_percent_as_number" : 50.0
}

Installare Graylog

Graylog non è disponibile nei repository ufficiali di Debian. Dobbiamo quindi aggiungere un nuovo repository:

# wget https://packages.graylog2.org/repo/packages/graylog-2.2-repository_latest.deb
# dpkg -i graylog-2.2-repository_latest.deb
# apt-get update -y
# apt-get install graylog-server -y

Una volta installato, avremo bisogno di impostare un secret per proteggere la password di accesso e di impostare un hash (sha256) per la password dell'utente root.
Generiamo il secret:

# pwgen -N 1 -s 96

Ci restituirà qualcosa del genere:

TRXbNPoW4gGC8BN8Gzl4wH3jtfLoi06WCJqia18UtYyPaNLx4r8U7jUPRlIJHoGGxrCjZVqAvW2DcueI6N1zHoy2bKEWLyyC

Quindi generiamo l'hash per la password di root:

# echo -n password_di_root | sha256sum

Avremo un risultato del genere:

e3c5925aa22abdfa18cf197a7b218fcad31acb6409d2e2dbebae807d3a9750ee

Prendiamo nota di entrambe le chiavi, perchè ci serviranno per impostare il file di configurazione di Graylog.
Adesso dobbiamo modificare il file di configurazione di Graylog:

# nano /etc/graylog/server/server.conf

apportando questi cambiamenti:

is_master = true
node_id_file = /etc/graylog/server/node-id
########past-your-password-secret-here#########
password_secret = TRXbNPoW4gGC8BN8Gzl4wH3jtfLoi06WCJqia18UtYyPaNLx4r8U7jUPRlIJHoGGxrCjZVqAvW2DcueI6N1zHoy2bKEWLyyC
root_username = admin
#######past-your-root-hash-password-here##########
root_password_sha2 = e3c5925aa22abdfa18cf197a7b218fcad31acb6409d2e2dbebae807d3a9750ee
root_timezone = UTC
plugin_dir = /usr/share/graylog-server/plugin
rest_listen_uri = http://0.0.0.0:9000/api/
rest_enable_cors = true
web_listen_uri = http://0.0.0.0:9000/
rotation_strategy = count
elasticsearch_max_docs_per_index = 20000000
elasticsearch_max_number_of_indices = 7
retention_strategy = delete
elasticsearch_shards = 4
elasticsearch_replicas = 1
elasticsearch_index_prefix = graylog
allow_leading_wildcard_searches = true
allow_highlighting = false
elasticsearch_cluster_name = graylog
elasticsearch_discovery_zen_ping_unicast_hosts = 192.168.0.187:9300
elasticsearch_http_enabled = false
elasticsearch_network_host = 0.0.00
elasticsearch_discovery_initial_state_timeout = 3s
elasticsearch_analyzer = standard
output_batch_size = 500
output_flush_interval = 1
output_fault_count_threshold = 5
output_fault_penalty_seconds = 30
processbuffer_processors = 5
outputbuffer_processors = 3
processor_wait_strategy = blocking
ring_size = 65536
inputbuffer_ring_size = 65536
inputbuffer_processors = 2
inputbuffer_wait_strategy = blocking
message_journal_enabled = true
message_journal_dir = /var/lib/graylog-server/journal
async_eventbus_processors = 2
lb_recognition_period_seconds = 3
alert_check_interval = 60
mongodb_uri = mongodb://localhost/graylog
mongodb_max_connections = 1000
mongodb_threads_allowed_to_block_multiplier = 5
content_packs_dir = /usr/share/graylog-server/contentpacks
content_packs_auto_load = grok-patterns.json
proxied_requests_thread_pool_size = 32

Salviamo e avviamo il demone:

# systemctl start graylog-server
# systemctl enable graylog-server

Configurare il firewall

Ricordiamoci di configurare il nostro firewall per lasciar passare il traffico sulla porta 9000 e 8514.

Utilizzo

L'interfaccia web di Graylog è in ascolto sulla porta 9000. Aprendo il browser web e digitando l'URL http://192.168.0.187:9000, dovremmo vedere la schermata di logim.
Entriamo con l'utente admin e la password di root che abbiamo configurato in root_password_sha2 nel file di configurazione di Graylog.
Per prima cosa occorre impostare la ricezione dei log via UDP, dal menu System -> Inputs -> Syslog UDP -> Launch new input, compilando la schermata che si apre.
In ogni client che vogliamo monitorare, occorre impostare correttamente Rsyslog:

nano /etc/rsyslog.conf

configurando queste opzioni:

# provides UDP syslog reception
$ModLoad imudp
$UDPServerRun 8514
$template GRAYLOGRFC5424,"%protocol-version% %timestamp:::date-rfc3339% %HOSTNAME% %app-name% %procid% %msg%\n"
*.* @192.168.0.187:8514;GRAYLOGRFC5424

Infine occorre salvare e riavviare il demone:

systemctl restart rsyslog


La documentazione ufficiale è disponibile a questo indirizzo: Documentazione Graylog

Sitografia

[[1]] [[2]]




Guida scritta da: Ferdybassi Swirl-auth40.png Debianized 40%
Estesa da:
Verificata da:

Verificare ed estendere la guida | Cos'è una guida Debianized