Monitorare i log di sistema con Graylog2: differenze tra le versioni
(3 versioni intermedie di uno stesso utente non sono mostrate) | |||
Riga 36: | Riga 36: | ||
MongoDB è necessaria per memorizzare la configurazione e le meta-informazioni. MongoDB è disponibile in Debian 9; è possibile installare MongoDB eseguendo semplicemente il seguente comando: | MongoDB è necessaria per memorizzare la configurazione e le meta-informazioni. MongoDB è disponibile in Debian 9; è possibile installare MongoDB eseguendo semplicemente il seguente comando: | ||
<pre> | <pre> | ||
# apt-get install | # apt-get install mongodb - y | ||
</pre> | </pre> | ||
Una volta installato MongoDB, si può procedere ad installare Elasticsearch. | Una volta installato MongoDB, si può procedere ad installare Elasticsearch. | ||
Riga 104: | Riga 104: | ||
} | } | ||
</pre> | </pre> | ||
==Installare Graylog== | |||
Graylog non è disponibile nei repository ufficiali di Debian. Dobbiamo quindi aggiungere un nuovo repository: | |||
<pre> | |||
# 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 | |||
</pre> | |||
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. | |||
<br/> | |||
Generiamo il secret: | |||
<pre> | |||
# pwgen -N 1 -s 96 | |||
</pre> | |||
Ci restituirà qualcosa del genere: | |||
<pre> | |||
TRXbNPoW4gGC8BN8Gzl4wH3jtfLoi06WCJqia18UtYyPaNLx4r8U7jUPRlIJHoGGxrCjZVqAvW2DcueI6N1zHoy2bKEWLyyC | |||
</pre> | |||
Quindi generiamo l'hash per la password di root: | |||
<pre> | |||
# echo -n password_di_root | sha256sum | |||
</pre> | |||
Avremo un risultato del genere: | |||
<pre> | |||
e3c5925aa22abdfa18cf197a7b218fcad31acb6409d2e2dbebae807d3a9750ee | |||
</pre> | |||
Prendiamo nota di entrambe le chiavi, perchè ci serviranno per impostare il file di configurazione di Graylog. | |||
<br/> | |||
Adesso dobbiamo modificare il file di configurazione di Graylog: | |||
<pre> | |||
# nano /etc/graylog/server/server.conf | |||
</pre> | |||
apportando questi cambiamenti: | |||
<pre> | |||
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 | |||
</pre> | |||
Salviamo e avviamo il demone: | |||
<pre> | |||
# systemctl start graylog-server | |||
# systemctl enable graylog-server | |||
</pre> | |||
==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. | |||
<br/> | |||
Entriamo con l'utente admin e la password di root che abbiamo configurato in <code>root_password_sha2</code> nel file di configurazione di Graylog. | |||
<br/> | |||
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. | |||
<br/> | |||
In ogni client che vogliamo monitorare, occorre impostare correttamente Rsyslog: | |||
<pre> | |||
nano /etc/rsyslog.conf | |||
</pre> | |||
configurando queste opzioni: | |||
<pre> | |||
# 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 | |||
</pre> | |||
Infine occorre salvare e riavviare il demone: | |||
<pre> | |||
systemctl restart rsyslog | |||
</pre> | |||
<br/> | |||
La documentazione ufficiale è disponibile a questo indirizzo: [http://docs.graylog.org/en/2.2/pages/getting_started.html Documentazione Graylog] | |||
==Sitografia== | ==Sitografia== |
Versione attuale delle 13:00, 24 ott 2017
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:
- Elasticsearch: Memorizza tutti i messaggi di in ingresso e fornire una struttura di ricerca.
- MongoDB: È usato per database, memorizza le configurazioni e le meta-informazioni.
- 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
Guida scritta da: Ferdybassi | Debianized 40% |
Estesa da: | |
Verificata da:
| |
Verificare ed estendere la guida | Cos'è una guida Debianized |