Redis ist ein leistungsstarker In-Memory-Schlüssel-Wert-Speicher, der als Datenbankserver, Cache und Message Broker verwendet werden kann. Er ist weithin bekannt für seine schnelle Leistung, Flexibilität und Unterstützung für eine Vielzahl von Sprachen. Es handelt sich um eine freie und quelloffene Software, die in der Programmiersprache C geschrieben ist. In dieser Anleitung erfahren Sie, wie Sie Redis auf Ubuntu 18.04 installieren und absichern.
Voraussetzungen
Um dieser Anleitung zu folgen, müssen Sie im Vorfeld einige Dinge vorbereiten. Sie benötigen einen Ubuntu 18.04-Server, den Sie ganz einfach nach unserer Anleitung installieren können. Darüber hinaus benötigen Sie einen Nicht-Root-Benutzer mit sudo-Rechten und eine konfigurierte Basis-Firewall. Dies können Sie einrichten, indem Sie unseren Anleitungen zur Konfiguration der Linux-sudoers-Datei und zur Einrichtung einer UFW auf einem Ubuntu- und Debian-Cloud-Server folgen.
Jetzt legen wir los!
Redis installieren
Redis ist direkt über das offizielle Ubuntu-Repository verfügbar. Dies ist der einfachste Weg, es zu installieren und zu konfigurieren. Wir empfehlen, diesen Weg zu wählen, es sei denn, es sprechen bestimmte Gründe dagegen. Da der Redis-Quellcode frei verfügbar ist, ist es auch möglich, Redis aus dem Quellcode zu kompilieren. Wir empfehlen dies jedoch nicht, da die Verwaltung und Aktualisierung mühsamer ist.
Redis aus dem Ubuntu-Repository installieren
Aktualisieren Sie zunächst den lokalen APT-Paket-Cache:
|
1 |
sudo apt update |
Installieren Sie Redis als Nächstes mit dem folgenden Befehl:
|
1 |
sudo apt install redis-server |
Redis aus dem Quellcode installieren
Ubuntu enthält standardmäßig nicht die Build-Tools und erforderlichen Bibliotheken. Der folgende Befehl installiert alle notwendigen Tools zum Erstellen von Redis:
|
1 |
sudo apt install git build-essential |
Es gibt zwei zusätzliche Abhängigkeiten für das Erstellen von Redis. Diese Abhängigkeiten sind erforderlich, um Redis mit zusätzlichen Funktionen zu kompilieren, z. B. TLS-Unterstützung, systemd-Integration usw. Um Redis mit TLS-Unterstützung zu kompilieren, installieren Sie das Paket „libssl-dev“. Um Redis für die systemd-Unterstützung zu kompilieren, installieren Sie das Paket „libsystemd-dev“:
|
1 |
sudo apt install libssl-dev libsystemd-dev |
Der Redis-Quellcode ist auf GitHub verfügbar. Besuchen Sie die Redis-GitHub-Seite. Laden Sie als Nächstes den Quellcode herunter:
|
1 |
git clone https://github.com/redis/redis.git |
Wechseln Sie in das Verzeichnis des Redis-Quellcodes:
|
1 |
cd redis/ |
Führen Sie danach das make-Tool aus, um die Kompilierung zu starten. Es kompiliert Redis ohne zusätzliche Elemente:
|
1 |
make -j$(nproc) |
Um die TLS-Unterstützung zu aktivieren (vorausgesetzt, „libssl-dev“ ist installiert), verwenden Sie stattdessen den folgenden Befehl:
|
1 |
make -j$(nproc) BUILD_TLS=yes |
Um die Unterstützung für systemd zu aktivieren (vorausgesetzt, „libsystemd-dev“ ist installiert), verwenden Sie den folgenden Befehl:
|
1 |
make -j$(nproc) USE_SYSTEMD=yes |
Testen Sie als Nächstes, ob die Kompilierung erfolgreich war. Beachten Sie, dass für die Durchführung des Tests möglicherweise ein zusätzliches Paket „tcl-dev“ und die zugehörigen Abhängigkeiten erforderlich sind:
|
1 |
make test |
Installieren Sie Redis schließlich, indem Sie den folgenden Befehl ausführen:
|
1 |
sudo make install |
Wenn Redis mit TLS erstellt wurde, muss der Server auf folgende Weise gestartet werden:
|
1 2 |
./utils/gen-test-certs.sh ./runtest --tls |
Redis konfigurieren
Sobald die Installation abgeschlossen ist, ist es an der Zeit, Redis zu konfigurieren. Öffnen Sie die Redis-Konfigurationsdatei in einem Texteditor und scrollen Sie nach unten zum Abschnitt „supervised“:
|
1 |
sudo vim /etc/redis/redis.conf |
Ändern Sie den Wert von „supervised“ in „systemd“. Dadurch wird sichergestellt, dass der Redis-Dienst von systemd verwaltet wird. Um die Änderungen wirksam zu machen, starten Sie den Redis-Dienst neu:
|
1 |
sudo systemctl restart redis.service |
Redis testen
Es ist immer eine gute Idee zu testen, ob Redis ordnungsgemäß funktioniert, bevor Sie es weiter verwenden. Hier sind einige Möglichkeiten, das Verhalten von Redis zu testen. Der erste Schritt besteht darin, zu überprüfen, ob der Redis-Dienst aktiv ist und läuft:
|
1 |
sudo systemctl status redis |
Hier läuft Redis bereits. Standardmäßig startet der Redis-Dienst beim Booten. Wenn der Redis-Dienst manuell ausgeführt werden soll, deaktivieren Sie ihn:
|
1 |
sudo systemctl disable redis |
Der nächste Test besteht darin, dies über die Redis-Konsole zu überprüfen. Starten Sie den Redis-Befehlszeilen-Client:
|
1 |
redis-cli |
Führen Sie den „ping“-Befehl aus:
|
1 |
ping |
Die Ausgabe bestätigt, dass die Verbindung zum Server noch aktiv ist. Der nächste Test besteht darin, zu prüfen, ob das Setzen von Schlüsseln zulässig ist. Erstellen Sie einen „temp“-Schlüssel mit dem Wert „hello world“:
|
1 |
set temp “hello world” |
Rufen Sie den Wert mit dem „get“-Befehl ab:
|
1 |
get temp |
Wenn bis hierhin alles einwandfrei funktioniert, sollte Redis den Schlüsselwert ohne Probleme zurückgeben. Schließen Sie den Redis-Befehlszeilen-Client:
|
1 |
exit |
Der letzte Test besteht darin, zu überprüfen, ob Redis Daten auch dann dauerhaft speichern kann, wenn es gestoppt oder neu gestartet wird. Starten Sie den Redis-Dienst neu:
|
1 |
sudo systemctl restart redis |
Wenn Sie beim Ausführen des obigen Befehls einen Fehler erhalten, verwenden Sie den Befehl “systemctl enable redis-server”:
|
1 |
sudo systemctl enable redis-server |
Starten Sie den Redis-Befehlszeilen-Client und rufen Sie den Wert des zuvor erstellten „temp“-Schlüssels ab:
|
1 2 |
redis-cli get temp |
Damit ist der Redis-Test abgeschlossen. Ihr Redis-Server ist nun bereit, für den gewünschten Zweck verwendet zu werden.
Absicherung von Redis
Zu diesem Zeitpunkt ist Redis voll funktionsfähig. Einige der Standardkonfigurationen bieten jedoch nicht die beste Sicherheit. Wenn sie nicht aktualisiert werden, kann jeder böswillige Akteur die Gelegenheit nutzen, um Zugriff auf den Server und seine Daten zu erhalten. In diesem Abschnitt wird gezeigt, wie diese Schwachstellen behoben werden können. Obwohl diese Schritte optional sind, wird dringend empfohlen, sie zu befolgen, um die Systemsicherheit zu erhöhen.
Anbindung an localhost
Standardmäßig ist Redis nur von localhost aus zugänglich. Wenn Redis jedoch auf einem Remote-Server konfiguriert wurde, muss die Konfiguration aktualisiert werden, um Verbindungen von überall her zuzulassen. Dies ist jedoch möglicherweise nicht so sicher wie die Bindung an localhost. Um Redis wieder an localhost zu binden, öffnen Sie die Redis-Konfigurationsdatei in einem Texteditor:
|
1 |
sudo vim /etc/redis/redis.conf |
Scrollen Sie nach unten und suchen Sie die folgende Zeile. Stellen Sie sicher, dass sie nicht auskommentiert ist:
|
1 |
bind 127.0.0.1 ::1 |
Speichern und schließen Sie die Datei. Starten Sie dann den Redis-Dienst neu, um sicherzustellen, dass die Änderung sofort wirksam wird:
|
1 |
sudo systemctl restart redis |
Überprüfen Sie, ob die Änderung erfolgreich war:
|
1 |
sudo netstat -lnp | grep redis |
Wenn Sie die Fehlermeldung ‘netstat: command not found’ erhalten, verwenden Sie den Befehl zur Installation von net-tools “sudo apt-get install net-tools”. Die Ausgabe bestätigt, dass „redis-server“ erfolgreich an localhost (127.0.0.1) gebunden ist, was die kürzlich vorgenommene Änderung widerspiegelt. Wenn dort eine andere IP-Adresse steht (z. B. 0.0.0.0), überprüfen Sie die Konfigurationsdatei erneut und starten Sie den Redis-Server noch einmal neu.
Redis-Passwort konfigurieren
Die Konfiguration eines Passworts ermöglicht die Nutzung einer integrierten Sicherheitsfunktion von Redis – dem „AUTH“-Befehl. Er erfordert, dass sich Clients authentifizieren, um auf die Datenbank zuzugreifen. Standardmäßig ist für Redis kein Passwort konfiguriert. Das Passwort muss in der Redis-Konfigurationsdatei deklariert werden. Öffnen Sie die Konfigurationsdatei in einem Texteditor:
|
1 |
sudo vim /etc/redis/redis.conf |
Scrollen Sie dann nach unten zur folgenden Zeile und heben Sie die Auskommentierung auf:
|
1 |
requirepass foobared |
Nach dem Aufheben der Auskommentierung ist „foobared“ das Standardpasswort. Ändern Sie es in ein Passwort Ihrer Wahl. Bei Redis ist die Passwortstärke ein wichtiger Faktor. Da Redis ein extrem schneller Server ist, ist er potenziell leichter durch Brute-Force-Angriffe auszunutzen. Aus diesem Grund enthält die Konfigurationsdatei direkt die folgende Warnung. Hier ist ein kurzes Beispiel für die Generierung eines sehr starken Zufallspassworts. Wir verwenden den OpenSSL-Befehl, um eine zufällige Zeichenfolge zu generieren:
|
1 |
echo $(openssl rand 60 | openssl base64 -A) |
Nachdem Sie ein neues Passwort konfiguriert haben, starten Sie den Redis-Dienst neu, damit die Änderungen wirksam werden:
|
1 |
sudo systemctl restart redis.service |
Es ist an der Zeit zu testen, ob das Passwort erfolgreich angewendet wurde. Starten Sie die Redis-Kommandozeilenkonsole:
|
1 |
redis-cli |
Versuchen Sie dann, einen neuen Schlüssel festzulegen:
|
1 |
set user “cloudsigma” |
Redis wird die Anfrage ablehnen, da keine Authentifizierung für die Aktion vorliegt. Um eine Aktion auf dem Server auszuführen, muss der Benutzer zuerst autorisiert werden. Autorisieren Sie den Benutzer mit dem folgenden Befehl:
|
1 |
auth <passwort> |
Wenn das Passwort korrekt war, wird Redis die Aktion bestätigen. Nun gewährt Redis Zugriff auf seine Serverfunktionen:
|
1 2 |
set user “cloudsigma” get user |
Fürs Erste ist unsere Arbeit mit der Redis-Konsole beendet. Sie können die Konsole schließen:
|
1 |
exit |
Gefährliche Befehle umbenennen
Redis ermöglicht das Umbenennen oder vollständige Deaktivieren bestimmter Befehle, die als gefährlich eingestuft werden. Dies ist ein weiteres wichtiges integriertes Sicherheitsmerkmal von Redis. Warum gelten Befehle als gefährlich? Wenn sie von einem nicht autorisierten Benutzer ausgeführt werden, können diese Befehle Daten auf dem Server neu konfigurieren, zerstören oder löschen. Es ist gängige Praxis, eine Reihe gefährlicher Redis-Befehle zu deaktivieren/umzubenennen. Beachten Sie, dass die Sicherheitsbedrohung eines Befehls von der Situation abhängt. Beispielsweise können einige der folgenden Befehle regelmäßig erforderlich sein. In solchen Fällen wird eine Deaktivierung nicht empfohlen. In einer solchen Situation kann sich das Umbenennen des Befehls als vorteilhafter erweisen. Hier ist eine kurze Liste der Befehle, die als gefährlich eingestuft werden. Dies ist ein guter Ausgangspunkt, um die Sicherheit des Redis-Servers zu erhöhen:
- FLUSHDB
- FLUSHALL
- KEYS
- PEXPIRE
- DEL
- CONFIG
- SHUTDOWN
- BGREWRITEAOF
- BGSAVE
- SAVE
- SPOP
- SREM
- RENAME
- DEBUG
Um einen Befehl umzubenennen oder zu deaktivieren, muss er in der Redis-Konfigurationsdatei deklariert werden. Öffnen Sie die Redis-Konfigurationsdatei und fügen Sie die folgenden Zeilen hinzu. Hier wird „rename-command“ verwendet, um die Befehle in eine leere Zeichenfolge umzubenennen. Fügen Sie so viele Einträge wie nötig hinzu:
|
1 |
sudo vim /etc/redis/redis.conf |
|
1 2 3 4 |
$ rename-command FLUSHDB "" $ rename-command FLUSHALL "" $ rename-command SHUTDOWN "" $ rename-command CONFIG "" |
Ebenso ist es möglich, die Befehle in einen anderen Namen umzubenennen. In bestimmten Situationen kann dies mehr Flexibilität bieten:
|
1 2 3 4 |
$ rename-command FLUSHDB "command_1" $ rename-command FLUSHALL "command_2" $ rename-command SHUTDOWN "command_3" $ rename-command CONFIG "command_4" |
Speichern Sie die Datei und beenden Sie den Editor. Damit die Änderungen wirksam werden, starten Sie den Redis-Dienst neu:
|
1 |
sudo systemctl restart redis.service |
Überprüfen Sie die Änderungen. Starten Sie als Nächstes die Redis-Konsole und authentifizieren Sie den Zugriff:
|
1 2 |
redis-cli auth <passwort> |
Nehmen wir an, dass der Befehl „CONFIG“ deaktiviert oder umbenannt wurde. Versuchen Sie, den folgenden „CONFIG“-Befehl zu verwenden. Er wird fehlschlagen:
|
1 |
config get requirepass |
Wenn der Befehl deaktiviert wurde, kann erst wieder darauf zugegriffen werden, wenn er wieder aktiviert wird. Wenn er jedoch umbenannt wurde, verwenden Sie den neuen Alias:
|
1 |
command_4 get requirepass |
Fazit
Dieses Tutorial zeigt, wie Sie eine Redis-Installation installieren, sichern, konfigurieren und validieren. Es zeigt auch, wie Sie die integrierten Sicherheitsfunktionen von Redis nutzen können, um es weniger anfällig für Angriffe zu machen. Wenn sich jedoch bereits jemand auf dem Server angemeldet hat, ist es recht einfach, die Redis-spezifischen Sicherheitsfunktionen zu umgehen. Aus diesem Grund ist eine Firewall zum Schutz des Zugriffs auf den Redis-Server von entscheidender Bedeutung.
Frohes Schaffen!






Kommentare
Noch keine Kommentare. Schreiben Sie den ersten.