Aktive und revidierte OpenVPN / PiVPN-Profile

OpenVPN/PiVPN Benutzer anlegen und verwalten auf dem Raspberry Pi

Die Artikelserie zum Raspberry Pi
Teil 1 (Link): Der Raspberry Pi 3 – der Alleskönner im Scheckkartenformat
Teil 2 (Link): Installation und Konfiguration von Raspbian Stretch auf Raspberry Pi 3
Teil 3 (Link): Fernzugriff per SSH und VNC auf den Raspberry Pi
Teil 4 (Link): Installation PiVPN – Den Raspberry Pi einfach zum VPN-Server ausbauen
Teil 5: Dieser Artikel
Teil 6 (Link): Installation und Konfiguration von Raspbian Stretch Lite auf Raspberry Pi 3 (ohne Desktop)
Teil 7 (Link): etherwake – Der Raspberry Pi als Wake On LAN-Server
Teil 8 (Link): Adblocker mit Pi-hole: Das schwarze Loch für Werbung im Internet
Teil 9 (Link): Die private Cloud auf dem Raspberry Pi – Seafile Server auf Raspian Stretch Lite installieren

Ihr habt PiVPN wie im Artikel hier beschrieben installiert und konfiguriert?

Perfekt, dann fügen wir nun unsere Benutzer hinzu, die externen Zugriff auf’s interne Netzwerk bekommen sollen.

Über SSH loggen wir uns auf unserem Raspberry Pi ein und landen dann auf der Shell.

OpenVPN / PiVPN-Benutzer hinzufügen

Der Fehler zum Hinzufügen eines Benutzers lautet:

Diesen Befehl gebt ihr auf der SSH-Konsole ein und bestätigt ihn mit Enter. Danach gebt ihr den Benutzernamen ein, mit dem man sich später anmelden soll, gefolgt vom Passwort, das doppelt eingegeben werden muss, um Vertipper auszuschließen. Das Kennwort wird übrigens nicht angezeigt, auch keine Sternchen oder so! Das Kennwort sollte selbstverständlich zufällig gewählt sein und möglichst nicht zu erraten! Um zufällige Kennwörter zu erstellen könnt ihr die Seite passwort-generator.com (Link) nutzen.

Zur Info: Den Befehl „pivpn add“ könnt ihr auch mit der Option nopass, also „pivpn add nopass“ verwenden. Danach gebt ihr ebenfalls einen Benutzernamen ein, aber das Kennwort entfällt. Heißt also, dass sich jeder, der in Besitz der Profil-Datei kommt, ohne Eingabe eines Kennwortes einloggen kann. Meiner Meinung nach solltet ihr das also tunlichst unterlassen und immer einen Benutzer mit Kennwort erstellen!

Im Anschluss wird eine Schlüsseldatei generiert und die Konfiguration des PiVPN-Servers automatisch angepasst. Außerdem wird eine Datei mit der Endung .ovpn erzeugt, die das VPN-Profil für den eben erstellen Benutzer enthält. Diese Datei wird auf unserem Raspberry Pi unter „/home/pi/ovpns“ abgelegt und wir benötigen sie später für den Verbindungsaufbau.

Tipp: Legt für jedes eurer Geräte, mit dem ihr von extern auf das Netzwerk zugreifen wollt, ein eigenes Profil an! So müsst ihr das Profil auch nur in einem Gerät löschen und neu hinzufügen, falls beispielsweise euer PC gehackt wurde oder verloren gegangen ist.

Das VPN-Profil mit WinSCP auf den PC oder Mac übertragen und importieren

Um die eben erstellte Datei „TESTUSER.ovpn“ auf unseren PC oder Mac zu übertragen, nutzen wir die Software WinSCP. Die gibt es, wie unser Putty ja auch, als portable Version, die wir nur entpacken und nicht installieren müssen (Link).

Nach dem Start von WinSCP loggen wir uns mit den uns bekannten Daten auf unserem PiVPN-Server ein. Hierfür wählen wir das Protokoll SFTP mit Port 22 und benötigen den Benutzernamen „pi“ und das dazugehörige Kennwort.

