Ricerca nel sito web

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.

  1. Memoria superiore a 4 GB.
  2. Spazio di archiviazione superiore a 20 GB.
  3. 4 core della CPU
  4. Debian 10/11 installata e aggiornata.
  5. 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

Articoli correlati: