open-how2 – Entdecke. Verstehe. Nutze.
Veröffentlicht am
How2-Tipps

PostgreSQL nach der Installation auf einem Debian 13 Server absichern

Autor
PostgreSQL nach der Installation auf einem Debian 13 Server absichern

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-256 statt md5
  • 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:

  • ufw
  • iptables
  • 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