So installieren Sie Graylog Server unter Ubuntu 20.04

Alle Systeme, Anwendungen und Software generieren Informationen, die in Dateien gespeichert werden, die als Protokolle bezeichnet werden. Diese Protokolle müssen ständig überwacht werden, um die ordnungsgemäße Funktion des betreffenden Systems zu gewährleisten und Fehler oder Sicherheitsrisiken zu vermeiden. Sie sind oft auf mehrere Server verstreut und werden mit steigendem Datenvolumen immer komplexer.

Graylog ist ein kostenloses Open-Source-Log-Management-System der Enterprise-Klasse, das Elasticsearch, MongoDB und einen Graylog-Server umfasst. Es besteht aus dem Hauptserver, der Daten von seinen auf verschiedenen Servern installierten Clients empfängt, sowie einem Webinterface, mit dem die vom Server gesammelten Daten angezeigt werden. Graylog ist ein ähnliches Tool wie Splunk und LogStash.

In diesem Tutorial lernen wir, wie man Installieren Sie Graylog 4 an Ubuntu 20.04. Wir werden auch den Graylog-Server mit einem SSL-Zertifikat mit Let’s Encrypt sichern.

Anforderungen:

  • Ubuntu 20.04-Rechner oder höher
  • Hardware – 4 CPU-Kerne, 8 GB RAM, SSD-Festplatte mit hohen IOPS für Elasticsearch Log Storage
  • Elasticsearch
  • MongoDB
  • Oracle Java SE 8 (OpenJDK 8 oder höher)

Schritt 1: MongoDB auf Ubuntu 20.04 installieren

Graylog verwendet MongoDB, um die Konfigurationsdaten wie Streams, Warnungen, Benutzer, Einstellungen usw. zu speichern. Es werden nur die Metadaten gespeichert und nicht die Protokolldaten. Lassen Sie uns zuerst MongoDB auf Ubuntu 20.04 installieren.

Installieren Sie zuerst alle erforderlichen Pakete:

$ sudo apt update
$ sudo apt install apt-transport-https openjdk-11-jre-headless uuid-runtime pwgen dirmngr gnupg wget

Importieren Sie nun den öffentlichen GPG-Schlüssel:

$ wget -qO - https://www.mongodb.org/static/pgp/server-5.0.asc | sudo apt-key add -

Geben Sie Folgendes ein, um eine Quelllistendatei zu erstellen:

$ sudo touch /etc/apt/sources.list.d/mongodb-org-5.0.list

Fügen Sie nun die Repository-Quelle für Ubuntu 20.04 hinzu:

$ echo "deb [ arch=amd64,arm64 ] https://repo.mongodb.org/apt/ubuntu focal/mongodb-org/5.0 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-5.0.list

Aktualisieren Sie nun den apt-Index:

$ sudo apt update

Geben Sie Folgendes ein, um MongoDB unter Ubuntu zu installieren:

$ sudo apt install mongodb-org

Der MongoDB-Dienst wird nach Abschluss des Installationsvorgangs nicht automatisch gestartet. Geben Sie Folgendes ein, um den Dienst zu starten und den Dienst zu aktivieren:

$ sudo systemctl enable --now mongod.service

Überprüfen Sie den Status des MongoDB-Dienstes:

$ sudo systemctl status mongod.service

Ausgabe:

● mongod.service - MongoDB Database Server
Loaded: loaded (/lib/systemd/system/mongod.service; disabled; vendor preset: enabled)
Active: active (running) since Sun 2021-08-22 04:47:46 UTC; 3s ago
Docs: https://docs.mongodb.org/manual
Main PID: 17965 (mongod)
Memory: 66.1M
CGroup: /system.slice/mongod.service
└─17965 /usr/bin/mongod --config /etc/mongod.conf
Aug 22 04:47:46 li175-223 systemd[1]: Started MongoDB Database Server.

Wie die Ausgabe zeigt, wurde MongoDB gestartet und der Dienst läuft.

Sie können die installierte Version von MongoDB überprüfen

$ sudo mongod --version