Nachdem wir unsere OpenVPN-Profildatei erstellt und auf unserem Computer übertragen haben, können wir sie in unseren OpenVPN-Client einfügen.

Nachdem ihr den OpenVPN-Client auf eurem Computer installiert habt, klickt ihr mit der rechten Maustaste auf das Icon unten bei der Uhr und wählt aus dem Kontextmenü „Import file…“. Dann wählt ihr eure ovpn-Datei aus und lasst sie vom Client importieren.

Import einer ovpn-Datei in den OpenVPN-Client.

Mehr zur den Profilen, verschiedenen Clients usw. gibt es ein einem weiteren Artikel.

OpenVPN / PiVPN-Benutzer verwalten

Anzeigen der aktiven OpenVPN / PiVPN-Profile

Wir möchten uns einen Überblick verschaffen, welche Profile und damit Benutzer Zugriff auf unseren OpenVPN-Server bzw. unser PiVPN haben. Hierfür loggen wir uns zuerst wieder über Putty auf dem PiVPN-Server ein.

Auf der Shell des PiVPN-Servers angekommen tippen wir das folgende Kommando ein und bestätigen es mit Enter:

Daraufhin zeigt euch der PiVPN-Server alle im System hinterlegten Profile an.

Aktive und revidierte OpenVPN / PiVPN-Profile

Der oberste Eintrag ist immer euer Server selbst, danach folgen die Profile für den externen Zugriff. In der ersten Spalte (Status) seht ihr die Information, ob das Profil noch gültig ist (Valid), sich also noch einwählen darf, oder widerrufen wurde (Revoked). Zum Widerruf von Profilen kommen wir im nächsten Absatz. In der zweiten Spalte (Name) seht ihr den Benutzernamen des OpenVPN-Profils. Im Screenshot könnt ihr erkennen, dass ich zwei Profile für den Benutzer TESTUSER erstellt habe. Das erste habe ich widerrufen und ein neues erstellt. Das alte Profil bleibt also im System erhalten, aber als widerrufen markiert. Die dazugehörige ovpns-Datei wird gelöscht und der User kann sich mit dieser Datei, sollte er sich schon besitzen, auch nicht mehr einloggen. Für das neu erstellte Profil TESTUSER wurde eine neue Datei „TESTUSER.ovpn“ erstellt, mit der der Login fortan möglich ist (Status Valid).

OpenVPN / PiVPN-Benutzer löschen / widerrufen

Unsere Tests waren erfolgreich, der PiVPN-Server läuft. Jetzt möchten wir gerne den TESTUSER wieder löschen. Oder ihr habt einem Freund temporären Zugang zu eurem Netz gegeben und möchtet ihm diesen nun wieder entziehen.

Auch das geht schnell und einfach.

Wir verbinden uns, wie immer, per SSH auf unseren PiVPN-Server. Den aktiven Benutzer TESTUSER möchten wir löschen, also führen wir das Kommando

aus. Daraufhin müssen wir den Benutzernamen des Users eingeben, den wir widerrufen möchten, also TESTUSER, gefolgt von Enter. Der Server passt die Konfiguration an, revidiert das Profil des Benutzers und löscht die dazugehörigen Dateien.

Prüfen, welche Benutzer an OpenVPN / PiVPN angemeldet sind

Wenn ihr wissen wollt, welche der aktiven Clients auch wirklich am PiVPN-Server angemeldet sind, also auf euer Netzwerk zugreifen, dann gebt ihr auf der Konsole einfach

ein. Danach erscheint eine Liste mit allen in diesem Moment angemeldeten Benutzern. In meinem Fall, da kein User eingeloggt ist, steht dort einfach nur „No Clients Connected!“.

"pivpn clients" gibt euch eine Liste der eingeloggten Benutzer aus.

Ein paar weitere PiVPN-Befehle

Hier noch eine Liste der wichtigsten PiVPN-Befehle, die ihr im Alltag gebrauchen könntet. Statt dem ausgeschriebenen Befehl wie z. B. „clients“ könnt ihr übrigens auch die Abkürzung „-c“ verwenden, das kommt auf’s Gleiche raus.

