Graylog Server è una suite software di gestione dei log open source pronta per l'impresa. Raccoglie registri da varie fonti e li analizza per scoprire e risolvere i problemi. Il server Graylog è fondamentalmente la combinazione di Elasticsearch, MongoDB e Graylog. Elasticsearch è un'applicazione open source molto popolare per archiviare testo e fornire funzionalità di ricerca molto potenti. MongoDB è un'applicazione open source per archiviare dati in formato NoSQL. Graylog raccoglie registri da varie fonti e fornisce una dashboard basata sul Web per la gestione e la ricerca nei registri. Graylog fornisce anche un'API REST sia per la configurazione che per i dati. Fornisce una dashboard configurabile che può essere utilizzata per visualizzare le metriche e osservare le tendenze utilizzando statistiche sul campo, valori rapidi e grafici da un'unica posizione centrale.
In questo tutorial imparerai a installare Graylog Server su CentOS 7. Questa guida è stata scritta per Graylog Server 2.3, ma potrebbe funzionare anche su versioni più recenti. Imparerai anche a installare Java, Elasticsearch e MongoDB. Proteggeremo anche l'istanza MongoDB e configureremo un proxy inverso Nginx per il dashboard e l'API basati sul web.
Prerequisiti
- Un'istanza del server Vultr CentOS 7 con almeno 4 GB di RAM.
- Un utente sudo .
In questo tutorial, useremo 192.0.2.1
come indirizzo IP pubblico del server e graylog.example.com
come nome di dominio puntato al server. Sostituisci tutte le occorrenze di 192.0.2.1
con il tuo indirizzo IP pubblico Vultr e graylog.example.com
con il tuo vero nome di dominio.
Aggiorna il tuo sistema di base usando la guida Come aggiornare CentOS 7 . Dopo aver aggiornato il sistema, procedere con l'installazione di Java.
Installa Java
Elasticsearch richiede Java 8 per funzionare. Supporta sia Oracle Java che OpenJDK, ma è sempre consigliabile utilizzare Oracle Java quando possibile. Oracle fornisce pacchetti RPM pronti per l'installazione. Scarica Oracle JDK RPM:
wget --no-cookies --no-check-certificate --header "Cookie:oraclelicense=accept-securebackup-cookie" "http://download.oracle.com/otn-pub/java/jdk/8u144-b01/090f390dda5b47b9b721c7dfaa008135/jdk-8u144-linux-x64.rpm"
Installa il pacchetto RPM.
sudo yum -y install jdk-8u144-linux-x64.rpm
Se Java è stato installato correttamente, dovresti essere in grado di verificarne la versione.
java -version
Vedrai il seguente output.
[user@vultr ~]$ java -version
java version "1.8.0_144"
Java(TM) SE Runtime Environment (build 1.8.0_144-b01)
Java HotSpot(TM) 64-Bit Server VM (build 25.144-b01, mixed mode)
Set JAVA_HOME
e JRE_HOME
variabile d'ambiente eseguendo:
echo "export JAVA_HOME=/usr/java/jdk1.8.0_144/" >> ~/.bash_profile
echo "export JRE_HOME=/usr/java/jdk1.8.0_144/jre" >> ~/.bash_profile
Ora, sorgente il file usando il seguente comando.
source ~/.bash_profile
Eseguire il echo $JAVA_HOME
comando per verificare se la variabile di ambiente è impostata o meno.
[user@vultr ~]$ echo $JAVA_HOME
/usr/java/jdk1.8.0_144/
Installa Elasticsearch
Elasticsearch è un'applicazione distribuita, in tempo reale, scalabile e altamente disponibile utilizzata per archiviare i registri e cercarli. Memorizza i dati negli indici e la ricerca tra i dati è molto veloce. Fornisce vari set di API, come l'API RESTful HTTP e l'API Java nativa. Elasticsearch può essere installato direttamente tramite il repository Elasticsearch. Crea un nuovo file repository per Elasticsearch.
sudo nano /etc/yum.repos.d/elasticsearch.repo
Popolare il file con il seguente contenuto.
[elasticsearch-5.x]
name=Elasticsearch repository for 5.x packages
baseurl=https://artifacts.elastic.co/packages/5.x/yum
gpgcheck=1
gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch
enabled=1
autorefresh=1
type=rpm-md
Importa la chiave PGP utilizzata per firmare i pacchetti. Ciò garantirà l'integrità dei pacchetti.
sudo rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch
Installa il pacchetto Elasticsearch:
sudo yum -y install elasticsearch
Una volta installato il pacchetto, apri il file di configurazione predefinito di Elasticsearch.
sudo nano /etc/elasticsearch/elasticsearch.yml
Trova la riga seguente, decommentala e modifica il valore da my-application
a graylog
.
cluster.name: graylog
Puoi avviare Elasticsearch e abilitarlo ad avviarsi automaticamente all'avvio:
sudo systemctl enable elasticsearch
sudo systemctl start elasticsearch
Elasticsearch ora è in esecuzione sulla porta 9200. Verifica che funzioni correttamente eseguendo:
curl -XGET 'localhost:9200/?pretty'
Dovresti vedere un output simile al seguente.
[user@vultr ~]$ curl -XGET 'localhost:9200/?pretty'
{
"name" : "-kYzFA9",
"cluster_name" : "graylog",
"cluster_uuid" : "T3JQKehzSqmLThlVkEKPKg",
"version" : {
"number" : "5.5.1",
"build_hash" : "19c13d0",
"build_date" : "2017-07-18T20:44:24.823Z",
"build_snapshot" : false,
"lucene_version" : "6.6.0"
},
"tagline" : "You Know, for Search"
}
Se riscontri errori, attendi qualche secondo e riprova, poiché Elasticsearch impiega del tempo a completare il processo di avvio. Elasticsearch ora è installato e funziona correttamente.
Installa MongoDB
MongoDB è un server di database NoSQL gratuito e open source. A differenza del database tradizionale che utilizza le tabelle per organizzare i propri dati, MongoDB è orientato ai documenti e utilizza documenti simili a JSON senza schemi. Graylog utilizza MongoDB per archiviare la sua configurazione e le sue meta informazioni. Può essere installato direttamente tramite il repository MongoDB. Crea un nuovo file repository per MongoDB.
sudo nano /etc/yum.repos.d/mongodb.repo
Popolare il file con il seguente contenuto.
[mongodb-org-3.4]
name=MongoDB Repository
baseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/3.4/x86_64/
gpgcheck=1
enabled=1
gpgkey=https://www.mongodb.org/static/pgp/server-3.4.asc
Installa MongoDB eseguendo:
sudo yum -y install mongodb-org
Avviare il server MongoDB e abilitare l'avvio automatico.
sudo systemctl start mongod
sudo systemctl enable mongod
Installa il server Graylog
Scarica l'ultimo repository per il server Graylog.
sudo rpm -Uvh https://packages.graylog2.org/repo/packages/graylog-2.3-repository_latest.rpm
sudo yum -y update
Installa Graylog eseguendo:
sudo yum -y install graylog-server
Il server Graylog è ora installato sul tuo server. Prima di poterlo avviare, dovrai configurare alcune cose.
Installa l' pwgen
utilità per generare password complesse.
sudo yum -y install pwgen
Ora genera un segreto per password complesse.
pwgen -N 1 -s 96
Verrà emesso in modo simile a:
[user@vultr ~]$ pwgen -N 1 -s 96
pJqhNbdEY9FtNBfFUtq20lG2m9daacmsZQr59FhyoA0Wu3XQyVZcu5FedPZ9eCiDfjdiYWfRcEQ7a36bVqxSyTzcMMx5Rz8v
Inoltre, genera un hash a 256 bit per la password admin
dell'utente root :
echo -n StrongPassword | sha256sum
Sostituisci StrongPassword
con la password che desideri impostare per l' admin
utente. Vedrai:
[user@vultr ~]$ echo -n StrongPassword | sha256sum
05a181f00c157f70413d33701778a6ee7d2747ac18b9c0fbb8bd71a62dd7a223 -
Apri il file di configurazione di Graylog:
sudo nano /etc/graylog/server/server.conf
Trova password_secret =
, copia e incolla la password generata tramite il pwgen
comando. Trova root_password_sha2 =
, copia e incolla l'hash SHA 256-bit convertito della tua password amministratore. Trova #root_email =
, commenta e fornisci il tuo indirizzo email. Rimuovi il commento e imposta il fuso orario su root_timezone
. Per esempio:
password_secret = pJqhNbdEY9FtNBfFUtq20lG2m9daacmsZQr59FhyoA0Wu3XQyVZcu5FedPZ9eCiDfjdiYWfRcEQ7a36bVqxSyTzcMMx5Rz8v
root_password_sha2 = 05a181f00c157f70413d33701778a6ee7d2747ac18b9c0fbb8bd71a62dd7a223
root_email = [email protected]
root_timezone = Asia/Kolkata
Abilitare l'interfaccia Graylog basata sul Web decommentando #web_enable = false
e impostando il valore su true
. Rimuovere anche il commento e modificare le seguenti righe come specificato.
rest_listen_uri = http://0.0.0.0:9000/api/
rest_transport_uri = http://45.76.214.19:9000/api/
web_enable = true
web_listen_uri = http://0.0.0.0:9000/
Salva il file ed esci dal tuo editor di testo.
Riavvia il servizio Graylog eseguendo:
sudo systemctl restart graylog-server
Per impostazione predefinita, l'interfaccia Web di Graylog è in ascolto localhost
sulla porta 9000 e l'API è in ascolto sulla porta 9000 con URL /api
. In questo tutorial, useremo Nginx come proxy inverso in modo che l'applicazione possa accedere tramite la porta HTTP standard. Installa il web server Nginx eseguendo:
sudo yum -y install nginx
Apri l'host virtuale predefinito digitando.
sudo nano /etc/nginx/nginx.conf
Trova il server
blocco sotto http
e sostituisci l'intero server
blocco con le seguenti righe.
server
{
listen 80 default_server;
listen [::]:80 default_server ipv6only=on;
server_name graylog.example.com 192.0.2.1;
location / {
proxy_set_header Host $http_host;
proxy_set_header X-Forwarded-Host $host;
proxy_set_header X-Forwarded-Server $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Graylog-Server-URL http://$server_name/api;
proxy_pass http://127.0.0.1:9000;
}
}
Avvia Nginx e abilitalo all'avvio automatico all'avvio:
sudo systemctl start nginx
sudo systemctl enable nginx
Se stai eseguendo un firewall sul tuo server, dovrai configurare il firewall per impostare un'eccezione per determinate porte. Consenti al servizio Elasticsearch e al proxy inverso Nginx di connettersi dall'esterno della rete.
sudo firewall-cmd --zone=public --permanent --add-service=http
sudo firewall-cmd --zone=public --permanent --add-port=9200/tcp
sudo firewall-cmd --reload
Se hai SELinux abilitato sul tuo sistema, dovrai aggiungere alcune eccezioni ai criteri SELinux.
sudo setsebool -P httpd_can_network_connect 1
sudo semanage port -a -t http_port_t -p tcp 9000
sudo semanage port -a -t http_port_t -p tcp 9200
sudo semanage port -a -t mongod_port_t -p tcp 27017
Conclusione
L'installazione e la configurazione di base del server Graylog sono ora complete. Ora puoi accedere al server Graylog su http://192.0.2.1
o http://graylog.example.com
se hai configurato DNS. Accedi utilizzando il nome utente admin
e la versione in testo normale della password che hai impostato in root_password_sha2
precedenza.
Congratulazioni: hai un server Graylog perfettamente funzionante installato sul tuo server CentOS 7.