Mehr Sicherheit durch OpenVPN

closeDieser Beitrag gehört zu der Artikelserie LPIC-2

Sicherheit wird ein immer wichtigeres Thema in der IT. Klar war es auch schon vor Jahren wichtig, jedoch bei weitem nicht so stark diskutiert, wie es das heute ist.
Das Problem von IT-Sicherheit: Auch das stärkste Glied ist nur so stark wie das Schwächste!
Es bringt mir also die beste Verschlüsselung nichts, wenn mein Gegenüber diese nicht auch verarbeiten und entschlüsseln kann. Oder ein Client kann noch so gut gesichert, gepatcht und geschützt sein, wenn das angeschlossene Netzwerk unverschlüsselt und für jeden Lesbar ist. Und damit möchte ich auch gleich übergehen zum Thema VPN.

Mittels VPN lässt sich eine verschlüsselte Verbindung zwischen zwei Parteien aufbauen. Sehr zu empfehlen in öffentlichen WLANs und anderen frei zugänglichen Netzwerken.
Zur Verfügung stehen Site-to-Site, Site-to-End und End-to-End:

Die Installation von OpenVPN ist eigentlich denkbar einfach. Ich verwende dazu einen Debian- und einen Fedora-Client.

Beginnen wir mit Debian bei der Installation:

apt-get install openvpn

Nun legen wir einen neuen Key an, mit dem sich beide Seiten authentifizieren können:

openvpn --genkey --secret /etc/openvpn/static.key

Diesen muss natürlich auch noch auf dem Client übertragen werden:

scp static.key client:/etc/openvpn/

Nun legen wir eine Konfigurationsdatei an für Debian, welches die Rolle des Servers übernehmen wird:

root@server:/etc/openvpn# cat tun0.conf 
dev tun0
ifconfig 10.9.8.1 10.9.8.2
secret static.key

Auch auf dem Client muss eine Konfigration eingerichtet werden:

root@client openvpn# cat tun0.conf 
remote 10.128.101.26
dev tun0
ifconfig 10.9.8.2 10.9.8.1
secret static.key

Wenn man nun einen Blick in ifconfig wirft, so sieht man, dass ein neues Interface dazugekommen ist. Auf dem Server sieht das dann so aus:

root@server:/etc/openvpn# ifconfig tun0
tun0      Link encap:UNSPEC  Hardware Adresse 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00  
          inet Adresse:10.9.8.1  P-z-P:10.9.8.2  Maske:255.255.255.255
          UP PUNKTZUPUNKT RUNNING NOARP MULTICAST  MTU:1500  Metrik:1
          RX packets:2 errors:0 dropped:0 overruns:0 frame:0
          TX packets:2 errors:0 dropped:0 overruns:0 carrier:0
          Kollisionen:0 Sendewarteschlangenlänge:100 
          RX bytes:168 (168.0 B)  TX bytes:168 (168.0 B)

Auf dem Client wiederum so:

root@client openvpn# ifconfig tun0
tun0      Link encap:UNSPEC  Hardware Adresse 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00  
          inet Adresse:10.9.8.2  P-z-P:10.9.8.1  Maske:255.255.255.255
          UP PUNKTZUPUNKT RUNNING NOARP MULTICAST  MTU:1500  Metric:1
          RX packets:2 errors:0 dropped:0 overruns:0 frame:0
          TX packets:2 errors:0 dropped:0 overruns:0 carrier:0
          Kollisionen:0 Sendewarteschlangenlänge:100 
          RX bytes:168 (168.0 b)  TX bytes:168 (168.0 b)

Will man nun prüfen, dass alles läuft, so kann man die jeweilige Gegenseite pingen. Sind die Tunnel korrekt aufgebaut, so geht das ohne Probleme.

