Installation und Absicherung von Grafana auf Ubuntu 18.04 mit SSL und Nginx
Grafana ist ein Open-Source-Tool zur Datenvisualisierung und Überwachung, das komplexe Daten aus Quellen wie Prometheus, InfluxDB, Graphite und ElasticSearch integriert. Mit Grafana können Sie Alarme, Benachrichtigungen und Ad-hoc-Filter für Ihre Daten erstellen und durch integrierte Freigabefunktionen einfacher mit Ihrem Team zusammenarbeiten.
In diesem Tutorial installieren Sie Grafana und sichern es mit einem SSL-Zertifikat und einem Nginx-Reverse-Proxy ab. Nach der Einrichtung von Grafana haben Sie die Möglichkeit, die Benutzer-Authentifizierung über GitHub zu konfigurieren, um die Berechtigungen Ihres Teams besser zu verwalten.
Voraussetzungen
Um diesem Tutorial zu folgen, benötigen Sie:
- Einen Ubuntu 18.04-Server, eingerichtet gemäß dem Initial Server Setup Guide für Ubuntu 18.04, einschließlich eines Nicht-Root-Benutzers mit sudo-Rechten und einer mit ufw konfigurierten Firewall.
- Einen vollständig registrierten Domainnamen. In diesem Tutorial wird
your_domain
verwendet. Sie können einen Domainnamen bei Namecheap kaufen, kostenlos bei Freenom erhalten oder den Domain-Registrar Ihrer Wahl nutzen. - Die folgenden DNS-Einträge für Ihren Server:
- Ein A-Record, der
your_domain
auf die öffentliche IP-Adresse Ihres Servers zeigt. - Ein A-Record, der
www.your_domain
auf die öffentliche IP-Adresse Ihres Servers zeigt.
- Ein A-Record, der
- Nginx, eingerichtet gemäß dem Tutorial „How To Install Nginx on Ubuntu 18.04“, einschließlich eines Server-Blocks für Ihre Domain.
- Einen Nginx-Serverblock mit Let’s Encrypt, eingerichtet nach dem Tutorial „How To Secure Nginx with Let’s Encrypt on Ubuntu 18.04“.
- Optional: Für die Einrichtung der GitHub-Authentifizierung benötigen Sie ein GitHub-Konto, das mit einer Organisation verknüpft ist.
Schritt 1 – Installation
Im ersten Schritt installieren Sie Grafana auf Ihrem Ubuntu 18.04-Server. Sie können Grafana entweder direkt von der offiziellen Website herunterladen oder über ein APT-Repository installieren. Da ein APT-Repository die Installation und Verwaltung von Updates erleichtert, verwenden Sie in diesem Tutorial diese Methode.
Obwohl Grafana im offiziellen Ubuntu 18.04-Paketrepository verfügbar ist, ist die dortige Version möglicherweise nicht die neueste. Verwenden Sie daher das offizielle Repository von Grafana.
Laden Sie den GPG-Schlüssel von Grafana mit wget
herunter und fügen Sie ihn mit apt-key
hinzu:
wget -q -O - https://packages.grafana.com/gpg.key | sudo apt-key add -
Fügen Sie anschließend das Grafana-Repository zu Ihren APT-Quellen hinzu:
sudo add-apt-repository "deb https://packages.grafana.com/oss/deb stable main"
Aktualisieren Sie den APT-Cache, um Ihre Paketlisten zu aktualisieren:
sudo apt update
Überprüfen Sie, ob Grafana aus dem richtigen Repository installiert wird:
apt-cache policy grafana
Installieren Sie Grafana:
sudo apt install grafana
Starten Sie den Grafana-Server:
sudo systemctl start grafana-server
Aktivieren Sie den automatischen Start beim Hochfahren:
sudo systemctl enable grafana-server
Schritt 2 – Einrichtung des Reverse Proxy
Die Verwendung eines SSL-Zertifikats stellt sicher, dass Ihre Daten durch Verschlüsselung der Verbindung zu und von Grafana geschützt sind. Um diese Verbindung nutzen zu können, müssen Sie Nginx als Reverse Proxy für Grafana neu konfigurieren.
Öffnen Sie die Nginx-Konfigurationsdatei, die Sie bei der Einrichtung des Nginx-Serverblocks mit Let’s Encrypt erstellt haben. Sie können jeden Texteditor verwenden, aber in diesem Tutorial nutzen wir nano
:
sudo nano /etc/nginx/sites-available/your_domain
Suchen Sie den folgenden Block:
location / {
try_files $uri $uri/ =404;
}
Löschen Sie die vorhandene try_files
-Zeile in diesem Block und ersetzen Sie sie durch folgende Konfiguration:
location / {
proxy_set_header Host $http_host;
proxy_pass http://localhost:3000;
}
Um sicherzustellen, dass die WebSocket-Verbindungen von Grafana korrekt funktionieren, fügen Sie außerhalb des server
-Blocks den folgenden Abschnitt hinzu:
map $http_upgrade $connection_upgrade {
default upgrade;
'' close;
}
Fügen Sie dann den folgenden location
-Block hinzu, um die WebSocket-Verbindung zu unterstützen:
location /api/live {
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection $connection_upgrade;
proxy_set_header Host $http_host;
proxy_pass http://localhost:3000;
}
Überprüfen Sie anschließend die neue Konfiguration, um sicherzustellen, dass keine Fehler vorhanden sind:
sudo nginx -t
Wenn der Test erfolgreich war, laden Sie Nginx neu, um die Änderungen zu übernehmen:
sudo systemctl reload nginx
Sie können nun auf den Grafana-Login-Bildschirm zugreifen, indem Sie Ihren Webbrowser auf https://your_domain
richten. Falls Sie Grafana nicht erreichen können, überprüfen Sie Ihre Firewall-Einstellungen, um sicherzustellen, dass der Verkehr auf Port 443 erlaubt ist.
Schritt 3 – Aktualisierung der Zugangsdaten
Da jede Grafana-Installation standardmäßig dieselben administrativen Zugangsdaten verwendet, ist es eine bewährte Methode, Ihre Anmeldedaten so schnell wie möglich zu ändern. In diesem Schritt aktualisieren Sie die Zugangsdaten, um die Sicherheit zu erhöhen.
Öffnen Sie Ihren Webbrowser und navigieren Sie zu https://your_domain
. Dies bringt Sie zum Standard-Login-Bildschirm von Grafana, auf dem das Grafana-Logo, ein Formular zur Eingabe von Email oder Benutzername und Passwort, eine Anmelden-Schaltfläche sowie ein Passwort vergessen?-Link angezeigt werden.
Geben Sie in beide Felder admin
ein und klicken Sie anschließend auf die Schaltfläche Anmelden.
Auf dem nächsten Bildschirm werden Sie aufgefordert, Ihr Konto sicherer zu machen, indem Sie das Standardpasswort ändern:
Geben Sie Ihr neues Passwort sowohl in das Feld Neues Passwort als auch in das Feld Neues Passwort bestätigen ein.
Hier können Sie auf Absenden klicken, um die neuen Informationen zu speichern, oder auf Überspringen, um diesen Schritt zu überspringen. Wenn Sie diesen Schritt überspringen, werden Sie beim nächsten Login erneut zur Passwortänderung aufgefordert.
Um die Sicherheit Ihrer Grafana-Installation zu erhöhen, klicken Sie auf Speichern. Sie werden anschließend zur Willkommensseite von Grafana weitergeleitet.
Sie haben nun Ihr Konto abgesichert, indem Sie die Standard-Zugangsdaten geändert haben. Im nächsten Schritt werden Sie die Grafana-Konfiguration so anpassen, dass niemand ohne Ihre Erlaubnis ein neues Grafana-Konto erstellen kann.
Schritt 4 – Deaktivierung von Registrierungen und anonymem Zugriff
Grafana bietet Optionen, die es Besuchern ermöglichen, eigene Benutzerkonten zu erstellen oder Dashboards ohne Registrierung einzusehen. Wenn Grafana nicht öffentlich zugänglich ist oder mit öffentlich verfügbaren Daten arbeitet, kann dies sinnvoll sein. Doch wenn Sie Grafana online für sensible Daten nutzen, stellt anonymer Zugriff ein Sicherheitsrisiko dar. Um dieses Problem zu lösen, müssen Sie die Konfiguration von Grafana anpassen.
Öffnen Sie zunächst die Hauptkonfigurationsdatei von Grafana zur Bearbeitung:
sudo nano /etc/grafana/grafana.ini
Suchen Sie die folgende Direktive allow_sign_up
unter der Rubrik [users]
:
[users]
# disable user signup / registration
;allow_sign_up = true
Entfernen Sie das Semikolon ;
am Anfang der Zeile und setzen Sie den Wert auf false
, um die Benutzerregistrierung zu deaktivieren:
[users]
# disable user signup / registration
allow_sign_up = false
Als nächstes suchen Sie die folgende Direktive enabled
unter der Rubrik [auth.anonymous]
:
[auth.anonymous]
# enable anonymous access
;enabled = false
Entfernen Sie auch hier das Semikolon ;
und setzen Sie den Wert auf false
, um den anonymen Zugriff zu deaktivieren:
[auth.anonymous]
# enable anonymous access
enabled = false
Speichern Sie die Datei und schließen Sie den Editor.
Um die Änderungen zu übernehmen, starten Sie den Grafana-Dienst neu:
sudo systemctl restart grafana-server
Überprüfen Sie den Status des Grafana-Dienstes, um sicherzustellen, dass alles ordnungsgemäß funktioniert:
sudo systemctl status grafana-server
Melden Sie sich ab und überprüfen Sie, ob die Schaltfläche Registrieren nicht mehr angezeigt wird und dass keine Anmeldung ohne Benutzeranmeldung möglich ist.
Schritt 5 – (Optional) Einrichtung von GitHub OAuth
Als alternative Anmeldemethode können Sie Grafana so konfigurieren, dass es Benutzer über GitHub authentifiziert. Dies ermöglicht allen Mitgliedern autorisierter GitHub-Organisationen den Zugriff. Besonders nützlich ist dies, wenn Sie mehreren Entwicklern die Zusammenarbeit und den Zugriff auf Metriken ermöglichen möchten, ohne separate Grafana-Konten erstellen zu müssen.
Melden Sie sich zunächst bei einem GitHub-Konto an, das mit Ihrer Organisation verbunden ist, und navigieren Sie zu Ihrer GitHub-Profilseite.
Klicken Sie im Navigationsmenü auf der linken Seite unter Organization settings auf den Namen Ihrer Organisation.
Da Grafana OAuth verwendet – einen offenen Standard zur Autorisierung von Drittanbietern –, müssen Sie eine neue OAuth-Anwendung in GitHub erstellen.
Klicken Sie auf den Link OAuth Apps unter Developer settings im unteren linken Bereich.
Klicken Sie anschließend auf die Schaltfläche Register an application.
Füllen Sie auf der nächsten Seite die folgenden Informationen zu Ihrer Grafana-Installation aus:
- Application name: Ein Name zur Unterscheidung Ihrer OAuth-Anwendungen.
- Homepage URL:
https://your_domain
- Application Description: Eine Beschreibung des Zwecks der Anwendung.
- Authorization callback URL:
https://your_domain/login/github
Klicken Sie auf Register application.
Sie werden nun zu einer Seite weitergeleitet, auf der der Client ID und der Client Secret für Ihre neue OAuth-Anwendung angezeigt werden. Notieren Sie sich beide Werte, da Sie diese später in der Grafana-Konfigurationsdatei eintragen müssen.
Warnung: Bewahren Sie Ihre Client ID und Ihren Client Secret sicher und nicht öffentlich zugänglich auf.
Schritt 6 – (Optional) Konfiguration von Grafana als GitHub OAuth-App
Um die GitHub-Authentifizierung für Ihre Grafana-Installation abzuschließen, müssen Sie die Grafana-Konfigurationsdatei anpassen.
Öffnen Sie die Hauptkonfigurationsdatei von Grafana:
sudo nano /etc/grafana/grafana.ini
Suchen Sie den Abschnitt [auth.github]
und entfernen Sie das Semikolon ;
am Anfang jeder relevanten Zeile, um die GitHub-Authentifizierung zu aktivieren:
[auth.github]
enabled = true
allow_sign_up = true
client_id = your_client_id_from_github
client_secret = your_client_secret_from_github
scopes = user:email,read:org
auth_url = https://github.com/login/oauth/authorize
token_url = https://github.com/login/oauth/access_token
api_url = https://api.github.com/user
allowed_organizations = your_organization_name
Um sicherzustellen, dass Weiterleitungen hinter einem Reverse Proxy korrekt funktionieren, setzen Sie den root_url
unter dem Abschnitt [server]
:
[server]
root_url = https://your_domain
Speichern Sie die Datei und starten Sie Grafana neu, um die Änderungen zu übernehmen:
sudo systemctl restart grafana-server
Nach dem Neustart sehen Sie auf der Login-Seite von Grafana eine neue Schaltfläche Mit GitHub anmelden. Klicken Sie darauf, melden Sie sich bei GitHub an und autorisieren Sie Grafana.
Fazit
In diesem Tutorial haben Sie Grafana erfolgreich installiert, konfiguriert und abgesichert. Zudem haben Sie die Möglichkeit geschaffen, Mitglieder Ihrer Organisation über GitHub zu authentifizieren.
Zusammenfassend haben Sie folgende Schritte durchgeführt:
- Installation von Grafana auf Ubuntu 18.04 mithilfe des offiziellen APT-Repositorys.
- Absicherung von Grafana mit einem SSL-Zertifikat und Konfiguration von Nginx als Reverse Proxy.
- Änderung der standardmäßigen administrativen Zugangsdaten zur Verbesserung der Sicherheit.
- Deaktivierung von Benutzerregistrierungen und anonymem Zugriff zum Schutz sensibler Daten.
- (Optional) Einrichtung der GitHub OAuth-Authentifizierung zur Vereinfachung der Benutzerverwaltung.
Um Ihre aktuelle Grafana-Installation zu erweitern, können Sie offizielle und Community-Dashboards erkunden. Für weiterführende Informationen und erweiterte Konfigurationen empfiehlt sich ein Blick in die offizielle Grafana-Dokumentation.
Mit diesen Maßnahmen ist Ihre Instanz jetzt sicher und bereit für den produktiven Einsatz in Ihrer Organisation. Viel Erfolg beim Überwachen und Visualisieren Ihrer Daten!