Bewertung: 5 / 5

Stern aktivStern aktivStern aktivStern aktivStern aktiv
 
Wer eine Raspberry PI besitzt sollte immer sicherstellen dass aus dem Internet auf die lokale Pi nur auf sicherem Weg zugegriffen werden kann. Es gibt z.B. ssh tunneling - aber die sicherste und allgemeinste Methode ist OpenVPN.  Damit sind sämtliche Ports der Pi von einem OpenVPN Client sicher zugreifbar. Der folgende Artikel beschreibt wie man OpenVPN auf der PI installiert und konfiguriert sowie wie man einen Linux OpenVPN Client konfiguriert um  aus dem Internet sicher auf ihn zugreifen zu können. Dabei wird die einfache Variante beschrieben die nur einen Client zu einer Zeit erlaubt, die aber in der Regel ausreicht. Die Clientkonfigurationsbeschreibung umfasst Linux und Windows7. 
 

  

Die im Folgenden beschriebene Variante ist schnell konfiguriert und reicht i.d.R aus aber hat ein paar Nachteile die zu berücksichtigen sind :
 
1) Nur ein Client kann zur selben Zeit auf die Pi zugreifen
2) Der geheime Schlüssel muss auf dem Server und Client im Klartext vorliegen
3) Wenn der Schlüssel verlorengeht  muss sofort ein neuer generiert und configuriert werden
4) Der geheime Schlüssel muss über einen sicheren Weg zum Client gebracht werden
 
Die Konfiguration besteht aus folgenden Schritten:
 
1) Registrierung eines dynamisch updatebaren Hostnamens (dynamischer DNS)
2) Installation und Konfiguration des OpenVPN auf der PI
3) Installation und Konfiguration  des OpenVPN Clients auf einem Linux System
4) Freischalten des OpenVPN Ports im lokalen Router
5) Freischalten des OpenVPN Ports auf der PI Firewall 
 
Registrierung eines dynamisch updatebaren Hostnamens
 
Damit man aus dem Internet über immer denselben Namen auf die Pi zu Hause zugreifen kann muss man einen Router haben, der dynamisches DNS unterstützt und sich einen dynamisch updatebaren Hostnamen besorgen. Bekanntester Vertreter ist dyndns . Es gibt aber auch diese wie auch diese Anbieter. Nachdem man sich registriert hat muss man seinen Router entsprechend konfigurieren, so dass er seine aktuelle externe Internet IP bei dem Anbieter registriert. Dazu ist entsprechend der Anleitung im Benutzerhandbuch zu verfahren.
 
Installation und Konfiguration des OpenVPN auf der PI
 
Die Installation wird mit
sudo apt-get install openvpn 
vorgenommen.
 
Danach wechselt man in das Verzeichnis und generiert den geheimen Schlüssel.
sudo bash -c "cd /etc/openvpn; openvpn --genkey --secret static.key"
 
Nun muss in diesem Verzeichnis eine Datei mit dem Namen tun0.conf manuell mit einem Editor erstellt werden mit folgendem Inhalt 
dev tun0
ifconfig 10.0.0.1 10.0.0.2
secret static.key
 
oder einfach mit dem folgenden Befehl erstellt werden:
sudo echo -e "dev tun0\nifconfig 10.0.0.1 10.0.0.2\nsecret /etc/openvpn/static.key" > /etc/openvpn/tun0.conf
 
Dabei ist 10.0.0.1 die IP des Servers und 10.0.0.2 die IP die der Client benutzt. 
 
Der OpenVPN Server wird nun gestartet mit
sudo service openvpn start
Er wird zukünftig nach jedem reboot der Raspberry automatisch gestartet werden.
 
Zur Kontrolle kann man noch mal nachsehen ob das neue OpenVPN Netzwerk  aktiv ist:
ifconfig tun0
 
und sollte die folgende Ausgabe erhalten:
pi@raspbmc:~$ ifconfig tun0
tun0      Link encap:UNSPEC  HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00  
          inet addr:10.0.0.1  P-t-P:10.0.0.2  Mask:255.255.255.255
          UP POINTOPOINT RUNNING NOARP MULTICAST  MTU:1500  Metric:1
          RX packets:634 errors:0 dropped:0 overruns:0 frame:0
          TX packets:518 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:100
          RX bytes:82048 (80.1 KiB)  TX bytes:592159 (578.2 KiB)
 