db version v5.0.2
Build Info: {
"version": "5.0.2",
"gitVersion": "6d9ec525e78465dcecadcff99cce953d380fedc8",
"openSSLVersion": "OpenSSL 1.1.1f 31 Mar 2020",
"modules": [],
"allocator": "tcmalloc",
"environment": {
"distmod": "ubuntu2004",
"distarch": "x86_64",
"target_arch": "x86_64"
}
}

Die Ausgabe zeigt, dass wir installiert haben MongoDB-Version 5.0.2.

Schritt 2: Elasticsearch auf Ubuntu 20.04 installieren

Graylog speichert alle Logdaten in Elasticsearch. Die unterstützte Version von finden Sie auf der offiziellen Website von Graylog elastischsuche.

Elasticseach benötigt Java, es kommt mit Java gebündelter Version von OpenJDK

Importieren Sie den GPG-Schlüssel des Repositorys:

$ wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add -

Fügen Sie als Nächstes das Elasticsearch-Repository hinzu:

# echo "deb https://artifacts.elastic.co/packages/oss-7.x/apt stable main" | sudo tee -a /etc/apt/sources.list.d/elastic-7.x.list

Aktualisieren Sie nun das Repository

$ sudo apt update

Installieren Sie abschließend die Open-Source-Version von elasticsearch, indem Sie Folgendes eingeben:

$ sudo apt install elasticsearch-oss

Ändern Sie die Elasticsearch-Konfigurationsdatei, um einige Informationen wie den Clusternamen, die IP-Adresse, die Elasticsearch überwacht, und die Portnummer festzulegen

$ sudo vi /etc/elasticsearch/elasticsearch.yml

cluster.name: graylog-server
network.host: 0.0.0.0
http.port: 9200
discovery.zen.ping.unicast.hosts: ["127.0.0.1"]
action.auto_create_index: false

Die Hauptkonfigurationsdateien und das Verzeichnis von Elasticsearch sind:

Daten werden gespeichert – Verzeichnis /var/lib/elasticsearch.
Konfigurationsdateien – /etc/elasticsearch-Verzeichnis
Java-Startoptionen – /etc/default/elasticsearch file

Elasticsearch wird mit einer gebündelten Version von OpenJDK geliefert. Um Ihre eigene Java-Version zu verwenden, legen Sie die Umgebungsvariable ES_JAVA_HOME fest.

Sie können den Elasticsearch-Dienst mit einem Befehl aktivieren und starten:

$ sudo systemctl enable --now elasticsearch.service

Überprüfen Sie nun mit dem folgenden Befehl, ob der Dienst ordnungsgemäß ausgeführt wird:

$ sudo systemctl status elasticsearch.service

Ausgabe:

● elasticsearch.service - Elasticsearch
Loaded: loaded (/lib/systemd/system/elasticsearch.service; disabled; vendor preset: enabled)
Active: active (running) since Sun 2021-08-22 12:38:24 UTC; 11min ago
Docs: https://www.elastic.co
Main PID: 19502 (java)
Tasks: 41 (limit: 1071)
Memory: 833.2M
CGroup: /system.slice/elasticsearch.service
├─19502 /bin/java -Xms1g -Xmx1g -XX:+UseConcMarkSweepGC -XX:CMSInitiatingOccupancyFraction=75 -XX:+UseCMSInitiatingOccupancyOnly -Des.networkaddress.cache.ttl=60 -Des.networkaddress.cache.negat>
└─19565 /usr/share/elasticsearch/modules/x-pack-ml/platform/linux-x86_64/bin/controller
Aug 22 12:38:24 li663-124 systemd[1]: Started Elasticsearch.

Drücken Sie q, um den Vorgang zu beenden, und kehren Sie zur Eingabeaufforderung zurück.

Elasticsearch funktioniert standardmäßig auf dem Port 9200, sollten Sie es auf der Firewall öffnen.

$ sudo ufw allow 9200

Sie können überprüfen, ob es funktioniert

$ sudo curl -XGET 'https://localhost:9200'

"name" : "Ubuntunode",
"cluster_name" : "graylog-server",
"cluster_uuid" : "sz3jP3rKTPWZlasWwD-rBg",
"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"
}