16 Kommentare bei „Mehr Sicherheit durch OpenVPN

  1. Ich suche schon länger eine Möglichkeit verschiedene PC zu einem Netzwerk zusammen zu schliessen. Das Problem ist leider, das alle PC nur über dynamische IP über NAT angebunden sind und die Hälfte Ihren Router immer dann ausschaltet, wenn der PC nicht mehr läuft.

    Es steht ein Billig Webserver mit php5 und MySQL zur Verfügung. Ich habe mir vorgestellt, das jeder aktive PC sich bei dem Meldet, sieht welche Geräte online sind und deren aktuelle IP bezieht um sich mit ihnen zu verbinden, sowie selber die aktuelle IP hinterlegt.

    Ob ich jetzt das mit OpenVPN oder Tinc (wobei Tinc aus meiner Sicht irgendwie geeigneter scheint) mache ist mir eigentlich egal. letztendlich soll es ein Netzwerk geben, wo jemand aus unserer Familie die Urlaubsfotos freigeben kann und die anderen können diese ansehen. Es soll auch möglich sein über diese Netz zu Gamen oder PC’s via VNC oä. zu warten.

    In diesem Netz kommen auch verschiedene Systeme vor wie: XP, Win7, Ubuntu und Win98 (nicht mehr lange – hoffentlich)

    Dieses Netzwerk soll unsere Gesamte Familie von Grosseltern bis Enkelkind verbinden.

    Das grosse Problem bin dabei wohl ich, denn es ist meine Idee und ich soll das umsetzen wobei ich mit VPN, Routing, etc. kaum Erfahrung habe.

    1. Interessante Aufgabe 🙂 Spontan würde mir Hamachi einfallen. Schon probiert?
      Ansonsten gib mir etwas Zeit, die Aufgabenstellung interessiert mich 🙂

  2. Hamachi kenne ich, allerdings muss ich leider sagen, dass ich den Chinesen nicht wirklich traue. Es soll etwas völlig privates werden.
    Wir haben leider auch das Problem, das sich unsere Familie stark über die Grosseltern als Koordinationsstelle definiert. Wenn die mal nicht mehr sind, fürchte ich wird die Familie sich immer mehr entfremden. Die Jungen sind es sich scheinbar nicht mehr so gewöhnt. Beziehungen zu Menschen aufrecht zu halten, die sie vielleicht nur alle ein bis drei Jahre kontaktieren/sehen vor allem wenn doch alles die Grosseltern machen.
    Mit diesem Mittel erhoffe ich mir nicht nur alltägliche Aufgaben wie PC Wartung, Datenaustausch oder Spiele zu vereinfachen, sondern auch die Bänder in der Familie zu stärken.

    Schön das ich Interesse wecken konnte. Ich wäre dankbar wenn sich was ergeben würde.

    1. Das einfachste wäre es, einen zentralen Server oder PC als Master zu haben, auf den alle Verbinden können. Dieser kriegt via DynDNS einen statischen Namen und die anderen müssten dann nur einen VPN Client haben und den Namen des Master kennen…
      Oder du könntest dir per FTP o.ä. die aktuelle IP eines jeden Clients der Online ist auf einen Webserver schreiben lassen. Der erste, der Online ist, wird dann automatisch der Master und die anderen Fragen über den Webserver dessen IP ab.
      Oder am einfachsten ein Rootserver der als Master fungiert mit fixer IP.

      1. Ich habe einen Webserver eines Bilighosters gemietet mit folgenden Fähigkeiten.
        FTP Unterstützung
        PHP5 Unterstützung
        PERL / Sendmail Unterstützung
        CronJobs Unterstützung
        SSI Unterstützung
        Passwortgeschützte Bereiche
        Mod-rewrite (.htaccess) Support
        Php-ini Support
        Eigenes CGI-BIN Verzeichnis

        1. Also unter meinen Gerätschaften dürfte das Android Mobiltelefon wohl dasjenige sein was am meisten im Internet ist wobei hier nur 500mb im Monat gratis sind. Aber auch das gerät ist nicht immer online.
          Ich müsste mich einmal bei den anderen Teilnehmern umsehen. Allerdings sehe ich hier schwarz.

          Wie hast du dir das vorgestellt bzw. warum wäre dieser Webserver nicht ausreichend?

        2. @Tomboy

          Weil der Webserver dir einfach nicht genug Freiheiten lässt. Darauf hast du nur zugang via FTP und nicht via Shell. Es wird dir nicht erlaubt sein Software zu installieren, also kannst du auch keinen VPN Server darauf aufsetzen. Du brauchst einen Client bei dir zu Hause (kein Telefon!), der immer online ist oder ein richtigen Server, wo du auch per SSH zugreiffen kannst. Ein Webserver ist zu wenig, da es keine VPN Implementation in PHP gibt…

        3. Ah. Jetzt weiss ich was du meinst.

          Meine Überlegung war eben gerade weil ich diese Problematik habe, dass mein Webserver lediglich Vermittler ist. Ich habe mir gedacht, dass der Webserver eigentlich nur da sein muss um jedem Clienten zu sagen welche IP Adresse der jeweils andere PC zur Zeit hat so dass die sich direkt P2P zueinander verbinden können, nicht mehr und nicht weniger.
          Mir einen PC zu zu legen, der dauernd am Netz hängt war auch mal eine Überlegung. Jedoch hätte ich hier das Problem, dass ich dann auch eine teurere Internetleitung bräuchte und unser Netzwerk richtig gehend abhängig davon ist, das das Gerät online ist und ich nebenbei nicht zu viel Herunter oder gar Hochlade.

        4. Wie schon geschrieben, dazu könntest du ja DynDNS nehmen: http://www.dyndns.com/
          Da kannst du die Clients dann per Namen ansprechen und musst dir keine Gedanken mehr machen über die andauernd ändernden IP-Adressen.
          Hast du dir das schon mal angesehen

  3. Funktioniert ganz gut soweit, danke für die Anleitung!
    Die Adresse in der Zeile „remote 10.128.101.26“ ist die Serveradresse, also im Allgemeinen nicht im 10er-Netz, sondern eben eine öffentliche IP. Aber letztendlich suggeriert das „remote“ das ja auch…

    1. Gerne!
      Du hast natürlich recht, sollte nicht aus dem privaten Netz sein. Habe die Parameter so aus meinem kleinen Testnetz übernommen, deshalb der Patzer. Aber das Beispiel bleibt ja das selbe 🙂

  4. Netter Artikel. Kann nicht schaden, sich mit der Thematik im detail zu beschaeftigen. Ich werde bestimmt auch die weiteren Artikel im Auge behalten.

Schreibe einen Kommentar

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