Graylog è uno strumento di gestione dei Log e open source basato su Java, Elasticsearch/OpenSearch 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/OpenSearch: 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.
Di seguito il tutorial che guida passo passo nell’installazione di Graylog 5.2.5 con Opensearch 2.5.0 e MongoDB 6.0.14 e OpenJDK 17
PREREQUISITI
Un server con Ubuntu 22.04 come sistema operativo e minimo 4 GB di RAM e 2 vCPU
Un dominio valido che punta all’indirizzo IP del server
Privilegi utente: utente root o non root con privilegi sudo
AGGIORNAMENTO SISTEMA
Prima di iniziare con l’installazione aggiornare i pacchetti di sistema alle ultime versioni disponibili con il comando:
0 |
sudo apt update && sudo apt -y full-upgrade |
Quindi riavviare il server con il comando:
0 |
[ -f /var/run/reboot-required ] && sudo reboot -f |
INSTALLAZIONE DELLE DIPENDENZE
Procedere con l’installazione delle dipendenze necessarie durante l’installazione di Graylog con i seguenti comando:
0 1 |
sudo apt update sudo apt install vim apt-transport-https uuid-runtime pwgen curl dirmngr |
INSTALLAZIONE DI OPENSEARCH
Opensearch è un altro componente fondamentale nell’installazione di Graylog. È un motore di ricerca e analisi distribuito ampiamente utilizzato per la ricerca full-text, l’analisi dei log, l’analisi aziendale e l’analisi degli eventi di sicurezza.
In Graylog, Opensearch archivia, cerca e analizza registri e messaggi da fonti esterne.
Opensearch non è ospitato sui repository ufficiali di Ubuntu quindi lo installeremo dal repository Elasticsearch.
Per fare ciò scaricare e aggiungere la chiave GPG Elasticsearch con il comando:
0 |
curl -o- https://artifacts.opensearch.org/publickeys/opensearch.pgp | sudo apt-key add - |
Aggiungere il repository di Opensearch al sistema con il comando:
0 |
echo "deb https://artifacts.opensearch.org/releases/bundle/opensearch/2.x/apt stable main" | sudo tee -a /etc/apt/sources.list.d/opensearch-2.x.list |
Aggiornare il repository con il comando:
0 |
sudo apt update |
Verificare tutte le versioni disponibili di OpenSearch con il comando:
0 |
sudo apt list -a opensearch |
Verificare dalla lista la versione stabile
ATTENZIONE: in questo tutorial installerò la versione 2.5.0
Dopo aver aggiornato la cache locale, installare Opensearch dal repository utilizzando il gestore pacchetti APT con il comando:
0 |
sudo apt-get install opensearch=2.5.0 |
Una volta completata l’installazione, è necessario apportare alcune modifiche al file di configurazione principale di Opensearch.
Utilizzare l’editor di testo preferito per accedere al file. Io utilizzerò l’editor della riga di comando nano.
Eseguire il comando:
0 |
sudo nano /etc/opensearch/opensearch.yml |
All’interno del file di configurazione individuare le seguenti righe e impostarle come di seguito:
0 1 2 3 4 5 6 7 8 |
cluster.name: graylog node.name: ${HOSTNAME} path.data: /var/lib/opensearch path.logs: /var/log/opensearch discovery.type: single-node network.host: 0.0.0.0 action.auto_create_index: false plugins.security.disabled: true indices.query.bool.max_clause_count: 32768 |
NOTA BENE: io per comodità ho commentato tutto all’interno del file ed ho aggiunte tutte le righe al fondo del file
Se è tutto corretto dovremmo vedere una schermata come quella sovrastante
Salvare e chiudere il file di configurazione
Abilitare le opzioni JVM con il comando:
0 |
sudo nano /etc/opensearch/jvm.options |
Aggiornare quindi le impostazioni Xms e Xmx con metà della memoria di sistema installata
0 1 |
-Xms2g -Xmx2g |
NOTA BENE: nel mio caso avendo una memoria di 4 GB ho impostato la metà e quindi 2G
Se è tutto corretto dovremmo vedere una schermata come quella sovrastante
Salvare e chiudere il file di configurazione
Configura i parametri del kernel in fase di runtime con i comandi:
0 1 |
sudo sysctl -w vm.max_map_count=262144 echo 'vm.max_map_count=262144' | sudo tee -a /etc/sysctl.conf |
Ricaricare systemd per applicare la modifica e avviare Opensearch con i comandi:
0 1 |
sudo systemctl daemon-reload sudo systemctl start opensearch.service |
E’ possibile verificare lo stato di Opensearch con il comando:
0 |
sudo systemctl status opensearch.service |
Abilitare l’avvio al boot di Opensearch con il comando:
0 |
sudo systemctl enable opensearch.service |
E’ possibile inviare una richiesta GET al nodo utilizzando lo strumento da riga di comando curl per visualizzare informazioni dettagliate su Elasticsearch. Di seguito il comando:
0 |
curl -X GET http://localhost:9200 |
Se è tutto corretto dovremmo visualizzare un output comem mostrato nell’immagine sovrastante
INSTALLAZIONE DEL DATABASE MONGODB
Nel server Graylog, il database MongoDB memorizza le informazioni di configurazione e i dati dell’utente.
In questo tutorial installeremo MongoDB versione 7
Importare la chiave pubblica utilizzata dal sistema di gestione dei pacchetti
Installare gnupgcurl con il comando:
0 |
sudo apt-get install gnupg curl |
Per importare la chiave GPG pubblica di MongoDB, eseguire il seguente comando:
0 |
curl -fsSL https://pgp.mongodb.com/server-6.0.asc | sudo gpg -o /usr/share/keyrings/mongodb-server-6.0.gpg --dearmor |
Creare un file di elenco per MongoDB in /etc/apt/sources.list.d/mongodb-org-6.0.list con il comando:
0 |
echo "deb [ arch=amd64,arm64 signed-by=/usr/share/keyrings/mongodb-server-6.0.gpg ] https://repo.mongodb.org/apt/ubuntu jammy/mongodb-org/6.0 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-6.0.list |
Usare il comando seguente per ricaricare il database dei pacchetti locale:
0 |
sudo apt-get update |
Installare l’ultima versione stabile di MongoDB con il comando:
0 |
sudo apt-get install -y mongodb-org |
Il comando installa il server database MongoDB insieme ai componenti principali del database inclusi gli strumenti della shell.
Una volta completata l’installazione, verificare la versione di MongoDB installata con il comando:
0 |
mongod --version |
Se è andato tutto a buon fine dovremmo vedere il seguente output:
0 1 2 3 4 5 6 7 8 9 10 11 12 |
db version v6.0.14 Build Info: { "version": "6.0.14", "gitVersion": "25225db95574916fecab3af75b184409f8713aef", "openSSLVersion": "OpenSSL 3.0.2 15 Mar 2022", "modules": [], "allocator": "tcmalloc", "environment": { "distmod": "ubuntu2204", "distarch": "x86_64", "target_arch": "x86_64" } } |
Il servizio MongoDB è disabilitato al momento dell’installazione per impostazione predefinita ed è possibile verificarlo eseguendo il comando:
0 |
sudo systemctl status mongod |
Dovremmo visualizzare il seguente output:
0 1 2 3 |
mongod.service - MongoDB Database Server Loaded: loaded (/lib/systemd/system/mongod.service; disabled; vendor preset: enabled) Active: inactive (dead) Docs: https://docs.mongodb.org/manual |
Abilitare MongoDB all’avvio con il comando:
0 |
sudo systemctl enable mongod |
Avviare il servizio di MongoDB con il comando:
0 |
sudo systemctl start mongod |
INSTALLAZIONE DI GRAYLOG SERVER
Ora siamo pronti per installare il server Graylog su Ubuntu.
Per impostazione predefinita, il pacchetto server Graylog non è disponibile sui repository Ubuntu. Pertanto, installeremo Graylog dal repository ufficiale Graylog.
Scaricare il pacchetto Graylog Debian con il comando:
0 |
wget https://packages.graylog2.org/repo/packages/graylog-5.2-repository_latest.deb |
Successivamente lanciare il comando dpkg per eseguire il pacchetto:
0 |
sudo dpkg -i graylog-5.2-repository_latest.deb |
Quindi aggiornare l’APT cache e procedere con l’installazione di Graylog Server con il comando:
0 |
sudo apt-get update && sudo apt-get install graylog-server |
Se è andato tutto a buon fine dovremmo vedere una schermata come l’immagine sovrastante
Una volta installato il server Graylog, è necessario generare una secret per proteggere le password degli utenti e una password crittografata per l’utente amministratore.
Per generare una password segreta per proteggere le password degli utenti, eseguire il comando seguente:
0 |
< /dev/urandom tr -dc A-Z-a-z-0-9 | head -c${1:-96};echo; |
Dovremmo visualizzare un output con la secret:
0 |
0EAt9EsPRfy9TJR8gGhLSH7E1COAE-1MUGNOXe0Ebm8OuPjqinkyPID0PROb5RoWUJwEG3FymThkXrury6TgibHrrYVXnGvF |
Successivamente generare una password crittografata per l’utente di accesso amministratore di Graylog con il comando:
0 |
echo -n "Enter Password: " && head -1 </dev/stdin | tr -d '\n' | sha256sum | cut -d" " -f1 |
Inserire la password desiderata quindi premere Invio
Sotto la password inserita verrà visualizzata la stessa criptata.
nel mio caso visualizzo questo: fcba8051ec9c89dfa788d2e093b54765629bc153237a2a4d26c0ae959500b4c5
A questo punto copiare entrambe la password criptate e aprire il file di configurazione di Graylog /etc/graylog/server/server.conf con il seguente comando:
0 |
sudo nano /etc/graylog/server/server.conf |
All’interno del file di configurazione cercare password_secret quindi incollare la prima secret generata
Dovremmo visualizzare un output come mostrato nell’immagine sovrastante
Sempre all’interno del file cercare root_password_sha2 e incollare la seconda secret creata
Dovremmo visualizzare un output come mostrato nell’immagine sovrastante
All’interno del file cercare la riga #http_bind_address = 127.0.0.1:9000 quindi decommentarla
Al posto dell’IP 127.0.0.1 inserire l’IP fisico del server
Dovremmo visualizzare un output come mostrato nell’immagine sovrastante
Salvare e chiudere il file di configurazione
Fare un reload di systemd con il comando:
0 |
sudo systemctl daemon-reload |
Quindi avviare il servizio di Graylog con il comando:
0 |
sudo systemctl start graylog-server.service |
Per verificare lo stato di Garylog eseguire il comando:
0 |
sudo systemctl status graylog-server.service |
Se è tutto OK dovremmo vedere il servizio Attivo come mostrato nell’immagine sovrastante
Abilitare l’avvio del servizio di Graylog all avvio del sistema con il comando:
0 |
sudo systemctl enable graylog-server.service |
CONFIGURAZIONE DI NGINX COME REVERSE PROXY
Graylog può fungere da frontend e non richiede un server web.
Tuttavia è preferibile configurare un server web come reverse proxy per la porta da 80 a 9000, su cui Graylog è in ascolto.
Ciò semplifica anche la configurazione di un certificato SSL per Graylog.
In questo tutorial utilizzerò Nginx come opzione preferita per un server web.
Per installare Nginx, eseguire il comando:
0 |
sudo apt install nginx |
Una volta installato creare un file host virtuale per Graylog con il comando:
0 |
sudo nano /etc/nginx/sites-available/graylog.conf |
Aggiungere queste righe di codice e assicurarsi di specificare l’IP server Graylog per l’attributo proxy_pass.
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
server { listen 80; server_name NOME-SERVER-GRAYLOG; 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/; proxy_pass http://IP-SERVER-GRAYLOG:9000; } } |
Modificare i seguenti parametri:
NOME-SERVER-GRAYLOG: Inserire il nome FQDN del server Graylog
IP-SERVER-GRAYLOG: Inserire l’IP del server Graylog
Salvare e chiudere il file di configurazione
Verificare che la sintassi del file di configurazione sia OK con il comando:
0 |
sudo nginx -t |
Se è tutto OK dovremmo visualizzare il seguente output:
0 1 |
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok nginx: configuration file /etc/nginx/nginx.conf test is successful |
Abilitare il Virtual Host file con il comando:
0 |
sudo ln -s /etc/nginx/sites-available/graylog.conf /etc/nginx/sites-enabled/ |
Eliminare il file dell’host virtuale predefinito con il comando:
0 |
sudo rm -rf /etc/nginx/sites-enabled/default |
Applicare le modifiche riavviando il servizio di Nginx con il comando:
0 |
sudo systemctl restart nginx |
Quindi verificare lo stato di Nginx con il comando:
0 |
sudo systemctl status nginx |
Se è tutto OK dovremmo vedere il servizio Attivo come mostrato nell’immagine sovrastante
ACCESSO ALL’INTERFACCIA WEB DI GRAYLOG
A questo punto aprire da un qualsiasi browser il link
http://IP-DEL-SERVER
Se è andato tutto a buon fine dovremmo vedere la pagina di Login di Graylog
Inserire admin e la password definita in precendeza quindi cliccare Sign In
Dopo essere entrati dovremmo visualizzare la Dashboard di Graylog
TOOL PER EVENTUALI PROBLEMATICHE
In alcuni casi dopo aver terminato l’installazione di Graylog non viene visualizzata la pagina di login ma un a finestra di popup dove inserire user e password.
Ovviamente inserendo le credenziali non funziona nulla.
In questo caso può tornare utile il seguente comando:
0 |
tail -f /var/log/graylog-server/server.log |
Dopo aver eseguito il comando seguire le istruzioni per sbloccare il problema dovuto quasi sempre a Elasticsearch o Opensearch.
Sono Raffaele Chiatto, un appassionato di informatica a 360 gradi.
Tutto è iniziato nel 1996, quando ho scoperto il mondo dell'informatica grazie a Windows 95, e da quel momento non ho più smesso di esplorare e imparare.
Ogni giorno mi dedico con curiosità e passione a scoprire le nuove frontiere di questo settore in continua evoluzione.
0 Comments