Mit der Ausgabe des Befehls können Sie die Zeile sehen "number": "7.10.2" zeige die Elasticsearch-Version.

Schritt 3: Graylog auf Ubuntu 20.04 installieren

Graylog sammelt die Protokolle aus den verschiedenen Eingaben und stellt die Ausgabe der Webschnittstelle zur Verfügung, die es zur Verwaltung der Protokolle anbietet.

Zuerst müssen wir die Graylog Repo-Datei mit dem Befehl wget herunterladen:

$ wget https://packages.graylog2.org/repo/packages/graylog-4.1-repository_1-3_all.deb

Geben Sie Folgendes ein, um das Graylog-Repository zu konfigurieren:

$ sudo dpkg -i graylog-4.1-repository_1-3_all.deb

Jetzt können wir den Graylog-Server installieren

$ apt update
$ sudo apt install graylog-server

Aktivieren und starten Sie den Graylog-Serverdienst

$ sudo systemctl enable --now graylog-server.service

Bearbeiten Sie die Konfigurationsdatei

Jetzt müssen wir die password_secret und der Wert deines Root-Graylogs root_password_sha2.

Um ein Geheimnis zum Sichern der Benutzerkennwörter festzulegen, können Sie den Befehl pwgen verwenden:

$ pwgen -N 1 -s 96

8KOikhjxetTdcJ7qhtPlgtLgBqCX5y4vL36Ig423pqUQn32QatiecCcYol5UEw3XDzwgWDvcFOmMBJzkBZKC52aEpBrItwke

Bearbeiten Sie nun die Konfigurationsdatei, um das Passwort festzulegen

$ sudo vi /etc/graylog/server/server.conf

password_secret = RlTRqWSBENLKeg89iAWlxSaf1zfqLvBW7VX5SH1d2ji3RMKyeXb8bmfOXLl3GaWkxp9oDRfvbjXiEr36AFd6T9CMmnjdG7dn

Wir müssen jetzt den Hash-Wert Ihres Graylog-Root-Passwortkontos definieren

$ echo -n GraylogRootPassword | shasum -a 256

4b09467e174a03d5ebd720d514f57783ad1e03b4877fff5e0dc45356340ab215 -

Jetzt können Sie es kopieren und einfügen

sudo vi /etc/graylog/server/server.conf

root_password_sha2 = 4b09467e174a03d5ebd720d514f57783ad1e03b4877fff5e0dc45356340ab215

Sie können zusätzliche Informationen wie die Graylog-Root-E-Mail-Adresse und die von der Graylog-HTTP-Schnittstelle verwendete Netzwerkschnittstelle hinzufügen

root_email = "[email protected]"
root_timezone = UTC
http_bind_address = 0.0.0.0:9000

Sie sollten die Ports auf Ihrer Firewall öffnen

$ sudo ufw allow 9000

Aktivieren und starten Sie den Graylog-Serverdienst

$ sudo systemctl enable --now graylog-server.service

Sie finden die Protokolldaten für Graylog /var/log/graylog-server/server.log und sind nützlich zum Debuggen oder wenn der Server nicht startet.

Sie können die Homepage aufrufen, indem Sie die öffentliche IP Ihres Servers und die Portnummer Ihres Browsers eingeben, zB https://:9000/. Der Standard-Root-Anmeldename von Graylog ist admin und das Passwort ist dasjenige, das für den Hash-Wert verwendet wird

Schritt 4: Konfigurieren von Nginx als SSL-Terminierungs-Proxy (optional)

Es wird empfohlen, Ihr Graylog-Webinterface mit HTTPS zu sichern. Hier wird Nginx als Reverse-Proxy verwendet und mit Let’s Encrypt ein kostenloses SSL-Zertifikat für die Domain generiert.

Zuerst müssen wir Nginx installieren, dann cerbot für das Let’s-Encrypt-Zertifikat.

Jetzt installieren wir Nginx

$ sudo apt install nginx

Lassen Sie uns nun Nginx auf der Firewall zulassen

$ sudo ufw allow 'Nginx Full'

