Zugriff auf PostgreSQL von beliebigen Host
Standardmäßig ist der PostgreSQL-Server so eingerichtet, dass der nur Verbindungen von sich selbst, also localhost bzw. 127.0.0.1 entgegen nimmt. Das mag zwar recht sicher sein, aber hilft bei vielen Problemstellungen nicht weiter.
Sicherlich könnte hier das Argument kommen, dass man PostgreSQL in erster Linie für lokale Arbeiten nutzt, daher kurz zum Problemfall bei mir. Ich hatte eine fertige Anwendung, die eben nur mit Postgre arbeitet. Da ich aber sowohl von meinem Rechner, als auch von meinem Laptop auf diese Datenbank zugreifen wollte, musste ich sie nun mal auslagern. Daher benötigte ich auch den externen Zugriff.
Anders als zum Beispiel in MySQL ist die Konfiguration dafür nicht ganz so einfach, zumindest nicht, wenn man nicht so genau weiß, wo man die Einstellungen vornehmen muss.
Schritt 1:
In der pg_hba.conf müssen alle Host eingetragen werden, die auf den Datenbankserver zugreifen dürfen. Leider muss man im PostgreSQL zwangweise einen IP-Bereich bzw. eine feste IP angeben. Das ist natürlich schwer möglich, wenn der Datenbankserver zum Beispiel über das Web zu erreichen ist und man selbst eine dynamische IP hat. Hier nützt leider auch DynDNS oder ähnliches nicht weiter.
Ich habe dazu folgende Konfiguration vorgenommen:
# TYPE DATABASE USER CIDR-ADDRESS METHOD
# IPv4 local connections:
host all all 127.0.0.1/32 md5 # Standardeintrag für den lokalen Host
host all all 0.0.0.0/0 md5 # Wildcard
So 100%ig sicher ist das natürlich nicht. Zum einen sollte man natürlich explizit User und Datenbank festlegen und den Zugriff nicht allgemein erlauben. Weiterhin ist natürlich der Adressbereich sehr weiträumig festgelegt. Wenn man dieses weiter einschränken kann, ist dies sicherlich vorteilhafter. Da bei mir keine wichtigen Daten hier drauf liegen, ist die Sicherheit hier aber nicht so 100% entscheidend. Jeder sollte sich also selbst um die bestmögliche Sicherheit Gedanken machen, wenn er seinen Server entsprechend einrichtet.
Schritt 2:
Also nächstes kommt nun die postgresql.conf dran. In dieser Datei werden viele allgemeine Einstellungen vorgenommen. Uns interessiert hier aber in erster Linie die Option listen_addresses. Standardmäßig steht hier nur localhost, was dann nicht mehr ausreicht, sobald Anfragen auf eine externe IP-Adresse des Servers kommen. Diese muss hier kommagetrennt eingetragen werden. Alternativ kann man hier sogar ein Sternchen verwenden:
# - Connection Settings -
listen_addresses = '*'
Schritt 3:
Die Einstellungen waren soweit gemacht, aber es funktionierte noch nicht. Logisch, auch die Firewall muss entsprechen konfiguriert werden. Bei einem Windows-Server mit der Standardfirewall muss dabei der Port als Ausnahme eingetragen werden. Sobald dies getan ist, sollte alles wunschgemäß erreichbar sein. Sollte es noch nicht funktionieren, kann man testweise auch mal die Firewall deaktivieren, um zu überprüfen, wo der Fehler liegt. Aber nicht vergessen, diese wieder zu aktivieren.
Ähnliche Beiträge
Filed under: IT
Trackback: Trackback-Url
