Hi Leute,
vermutlich mach ich mich grad lächerlich, aber nichtsdestotrotz will ich’s wagen.
Ich denke grade darüber nach, ob es nicht nützlich sein könnte, die SourceIP, von der ein Request an die DB gestellt wird, zu ermitteln.
Hintergrund:
Datenbank im Internet, Clients in mehreren (nur teilweise verbundenen) Subnetzen, die über eine Vielzahl von Gateways (mehr als 100, niemand kennt die genaue Anzahl tatsächlich (kein Scherz, allerdings mit einer Einschränkung, vielleicht ich auch niemanden, der den kennt, wer weiss, wer die genaue Anzahl kennt) ) auf die DB zugreifen werden. NAT ist involviert.
Siehe hierzu auch http://www.pg-forum.de/sonstige-installationsprobleme/1953-welche-ports-verwendet-postgres-hinter-ner-firewall-tats-chlich.html#post9659
Da sich die DB im Internet befindet, macht eine Access-Restriction auf Firewall und auf DB-Ebene nach Source IP (also IP des gegnerischen Gateways) durchaus Sinn.
Frage:
Nachdem mir niemand eine vollständige Liste aller Gateways geben kann, denke ich daräber nach, eine solche dynamisch zu erzeugen und sowohl postgres lifesystem als auch firewall (iptables/shorewall) dynamisch zu konfigurieren.
Ab hier Gedankenexperiment:
Während des Login Prozesses (im Client) wird ein Connect auf eine nur für diesen Zweck bereitgestellte DB durchgeführt. Ist dieser erfolgreich (was mittels UserPass und pwd sichergestellt werden kann), liest, und jetzt wirds interessant, Postgres die Source-IP (also die des involvierten Gateways) des Requests aus und schreibt diese irgendwo hin.
Anschließend wird mittels geeigneter Methoden, trigger oder externe Prozedur oder was weiss ich (soweit bin gedanklich ich noch nicht) die Firewall und die pg_hba.conf dynamisch um diese (nun verifizierte) Source IP erweitert.
Frage 1a.)
Kann ich mit pg irgendwie die Source-IP auslesen, bestimmt, oder?
Frage 1b.)
Wie würdet Ihr die Datenspeicherung lösen? ich denke an nen Trigger /plpgsql
Frage 1c.)
Wie würdet Ihr die Firewall- und postgres pg_hba.conf-Manipulation lösen (ich denke hier an einen cronjob auf perl oder php basis, hätte aber natürlich viel lieber was realtime-fähiges, also dynamische Konfiguration von iptables)
Frage 1d.)
Weitere Gedanken und Ideen willkommen.
Server:
Debian (current stable, Kernel 2.6.aktuell), Postgres 8.1
Ein Merci für jeden Gedanken