VPN-Firewall einrichten

Hallo,

ich würde mir gerne eine VPN-Firewall einrichten, sodass Verbindung nur nach außen dringen, wenn sie über VPN gehen. Ich habe dazu folgendes gefunden. Die Anleitung hapert an der Stell wo ein sogenanntes update-rc.d Kommando ausgeführt werden soll, welches in OpenSUSE nicht existiert. Kennt jemand eine Abhilfe?

Auch weiß ich nicht ganz ob das init script auch für OpenSUSE passt, damit die Firewall immer automatisch startet.

Mit bestem Dank!

Mit sudo update-rc.d vpnfirewall remove löschst Du in diesem Tutorial die alte vpnfirewall. Wenn Du noch nichts eingerichtet hast brauchst Du das nicht.
Dafür kann man unter openSUSE zypper rm vpnfirewall verwenden.
Mit** zypper info vpnfirewall** kriegst Du Infos zu einem installierten Paket.

Richtig. In openSUSE kannst du Dienste entweder mit chkconfig, insserv oder systemctl aktivieren/deaktivieren.
Oder YaST.

Dafür kann man unter openSUSE zypper rm vpnfirewall verwenden.

Dafür müsstest du es aber erst mal mittels eines RPM-Pakets installieren.
Ich finde dafür aber keins.

Mit** zypper info vpnfirewall** kriegst Du Infos zu einem installierten Paket.

Das liefert Infos auch zu einem nicht installierten Paket. Es muss sich aber in den konfigurierten Repos befinden, und das trifft auf vpnfirewall wohl nicht zu.

Zu vpnfirewall speziell:
Dieses init script ist für Debian geschrieben. Ohne Änderungen wirst du das in openSUSE nicht zum Laufen bekommen.
Z.B. Zeile 35:

. /lib/init/vars.sh

/lib/init/vars.sh gibts bei openSUSE nicht.

Bevor du jetzt aber dein eigenes init script schreibst bzw. das vorhandene anpasst, probier lieber ein systemd .service File zu erstellen, das ist viel einfacher… :wink:
Außerdem könntest du das vpnfirewall Skript auch einfach z.B. aus /etc/init.d/after.local heraus starten.

Eventuell kannst du das aber auch mit der SuSEfirewall machen. Dazu trägst du die iptables Regeln, die das Skript anlegt, in eine Datei und trägst die unter FW_CUSTOMRULES in /etc/sysconfig/SuSEfirewall2 ein. Ein Beispiel gibts in /etc/sysconfig/scripts/SuSEfirewall2-custom .
Hab sowas aber noch nie gemacht…

Hört sich gut an, aber ich habe keine Ahnung wie das funktioniert. Nicht die geringste, was ich da dann machen muss. Gibt es vielleicht eine Schritt für Schritt Anleitung?

Muss ich da dann nichts anpassen? Wie funktioniert dann das? Auch dazu fehlt mir das geringste Wissen…

Leider versteh ich davon auch nichts…

Ja, gibts sicher. Hier z.B.: Creating my own systemd service files on Fedora 16(x86_64) | Kezhong's Weblog

Aber ist ja nicht schwer: nimm ein vorhandenes, z.B. /usr/lib/systemd/system/cron.service und ändere es entsprechend (vor allem die “ExecStart=” Zeile).
Selbst erstellte service files solltest du nach /etc/systemd/system/ geben.

Muss ich da dann nichts anpassen? Wie funktioniert dann das? Auch dazu fehlt mir das geringste Wissen…

Nein.
Diese Datei ist im Prinzip nur ein Skript, das beim Booten aufgerufen wird.
Da drin kannst du eben beliebig Sachen starten, ohne dazu ein sysvinit script oder systemd service file zu erstellen/installieren.

Also kopiere das vpnfirewall Skript irgendwo hin, z.B. /usr/bin/, und ruf es dann einfach in /etc/init.d/after.local auf. Das Skript musst du aber natürlich an deine Netzwerkkonfiguration anpassen, aber das ist natürlich allgemein so.

