Einführung

Redis ist ein In-Memory-Schlüsselwertspeicher, der für seine Flexibilität, Leistung und breite Sprachunterstützung bekannt ist. Dieses Quickstart-Tutorial zeigt, wie Sie Redis auf einem Ubuntu 20.04-Server installieren, konfigurieren und sichern.

Voraussetzungen

Um diesen Leitfaden auszuführen, benötigen Sie Zugriff auf einen Ubuntu 20.04-Server, der einen non-root user mit sudo-Berechtigungen und eine mit ufw konfigurierte Firewall aufweist. Hierzu können Sie unserem Leitfaden zur Ersteinrichtung eines Servers unter Ubuntu 20.04 folgen.

Schritt 1 — Installieren und Konfigurieren von Redis

Als Erstes aktualisieren Sie Ihren lokalen apt-Paketcache:

  • sudo apt update

Installieren Sie anschließend Redis, indem Sie Folgendes eingeben:

  • sudo apt install redis-server

Öffnen Sie als Nächstes die Redis-Konfigurationsdatei mit Ihrem bevorzugten Texteditor:

  • sudo nano /etc/redis/redis.conf

Suchen Sie in der Datei nach der Anweisung supervised, mit der Sie ein Init-System zur Verwaltung von Redis als Dienst deklarieren können. Da Ubuntu das Init-System systemd verwendet, ändern Sie den Wert von no zu systemd:

/etc/redis/redis.conf
. . .

# If you run Redis from upstart or systemd, Redis can interact with your
# supervision tree. Options:
#   supervised no      - no supervision interaction
#   supervised upstart - signal upstart by putting Redis into SIGSTOP mode
#   supervised systemd - signal systemd by writing READY=1 to $NOTIFY_SOCKET
#   supervised auto    - detect upstart or systemd method based on
#                        UPSTART_JOB or NOTIFY_SOCKET environment variables
# Note: these supervision methods only signal "process is ready."
#       They do not enable continuous liveness pings back to your supervisor.
supervised systemd

. . .

Wenn Sie fertig sind, speichern und schließen Sie die Datei. Wenn Sie nano zum Bearbeiten der Datei verwendet haben, drücken Sie dazu STRG + X, Y und dann ENTER.

Starten Sie dann den Redis-Dienst neu, damit die Änderungen, die Sie in der Konfigurationsdatei vorgenommen haben, angewendet werden:

  • sudo systemctl restart redis.service

Um zu testen, ob Redis richtig funktioniert, stellen Sie mit dem Redis-Befehlszeilenclient redis-cli eine Verbindung zum Server her:

  • redis-cli

Testen Sie in der folgenden Eingabeaufforderung die Verbindung mit dem Befehl ping:

  • ping
Output
PONG

Diese Ausgabe bestätigt, dass die Serververbindung hergestellt ist. Als Nächstes überprüfen Sie, ob Sie Schlüssel festlegen können, indem Sie Folgendes ausführen:

  • set test "It's working!"
Output
OK

Rufen Sie den Wert ab, indem Sie Folgendes eingeben:

  • get test

Wenn alles funktioniert, können Sie den gespeicherten Wert abrufen:

Output
"It's working!"

Nachdem Sie die Bestätigung haben, dass Sie den Wert abrufen können, beenden Sie die Redis-Eingabeaufforderung, um wieder zur Shell zu gelangen:

  • exit

Schritt 2 — Konfigurieren eines Redis-Passworts

Sie können ein Redis-Passwort direkt in der Konfigurationsdatei von Redis, /etc/redis/redis.conf., konfigurieren. Öffnen Sie die Datei erneut mit Ihrem bevorzugten Editor:

  • sudo nano /etc/redis/redis.conf

Scrollen Sie zum Abschnitt SECURITY und suchen Sie eine Anweisung mit der Kommentierung:

/etc/redis/redis.conf
. . .
# requirepass foobared
. . .

Heben Sie die Kommentierung auf, indem Sie # entfernen, und ändern Sie foobared in ein sicheres Passwort:

/etc/redis/redis.conf
. . .
requirepass your_redis_password
. . .

Nach dem Einrichten des Passworts speichern und schließen Sie die Datei. Starten Sie erneut Redis:

  • sudo systemctl restart redis.service

Öffnen Sie den Redis-Client, um zu testen, ob das Passwort funktioniert:

  • redis-cli

