Datenbank-Server Setup: PostgreSQL sicher installieren

PostgreSQL ist eine leistungsfähige, objektrelationale Datenbank, die auf Linux-Servern weit verbreitet ist. Für ein sicheres Setup sollten sowohl die Installation als auch die Konfiguration auf Best Practices für Authentifizierung, Zugriffskontrolle und Netzwerkabsicherung ausgelegt sein. In diesem Tutorial erfahren Sie Schritt für Schritt, wie Sie PostgreSQL sauber und sicher einrichten.

PostgreSQL installieren

Auf Debian/Ubuntu-Systemen können Sie PostgreSQL direkt über das Paketmanagement installieren:

sudo apt update
sudo apt install postgresql postgresql-contrib

Auf RHEL/CentOS/Fedora-Systemen nutzen Sie DNF oder YUM:

sudo dnf install postgresql-server postgresql-contrib
sudo postgresql-setup --initdb

Dienst starten und aktivieren

sudo systemctl enable postgresql
sudo systemctl start postgresql
sudo systemctl status postgresql

Basis-Konfiguration

Die zentrale Konfigurationsdatei befindet sich unter /etc/postgresql//main/postgresql.conf (Debian/Ubuntu) oder /var/lib/pgsql/data/postgresql.conf (RHEL/CentOS). Wichtige Einstellungen:

  • listen_addresses: IPs, auf denen PostgreSQL Verbindungen akzeptiert. Standardmäßig localhost.
  • port: Standard-Port ist 5432.
  • max_connections: Maximale Anzahl gleichzeitiger Verbindungen.
  • logging_collector: Aktivieren Sie das Logging für Auditing und Fehleranalyse.

Benutzer und Rollen anlegen

PostgreSQL nutzt Rollen für Zugriffskontrolle. Den Standard-Admin-Account postgres sollten Sie absichern und für Applikationen separate Rollen anlegen:

sudo -u postgres psql
CREATE ROLE webapp LOGIN PASSWORD 'SicheresPasswort';
ALTER ROLE webapp CREATEDB;
q

Datenbanken erstellen

sudo -u postgres createdb webapp_db -O webapp

Hier wird eine Datenbank webapp_db für den Benutzer webapp erstellt.

pg_hba.conf absichern

Die Datei pg_hba.conf regelt die Authentifizierung. Best Practices:

  • Nur notwendige Hosts zulassen
  • Verbindung per md5 oder scram-sha-256 verschlüsseln
  • Lokale Verbindungen strikt kontrollieren

Beispiel:

# TYPE  DATABASE        USER            ADDRESS                 METHOD
local   all             postgres                                peer
host    webapp_db       webapp          192.168.1.0/24          scram-sha-256

SSL für verschlüsselte Verbindungen

Um Daten während der Übertragung zu schützen, aktivieren Sie SSL:

ssl = on
ssl_cert_file = '/etc/ssl/certs/pgsql-server.crt'
ssl_key_file = '/etc/ssl/private/pgsql-server.key'

Erstellen Sie ggf. eigene Zertifikate mit OpenSSL und setzen Sie die richtigen Berechtigungen:

sudo chown postgres:postgres /etc/ssl/private/pgsql-server.key
sudo chmod 600 /etc/ssl/private/pgsql-server.key

Firewall-Regeln

Erlauben Sie nur Verbindungen von vertrauenswürdigen IPs:

sudo ufw allow from 192.168.1.0/24 to any port 5432
sudo ufw enable

Backups einrichten

Für regelmäßige Sicherungen eignen sich:

  • pg_dump für einzelne Datenbanken
  • pg_dumpall für alle Datenbanken
  • Automatisierung per Cronjob:
0 2 * * * /usr/bin/pg_dump -U webapp webapp_db | gzip > /backup/webapp_db_$(date +%F).sql.gz

Performance-Tuning

Wichtige Parameter in postgresql.conf:

  • shared_buffers: Speicher für Caching von Datenbankseiten
  • work_mem: Speicher pro Sortier- oder Hash-Operation
  • maintenance_work_mem: Speicher für VACUUM, CREATE INDEX
  • effective_cache_size: Erwartete Cache-Größe im Betriebssystem

Monitoring einrichten

  • Verwenden Sie pg_stat_activity zur Überwachung laufender Verbindungen:
  • SELECT pid, usename, state, query FROM pg_stat_activity;
  • Logs regelmäßig analysieren
  • Optional Tools wie pgAdmin oder Prometheus mit PostgreSQL-Exporter einsetzen

Updates und Sicherheit

  • Regelmäßig Sicherheitsupdates installieren
  • sudo apt update && sudo apt upgrade postgresql*
  • Starke Passwörter für alle Rollen
  • Keine unnötigen Superuser-Rollen
  • Netzwerkzugriff nur auf benötigte Hosts beschränken

Konfiguriere Cisco Router & Switches und liefere ein Packet-Tracer-Lab/GNS3

Ich biete professionelle Unterstützung im Bereich Netzwerkkonfiguration und Network Automation für private Anforderungen, Studienprojekte, Lernlabore, kleine Unternehmen sowie technische Projekte. Ich unterstütze Sie bei der Konfiguration von Routern und Switches, der Erstellung praxisnaher Topologien in Cisco Packet Tracer, dem Aufbau und Troubleshooting von GNS3- und EVE-NG-Labs sowie bei der Automatisierung von Netzwerkaufgaben mit Netmiko, Paramiko, NAPALM und Ansible. Kontaktieren Sie mich jetzt – klicken Sie hier.

Meine Leistungen umfassen:

  • Professionelle Konfiguration von Routern und Switches

  • Einrichtung von VLANs, Trunks, Routing, DHCP, NAT, ACLs und weiteren Netzwerkfunktionen

  • Erstellung von Topologien und Simulationen in Cisco Packet Tracer

  • Aufbau, Analyse und Fehlerbehebung von Netzwerk-Labs in GNS3 und EVE-NG

  • Automatisierung von Netzwerkkonfigurationen mit Python, Netmiko, Paramiko, NAPALM und Ansible

  • Erstellung von Skripten für wiederkehrende Netzwerkaufgaben

  • Dokumentation der Konfigurationen und Bereitstellung nachvollziehbarer Lösungswege

  • Konfigurations-Backups, Optimierung bestehender Setups und technisches Troubleshooting

Benötigen Sie Unterstützung bei Ihrem Netzwerkprojekt, Ihrer Simulation oder Ihrer Network-Automation-Lösung? Kontaktieren Sie mich jetzt – klicken Sie hier.

Related Articles