Installation und Konfiguration  des OpenVPN Clients auf einem Linux oder Windows System 
 
Linux:
Die Installation wird mit
sudo apt-get install openvpn
vorgenommen.
 
Damit man aus dem Internet auf die Pi zugreifen kann muss man einen dyndns Service benutzen, bei dem man die IPdes Heimrouters registrieren lässt. Im folgenden Beispiel ist das exemplarisch pi.mydyndns.org und das muss natürlich angepasst werden.
 
Nun muss auf dem Client im Verzeichnis /etc/openvpn eine Datei mit dem Namen tun0.conf erstellt werden mit folgendem Inhalt (dnydns Name anpassen)
remote pi.mydyndns.org
dev tun0
ifconfig 10.0.0.2 10.0.0.1
secret static.key
 
oder einfach mit dem folgenden Befehl erstellt werden (dyndns Namen anpassen):
sudo echo -e "remote mydyndns.org\ndev tun\nifconfig 10.0.0.2 10.0.0.1\nsecret static.key" > /etc/openvpn/tun0.conf" 
 
Dann muss die Datei static.key aus /etc/openvpn vom Server auf den Client in das Verzeichnis /etc/openvpn kopiert werden.
 
Danach kann der OpenVPN Client gestartet werden mit
sudo service openvpn start
Er wird zukünftig nach jedem reboot automatisch gestartet werden.
 
Zur Kontrolle kann man noch mal nachsehen ob das neue OpenVPN Netzwerk nun aktiv ist:
ifconfig tun0
 
und sollte die folgende Ausgabe erhalten:  
pi@raspbmc ~ $ ifconfig tun0
tun0      Link encap:UNSPEC  HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00 
          inet addr:10.0.0.2  P-t-P:10.0.0.1  Mask:255.255.255.255
          UP POINTOPOINT RUNNING NOARP MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:100
          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)
 
Windows:
Installation von OpenVPN nach dieser Anleitung oder dieser Anleitung.
 
Damit man aus dem Internet auf die Pi zugreifen kann muss man einen dyndns Service benutzen, bei dem man die IPdes Heimrouters registrieren lässt. Im folgenden Beispiel ist das exemplarisch pi.mydyndns.org und das muss natürlich angepasst werden.
 
Nun muss auf dem Client im Verzeichnis C:\Programme\OpenVPN\config eine Datei mit dem Namen pi.opvn erstellt werden mit folgendem Inhalt (dyndns Namen anpassen)
remote pi.mydyndns.org
dev tun0
ifconfig 10.0.0.2 10.0.0.1
secret static.key
 
Dann muss die Datei static.key aus /etc/openvpn vom Server auf den Client in das Verzeichnis C:\Programme\OpenVPN\config kopiert werden.
 
Danach kann der OpenVPN Client mit der OpenVPN-Gui gestartet werden. Dabei muss die vorher erstellte Konfigurationsdatei pi.opvn ausgewählt werden.
   
Freischalten des OpenVPN Ports im lokalen Router  
 
OpenVPN benutzt den Port 1194. Der lokale Router muss so konfiguriert werden, dass der Port 1194 auf die Raspberry weitergeleitet wird. Wie das vorzunehmen ist muss in der Anleitung des jeweiligen Routers nachgelesen werden. Üblicherweise muss man den Port 1194 am Router fest an die IP Adresse der Raspberry weiterleiten und dabei dieselbe Portnummer beibehalten. Ausserdem muss der Router konfiguriert werden dass er seine aktuelle externe IP Adresse an den dynamic DNS Provider schickt.
 
Freischalten des OpenVPN Ports auf der PI Firewall (nur notwendig bei raspbmc)
 
Dazu muss die Datei  /etc/network/if-up.d/secure-rmc erweitert werdenund sie muss dann am Ende dann wie folgt aussehen (Rote Zeilen sind neu):
 
logger -t iptables "Configuring ip tables for interface $IFACE"
if [ "$IFACE" != "lo" ]; then
    NETMASK=$(get_subnet $IFACE)
    iptables -A INPUT -p tcp --dport 1194 -j ACCEPT
    iptables -A INPUT -p udp --dport 1194 -j ACCEPT
    iptables -A INPUT -s $NETMASK -i $IFACE -j ACCEPT
    iptables -A INPUT -i $IFACE -j DROP