-a, add [nopass] Ein neues Client ovpn-Profil erstellen, optional mit „nopass“ ohne Kennwort für den Benutzer
-c, clients Listet alle am Server angemeldeten Benutzer auf
-d, debug Startet im Falle von Problemen eine Debugging-Session
-l, list Listet alle gültigen und revidierten Client-Zertifikate auf
-r, revoke Revidiert ein Cllient ovpn-Profil
-h, help Zeigt den Hilfe-Dialog mit dieser Liste an Kommandos
-u, uninstall Deinstalliert PiVPN vom System

"pivpn help" gibt die Liste mit möglichen Befehlen aus.

8 Antworten auf „OpenVPN/PiVPN Benutzer anlegen und verwalten auf dem Raspberry Pi“

  1. Hi Dennis,

    super Erklärung 🙂 Ich hätte allerdings eine Frage. Anfangs zu deinem Artikel sagst du, dass man mit einem VPN ein NAS im Heimnetzwerk accessen kann und z. B. auf dem Urlaub über seine E-Mails durch einen Tunnel aufrufen.

    Für den Zugriff auf ein NAS wird ja ein TUN-„Zugriff/Treiber“ benötigt. Für den Tunnel zum Heimnetzwerk durch den Router ins Internet wird doch ein TAP-„Zugriff/Treiber“ benötigt. Sozusagen eine Bridge. Hast du dafür auch eine Anleitung?

    So wie ich das sehe muss ich wohl zwei Instanzen von OpenVPN laufen lassen. Eine für TUN (NAS) und eine für TAP (Internet), denn den OpenVPN Server kann ich wohl nur mit einem Parameter starten.

    Grüße Jonny

    1. Hey Johny,
      ich hoffe, ich verstehe dich richtig…
      Du kannst in deiner OpenVPN Client-Config einstellen, dass (falls gewünscht) der komplette Traffic durch dein VPN geleitet werden soll. Das hat den Vorteil, dass du sowohl auf deine VPN-internen Ressourcen zugreifen kannst, als auch über deinen heimischen Internet-Anschluss sicher surfen, weil der komplette, von einem extern genutzten Gerät ausgehende Traffic durch deinen PiVPN-Server geroutet wird.
      Dafür gibt es den folgenden Befehl, den du in deine Client-Config einfügen musst: push „redirect-gateway def1“
      In der offiziellen Doku zu OpenVPN kannst du das noch mal nachlesen: https://openvpn.net/index.php/open-source/documentation/howto.html#redirect

      Ich persönlich habe es so gemacht: Ich habe mir zwei Profile angelegt für den Zugriff auf/über mein VPN daheim. Eines, mit dem der nur der Traffic in mein heimisches LAN durch das VPN geht, der restliche Traffic (Internet) geht ganz normal über den jeweils genutzten Anschluss. Das hat den Vorteil, dass die normale Internetnutzung auch normal schnell ist, eben so schnell, wie der Anschluss, an dem du dich befindest.
      Davon abgesehen habe ich noch ein zweites Profil, mit dem ich (mit besagtem Befehl von oben) meinen kompletten Traffic durch meinen PiVPN-Server route. Das hat dann den Vorteil, dass ich sowohl auf meine Ressourcen daheim zugreifen, als auch komplett getunnelt surfen kann. Ich kann mich also in unsicheren Netzwerken bewegen und brauche mir keine Gedanken zu machen, dass jemand mit liest. Der Nachteil dieser Variante ist, dass mein heimischer Upload die Geschwindigkeit des Surfens begrenzt, weil natürlich sämtlicher Traffic erst mal zu mir nach hause und von dort aus ins Internet verschickt und dann zurück an mich „hochgeladen“ wird. Für reguläres Surfen und Mailen reicht das allemal aus, aber große Dateien würde ich so nicht unbedingt downloaden wollen.

      Testen kannst du das übrigens auch ganz einfach, indem du dir deine öffentliche IP-Adresse anzeigen lässt. Seiten dafür gibt’s ja wie Sand am Meer.
      Ohne das push „redirect-gateway def1“ hast du immer die IP-Adresse des Anschlusses, an dem du gerade surfst. Mit dem Befehl bekommst du dann die IP-Adresse deines Anschlusses daheim angezeigt.

      So, ich hoffe, ich konnte dir helfen. Melde dich gerne noch mal, wenn noch Fragen offen sein sollten.

      VG,
      Dennis

  2. Hallo Dennis,
    diese Anleitung ist der Knaller. Ich hab sehr lange nach eine Lösung für die Installation eines OpenVPN Servers gesucht, wo man nicht gleich mit Linux erschlagen wird.
    Das Teil habe ich innerhalb von 2 Stunden auf einem Raspberry EINS installiert.
    Wenn ich mich jetzt einwähle läuft alles rasend schnell durch.
    Problem ist aber: Der DHCP des OpenVPNs gibt mir eine 10.8.0.x als IP für meine Endgeräte.
    Ich möchte aber auf meine internen Geräte zugreifen, die auf 192.168.1.0/24 liegen.
    Gibt es die Möglichkeit, die Daten auf den OPENVPN so anzupassen, dass IPs im Bereich 192.168.1.220-230 verteilt werden?

    Habe folgende Config
    Raspberry 192.168.1.9
    DynDNS Name vorhanden
    Unify USG Firewall 192.168.1.1 (DHCP Vergabe 192.168.1.100-200)
    Portweiterleitung 11194 auf 192.168.1.9
    DNS 192.168.1.10 / 8.8.8.8

    Würde mich über eine Antwort freuen

    1. Hallo Markus,
      hehe, danke dir für das Lob! Freut mich wirklich, dass meine Anleitungen so gut ankommen.
      Was dein Problem angeht, da bin ich, um ehrlich zu sein, im Moment überfragt. Da ich von extern nur mit MAC- und IP-Adressen arbeite habe ich die DNS-Auflösung noch nie genutzt.
      Trotz der IP-Adresse im Netz 10.8.0.x kannst du über die IP-Adressen auf deine anderen Geräte zugreifen, probier’s einfach mal aus.
      Ich werde mir das mit dem DNS aber bei Gelegenheit auch noch mal angucken und schauen, ob ich das irgendwie gelöst bekomme.

      Viele Grüße,
      Dennis

      1. Hi Dennis,
        die Geschichte mit der DNS brauchst du nicht machen.
        Ich hab von aussen einfach mal versucht über openvpn auf meinen Server zuzugreifen.
        Und schon fast widererwartend ging das. Somit kann man sich also ohne Probleme von einem 192.168.2.x/24 in ein 192.168.1.x/24 Netz „einwählen“.
        Gestern hab ich an meiner Unify USG den eingebauten RADIUS-Server und einen L2TP-Zugang eingerichtet.
        Hier auch das gleiche. „Falscher“ Nummernkreis, trotzdem kommt man rein und ich kann mich dann von dort per RDP auf meine Rechner direkt einwählen. K.A. wie, aber es geht. Rest interessiert ja nicht 🙂

        1. Hi Markus,

          schön, dass es klappt und du auf deine Geräte zugreifen kannst.
          Ich hab schon ein paar Ideen für weitere Tutorials, vielleicht ist ja auch für dich wieder was Interessantes dabei 🙂

          Viele Grüße,
          Dennis

  3. Hallo Dennis

    mit hilfe dieses tollen Artikes habe ich meinen Pi nun zu einem VPN Server gemacht.
    kannst du mir helfen, wie ich nun mit zwei solcher Pi´s zwei Standorte dauerhaft per VPN verbinde?

    Danke und grüße

    1. Hallo Gerald,
      danke für dein Lob!
      Zwei Standorte per PiVPN/OpenVPN miteinander zu verbinden, das habe ich bisher noch nicht gemacht. Schau am besten mal in die OpenVPN Dokumentation, da steht sicherlich was dazu drin.
      Viel Erfolg und wenn du weißt, wie’s geht, würde ich mich über einen kurzen Hinweis freuen 🙂
      Viele Grüße, Dennis

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.