- Veröffentlicht am
- • How2-Tipps
PostgreSQL nach der Installation auf einem Debian 13 Server absichern
- Autor
-
-
- Benutzer
- tmueller
- Beiträge dieses Autors
- Beiträge dieses Autors
-
Nach der Installation von PostgreSQL auf einem Debian 13 Server ist die Datenbank zwar funktionsfähig, aber noch nicht optimal abgesichert. Standardkonfigurationen sind bewusst generisch gehalten – für den produktiven Einsatz solltest du einige wichtige Sicherheitsmaßnahmen umsetzen.
In diesem Blogartikel zeige ich dir Schritt für Schritt, wie du deine PostgreSQL-Instanz sicher konfigurierst.
Installation überprüfen
Falls noch nicht geschehen, installierst du PostgreSQL unter PostgreSQL auf Debian mit:
sudo apt update
sudo apt install postgresql
Prüfen, ob der Dienst läuft:
sudo systemctl status postgresql
Starke Passwörter setzen
Standardmäßig nutzt PostgreSQL lokale Authentifizierung über das Systemkonto. Setze unbedingt ein starkes Passwort für den postgres-Benutzer:
sudo -u postgres psql
Dann im PostgreSQL-Prompt:
ALTER USER postgres WITH PASSWORD 'SEHR_STARKES_PASSWORT';
Verwende:
- Mindestens 16 Zeichen
- Groß- & Kleinbuchstaben
- Zahlen
- Sonderzeichen
- Einen Passwort-Manager
Remote-Zugriff deaktivieren (oder absichern)
Standardmäßig lauscht PostgreSQL nur auf localhost. Prüfe die Datei:
sudo nano /etc/postgresql/15/main/postgresql.conf
Wichtige Einstellung:
listen_addresses = 'localhost'
Falls kein externer Zugriff nötig ist → so lassen.
Wenn Remote-Zugriff benötigt wird:
- Nur spezifische IP-Adressen erlauben
- Firewall-Regeln setzen
- SSL aktivieren (siehe unten)
Authentifizierung richtig konfigurieren (pg_hba.conf)
Die wichtigste Sicherheitsdatei ist:
sudo nano /etc/postgresql/15/main/pg_hba.conf
❌ Unsicher:
host all all 0.0.0.0/0 md5
✅ Besser:
host mydb myuser 192.168.10.5/32 scram-sha-256
Empfehlungen:
- Keine
trust-Einträge verwenden - Kein
0.0.0.0/0 scram-sha-256stattmd5- Zugriff so restriktiv wie möglich definieren
SCRAM statt MD5 aktivieren
In postgresql.conf:
password_encryption = scram-sha-256
Danach PostgreSQL neu starten:
sudo systemctl restart postgresql
SCRAM ist moderner und sicherer als MD5.
SSL/TLS aktivieren
Gerade bei Remote-Zugriff wichtig.
In postgresql.conf:
ssl = on
Zertifikate liegen typischerweise unter:
/etc/ssl/certs/
/etc/ssl/private/
Optional kannst du eigene Zertifikate mit Let’s Encrypt nutzen.
In pg_hba.conf dann:
hostssl all all 192.168.10.0/24 scram-sha-256
Firewall konfigurieren
Falls externe Verbindungen nötig sind, sichere Port 5432 mit einer Firewall wie:
ufwiptables- oder eine externe Cloud-Firewall
Beispiel mit UFW:
sudo ufw allow from 192.168.10.5 to any port 5432
sudo ufw deny 5432
Unnötige Rollen entfernen
Liste aller Rollen:
\du
Nicht benötigte Benutzer löschen:
DROP ROLE benutzername;
Prinzip:
Jeder User bekommt nur die Rechte, die er wirklich braucht (Principle of Least Privilege)
Logging aktivieren
In postgresql.conf:
logging_collector = on
log_connections = on
log_disconnections = on
log_line_prefix = '%m [%p] %u@%d '
Logs prüfen:
/var/log/postgresql/
So erkennst du Angriffsversuche frühzeitig.
Regelmäßige Updates
Halte dein System aktuell:
sudo apt update && sudo apt upgrade
Gerade Sicherheitsupdates sind essenziell.
Zusätzliche Best Practices
- PostgreSQL nicht als Root betreiben
- Keine Default-Datenbanken öffentlich zugänglich machen
- Fail2Ban für Brute-Force-Schutz nutzen
- Regelmäßige Backups (z.B. mit
pg_dump) - Monitoring (z.B. Prometheus + Grafana)
Eine frisch installierte PostgreSQL-Instanz ist nicht automatisch sicher. Mit folgenden Kernmaßnahmen erreichst du jedoch ein solides Sicherheitsniveau:
✔ Starke Passwörter
✔ SCRAM-Authentifizierung
✔ Restriktive pg_hba.conf
✔ SSL aktivieren
✔ Firewall-Regeln
✔ Logging & Updates