OpenVPN 2.Zugang



  • Hallo zusammen,
    ich bin neu hier im Forum und freue mich auf viele nützliche und hilfreiche Tipps.

    Nun zu meiner ersten Frage...
    Ich betreibe PfSense als Firewall und als VPN Zugang.
    Bisher habe ich einen VPN Zugang genutzt um in mein LAN zu gelangen.
    Dies läuft Tadellos.

    Nun habe ich ein Netzwerk eingerichtet welches komplett abgeschottet laufen soll, die einzige Kommunikation soll über ein seperates VPN ablaufen.
    Ziel ist eine Testmaschine die nur für meine Kollegen nutzbar sein soll einzurichten.Nutzer dieses VPN sollen ausschließlich Zugriff auf besagtes Netzwerk erhalten.

    Grundsätzlich ist mir klar wie ich das ganze einrichte, nur ich bin mir nicht ganz sicher was ich beachten muss, dass es nicht möglich ist vom 2.VPN Zugang in mein LAN u.ä. zu gelangen?

    Meine Befürchtung ist, dass wenn ich die LAN-Adressen der beiden VPN's in der Firewall filtere dass man sich mit einer manuell eingegebenen IP-Adresse Zugang zum LAN verschaffen kann. Eine Filterung nach Tunneln ist ja nicht möglich oder?

    Vielen Dank schon einmal im Vorraus!

    Gruss, Marcel



  • Hallo,

    die Filterung nach VPN Quell-IPs funktioniert nicht anders als die nach anderen Quell-IPs auf der pfSense.

    Du musst aber irgendwie die beiden Usergruppen mit unterschiedlichen Berechtigungen am VPN-Server bzw. auf der pfSense trennen können. Da gibt es mehrere Möglichkeiten:
    nach User-Zertifikaten mit interne User-Datenbank
    nach verschiedenen User-Datenbanken (Radius, LDAP-Server, interne DB)

    Auf jedem OpenVPN-Server kann eine User-Datenbank so wie eine CA zu Client-Authentifizierung ausgewählt werden.

    Ich mache das bevorzugt per User-Zertifikate. Ich habe für jeden VPN-Server eine eigene CA eingerichtet. Diese stellt das Server-Zertifikat aus so wie die User-Zertifikate, die sich mit diesem Server verbinden dürfen.

    In deinem Beispiel hätten dann Clients des ersten Servers Zugriff nach überall, Clients des zweiten nur auf das Testnetzwerk. Die Clients erhalten vom VPN Server bei Verbindungsaufbau jeweils eine IP aus dem Tunnel Pool des jeweiligen Servers.
    Die beiden Server verwenden also unterschiedliche Tunnel Pools. Am OpenVPN Interface kannst du dann für die jeweiligen Tunnelnetze entsprechende Regeln erstellen.

    Bspw.
    Tunnel 1: 10.0.10.0/24
    Tunnel 2: 10.0.20.0/24
    Test-Lab: 192.168.15.0/24 (Zugriff f. Kollegen)

    Dann erlaubst du in der Pass-Regel mit Source 10.0.10.0/24 Zugriff auf Destination "any".
    Eine weitere Pass-Regel mit Source 10.0.20.0/24 erlaubt Zugriff auf Destination 192.168.15.0/24.

    Da besteht keine Gefahr, dass irgendjemand wo hin gelangt, wo er nicht hin soll.

    Grundsätzlich ist das auch mit nur einem VPN-Server und mit Client Specific Overrides umsetzbar. Wenn es aber einige User sind, die sich verbinden können, ist der 2. Server rascher konfiguriert und die Sache ist übersichtlicher.

    Grüße



  • Vielen Dank @viragomann für die schnelle und ausführliche Antwort!

    Die Idee mit den 2 Tunneln auf verschiedenen Ports werde ich so umsetzen klingt für mich auch am einfachsten.

    Ist es denn möglich das Clients irgendwie die IP-Adresse manuell editieren um so nach erfolgreichem Aufbau des Tunnel 2 sich eine IP-Adresse aus dem Bereich des Tunnel 1 zuzuweisen? vgl. Statische IP-Adresse...
    Daraufhin würden die Firewall-Regeln ja auch nicht mehr greifen bzw. würden bestimmungsgemäß den Traffic ins Private Netz passieren lassen...

    Habe da so die Erinnerungen an die ersten Versuche mit MAC-Filterung, da war es ja auch vergleichsweise einfach eine Filterung zu umgehen bzw. sich eine alternative Adresse zuzuweisen...

    Beste Grüße,
    Marcel



  • Ich habe es noch nicht ausprobiert, aber es wäre denkbar, dass man der virtuellen VPN-Schnittstelle während laufender Verbindung eine zusätzliche IP zuweist und das Gateway ändert.

    Um diesem vorzubeugen, kannst du aber auf der pfSense jeder VPN-Instanz ein eigenes Interface zuweisen. Interfaces > Assign. Hier die VPN-Instanz auswählen, Bsp. "ovpns1", und ein Interface hinzufügen, dieses öffnen, aktivieren und einen passenden Namen vergeben. Eine weitere Konfiguration ist nicht nötig.

    Damit bekommst du für jeden OpenVPN-Server einen Regel-Reiter, auf welchem du die gewünschten Regeln definieren kannst. Und es ist sichergestellt, dass eingehende Pakete auf dem Interface ausschließlich von auf dem jeweiligen Server berechtigen Clients kommen.
    Damit gibt es kein Umgehen. Nur der User, der das entsprechende Zertifikat hat, kann sich auf einem Server anmelden und auf eingehende Pakete seiner Verbindung werden genau die Regeln des Server-Interfaces angewandt.

    Grüße


  • Rebel Alliance Moderator

    Das ist IMHO nicht möglich da

    1. der OpenVPN Server die IPs bei der Einwahl vergibt
    2. er somit genau weiß, wer VON welcher IP eingewählt ist und wo/wie er Pakete wieder zurück zustellen muss. Eine statisch vergebene IP wäre ihm unbekannt somit wüsste er nicht, dass/auf welches Tunnel Interface er reagieren und die Pakete zuweisen soll.

    Ich bezweifle daher stark, dass man sich einfach statisch eine Adresse vergeben kann. Eine Adresse aus einem anderen IP Bereich geht IMHO schon zweimal nicht, da diese dann auf einem ganz anderen Adapter ankommen müsste. Zwei OpenVPN Server haben jeweils eigene Interfaces ganz egal ob man sie wie @viragomann schreibt erst in der UI zuweist oder nicht. Muss man auch nicht wirklich, auch wenn es Dinge vereinfachen kann. Aber dadurch dass bspw. 10.8.0.0/24 auf ovpns1 und 10.9.0.0/24 auf ovpns2 zeigt wäre es gar nicht möglich sich einzuwählen auf ovpns1 und sich dann eine 10.9.0.0er IP zu geben -> der Traffic käme immer am falschen Gateway raus. Immer vorausgesetzt dass OVPN es überhaupt akzeptieren würde, wenn man sich selbst eine IP auf das Interface knotet.

    Zudem kann entweder mit Zertifikat + CSO oder (viel einfacher) per Auth gegen FreeRadius direkt beim Einwählen eine spezifische IP gepusht werden wenn man das möchte.

    Grüße



  • @JeGr said in OpenVPN 2.Zugang:

    Zwei OpenVPN Server haben jeweils eigene Interfaces ganz egal ob man sie wie @viragomann schreibt erst in der UI zuweist oder nicht.

    Doch erst mit der manuellen Zuweisung eines Interfaces kann man die Firewall-Regeln gezielt auf diesem konfigurieren.
    Regeln, die am OpenVPN-Reiter definiert sind, werden auf allen OpenVPN-Instanzen, Server wie Clients, angewandt. Eine Differenzierung ist in diesem Fall nicht möglich.



  • Richtig JeGR, ein client kann aber selbst eine route setzen, hangt aber von server seitige routen ab ob der client irgedwo gelangen kann, also normales routing trifft zu, wem erzähle ich das :).
    Darum immer abschotten mittels firewall und persönlich weise ich immer einen interface zu.


  • Rebel Alliance Moderator

    @viragomann said in OpenVPN 2.Zugang:

    Regeln, die am OpenVPN-Reiter definiert sind, werden auf allen OpenVPN-Instanzen, Server wie Clients, angewandt. Eine Differenzierung ist in diesem Fall nicht möglich.

    Da beide TAP Interfaces aber in anderen Adressbereichen liegen müssen (anders funktioniert das Routing ja nicht), ist es an der Stelle oftmals irrelevant, denn man kann die Regeln an Hand der Source (Netz Server A, Netz Server B) definieren und auseinanderhalten ;) Dass der Reiter OpenVPN ein Gruppeninterface mit allen OVPN Servern/Clients ist, ist aber völlig richtig und sobald man Clients definiert bietet sich die Trennung dann an. Trotzdem ist die einzelne Regelerstellung auf Grund der unterschiedlichen Source Adressen problemlos möglich. :)

    @Pippin said in OpenVPN 2.Zugang:

    Richtig JeGR, ein client kann aber selbst eine route setzen, hangt aber von server seitige routen ab ob der client irgedwo gelangen kann, also normales routing trifft zu, wem erzähle ich das :).
    Darum immer abschotten mittels firewall und persönlich weise ich immer einen interface zu.

    Interface zuweisen oder nicht ist wie beschrieben Ansichtssache, spätestens bei vielen unterschiedlichen Site2Site Verbindungen bietet es sich sicher an. Bei 2-3 Clients/Tunneln ist das aber noch sehr überschaubar.

    Sicher kann ich auch auf dem Client an IP und Routing herumspielen. Warum auch nicht. Aber das heißt lange nicht, dass der Server auf der anderen Seite da mitspielt. Wie beschrieben - ich garantiere da sicherlich für nichts, aber von meinem bisherigen Beobachtungen würde das der entsprechende OVPN Service auf dem Port/Interface schlicht ablehnen weil er nichts mit anzufangen weiß. Könnte man sicher bei OpenVPN Upstream mal als Frage stellen/aufmachen. Praktisch habe ich das aber noch nie gesehen, dass sich das jemand zurechtbasteln konnte :)


Log in to reply