Installazione e Configurazione di Graylog Server su CentOS 7
In questo articolo andremo a descrivere come installare e configurare la piattaforma di gestione log Graylog su CentOS 7.
Consideriamo di partire da una macchina CentOS 7 preinstallata ( qui l’articolo per l’installazione, considerare di allocare 4GB di RAM almeno) ed aggiorniamola
yum update
per il funzionamento di alcuni componenti è necessario installare la JDK (Java Development Kit)
yum install java-1.8.0-openjdk-headless
il primo componente dell’architettura da installare è il database NoSQL MongoDB trattato in un precedente articolo.
Il componente MongoDB è utilizzato dalla piattaforma Graylog per salvare i dati relativi alle configurazioni, la verifica di una corretta installazione è
mongo
> db.version()
4.0.9
continuiamo l’installazione con il componente Elasticsearch, anche in questo caso negli articoli precedenti era stata trattata l’installazione (qui l’ articolo).
Per verificare il corretto funzionamento eseguiamo la curl
curl -X GET "localhost:9200"
personalizziamo il cluster ( anche se per i nostri scopi avrà solo un nodo) modificando il file di configurazione
vim /etc/elasticsearch/elasticsearch.yml
ed impostiamo i seguenti paramentri
cluster.name: graylog
network.host: ip_server
systemctl restart elasticsearch
per la verifica dello stato del cluster eseguiamo
curl -XGET 'http://ip_server:9200/_cluster/health?pretty=true'
{
“cluster_name” : “graylog”,
“status” : “green”,
“timed_out” : false,
“number_of_nodes” : 1,
“number_of_data_nodes” : 1,
“active_primary_shards” : 0,
“active_shards” : 0,
“relocating_shards” : 0,
“initializing_shards” : 0,
“unassigned_shards” : 0,
“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” : 100.0
}
la funzione di Elasticsearch è salvare sotto un indice specifico tutti i log dei server da monitorare e quindi renderli facilmente ricercabili.
A questo punto installiamo Graylog, scarichiamo ed installiamo il repository
rpm -Uvh https://packages.graylog2.org/repo/packages/graylog-3.0-repository_latest.rpm
installiamo Graylog server
yum install graylog-server
systemctl enable graylog-server.service
systemctl start graylog-server.service
Modifichiamo il file di configurazione
vim /etc/graylog/server/server.conf
impostiamo obbligatoriamente il parametro password_secret e root_password_sha2 per l’avvio dell’applicativo Graylog, per il primo parametro come descritto nel file .conf è necessario impostare una password a 64 caratteri
yum install epel-release
yum install pwgen
pwgen -N 1 -s 96
q8EPLsHzXDTPre6VA0DxbWzY6Wd8VHiwN6R849pw40z63fkl4X07oBI2oDKzlvdGNBk4vbk50IePk2gV4QT84BWZ3mH5iYI0
ed impostiamo password_secret, mentre per il secondo impostiamo una root password con l’algoritmo di hash a 256 bit
echo -n "Enter Password: " && head -1 </dev/stdin | tr -d '\n' | sha256sum | cut -d" " -f1
viene richiesto di inserire la password e successivamente convertita, quindi la inseriamo nel file di configurazione la password.
In ultimo nel file di configurazione impostiamo il paramentro
http_bind_address = ip_server:9000
elasticsearch_hosts = http://ip_server:9200
e riavviamo
systemctl restart elasticsearch
systemctl restart graylog-server
avremo che il sistema sarà ok quando non avremo errori di collegamento ad Elasticsearch ed avremo il seguente messaggio
2019-05-02T17:47:45.777+02:00 INFO [ServerBootstrap] Graylog server up and running.
Per poter accedere alla piattaforma web avremmo necessità di abilitare la porta di default di Graylog
firewall-cmd --permanent --add-port=9000/tcp
firewall-cmd --reload
Adesso collegandoci al seguente indirizzo http://ip_server:9000
per accedere utilizziamo l’utente admin e la password inserita nel file di configurazione in sha 256 bit ed avremo
Per poter iniziare a ricevere log da altri server abbiamo la necessità di configurare gli input ( sono i punti di ricezione log) del nodo (il server in questione) di riferimento, creiamo un input da interfaccia grafica, in particolare da System–> Inputs
consideriamo il caso esempio di ricezione log dal demone rsyslog di CentOS, quindi dal menu a tendina selezioniamo Syslog UDP e successivamente “Launch new input“, definiamo l’input
impostiamo l’input globale, il titolo e una porta non standard ad esempio la 10514.
Impostiamo a livello firewall lato server Graylog l’apertura della porta
firewall-cmd --permanent --add-port=10514/udp
firewall-cmd --reload
mentre per quanto riguarda il server CentOS da monitorare, impostiamo il demone rsyslog ad inviare i log sulla porta definita sull’input lato server
vim /etc/rsyslog.conf
aggiungendo la seguente riga
*.* @ip_server:10514
a questo punto riavviamo il demone
systemctl restart rsyslog
e per far creare delle nuovi log al syslog riavviamo il demone del crond
systemctl restart crond
Adesso verifichiamo lato piattaforma web se il server Graylog ha ricevuto i log andando dal menu su Search