Lassen Sie uns nun den Inhalt unserer Domainnamen-Konfigurationsdatei bearbeiten. Vergessen Sie nicht, den Dateinamen durch Ihren Domainnamen zu ersetzen

$ sudo vim /etc/nginx/sites-available/websitefortesting.com.conf

server {
listen 80;
server_name websitefortesting.com;
add_header Strict-Transport-Security max-age=2592000;
rewrite ^ https://$server_name$request_uri? permanent;
access_log /var/log/nginx/websitefortesting.com.access.log combined;
error_log /var/log/nginx/websitefortesting.com.error.log;
}

Jetzt lass es uns aktivieren

$ sudo ln -s /etc/nginx/sites-available/websitefortesting.com.conf /etc/nginx/sites-enabled/websitefortesting.com.conf

Überprüfen Sie dann, ob die Konfiguration in Ordnung ist

$ sudo nginx -t

nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

Jetzt müssen wir cerbot mit dem für nginx notwendigen Paket installieren

$ sudo apt install certbot python3-certbot-nginx

Jetzt müssen wir cerbot für Nginx ausführen

$ sudo certbot --nginx

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): [email protected]

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 at
https://acme-v02.api.letsencrypt.org/directory

(A)gree/(C)ancel: A

Would you be willing 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: N
Which names would you like to activate HTTPS for?

1: websitefortesting.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
Obtaining a new certificate
Performing the following challenges:
http-01 challenge for websitefortesting.com
Waiting for verification…
Cleaning up challenges
Deploying Certificate to VirtualHost /etc/nginx/sites-enabled/websitefortesting.com.conf
Please choose whether or not to redirect HTTP traffic to HTTPS, removing HTTP access.

1: No redirect - Make no further changes to the webserver configuration.
2: Redirect - Make all requests redirect to secure HTTPS access. Choose this for
new sites, or if you're confident your site works on HTTPS. You can undo this
change by editing your web server's configuration.

Select the appropriate number [1-2] then [enter] (press 'c' to cancel): 2
Redirecting all traffic on port 80 to ssl in /etc/nginx/sites-enabled/websitefortesting.com.conf

Congratulations! You have successfully enabled https://websitefortesting.com
You should test your configuration at:
https://www.ssllabs.com/ssltest/analyze.html?d=websitefortesting.com

IMPORTANT NOTES:
Congratulations! Your certificate and chain have been saved at:
/etc/letsencrypt/live/websitefortesting.com/fullchain.pem
Your key file has been saved at:
/etc/letsencrypt/live/websitefortesting.com/privkey.pem
Your cert will expire on 2021-11-18. 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

In der Ausgabe können Sie den Speicherort der SSL-Zertifikate und des privaten Schlüssels sehen. Sie können diese Informationen verwenden, um SSL für Nginx zu konfigurieren.

$ sudo vi /etc/nginx/sites-available/websitefortesting.com.conf

server {
listen 80;
server_name websitefortesting.com;
add_header Strict-Transport-Security max-age=2592000;
rewrite ^ https://$server_name$request_uri? permanent;
access_log /var/log/nginx/websitefortesting.com.access.log combined;
error_log /var/log/nginx/websitefortesting.com.error.log;
}
server {
listen 443 ssl; # managed by Certbot
server_name websitefortesting.com;
ssl_certificate /etc/letsencrypt/live/websitefortesting.com/fullchain.pem; # managed by Certbot
ssl_certificate_key /etc/letsencrypt/live/websitefortesting.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_pass https://127.0.0.1:9000;
}
}

Jetzt verifizieren wir noch einmal mit

$ sudo nginx -t

Und starte den Nginx-Dienst neu

$ sudo systemctl restart nginx.service

Greifen Sie nun über den Domainnamen mit HTTPS auf Ihre Graylog-URL zu.

Nach dem Login sehen Sie Ihre Homepage

Fazit

In diesem Tutorial haben wir gelernt, wie man den Graylog-Server auf Ubuntu 20.04 installiert und SSL mit Nginx als Reverse-Proxy konfiguriert.

Wenn Sie während des Einrichtungsprozesses auf Herausforderungen stoßen, können Sie dies gerne im Kommentarbereich kommentieren oder Fragen stellen.