Konfiguration der Firewall

Hallo PG User

Ich möchte meine Suse Firewall konfigurieren, so das man von aussen auf die Datenbank zugreifen kann. Der Rechner auf dem PG läuft soll später einmal ans Internet angebunden sein und man soll von aussen Zugriff auf die DB haben. Was muss ich bei der Suse Firwall einstellen? TCP Port 5432 ist klar aber was für einen IP-Service?? Es wird kein SSL verwendet.

P.S.: Ich hoffe ich bin im richtigen Thread. Ansonsten: Verschieben

  • läuft PG auf dem selben Rechner wie die ‘Firewall’ oder auf einem Rechner dahinter im LAN?
  • willst Du von außen direkt mit der PG kommunizieren oder reicht vielleicht ein SSH-Tunnel? SSH-Tunnel hätte den Charme, daß man das mit PubKey-Auth sowohl bequem als auch sicher bekommt, SSH hat man ja einklich sowieso zu seinem Server.
  • soll wirklich die DB an sich von außen sichtbar sein oder vielleicht nur der Indianer^WApache als Webserver, der mittel PHP oder so intern auf die DB zugreift?
  • Du willst kein SSL verwenden. Daß dann jede Menge Klartext über unsichere Leitungen geht, ist Dir klar, oder?
  • ansonsten: Du brauchst nur TCP/5432. Ich spreche zwar iptables halbwegs flüssig, weiß aber nicht, was das Nürnberger Windows mit ‘IP-Service’ meint.


    Wie man mit iptables Dinge wie DNAT macht (was im Falle eines PG-Servers im LAN für Dich interessant wäre), hab ich u.a. mal hier erklärt:

http://www.linux-info-tag.de/7/detail/7

Andreas

  • läuft PG auf dem selben Rechner wie die ‘Firewall’ oder auf einem Rechner dahinter im LAN?

Die DB lauft auf dem selben Rechner

  • willst Du von außen direkt mit der PG kommunizieren oder reicht vielleicht ein SSH-Tunnel? SSH-Tunnel hätte den Charme, daß man das mit PubKey-Auth sowohl bequem als auch sicher bekommt, SSH hat man ja einklich sowieso zu seinem Server.

Kann ich zu sowas ein bisschen mehr Info haben? SSH läuft auf meinem Server. Ich verbinde mich immer mit Putty darüber.

  • soll wirklich die DB an sich von außen sichtbar sein oder vielleicht nur der Indianer^WApache als Webserver, der mittel PHP oder so intern auf die DB zugreift?

Die DB an sich von aussen. Ich habe Programm geschrieben das übers Internet auf die DB zugreifen soll. Wieso sollte ich Apache oder PHP dazwischen schalten?

  • Du willst kein SSL verwenden. Daß dann jede Menge Klartext über unsichere Leitungen geht, ist Dir klar, oder?

Das wäre nicht so schlimm. Erstens sind es keine wahsinnig geheime Daten.
Zweitens interressiert das keinen was da “verarbeitet” wird
Drittens die die es Interessieren könnte haben weder den Ansatz an technischem Know How so etwas abzuhören als auch das Interesse daran.

  • ansonsten: Du brauchst nur TCP/5432. Ich spreche zwar iptables halbwegs flüssig, weiß aber nicht, was das Nürnberger Windows mit ‘IP-Service’ meint.

OK ich werde das mal testen. Dachte nur das ist was ganz besonderes lol

Du könntest den Server so konfigurieren, daß nach außen nur SSH erreichbar ist. Idealerweise so, daß man sich auch nur mit PublicKey-Auth anmelden kann.

Auf dem Client startest Du dann eine SSH-Verbindung und machst über diese ein Portforwarding.
Auf der Kommandozeile z.B. so:

ssh -L 5432:localhost:5432 server

Schau Dir mal die man-page zu SSH an oder hier:

Das geht auch mit PuTTY, muß man dort zusammenklicken, unterhalb von SSH ist was zu Tunneln.

Deine Applikation verbindet sich dann ganz easy zu localhost, Port 5432, und sieht dort den entfernten PG-Server. Dein Server hat nach außen nur SSH offen, die Verbindung ist durch das SSH auch noch gesichert.

Ich nutze SSH und Portforwarding für vieles, so z.B. um an die 100 Windozen hier in der Firma zur Not auch von zu Hause aus via VNC ansprechen zu können, um mein IRC-Client auf einem Firmenserver ständig an zu haben, um meine Mails zu lesen oder über weitere Standleitungen in der Firma auf andere Standorte zu kommen…


