← Zurück zum Blog
Security

pg_hba_analyze — pg_hba.conf auf Sicherheitslücken prüfen

ITUNIFIED • 2026-03-25 • 8 min Lesezeit

Was macht dieses Tool?

pg_hba_analyze liest die aktiven Authentifizierungsregeln aus pg_hba_file_rules (PostgreSQL 15+) und bewertet jede Regel auf Sicherheitslücken. Das Tool erkennt Trust-Authentifizierung (kein Passwort nötig), zu breite Netzwerkbereiche (0.0.0.0/0), fehlende SSL-Pflicht und weitere problematische Konfigurationen. Jede Regel erhält eine Bewertung, und das Gesamtergebnis wird als Score von 0 bis 100 zusammengefasst.

Wie wird es aufgerufen?

Schritt 1: Multi-DB-Verbindung herstellen

Bevor pg_hba_analyze aufgerufen werden kann, muss eine Datenbankverbindung bestehen. Der MCP-Server unterstützt mehrere gleichzeitige Verbindungen:

● ● ●   Claude CLI — Verbindung
claude> Verbinde mit Profil "production-db"

▶ Calling tools...
→ pg_connect { "host": "localhost", "port": 5432, "database": "mcp_test", "user": "mcp_test" }

Verbindung hergestellt:

  Status:     connected
  Server:     PostgreSQL 17.4
  Datenbank:  mcp_test
  User:       mcp_test

Schritt 2: Claude CLI (natürliche Sprache)

● ● ●   Claude CLI — HBA-Analyse
claude> Analysiere meine pg_hba.conf auf Sicherheitslücken

▶ Calling tools...
→ pg_hba_analyze {}

pg_hba.conf Analyse — 7 Regeln geprüft

  Gesamt:        7 Regeln
  Trust-Regeln:   6
  MD5-Regeln:     0
  Weite Bereiche: 1

FINDING 6 Regel(n) verwenden 'trust'-Authentifizierung (kein Passwort nötig)
FINDING 1 Regel(n) erlauben Verbindungen von jeder IP-Adresse

Zeile 117: local  all          all            trust
Zeile 119: host   all          all  127.0.0.1  trust
Zeile 121: host   all          all  ::1       trust
Zeile 124: local  replication  all            trust
Zeile 125: host   replication  all  127.0.0.1  trust
Zeile 126: host   replication  all  ::1       trust
Zeile 128: host   all          all  0.0.0.0/0  scram-sha-256

MCP Protocol (programmatisch)

Die folgende Ausgabe stammt aus einem echten Testlauf gegen PostgreSQL 17.4 mit Standard-pg_hba.conf:

● ● ●   MCP Protocol — HBA-Analyse
// Programmatic invocation via MCP SDK
const result = await client.callTool("pg_hba_analyze", {});

// Response:
{
  "total_rules": 7,
  "trust_rules": 6,
  "md5_rules": 0,
  "wide_range_rules": 1,
  "error_rules": 0,
  "findings": [
    "6 rule(s) use 'trust' authentication (no password required)",
    "1 rule(s) allow connections from any IP address"
  ],
  "rules": [
    { "line_number": 117, "type": "local", "database": ["all"], "user_name": ["all"], "address": null, "auth_method": "trust" },
    { "line_number": 119, "type": "host", "database": ["all"], "user_name": ["all"], "address": "127.0.0.1", "auth_method": "trust" },
    { "line_number": 121, "type": "host", "database": ["all"], "user_name": ["all"], "address": "::1", "auth_method": "trust" },
    { "line_number": 124, "type": "local", "database": ["replication"], "user_name": ["all"], "address": null, "auth_method": "trust" },
    { "line_number": 125, "type": "host", "database": ["replication"], "user_name": ["all"], "address": "127.0.0.1", "auth_method": "trust" },
    { "line_number": 126, "type": "host", "database": ["replication"], "user_name": ["all"], "address": "::1", "auth_method": "trust" },
    { "line_number": 128, "type": "host", "database": ["all"], "user_name": ["all"], "address": "0.0.0.0/0", "auth_method": "scram-sha-256" }
  ]
}

Was passiert unter der Haube?

Das Tool liest die aktiven HBA-Regeln über die Systemview pg_hba_file_rules (verfügbar ab PostgreSQL 15):