Leider versteh ich davon auch nichts…

Tja, ich hab das auch noch nicht gemacht.
Wie gesagt müsstest du eben die ensprechenden “iptables” Kommandos aus dem vpnfirewall Skript an der richtigen Stelle eintragen.

Aber die obigen Methoden sind vielleicht einfacher, die SuSEfirewall2 solltest du dann aber deaktivieren, denke ich.

Es gibt sogar von openSUSE eine Anleitung zur Firewall-Konfiguration für OpenVPN: http://en.opensuse.org/SDB:OpenVPN_Installation_and_Setup#Firewall_Configuration
Für IPTABLES und die Firewall-Regeln gibt es auch einige Tutorials: http://www.64-bit.de/dokumentationen/netzwerk/e/002/DE-IPTABLES-HOWTO.html

Kann mir jemand sagen wie ich diese Scripte zum laufen kriege. Sie scheinen genau meine Anforderung zu erfüllen.

Du musst die Skripte in init einbinden, damit sie bei jedem Neustart durchlaufen werden.
Dafür verwendest Du fogdende Befehle:


chown root:root script-name
chmod 0750 script-name
mv script-name /etc/init.d/
insserv script-name

Das Beste ist, wenn Du dafür ein richtiges Init-Skript (mit Header) schreibst. Eine Vorlage liegt unter /etc/init.d/skeleton.

Ist es nicht möglich das Skript auch direkt einfach im laufenden Betrieb zu starten? Es handelt sich nämlich um 2 Skripte, eines, welches die iptables für die VPN-Firewall schreibt und eines, welches es wieder rückgängig macht…

Natürlich kannst du das Skript auch im laufenden Betrieb starten.
Aber du brauchst root Rechte dafür, also z.B. “sudo” benutzen.

Außerdem musst du das dann natürlich nach jedem Neustart ausführen. “Geschrieben” wird da nämlich nichts. Es werden nur die momentanen Firewall-Regeln geändert.
Also ist es wohl besser das automatisch beim Booten zu erledigen, aber das ist natürlich deine Entscheidung.

Du musst nicht unbedingt ein eigenes init script erstellen, du kannst das Skript z.B. auch einfach in /etc/init.d/boot.local bzw. after.local aufrufen.

Sorry für meine Begriffsstutzigkeit, aber ich weiß noch immer nicht wie ich es zum laufen kriege. Gibt es dafür eine idiotensichere Anleitung oder könnte mir das jemand Schritt für Schritt erklären?

Was ist dir jetzt genau unklar?

Wie du das Skript starten kannst?
Einfach den Namen in einer Shell eingeben. Wenn das Skript also z.B. “run-vpn-firewall” heißt und im aktuellen Verzeichnis ist:

sudo ./run-vpn-firewall

Allerdings muss das Skript als ausführbar markiert sein. Das kannst du mit “chmod +x run-vpn-firewall” machen, oder indem du im Dateimanager auf die Datei rechts-klickst, “Eigenschaften” auswählst und auf den “Berechtigungen” Tab wechselst.

Und über /etc/init.d/boot.local kannst du es starten, indem du einfach so eine Zeile in diese Datei schreibst (ohne sudo, da das sowieso als root gestartet wird).
Kopiere also z.B. das Skript nach /usr/local/bin (dort wird es vom System gefunden, du brauchst also nicht den kompletten Pfad angeben), und füge folgendes zu /etc/init.d/boot.local hinzu:

run-vpn-firewall

Grundlagen zu Shell-Skripten: http://www.netzmafia.de/skripten/unix/unix8.html

In Deinem Fall reichen die ersten 2 Absätze aus. Das beinhaltet genau das, was wolfi gesagt hat, wie man Skripte ausführbar macht und manuell startet.
Wenn Du mehr wissen willst, empfehle ich den Rest auch zu lesen. Die FH München hat in solchen Sachen einen super Ruf!
Prof. Plate hat auch sehr gute Bücher geschrieben.