Andreas

Ich habe schon das hier gefunden. Ich denke mal das ist das was ich brauche.

Ich weis nicht. Gehört eigentlich nicht hier hin. Ich frag trotzdem mal.

Ich mach jetzt folgendes.

Ich erstell auf dem Server ein Schlüsselpaar.
den Public Key binde ich in meine Anwendung ein.
Theoretisch kann ich dann doch schon mit meinem Programm zum Server connecten oder?

Jetzt baue ich eine normal DB connection auf und alles ist beim alten oder?

Ansonsten alle die es sonst noch so interessiert: Hier ist auch noch ein sehr guter Link zu der ganzen Geschichte.

ja, schaut so aus.


Andreas

Hallo Hallo

An dieser Stelle möchte ich mal dankeschön sagen. Ich habe meine Software erfolgreich über SSH zu postgres verbunden gebracht. Also falls jemand hierzu Hilfe braucht kann er mir gerne mal ein ICQ post schreiben. Bis bald

Waldi

Es wäre auch schön, wenn du einfach hier eine kurze Anleitung hineinschreiben könntest, wie du vorgegangen bist, welche Probleme du bemerkt hast und wie du diese umgangen hast. Dann haben alle User etwas davon und müssen nicht erst bei dir nachfragen, falls mal ein änliches Problem auftritt.

Ok

  1. openSSH installieren

  2. puttygen herunterladen

  3. mit PuttyGenSchlüssel erzeugen
    3.1 einen Privaten mit der Endung *.ppk
    3.2 einen Privaten durch Export/openSSH Key
    3.3 einen öffentlichen Schlüssel

  4. Den öffentlichen Schlüssel in die Datei known_hosts im Verzeichnis /home/.ssh kopieren. Die Rechte von .ssh müssen 700 sein.

Zur kurzen Erklärung. Es kann ein Zertifikat für jeden Benutzer erstellt werden. Das Zertifikat für den erstellten User kommt dann in das homeverzeichnis/.ssh.

Falls ihr das nicht verstanden habt hier noch ausführlicher

sodela.

Nun kann man mit PuTTY testen ob die Sache mit dem SSH klappt. In Putty:

  1. *.ppk in SSH/Auth angeben
  2. bei SSH/Tunnels
    2.1 source 5432
    2.2 destination 127.0.0.1:5432 und add klicken

Dadurch wird eine Umleitung erstellt. Wird nun ein Verbindungsversuch auf 127.0.0.1:5432 unternommen wird dieser an den Server:5432 weitergeleitet.

nun einfach open klicken und der Spass kann beginnen. Bitte auf richtigen Benutzernamen achten.

Wenn das alles funktioniert hat könnt ihr eigentlich eure Firewall zumachen. Alles bis auf Port 22. Das ist nämlich der SSH Port.

Mit dem hier kann man nun eine SSH Verbindung in einer Anwendung aufbauen. (Für Java). Alles ist ganz gut beschrieben schön mit Beispielen. Das einzige auf was geachtet werden muss: Gaymed kann nur eine Verbindung aufbauen wenn nicht schon eine steht. Also: Putty schliessen. Eventuelle Tools die auf die DB zugreifen müssen auch geschlossen werden. (Ich weis nicht warum aber ansonsten kann man sich nicht an der DB anmelden).

So ich hoffe ich konnte helfen. Ansonsten müsst ihr halt Posten.

So heute hab ich das mal in der Schule vorführen sollen. Ging natürlich ned so ganz. Deshalb hier noch ergänzungen:

  1. 3.2 ist nicht nötig
  2. 3.3 den öffentlichen schlüssel aus dem Feld (in Puttygen) per drag en drop in die authorized* kopieren
  3. Die Rechte vom .SSH ordner müssen 700 sein die Rechte der authorized* 644
  4. Der Besitzer von .ssh muss der User sein für den das Zertifikat generiert wurde.
  5. Wenn ihr wollt das bei falschem zertifikat zum benutzernamen nicht in die Passwort authentifikation umgeschaltet wird muss euer sshd.conf Abschnitt so aussehen.

To disable tunneled clear text passwords, change to no here!

PasswordAuthentication no
PermitEmptyPasswords no

Change to no, to disable s/key passwords

ChallengeResponseAuthentication no

So jetzt müsst es gehen