fi
 
Wie kann auf die Raspberry Pi zugegriffen werden:
Der Zugriff auf die IP 10.0.0.1 ist nun vom Client möglich. Wenn man also z.B. den Webserver erreichen will muss man erst einmal den OpenVPN Client starten, der den dyndns Namen benutzt, und dann am Client http://10.0.0.1 im Browser eingeben. Jegliche anderen Zugriffe auf irgendwelche Ports der Pi wie windows shares oder nfs funktionieren jetzt immer wenn die IP Adresse 10.0.0.1 benutzt wird.
 
Weiterführende Links
 
OpenVPN static mini howto
 
Kommentar schreiben

*** Hinweis ***

Kommentare sind erwünscht. Aber um lästige Spamposts abweisen zu können gibt es ein paar Dinge die zu beachten sind:
  1. Kommentare mit dem Text http werden sofort zurückgewiesen mit der Meldung Sie sind nicht berechtigt den Tag zu verwenden. zz
  2. Kommentare werden manuell überprüft und es dauert deshalb in der Regel einen Tag bis sie veröffentlicht werden.

    Kommentare   
    #6 framp 2015-08-31 15:50
    Moin Hans Peter,

    es gibt beim Apple Store ein Openvpn Connect. Damit kannst Du auch ein VPN mit Openvpn benutzen. Wie es im aDetail funktioniert kann ich Dir aber leider nicht sagen, da ich kein IPhone habe. Ein wenig Googeln bringt aber viele Treffer zu Openvpn und IPhone.

    Cu framp
    Zitieren
    #5 Hans Peter 2015-08-31 15:19
    Hallo
    Kann ich den Raspberry auch über ein IPHON steuern(z.B.Lampen oder Heizung steuern)
    Gruß
    H.Werner
    Zitieren
    #4 framp 2014-02-06 20:03
    Die Anleitung wurde für ein raspbmc System erstellt. Wenn Du ein raspbian hast ist die Sache mit der FW obsolet. Das werde ich noch in der Beschreibung aufnehmen.

    Einfacher test ob eine FW aktiv ist:

    iptables -L -v -n

    Damit seihst Du die aktiven FW Regeln.
    Zitieren
    #3 Wolfgang 2014-02-06 17:21
    Hallo framp,
    nachdem diese und diverse andere Hürden genommen sind, kommt die nächste: Freischalten des OpenVPN Ports auf der PI Firewall. Im angegebenen Verzeichnis /etc/network/if-up.d gibt es keine Datei namens secure-rmc. Also ist auch die Firewall nicht aktiv, oder? Was ist zu tun?
    Mit freundlichen Grüßen
    Wolfgang Fast
    Zitieren
    #2 framp 2014-02-05 20:10
    Moin Wolfgang,

    Du hast natürlich Recht. Das sind Typos die ich eben sofort korrigiert habe. Keine Ahnung warum das bislang noch niemand gemeldet hat von den knapp 4000 Besuchern dieser Seite :sad: . Vielen Dank!

    Zu Deinem eigentlichen Problem: Das ist merkwürdig. Was liefert denn die Ausgabe von
    ls -la /etc/openvpn
    ?
    Zitieren
    #1 Wolfgang 2014-02-05 10:25
    Hallo,
    habe die Anweisungen zur Installation von OpenVPN auf dem RPI befolgt. Leider ohne Erfolg. Beim Erstellen der Datei "tun0.conf" in /etc/openvpn erscheint "Permission denied", obwohl der Befehl als "sudo" ausgeführt wurde.
    Was ist zu tun?
    Kann es sein, daß im kleinen Script die Zeile
    "dev tun" eigentlich "dev tun0" heißen muß und die doppelten Hochkomma in
    sudo echo -e "dev tun0\nifconfig 10.0.0.1 10.0.0.2\nsecret /etc/openvpn/static.key > /etc/openvpn/tun0.conf"
    bereits nach ".../static.key" stehen müßten? Aber auch dann kommt der beschriebene Fehler. Wäre schön, wenn Sie mir helfen könnten. Vielen Dank im voraus.
    Mit freundlichen Grüßen
    Wolfgang Fast
    Zitieren