Folgendes zeigt eine Sequenz von Befehlen, mit denen getestet wird, ob das Redis-Passwort funktioniert. Der erste Befehl versucht, einen Schlüssel auf einen Wert vor der Authentifizierung einzustellen:

  • set key1 10

Das funktioniert nicht, da Sie keine Authentifizierung durchgeführt haben. Daher gibt Redis einen Fehler aus:

Output
(error) NOAUTH Authentication required.

Der nächste Befehl führt die Authentifizierung mit dem Passwort durch, das in der Redis-Konfigurationsdatei angegeben ist:

  • auth your_redis_password

Redis bestätigt:

Output
OK

Danach wird der vorherige Befehl erfolgreich ausgeführt:

  • set key1 10
Output
OK

get key1 fragt Redis nach dem Wert des neuen Schlüssels.

  • get key1
Output
"10"

Nachdem Sie die Bestätigung haben, dass Sie Befehle im Redis-Client nach Authentifizierung ausführen können, beenden Sie redis-cli:

  • quit

Schritt 3 — Umbenennen von gefährlichen Befehlen

Die andere in Redis integrierte Sicherheitsfunktion besteht in der Umbenennung oder vollständigen Deaktivierung bestimmter Befehle, die als gefährlich eingestuft werden. Einige der Befehle, die als gefährlich eingestuft werden, sind: FLUSHDB, FLUSHALL, KEYS, PEXPIRE, DEL, CONFIG, SHUTDOWN, BGREWRITEAOF, BGSAVE, SAVE, SPOP, SREM, RENAME und DEBUG. Die Deaktivierung oder Umbenennung dieser und anderer Befehle erschwert es unautorisierten Benutzern, Ihre Daten anders zu konfigurieren, zu zerstören oder anderweitig zu vernichten.

Um Redis-Befehle umzubenennen oder zu deaktivieren, öffnen Sie erneut die Konfigurationsdatei:

  • sudo nano /etc/redis/redis.conf

Achtung: Die folgenden Schritte zur Deaktivierung und Umbenennung von Befehlen sind Beispiele. Sie sollten nur die Befehle deaktivieren oder umbenennen, die für Sie sinnvoll sind. Sie können die vollständige Liste der Befehle unter redis.io/commands selbst überprüfen und eruieren, wie diese missbraucht werden könnten.

Um einen Befehl zu deaktivieren, benennen Sie ihn einfach wie unten gezeigt in eine leere Zeichenfolge um (gekennzeichnet durch ein Paar Anführungszeichen ohne Zeichen dazwischen):

/etc/redis/redis.conf
. . .
# It is also possible to completely kill a command by renaming it into
# an empty string:
#
rename-command FLUSHDB ""
rename-command FLUSHALL ""
rename-command DEBUG ""
. . .

Zur Umbenennung eines Befehls geben Sie diesem wie bei den unten gezeigten Beispielen einen anderen Namen. Umbenannte Befehle sollten für andere schwierig zu erraten und für Sie selbst leicht zu merken sein:

/etc/redis/redis.conf
. . .
# rename-command CONFIG ""
rename-command SHUTDOWN SHUTDOWN_MENOT
rename-command CONFIG ASC12_CONFIG
. . .

Speichern Sie Ihre Änderungen und schließen Sie die Datei.

Nach der Umbenennung eines Befehls wenden Sie die Änderung an, indem Sie Redis neu starten:

  • sudo systemctl restart redis.service

Um den neuen Befehl zu testen, gehen Sie in die Redis-Befehlszeile:

  • redis-cli

Führen Sie dann eine Authentifizierung durch:

  • auth your_redis_password
Output
OK

Wenn Sie den Befehl CONFIG wie im vorausgehenden Beispiel in ASC12_CONFIG umbenannt haben, probieren Sie nun den ursprünglichen Befehl CONFIG aus. Das sollte fehlschlagen, da Sie diesen umbenannt haben:

  • config get requirepass
Output
(error) ERR unknown command `config`, with args beginning with:

Der umbenannte Befehl kann jedoch erfolgreich aufgerufen werden. Die Groß- und Kleinschreibung muss dabei nicht beachtet werden:

  • asc12_config get requirepass
Output
1) "requirepass" 2) "your_redis_password"

Zusammenfassung

In diesem Quickstart-Tutorial haben Sie Redis installiert und konfiguriert, die korrekte Funktion Ihrer Redis-Installation überprüft und die integrierten Sicherheitsfunktionen genutzt, um sie weniger anfällig für Angriffe böswilliger Akteure zu machen.

0 Comments

Creative Commons License