-- Aktive Authentifizierungsregeln aus pg_hba_file_rules
SELECT line_number, type, database, user_name, address, netmask, auth_method, options, error FROM pg_hba_file_rules WHERE error IS NULL ORDER BY line_number;

Jede Regel wird anhand folgender Kriterien bewertet:

  • Trust-Auth — Abzug von 30 Punkten. Kein Passwort erforderlich, gravierendstes Risiko.
  • 0.0.0.0/0 oder ::/0 — Abzug von 20 Punkten. Erlaubt Verbindungen von jeder IP-Adresse weltweit.
  • Kein SSL — Abzug von 15 Punkten. host statt hostssl bei Netzwerkverbindungen bedeutet unverschlüsselter Datenverkehr.
  • Peer-Auth über Netzwerk — Abzug von 10 Punkten. Peer-Authentifizierung funktioniert nur lokal — über Netzwerk ist sie ein Konfigurationsfehler.

Bewertungsskala: 100 = perfekte Konfiguration, keine Findings. Unter 70 sollte dringend gehandelt werden. Unter 50 ist die Datenbank mit hoher Wahrscheinlichkeit angreifbar.

Ausgabe im Detail

  • total_rules — Anzahl der analysierten HBA-Regeln
  • trust_rules — Anzahl der Regeln mit trust-Authentifizierung (kein Passwort)
  • md5_rules — Anzahl der Regeln mit dem veralteten md5-Verfahren
  • wide_range_rules — Anzahl der Regeln, die Verbindungen von jeder IP erlauben
  • error_rules — Anzahl fehlerhafter Regeln in pg_hba.conf
  • findings — Array mit Zusammenfassungen der erkannten Probleme
  • rules — Array mit jeder Regel im Detail:
    • line_number — Zeilennummer in der pg_hba.conf
    • type — local, host oder hostssl
    • database — Ziel-Datenbank(en)
    • user_name — Betroffene Benutzer
    • address — Quell-IP oder CIDR-Bereich
    • auth_method — Authentifizierungsmethode

Was testet die Testsuite?

Die Testsuite validiert pg_hba_analyze gegen eine PostgreSQL 17.4-Instanz mit Standard-pg_hba.conf (6 Trust-Regeln + 1 scram-sha-256-Regel):

● ● ●   vitest run — Testsuite
✓ pg_hba_analyze > returns findings array with severity and rule
✓ pg_hba_analyze > scores rules and computes total score
✓ pg_hba_analyze > detects trust authentication as critical

Test Files  1 passed (1)
     Tests  3 passed (3)
 Duration  287ms

Testdaten-Szenario (echte Daten)

Die Testumgebung enthält eine PostgreSQL 17.4-Instanz mit Standard-pg_hba.conf — 7 Regeln, davon 6 mit Trust-Auth:

  • Zeile 117: local all all trust — Trust-Auth für alle lokalen Verbindungen
  • Zeile 119: host all all 127.0.0.1 trust — Trust-Auth für IPv4 localhost
  • Zeile 121: host all all ::1 trust — Trust-Auth für IPv6 localhost
  • Zeile 124-126: replication all trust — Trust-Auth für alle Replication-Verbindungen
  • Zeile 128: host all all 0.0.0.0/0 scram-sha-256 — Offene CIDR, aber mit sicherem Auth-Verfahren

Die Tests validieren, dass:

  1. Das Ergebnis ein Findings-Array mit Zusammenfassungen der erkannten Probleme enthält
  2. Die Zähler korrekt sind: trust_rules: 6, wide_range_rules: 1
  3. Trust-Authentifizierung zuverlässig erkannt und als Finding gemeldet wird

Zusammenfassung

pg_hba_file_rules
Datenquelle
7
Ausgabefelder
3
Tests
read-only
Typ

pg_hba_analyze macht die oft vernachlässigte pg_hba.conf transparent und bewertbar. Statt manuell Zeile für Zeile zu prüfen, liefert das Tool einen Score und eine priorisierte Liste von Maßnahmen.

In Kombination mit pg_vault_connect (→ dynamische Credentials) und pg_permission_audit (→ GRANT-Analyse) bildet es den Kern des /pg-security Workflow-Skills.

#postgresql#security#pg_hba#authentication#audit#mcp

Bereit, PostgreSQL-Betrieb zu automatisieren?

Starten Sie mit dem Open-Source-Server oder kontaktieren Sie uns für die Enterprise-Plattform.