Installa Graylog Server su Debian 11|10 con Let's Encrypt
In questa guida vedremo come installare il server Graylog su Debian 11|10 con Let's Encrypt SSL. Ma prima di immergerci nel nocciolo della questione di questo strumento, cerchiamo di capire di cosa si tratta. Graylog è uno strumento di gestione e aggregazione dei log open source gratuito e open source utilizzato per archiviare, analizzare e inviare avvisi dai log raccolti. Può essere utilizzato nell'analisi di dati sia strutturati che non strutturati. Graylog si basa sui seguenti componenti:
- Java /OpenJDK: utilizzato come ambiente di runtime per ElasticSearch.
- ElasticSearch: questo è lo strumento di analisi dei log per Graylog Server.
- MongoDB: memorizza i dati e le configurazioni.
- Graylog Server: il server che trasmette i log per la visualizzazione utilizzando fornisce un'interfaccia Web integrata.
Requisiti di installazione.
- Memoria superiore a 4 GB.
- Spazio di archiviazione superiore a 20 GB.
- 4 core della CPU
- Debian 10/11 installata e aggiornata.
- Tutti i pacchetti aggiornati.
Una volta soddisfatti tutti i requisiti di cui sopra, tuffiamoci nel processo di installazione.
Passaggio 1: installa Java su Debian 11|10
Nell'installazione di Graylog, la versione Java consigliata è qualsiasi versione successiva a Java 8. In questa guida utilizzeremo Java OpenJDK 11. Installa Java OpenJDK 11 su Debian 11/10 utilizzando il comando seguente.
sudo apt update
sudo apt install -y apt-transport-https openjdk-11-jre-headless uuid-runtime pwgen curl dirmngr
Verificare la versione installata di Java.
$ java -version
openjdk version "11.0.12" 2021-07-20
OpenJDK Runtime Environment (build 11.0.12+7-post-Debian-2)
OpenJDK 64-Bit Server VM (build 11.0.12+7-post-Debian-2, mixed mode, sharing)
Passaggio 2: installa ElasticSearch su Debian 11|10.
Qui Elasticsearch viene utilizzato per archiviare e offrire analisi in tempo reale dei log con un'interfaccia web RESTful.
Memorizza i dati inviati dal server Graylog e visualizza i messaggi quando richiesto dall'utente in un'interfaccia web.
Aggiungiamo prima la chiave GPG Elasticsearch.
wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add -
Quindi aggiungi il repository Elasticsearch su Debian 11/10
echo "deb https://artifacts.elastic.co/packages/oss-7.x/apt stable main" | sudo tee /etc/apt/sources.list.d/elastic-7.x.list
Con il repository aggiunto, installa Elasticseach come di seguito.
sudo apt update
sudo apt install -y elasticsearch-oss
Quindi esegui le configurazioni sul file YAML e imposta il nome del cluster su graylog come di seguito.
sudo apt install vim
sudo vim /etc/elasticsearch/elasticsearch.yml
Trova e imposta il nome del cluster e aggiungi le righe seguenti:
cluster.name: graylog
action.auto_create_index: false
Ricarica e avvia il servizio Elasticsearch come di seguito.
sudo systemctl daemon-reload
sudo systemctl start elasticsearch
sudo systemctl enable elasticsearch
Controlla lo stato del servizio:
$ systemctl status elasticsearch
● elasticsearch.service - Elasticsearch
Loaded: loaded (/lib/systemd/system/elasticsearch.service; enabled; vendor preset: enabled)
Active: active (running) since Thu 2021-08-26 20:41:39 UTC; 2s ago
Docs: https://www.elastic.co
Main PID: 16515 (java)
Tasks: 50 (limit: 4678)
Memory: 1.1G
CPU: 22.106s
CGroup: /system.slice/elasticsearch.service
└─16515 /usr/share/elasticsearch/jdk/bin/java -Xshare:auto -Des.networkaddress.cache.ttl=60 -Des.networkaddress.cache.negative.ttl=10 -X>
Aug 26 20:41:28 logs.techwizpro.com systemd[1]: Starting Elasticsearch...
Aug 26 20:41:39 logs.techwizpro.com systemd[1]: Started Elasticsearch.
Nel caso in cui Elasticsearch non si avvii, dovrai modificareetc/elasticsearch/jvm.options per adattarlo alla RAM disponibile.
sudo vim /etc/elasticsearch/jvm.options
Nel file, trova e sostituisci le opzioni seguenti se la tua RAM è inferiore a 4 GB.
# Xms represents the initial size of total heap space
# Xmx represents the maximum size of total heap space
-Xms512m
-Xmx512m
Quindi avvia Elasticsearch e procedi come di seguito.
Per impostazione predefinita, Elasticsearch viene eseguito sulla porta 9200, verificalo utilizzando il comando cURL riportato di seguito.
curl -X GET http://localhost:9200
Output di esempio:
{
"name" : "logs.techwizpro.com",
"cluster_name" : "graylog",
"cluster_uuid" : "BGPuR_1OQaOF_YWgvXDxeQ",
"version" : {
"number" : "7.10.2",
"build_flavor" : "oss",
"build_type" : "deb",
"build_hash" : "747e1cc71def077253878a59143c1f785afa92b9",
"build_date" : "2021-01-13T00:42:12.435326Z",
"build_snapshot" : false,
"lucene_version" : "8.7.0",
"minimum_wire_compatibility_version" : "6.8.0",
"minimum_index_compatibility_version" : "6.0.0-beta1"
},
"tagline" : "You Know, for Search"
}
Passaggio 3: installa MongoDB su Debian 11|10
Installeremo MongoDB aggiungendo repository come di seguito.
wget -qO - https://www.mongodb.org/static/pgp/server-5.0.asc | sudo apt-key add -
sudo apt update
Aggiungi i repository MongoDB come di seguito.
echo "deb http://repo.mongodb.org/apt/debian buster/mongodb-org/5.0 main" | sudo tee /etc/apt/sources.list.d/mongodb-org-5.0.list
Aggiorna e installa MongoDB come di seguito.
sudo apt-get update
sudo apt-get install -y mongodb-org mongodb-org-database mongodb-org-server mongodb-org-shell mongodb-org-mongos mongodb-org-tools
Quindi avvia e abilita l'esecuzione del servizio MongoDB all'avvio.
sudo systemctl start mongod
sudo systemctl enable mongod
Verificare che il servizio sia in esecuzione.
$ systemctl status mongod
● mongod.service - MongoDB Database Server
Loaded: loaded (/lib/systemd/system/mongod.service; enabled; vendor preset: enabled)
Active: active (running) since Thu 2021-08-26 10:52:37 UTC; 10s ago
Docs: https://docs.mongodb.org/manual
Main PID: 22633 (mongod)
Memory: 66.9M
CPU: 715ms
CGroup: /system.slice/mongod.service
└─22633 /usr/bin/mongod --config /etc/mongod.conf
Aug 26 10:52:37 techwizpro.com systemd[1]: logs.techwizpro.com systemd[1]: Started MongoDB Database Server.
Passaggio 4: installare Graylog Server su Debian 11|10
Il server Graylog accetta ed elabora i registri della macchina, quindi li visualizza su un'interfaccia web su richiesta.
Scarica e installa il pacchetto del repository Graylog su Debian.
wget https://packages.graylog2.org/repo/packages/graylog-4.2-repository_latest.deb
sudo dpkg -i graylog-4.2-repository_latest.deb
Aggiorna i repository della cache e installa il server Graylog.
sudo apt update
sudo apt install -y graylog-server
Quindi utilizzeremo il comando pwgen
di seguito per generare un segreto per proteggere le password degli utenti come di seguito.
pwgen -N 1 -s 96
Produzione :
98KM6k7W6CtfQPc0EFKS3EMsb3bgYK1qPwDZcNezkqx4usSOMZE1rbKtuHuRwllkzm37cAp5U07jD9Hv6hCybkk3vJdVlC38
Copia il codice segreto e usalo qui sotto.
Modifica il file .conf
sudo vim /etc/graylog/server/server.conf
Nel file, incolla il segreto come di seguito:
password_secret = 98KM6k7W6CtfQPc0EFKS3EMsb3bgYK1qPwDZcNezkqx4usSOMZE1rbKtuHuRwllkzm37cAp5U07jD9Hv6hCybkk3vJdVlC38
Nel file .conf , aggiungi anche le righe seguenti.
rest_listen_uri = http://127.0.0.1:9000/api/
web_listen_uri = http://127.0.0.1:9000/
Salva ed esci. quindi procedere e creare una password sha256 per l'amministratore. La password creata verrà utilizzata per accedere all'interfaccia web.
echo -n Str0ngPassw0rd | sha256sum
Nel comando precedente, sostituisci "Str0ngPassw0rd" con la tua password preferita. In alternativa, puoi impostare una password con il comando seguente.
$ echo -n "Enter Password: " && head -1 </dev/stdin | tr -d '\n' | sha256sum | cut -d" " -f1
Enter Password: Str0ngPassw0rd
L'output sarà il seguente:
ab38eadaeb746599f2c1ee90f8267f31f467347462764a24d71ac1843ee77fe3
Copia questo output e usalo nel passaggio seguente.
Modifica il file /etc/graylog/server/server.conf come di seguito.
sudo vim /etc/graylog/server/server.conf
Nel file, aggiungi root_password_sha2=”l'output sopra” come di seguito.
root_password_sha2 = ab38eadaeb746599f2c1ee90f8267f31f467347462764a24d71ac1843ee77fe3
Fatto ciò, il server Graylog è ora pronto per l'uso. Avvia e abilita il servizio come di seguito.
sudo systemctl daemon-reload
sudo systemctl restart graylog-server
sudo systemctl enable graylog-server
Controllare il registro come di seguito.
sudo tail -f /var/log/graylog-server/server.log
Se il server funziona correttamente, dovresti vedere l'output come di seguito.
................
021-08-26T12:44:31.839Z INFO [ServerBootstrap] Graylog server up and running.
2021-08-26T12:44:31.839Z INFO [ServiceManagerListener] Services are healthy
....................
Se desideri accedere all'interfaccia web di Graylog con un IP e una porta del server, imposta http_bind_address
sul tuo nome host pubblico o indirizzo IP pubblico come di seguito
sudo vim /etc/graylog/server/server.conf
Quindi aggiungi la riga seguente:
http_bind_address = 0.0.0.0:9000
Riavviare il servizio per applicare le modifiche apportate.
sudo systemctl restart graylog-server
Fatto ciò, puoi accedere all'interfaccia utente Web del server Graylog utilizzando l'URL http://server_IP:9000 o http://hostname:9000
Passaggio 5: configura Graylog Server utilizzando Let's Encrypt Certificate
Questo passaggio è facoltativo e dovresti procedere solo dopo aver soddisfatto i requisiti seguenti.
- Nome di dominio completo (FQDN)
- Nginx
- Crittografiamo il certificato
Qui vogliamo impostare SSL in modo da poter accedere all'interfaccia Web Graylog utilizzando HTTPS. Innanzitutto, installa e configura Nginx come di seguito.
sudo apt install nginx
Configura il firewall se stai utilizzando ufw run:
sudo ufw allow 'Nginx Full'
Successivamente, creeremo un VirtualHost con il tuo nome di dominio come di seguito.
sudo vim /etc/nginx/sites-available/graylog.domain.com.conf
Nel file, aggiungi il contenuto seguente sostituendolo in modo appropriato.
server {
listen 80;
server_name logs.example.com;
return 301 https://$host$request_uri;
access_log /var/log/nginx/graylog_access.log combined;
error_log /var/log/nginx/graylog_error.log;
}
Nel file, sostituisci logs.example.com con il tuo FQDN.
Crea un collegamento simbolico tra /etc/nginx/sites-available/graylog.yourdomain.com.conf e /etc/nginx/sites-enabled come di seguito.
sudo ln -s /etc/nginx/sites-available/graylog.domain.com.conf /etc/nginx/sites-enabled/
Controlla la sintassi del file creato.
$ sudo nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
Ora installiamo Let'sEncrypt con certbot su Debian 11/10
sudo apt install certbot python3-certbot-nginx
Quindi esegui Certbot per Nginx come di seguito.
sudo certbot --nginx
Produzione :
Saving debug log to /var/log/letsencrypt/letsencrypt.log
Plugins selected: Authenticator nginx, Installer nginx
Enter email address (used for urgent renewal and security notices)
(Enter 'c' to cancel): Enter Your Email Address
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Please read the Terms of Service at
https://letsencrypt.org/documents/LE-SA-v1.2-November-15-2017.pdf. You must
agree in order to register with the ACME server. Do you agree?
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
(Y)es/(N)o: y
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Would you be willing, once your first certificate is successfully issued, to
share your email address with the Electronic Frontier Foundation, a founding
partner of the Let's Encrypt project and the non-profit organization that
develops Certbot? We'd like to send you email about our work encrypting the web,
EFF news, campaigns, and ways to support digital freedom.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
(Y)es/(N)o: y
Account registered.
Which names would you like to activate HTTPS for?
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
1: logs.techwizpro.com
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Select the appropriate numbers separated by commas and/or spaces, or leave input
blank to select all options shown (Enter 'c' to cancel): 1
Requesting a certificate for logs.techwizpro.com
Performing the following challenges:
http-01 challenge for logs.techwizpro.com
Waiting for verification...
Cleaning up challenges
Deploying Certificate to VirtualHost /etc/nginx/sites-enabled/graylog.domain.com.conf
Redirecting all traffic on port 80 to ssl in /etc/nginx/sites-enabled/graylog.domain.com.conf
...............
Quando questo ha successo, dovresti vedere le congratulazioni come di seguito.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Congratulations! You have successfully enabled https://logs.techwizpro.com
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Subscribe to the EFF mailing list (email: [email ).
IMPORTANT NOTES:
- Congratulations! Your certificate and chain have been saved at:
/etc/letsencrypt/live/logs.techwizpro.com/fullchain.pem
Your key file has been saved at:
/etc/letsencrypt/live/logs.techwizpro.com/privkey.pem
Your certificate will expire on 2021-11-24. To obtain a new or
tweaked version of this certificate in the future, simply run
certbot again with the "certonly" option. To non-interactively
renew *all* of your certificates, run "certbot renew"
- If you like Certbot, please consider supporting our work by:
Donating to ISRG / Let's Encrypt: https://letsencrypt.org/donate
Donating to EFF: https://eff.org/donate-le
Successivamente, configura il proxy inverso su Nginx che serve Graylog in esecuzione sulla stessa porta 9000. Ciò si ottiene modificando il file .conf creato in precedenza come di seguito
sudo vim /etc/nginx/sites-available/graylog.domain.com.conf
Nel file aggiungi il segmento di posizione come di seguito.
..................................
ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot
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 https://$server_name/;
proxy_pass http://127.0.0.1:9000;
}
}
Ora assicurati che il file di configurazione appaia come di seguito.
$ sudo vim /etc/nginx/sites-available/graylog.yourdomain.com.conf
server {
server_name logs.example.com;
return 301 https://$host$request_uri;
access_log /var/log/nginx/graylog_access.log combined;
error_log /var/log/nginx/graylog_error.log;
}
server {
listen 80;
root /var/www/html;
index index.html index.htm index.nginx-debian.html;
server_name logs.example.com;
listen 443 ssl; # managed by Certbot
ssl_certificate /etc/letsencrypt/live/logs.example.com/fullchain.pem; # managed by Certbot
ssl_certificate_key /etc/letsencrypt/live/logs.example.com/privkey.pem; # managed by Certbot
include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot
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 https://$server_name/;
proxy_pass http://127.0.0.1:9000;
}
}
Controlla la sintassi del file.
$ sudo nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
Ora riavvia il servizio Nginx.
sudo systemctl restart nginx
Passaggio 6: accedere all'interfaccia Web di Graylog
Ora siamo impostati per accedere all'interfaccia Web di Graylog utilizzando HTTPS. Utilizza l'URL https://logs.example.com sostituendo logs.computingforgeeks.com con il tuo FQDN.
Il nome utente predefinito è admin e la password è quella configurata in precedenza nel passaggio 4. In questo caso, la mia password è "Passw0rd"
Ora sei pronto per iniziare a utilizzare la dashboard Web di Graylog, qui hai una rappresentazione visiva dei registri.
Conclusione
Questa è la fine di questa guida, abbiamo spiegato come installare il server Graylog su Debian 11|10 con Let's Encrypt SSL. Ora puoi raccogliere, indicizzare e analizzare i log da una posizione centralizzata. Ciò semplifica il monitoraggio di attività insolite e il debug delle applicazioni. Spero che tu abbia trovato interessante questa guida.
Vedi di più in questa pagina.
- Installa Graylog 4 con Elasticsearch 7.x su CentOS 8/RHEL 8
- Configura il proxy Graylog Nginx con Let's Encrypt SSL
- Installa Graylog Server su Ubuntu con Let's Encrypt SSL