Redis leicht gemacht: Eine Schritt-für-Schritt-Anleitung zur Installation von Redis unter AlmaLinux 9
Redis ist ein beliebter und quelloffener In-Memory-Schlüsselwert-Datenspeicher. Er unterstützt verschiedene Datenstrukturen wie Hash, Listen, Sets, Strings und viele mehr. Redis ist nur für den Betrieb in einer vertrauenswürdigen Umgebung konzipiert und kann als Datenbank, Cache und Message Broker verwendet werden. Redis ist bekannt für seine breite Unterstützung, hohe Leistung, hohe Verfügbarkeit und Flexibilität.
Für einen kleinen Einsatz kannst du Redis als Standalone installieren. Für den großen Einsatz gibt es zusätzliche Komponenten wie Redis Sentinel für hohe Verfügbarkeit und Redis Cluster für die Partitionierung von Daten auf mehrere Redis Node Server.
Dieses Tutorial zeigt dir, wie du Redis auf dem AlmaLinux 9 Server installierst und konfigurierst. Außerdem zeigen wir dir, wie du Redis über Redis ACLs (Access Control Lists) und Firewalld absicherst.
Voraussetzungen
Um dieses Tutorial zu absolvieren, musst du Folgendes haben
- Einen AlmaLinux-Server 9 – In diesem Beispiel wird der AlmaLinux-Server mit dem Hostnamen„alma-linux“ und der IP-Adresse„192.168.5.21“ verwendet.
- Ein Nicht-Root-Benutzer mit sudo/root-Administrator-Rechten.
- Eine Firewalld, die konfiguriert ist und läuft.
Also, los geht’s.
Redis installieren
Redis ist ein leistungsstarker Open-Source-Datenspeicher, der als Datenbank, Cache, Message Broker und Streaming-Engine verwendet werden kann. Redis ist auf den meisten Linux-Distributionen verfügbar, auch auf AlmaLinux. Es kann über das Standard-Distributions-Repository installiert werden.
Bevor du Redis installierst, führe den folgenden Befehl aus, um den Paket-Cache neu zu erstellen und die neueste Version der Paketinformationen zu erhalten.
sudo dnf makecache
Führe nun den folgenden dnf-Befehl aus, um Redis zu installieren. Gib y ein, wenn du dazu aufgefordert wirst, und drücke dann ENTER, um fortzufahren.
sudo dnf install redis
Wenn Redis installiert ist, führe die folgenden systemctl-Befehle aus, um den Redis-Dienst zu starten und zu aktivieren.
sudo systemctl start redis sudo systemctl enable redis
Überprüfe abschließend den Status des Redis-Dienstes mit dem folgenden Befehl.
sudo systemctl is-enabled redis sudo systemctl status redis
Die folgende Ausgabe bestätigt, dass Redis läuft und aktiviert ist, was bedeutet, dass es beim Systemstart automatisch ausgeführt wird.
Redis mit Firewalld absichern
In diesem Abschnitt wirst du Firewalld einrichten, um die Redis-Installation zu sichern. Das erreichst du am besten, indem du in firewalld Zonen einrichtest und bestimmte Netzwerke/Subnetze für den Dienst zulässt.
Führe den folgenden Befehl aus, um eine neue Firewalld-Zone mit dem Namen„svcs“ zu erstellen und füge dann die interne Netzwerkschnittstelle in diese Zone ein. In diesem Beispiel wird Redis auf einer internen IP-Adresse unter der Schnittstelle„enp0s8“ ausgeführt. Du musst deine Schnittstelle zu der Zone„svcs“ hinzufügen.
sudo firewall-cmd --new-zone=svcs --permanent sudo firewall-cmd --zone=svcs --add-interface=enp0s8 --permanent
Führe nun den folgenden Befehl aus, um dem Netzwerk„192.168.5.1/24“ den Zugriff auf die Ports der Zone„svcs“ zu erlauben.
sudo firewall-cmd --zone=svcs --add-source=192.168.5.1/24
Danach fügst du den Redis-Port„6379/tcp“ zur Zone„svcs“ hinzu und wendest die Änderungen in der Firewalld an.
sudo firewall-cmd --zone=svcs --add-port=6379/tcp sudo firewall-cmd --runtime-to-permanent
Lade die Firewalld mit dem folgenden Befehl neu, um sicherzustellen, dass die neuen Änderungen in der Firewalld übernommen wurden.
sudo firewall-cmd --reload
Führe abschließend den folgenden Befehl aus, um die Liste der aktiven Zonen in der Firewalld zu überprüfen. Du solltest sehen, dass die Zone„svcs“ aktiv ist.
sudo firewall-cmd --get-active-zones
Du kannst nun die Liste der Regeln überprüfen, die in der Zone „svcs“ verfügbar sind. Wenn du erfolgreich bist, solltest du den Redis-Port„6379/tcp“ im Abschnitt Ports und das Subnetz„192.168.5.1/24“ in der Source sehen.
sudo firewall-cmd --list-all --zone=svcs
Redis konfigurieren
In diesem Abschnitt wirst du die Redis-Installation konfigurieren, indem du die Standardkonfiguration von Redis„/etc/redis/redis.conf“ änderst.
Öffne die Redis-Konfigurationsdatei„/etc/redis/redis.conf“ mit dem unten stehenden nano-Editor-Befehl.
sudo nano /etc/redis/redis.conf
Ändere den Wert des Parameters„bind“ mit der internen IP-Adresse des Servers. In diesem Beispiel wird Redis mit der lokalen IP-Adresse„192.168.5.21“ betrieben.
bind 192.168.5.21
Deaktiviere nun den„protected-mode„, indem du den Wert des Parameters auf„no“ änderst. Um Fernverbindungen von deiner Anwendung zum Redis-Server zu ermöglichen, musst du den „protected-mode“ deaktivieren.
protected-mode no
Unter AlmaLinux ist der Standarddienstmanager „systemd“. Dekommentiere den Parameter„supervised“ und ändere den Standardwert in„systemd„, um die Integration von Redis mit systemd zu ermöglichen.
supervised systemd
Schließlich musst du noch den Parameter„aclfile“ auskommentieren, um die ACLs (Access Control Lists) von Redis über eine Datei zu aktivieren. Seit Redis v6 wird die Verwendung von ACLs zur Absicherung von Redis empfohlen. Redis unterstützt verschiedene Methoden zur Verwendung von ACLs: Du kannst ACLs über die Redis-Shell oder eine definierte ACLs-Datei erstellen. In diesem Beispiel werden ACLs über die Datei verwendet.
aclfile /etc/redis/users.acl
Speichere und schließe die Datei, wenn du fertig bist.
Führe nun den folgenden Befehl aus, um die ACLs-Datei „/etc/redis/users.acl“ zu erstellen.
touch /etc/redis/users.acl
Danach führst du den folgenden Befehl aus, um den Redis-Dienst neu zu starten und die vorgenommenen Änderungen anzuwenden.
sudo systemctl restart redis
Damit ist Redis mit den neuen Konfigurationen einsatzbereit. Im nächsten Schritt überprüfst du deine Redis-Konfiguration mit dem Redis CLI.
Verbinde dich mit dem Redis-Server mit dem unten stehenden Befehl „redis-cli“. In diesem Beispiel gibst du die IP-Adresse des Redis-Servers an.
redis-cli -h 192.168.5.21
Sobald du eingeloggt bist, führe den folgenden Befehl aus, um sicherzustellen, dass die Verbindung erfolgreich ist. Du solltest die Ausgabe„test redis“ sehen, wenn die Verbindung erfolgreich ist.
PING "test redis"
Als Nächstes führst du die folgenden Abfragen aus, um die aktuellen Redis-Konfigurationen zu ermitteln. In diesem Beispiel überprüfst du die Einstellungen„bind„,„supervised“ und “ protected-mode„.
CONFIG GET bind CONFIG GET supervised CONFIG GET protected-mode
Wenn du erfolgreich bist, sollte die Konfiguration mit den Einstellungen übereinstimmen, die du zuvor vorgenommen hast.
Zum Schluss führst du die folgende ACL-Abfrage aus, um die Liste der verfügbaren ACLs auf Redis zu erhalten.
ACL LIST
Die Standard-Redis-Installation hat den ACL-Benutzer„default„, die Authentifizierung ist„nopass“ oder Anmeldung ohne Passwort und die Berechtigung„+@all„, die es dem„default„-Benutzer erlaubt, alle Redis-Abfragen auszuführen.
An diesem Punkt hast du die Grundkonfiguration von Redis abgeschlossen. Im nächsten Schritt beschäftigst du dich mit der Konfiguration von Redis ACLs (Access Control Lists) zur Sicherung der Redis-Installation.
Redis mit ACLs (Zugriffskontrolllisten) absichern
Seit Redis 6.x ist die beste Möglichkeit, Redis zu sichern, die Implementierung von ACLs (Access Control Lists). Damit kannst du Benutzer und Berechtigungen auf dem Redis-Server einrichten, was die Parameter „requirepass“ und „rename-command“ der alten Redis-Version überflüssig macht.
Du kannst ACLs auf Redis mit zwei verschiedenen Methoden einrichten:
- Einrichten von ACLs über ACL-Befehl\
- Einrichten von ACLs über eine externe ACL-Datei
Mit dem Redis-Server, den du konfiguriert hast, richtest du Redis ACLs über eine externe ACL-Datei ein.
Öffne zunächst die ACL-Datei „/etc/redis/users.acl“ mit dem folgenden Editor-Befehl nano.
sudo nano /etc/redis/users.acl
Füge die folgenden Konfigurationen ein, um zwei Benutzer für Redis anzulegen.
user alice on -DEBUG +@all ~* >AliceP4ssw0rd user bob on +@all -@dangerous ~* >BobP4ssw0rd
Speichere die Datei und beende den Editor, wenn du fertig bist.
Mit dieser Konfiguration erstellst du zwei Benutzer:
- Benutzer alice mit dem Passwort‚AliceP4ssw0rd‚ und der Erlaubnis, alle Abfragen‚+@all‚ außer DEBUG‚-DEBUG‚ auszuführen, sowie die Erlaubnis, Abfragen gegen alle verfügbaren Schlüsselwerte‚~*‚ auszuführen, die verfügbar sind.
- Ein Benutzer bob mit dem Passwort‚BobP4ssw0rd‚ und dem Recht, alle Abfragen‚+@all‚ außer‚-@dangerous‚ auszuführen. Die Befehlskategorie‚-@dangerous‚ umfasst FLUSHALL, MIGRATE, RESTORE, SORT, KEYS, CLIENT, DEBUG, INFO, CONFIG, SAVE, REPLICAOF und viele mehr. Außerdem darf dieser Benutzer Abfragen auf alle verfügbaren Schlüsselwerte auf dem Redis-Server stellen.
Hier findest du die vollständige Liste der Befehlskategorien auf Redis.
Führe nun den folgenden systemctl-Befehl aus, um den Redis-Dienst neu zu starten und die Änderungen zu übernehmen.
sudo systemctl restart redis
Sobald Redis neu gestartet ist, verbindest du dich mit dem Redis-Server, indem du den folgenden redis-cli-Befehl ausführst.
redis-cli -h 192.168.5.21
Sobald du eingeloggt bist, führe die folgende ACL-Abfrage aus, um die Liste der verfügbaren Benutzer auf Redis zu überprüfen.
ACL LIST
Zu diesem Zeitpunkt solltest du die drei Benutzer alice, bob und default sehen.
Mit der folgenden Abfrage kannst du auch den detaillierten Benutzer auf Redis überprüfen.
ACL GETUSER alice ACL GETUSER bob
Du solltest sehen, dass der Benutzer alice alle verfügbaren Befehle in Redis mit der Befehlsgruppe„+@all“ ausführen darf.
Beim Benutzer bob siehst du, dass der Befehl„+@all“ erlaubt ist, aber auch die Befehlsgruppe„dangerous“ deaktiviert ist.
Standard-Redis-Benutzer deaktivieren
Wenn die neuen Benutzer alice und bob erstellt sind, musst du den„Standard„-Benutzer mit der folgenden Abfrage deaktivieren.
ACL SETUSER default OFF
Überprüfe dann erneut die Liste der verfügbaren Benutzer in Redis mit dem folgenden Befehl.
ACL LIST
Du solltest den Benutzer„default“ mit dem Status „off“ oder „disabled“ wie folgt erwarten:
Drücke Strg+d, um die Redis-Shell zu verlassen.
Melde dich danach mit dem folgenden Befehl erneut bei Redis an.
redis-cli -h 192.168.5.21
Dann gibst du die folgende PING-Abfrage ein, um die aktuelle Verbindung zu überprüfen.
PING
Wenn der Redis„Standard„-Benutzer deaktiviert ist, solltest du eine Fehlermeldung wie die folgende erhalten – Du musst ein authentifizierter Benutzer sein, um Abfragen zu starten.
Benutzer alice verifizieren
Als Nächstes verifizierst du die neuen Redis-Benutzer alice und bob, die du angelegt hast.
Führe den folgenden Befehl aus, um dich als Benutzer „alice“ zu authentifizieren. Wenn du erfolgreich bist, solltest du die Ausgabe „OK“ erhalten.
AUTH alice AliceP4ssw0rd
Führe nun die folgenden Abfragen aus, um sicherzustellen, dass du über den Benutzer alice bei Redis authentifiziert bist.
PING ACL WHOAMI
Du solltest die Meldung PONG and authenticated as user alice sehen.
Führe nun die folgenden Abfragen aus, um sicherzustellen, dass der Benutzer alice alle verfügbaren Abfragen, einschließlich der Redis-Verwaltung, ausführen kann.
CONFIG GET bind CONFIG GET supervised
Bei Erfolg solltest du eine Ausgabe der aktuellen Redis-Konfiguration für die Parameter bind und supervised erhalten.
Überprüfe den Benutzer bob
Führe die folgende Abfrage aus, um dich als Benutzer bob anzumelden und zu authentifizieren.
AUTH bob BobP4ssw0rd
Nach der Authentifizierung führst du die folgende PING-Abfrage aus. Wenn sie erfolgreich war, solltest du die Meldung PONG erhalten.
PING
Als Nächstes muss der Benutzer bob in der Redis ACL-Datei die Befehlskategorie‚-@dangerous‚ haben, die verhindert, dass dieser Benutzer einige gefährliche Befehle wie FLUSHALL, CONFIG und viele andere auf dem Redis-Server ausführen kann.
Wenn du die folgenden Abfragen als Benutzer bob ausführst, solltest du eine Ausgabe wie „NOPERM“ erhalten, was bedeutet, dass der Benutzer bob keine Berechtigung zur Ausführung des Befehls hat.
FLUSHALL CONFIG GET bind SAVE
Damit hast du Redis erfolgreich mit ACLs (Access Control Lists) über die ACL-Datei abgesichert.
Fazit
Herzlichen Glückwunsch! Du hast Redis nun erfolgreich auf AlmaLinux 9 installiert und gelernt, wie du ACLs (Access Control Lists) über eine ACL-Datei einrichtest, um die Redis-Installation zu sichern. Außerdem hast du Redis mit Firewalld gesichert, indem du eine spezielle Zone für den Redis-Dienst eingerichtet hast.