Redis auf Ubuntu installieren und sichern – Schritt für Schritt
Einleitung
Redis ist eine hochperformante In-Memory-Datenbank, die als Key-Value-Store fungiert und aufgrund ihrer Geschwindigkeit und Flexibilität in modernen Webanwendungen weit verbreitet ist. Als Cache-System, Message-Broker oder primäre Datenbank eingesetzt, bietet Redis außergewöhnliche Performance durch die Speicherung aller Daten im Arbeitsspeicher.
Eine Standard-Redis-Installation ist jedoch keineswegs produktionstauglich. Ohne entsprechende Sicherheitsmaßnahmen entstehen erhebliche Risiken: Unbefugter Zugriff, Datenlecks und sogar komplette Server-Kompromittierung sind mögliche Folgen einer ungesicherten Redis-Instanz. Angreifer nutzen regelmäßig schlecht konfigurierte Redis-Server für Cryptomining, Datendiebstahl oder als Sprungbrett für weitere Attacken.
Dieses Tutorial führt Sie durch die komplette Installation und professionelle Absicherung von Redis auf Ubuntu. Sie lernen moderne Sicherheitskonzepte wie Access Control Lists (ACLs), TLS-Verschlüsselung, Firewall-Konfiguration und Systemhärtung kennen, um eine produktionsreife Redis-Installation zu erstellen.
Voraussetzungen
Für die erfolgreiche Durchführung dieses Tutorials benötigen Sie:
- Ubuntu 20.04 LTS oder neuer mit Root- oder Sudo-Berechtigung
- Mindestens 1 GB RAM (empfohlen 2 GB oder mehr)
- Grundlegende Linux-Kenntnisse und Erfahrung mit der Kommandozeile
- Verständnis für Netzwerk-Grundlagen und Firewall-Konzepte
- SSH-Zugang zum Server (bei Remote-Installation)
Stellen Sie sicher, dass Ihr System auf dem aktuellen Stand ist, bevor Sie beginnen.
Schritt-für-Schritt Anleitung
System aktualisieren und Redis installieren
Beginnen Sie mit der Aktualisierung Ihres Systems und der Installation von Redis:
sudo apt update && sudo apt upgrade -y
sudo apt install redis-server -y
Überprüfen Sie die installierte Version:
redis-server --version
Redis-Dienst konfigurieren
Öffnen Sie die Haupt-Konfigurationsdatei zur Bearbeitung:
sudo nano /etc/redis/redis.conf
Nehmen Sie folgende grundlegende Sicherheitseinstellungen vor:
# Netzwerk-Sicherheit: Nur lokale Verbindungen zulassen
bind 127.0.0.1 ::1
# Port ändern (optional, aber empfohlen)
port 6380
# Geschützten Modus aktivieren
protected-mode yes
# Maximale Client-Verbindungen begrenzen
maxclients 128
# Memory-Limit setzen (Schutz vor DoS)
maxmemory 256mb
maxmemory-policy allkeys-lru
# TCP-Keepalive aktivieren
tcp-keepalive 300
Access Control Lists (ACLs) einrichten
Moderne Redis-Versionen unterstützen granulare Benutzerrechte über ACLs. Erstellen Sie eine separate ACL-Konfigurationsdatei:
sudo nano /etc/redis/users.acl
Definieren Sie Benutzer mit spezifischen Rechten:
# Default-User deaktivieren
user default off
# Admin-User mit vollen Rechten
user admin on >IhrSicheresAdminPasswort ~* &* +@all
# Anwendungs-User mit eingeschränkten Rechten
user webapp on >IhrWebappPasswort ~app:* +@read +@write -@dangerous
# Monitoring-User nur mit Leseberechtigung
user monitor on >IhrMonitorPasswort ~* +@read +info +ping
Binden Sie die ACL-Datei in die Hauptkonfiguration ein:
# In /etc/redis/redis.conf hinzufügen
aclfile /etc/redis/users.acl
TLS-Verschlüsselung implementieren
Erstellen Sie zunächst selbstsignierte Zertifikate für die Entwicklung:
sudo mkdir -p /etc/redis/tls
cd /etc/redis/tls
# Private Schlüssel generieren
sudo openssl genrsa -out redis.key 2048
# Zertifikat erstellen
sudo openssl req -new -x509 -key redis.key -out redis.crt -days 365 -subj "/CN=redis-server"
# CA-Zertifikat für Client-Authentifizierung
sudo openssl req -new -x509 -key redis.key -out ca.crt -days 365 -subj "/CN=redis-ca"
# Berechtigungen setzen
sudo chown redis:redis /etc/redis/tls/*
sudo chmod 600 /etc/redis/tls/*
TLS in der Redis-Konfiguration aktivieren:
# TLS-Konfiguration in /etc/redis/redis.conf
port 0
tls-port 6380
tls-cert-file /etc/redis/tls/redis.crt
tls-key-file /etc/redis/tls/redis.key
tls-ca-cert-file /etc/redis/tls/ca.crt
tls-protocols "TLSv1.2 TLSv1.3"
tls-ciphers "HIGH:!aNULL:!MD5"
tls-prefer-server-ciphers yes
Systemd-Service optimieren
Erstellen Sie eine Systemd-Override-Konfiguration für zusätzliche Sicherheit:
sudo systemctl edit redis-server
Fügen Sie folgende Härtungsmaßnahmen hinzu:
[Service]
# Sicherheits-Härtung
NoNewPrivileges=true
PrivateTmp=true
ProtectSystem=strict
ProtectHome=true
ReadWritePaths=/var/lib/redis /var/log/redis
# Resource-Limits
LimitNOFILE=65535
LimitNPROC=32768
# Restart-Policy
Restart=always
RestartSec=5
Firewall konfigurieren
Richten Sie UFW für kontrollierten Netzwerkzugang ein:
# UFW aktivieren
sudo ufw enable
# Standard-Regeln setzen
sudo ufw default deny incoming
sudo ufw default allow outgoing
# SSH-Zugang sicherstellen
sudo ufw allow ssh
# Redis-Port nur für spezifische IPs öffnen (Beispiel)
sudo ufw allow from 192.168.1.0/24 to any port 6380
# Regeln überprüfen
sudo ufw status verbose
Logging und Monitoring einrichten
Konfigurieren Sie umfassendes Logging:
# Logging-Konfiguration in redis.conf
loglevel notice
logfile /var/log/redis/redis-server.log
syslog-enabled yes
syslog-ident redis
Log-Rotation einrichten:
sudo nano /etc/logrotate.d/redis-server
/var/log/redis/*.log {
weekly
rotate 52
compress
delaycompress
missingok
create 640 redis redis
postrotate
systemctl reload redis-server
endscript
}
Service starten und aktivieren
Starten Sie Redis mit den neuen Konfigurationen:
sudo systemctl daemon-reload
sudo systemctl restart redis-server
sudo systemctl enable redis-server
Überprüfung
Service-Status kontrollieren
Überprüfen Sie den Service-Status und potenzielle Fehler:
sudo systemctl status redis-server
sudo journalctl -u redis-server --no-pager
Verbindung testen
Testen Sie die Verbindung mit dem Redis-CLI:
# Lokale Verbindung mit TLS
redis-cli --tls \
--cert /etc/redis/tls/redis.crt \
--key /etc/redis/tls/redis.key \
--cacert /etc/redis/tls/ca.crt \
-p 6380
Authentifizieren Sie sich mit einem erstellten Benutzer:
AUTH admin IhrSicheresAdminPasswort
PING
Sicherheit validieren
Überprüfen Sie die ACL-Konfiguration:
ACL LIST
ACL USERS
Testen Sie die Benutzerrechte:
# Als webapp-User anmelden
AUTH webapp IhrWebappPasswort
# Erlaubte Operation
SET app:test "value"
# Verbotene Operation (sollte fehlschlagen)
FLUSHALL
Troubleshooting
Häufige Probleme und Lösungen
Redis startet nicht nach Konfigurationsänderungen:
- Prüfen Sie die Syntax der Konfigurationsdatei mit
redis-server /etc/redis/redis.conf --test-memory 1 - Überprüfen Sie die Dateiberechtigungen der TLS-Zertifikate
- Kontrollieren Sie die Logs mit
sudo journalctl -u redis-server -f
ACL-Authentifizierung schlägt fehl:
- Verifizieren Sie die Benutzer-Syntax in der ACL-Datei
- Stellen Sie sicher, dass der Default-User deaktiviert ist
- Überprüfen Sie Passwort und Benutzerrechte mit
ACL LIST
TLS-Verbindungsprobleme:
- Validieren Sie die Zertifikate mit
openssl x509 -in /etc/redis/tls/redis.crt -text -noout - Prüfen Sie die TLS-Konfiguration und unterstützte Protokoll-Versionen
- Testen Sie zunächst ohne Client-Zertifikat-Authentifizierung
Performance-Probleme:
- Überwachen Sie die Memory-Nutzung mit
INFO memory - Überprüfen Sie die Eviction-Policy bei Memory-Limits
- Analysieren Sie Slow-Queries mit
SLOWLOG GET
Fazit
Sie haben erfolgreich eine sichere, produktionsreife Redis-Installation auf Ubuntu implementiert. Die Konfiguration umfasst moderne Sicherheitsstandards wie granulare ACLs, TLS-Verschlüsselung, Netzwerk-Isolation und Systemhärtung.
Die wichtigsten Sicherheitsmaßnahmen im Überblick:
- Benutzer-basierte Zugriffskontrolle statt veralteter Passwort-Authentifizierung
- Ende-zu-Ende-Verschlüsselung durch TLS
- Netzwerk-Segmentierung über Firewall-Regeln
- Resource-Limits zum DoS-Schutz
- Umfassendes Logging und Monitoring
Für den Produktionseinsatz sollten Sie zusätzlich regelmäßige Backups implementieren, Monitoring-Tools wie Prometheus einrichten und ein Update-Management etablieren. Bei externem Zugriff empfiehlt sich grundsätzlich die Nutzung von VPN oder SSH-Tunnels statt direkter Internet-Exposition.
Überwachen Sie kontinuierlich die Sicherheitslogs und halten Sie Redis und das Betriebssystem aktuell, um neu entdeckte Schwachstellen zeitnah zu schließen.