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 sicherzustellen und Fehler oder Sicherheitsrisiken zu vermeiden. Sie sind oft über mehrere Server verstreut und mit zunehmender Datenmenge wird ihre Verwaltung immer komplexer.
Graylog ist ein kostenloses und quelloffenes Protokollverwaltungssystem für Unternehmen, das Elasticsearch, MongoDB und einen Graylog-Server umfasst. Es besteht aus dem Hauptserver, der Daten von seinen Clients empfängt, die auf verschiedenen Servern installiert sind, 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 Graylog 4 installiert auf Ubuntu 20.04 . Wir werden den Graylog-Server auch 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-Protokollspeicherung
- Elasticsearch
- MongoDB
- Oracle Java SE 8 (OpenJDK 8 oder höher)
Schritt 1:Installieren Sie MongoDB auf Ubuntu 20.04
Graylog verwendet MongoDB, um die Konfigurationsdaten wie Streams, Warnungen, Benutzer, Einstellungen usw. zu speichern. Nur die Metadaten werden gespeichert und nicht die Protokolldaten. Lassen Sie uns zuerst MongoDB auf Ubuntu 20.04 installieren.
Installieren Sie zuerst alle vorausgesetzten 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 -
Um eine Quellenlistendatei zu erstellen, geben Sie Folgendes ein:
$ 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
Um MongoDB auf Ubuntu zu installieren, geben Sie Folgendes ein:
$ sudo apt install mongodb-org
Der MongoDB-Dienst wird nach Abschluss des Installationsvorgangs nicht automatisch gestartet. Um den Dienst zu starten und zu aktivieren, geben Sie Folgendes ein:
$ 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 MongoDB Version 5.0.2 installiert haben .
Schritt 2:Installieren Sie Elasticsearch auf Ubuntu 20.04
Graylog speichert alle Protokolldaten in Elasticsearch. Informationen zur unterstützten Version von Elasticsearch finden Sie auf der offiziellen Website von Graylog.
Elasticsearch benötigt Java, es wird mit der gebündelten Java-Version von OpenJDK
geliefertImportieren 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 schließlich 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 Hauptverzeichnis von Elasticsearch sind :
Daten werden gespeichert - Verzeichnis /var/lib/elasticsearch.
Konfigurationsdateien - Verzeichnis /etc/elasticsearch
Java-Startoptionen – /etc/default/elasticsearch-Datei
Elasticsearch wird mit einer gebündelten Version von OpenJDK geliefert. Um Ihre eigene Version von Java zu verwenden, setzen Sie die Umgebungsvariable ES_JAVA_HOME.
Sie können den Elasticsearch-Dienst mit einem Befehl aktivieren und starten:
$ sudo systemctl enable --now elasticsearch.service
Überprüfen Sie nun, ob der Dienst ordnungsgemäß ausgeführt wird, indem Sie den folgenden Befehl verwenden:
$ 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: http://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 zum Beenden und zurück zur Eingabeaufforderung.
Elasticsearch arbeitet 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 'http://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"
}
Bei der Ausgabe des Befehls sehen Sie die Zeile "number": "7.10.2"
zeigt die Elasticsearch-Version.
Schritt 3:Installieren Sie Graylog auf Ubuntu 20.04
Graylog sammelt die Protokolle aus den verschiedenen Eingaben und stellt die Ausgabe der Weboberfläche zur Verfügung, die es zur Verwaltung der Protokolle anbietet.
Zuerst müssen wir die Graylog Repo-Datei mit dem wget-Befehl herunterladen:
$ wget https://packages.graylog2.org/repo/packages/graylog-4.1-repository_1-3_all.deb
Um das Graylog-Repository zu konfigurieren, geben Sie Folgendes ein:
$ 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 das password_secret
setzen und den Hast-Wert Ihres 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 Hashwert 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 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 für die Fehlersuche oder wenn der Server nicht startet.
Sie können die Homepage sehen, indem Sie die öffentliche IP Ihres Servers und die Portnummer Ihres Browsers eingeben, dh http://admin
und das Passwort ist dasjenige, das für den Hashwert verwendet wird
Schritt 4:Konfigurieren von Nginx als SSL-Terminierungsproxy (optional)
Es wird empfohlen, Ihre Graylog-Weboberfläche 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 in der Firewall zulassen
$ sudo ufw allow 'Nginx Full'
Lassen Sie uns nun den Inhalt unserer Domänennamen-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 aktivieren wir es
$ 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 von SSL-Zertifikaten und den privaten Schlüssel 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 http://127.0.0.1:9000;
}
}
Jetzt überprüfen wir noch einmal mit
$ sudo nginx -t
Und starten Sie den Nginx-Dienst neu
$ sudo systemctl restart nginx.service
Greifen Sie nun über den Domainnamen mit HTTPS auf Ihre Graylog-URL zu.
Nach der Anmeldung können Sie Ihre Startseite sehen
Schlussfolgerung
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 Einrichtungsvorgangs auf Probleme stoßen, können Sie im Kommentarbereich gerne einen Kommentar hinterlassen oder Fragen stellen.