it-swarm.com.de

Wie richte ich OpenVPN ein, damit ich das Internet von einem ungesicherten Hotspot aus sicher nutzen kann?

Ziel: Ich möchte das Internet sicher über meinen Heim-PC nutzen können, während mein Notebook mit einem offenen Hotspot/Access Point verbunden ist.

Ich do weiß, dass ich einen SSH-Tunnel/SOCKS-Proxy verwenden kann, aber ich möchte nicht mit Anwendungen herumspielen (sie dazu bringen, sie zu verwenden, wenn es überhaupt möglich ist). Ich vermute, ich brauche ein OpenVPN-Setup, daher suche ich nach einer detaillierten Anleitung, wie man:

  1. Installieren und konfigurieren Sie den OpenVPN-Server
  2. Einrichten des OpenVPN-Clients (NetworkManager)

Ubuntu-Versionen, auf denen dies funktionieren sollte, sind 10.10 und 11.04.

31
htorque

Ich habe die genaue Frage vor ein paar Monaten, aber zusätzlich wollte ich eine IPv6-Verbindung, wenn möglich. Meine Fragen zu Serverfault könnten Sie interessieren:

Ich hatte nur eine NIC ("Netzwerkschnittstelle") auf meinem Server zur Verwendung. In meinem Setup war NetworkManager nicht ausreichend, da ich ein benutzerdefiniertes Skript ausführen muss, um IPv6 zu unterstützen. Der Einfachheit halber werde ich hier jedoch NetworkManager verwenden und die IPv6-Unterstützung weglassen.

Treffen Sie zunächst eine Entscheidung über die Authentifizierungsmethode. Ich verwende die sicherere Zertifikatsmethode, die wie SSL funktioniert: Während des Handshakes wird ein gemeinsames Geheimnis ausgewählt, das für die Sitzung verwendet wird. Die anderen Methoden sind ein gemeinsam genutzter Schlüssel. einen Benutzernamen und ein Passwort.

Server

1. Vorbereiten

Installieren Sie zunächst den OpenVPN-Server. Dies ist so einfach wie Sudo apt-get install openvpn. Der schwierige Teil ist die Konfiguration. Die Konfiguration ist in /etc/openvpn vorhanden.

2. Konfigurieren Sie die Authentifizierung

Der Server benötigt Zertifikate, um sich und seine Clients zu identifizieren. Dieses Zertifikat wird von einer Zertifizierungsstelle (Common Authority) abgerufen. Die Erstellung der Zertifikate und der zugehörigen privaten Schlüssel kann auf jedem Computer erfolgen, muss aber nicht auf dem Server erfolgen. Wenn Sie wirklich paranoid sind, sollten Sie dies auf einem Computer tun, der nicht mit einem Netzwerk verbunden ist, und einen Memory Stick zum Übertragen der Zertifikate verwenden.

Erstellen Sie eine Zertifizierungsstelle und Zertifikate für den Server

Dieser Schritt muss einmal ausgeführt werden, es sei denn, der private Schlüssel Ihrer Zertifizierungsstelle wurde kompromittiert. In diesem Fall können gültige Zertifikate erstellt werden, die vom Server akzeptiert werden und zu einer Sicherheitsverletzung führen.

Die offizielle Dokumentation schlägt vor, die Administration in /etc/openvpn durchzuführen. Ich bin kein großer Fan davon, alles als root laufen zu lassen, also werde ich es in ein anderes Verzeichnis stellen.

  1. Erstellen Sie das Administrationsverzeichnis und kopieren Sie die darin enthaltenen Dateien, indem Sie Folgendes ausführen:

    mkdir ~/openvpn-admin
    cd ~/openvpn-admin
    cp -r /usr/share/doc/openvpn/examples/easy-rsa/2.0/ ./easy-rsa
    cd easy-rsa
    
  2. Bearbeiten Sie die Standardeinstellungen in vars nach Bedarf, indem Sie beispielsweise KEY_SIZE=2048 einstellen, weil Sie paranoid sind.
  3. Laden Sie die Variablen und erstellen Sie das Schlüsselverzeichnis, indem Sie Folgendes ausführen:

    . vars
    
  4. Wenn Sie die Fehlermeldung No ... openssl.cnf file could be found Further invocations will fail erhalten, führen Sie ln -s openssl-1.0.0.cnf openssl.cnf und dann . vars erneut aus.

  5. Wenn Sie diese Zertifizierungsstelle zum ersten Mal verwenden, bereiten Sie die Schlüsselumgebung vor. Führen Sie nicht ​​diesen Befehl aus, wenn Sie Ihre zuvor erstellte Zertifizierungsstelle beibehalten möchten. Dazu müssen Sie einen neuen ca.crt bereitstellen.

    ./clean-all
    
  6. Erstellen Sie die Zertifizierungsstelle, indem Sie ./build-ca ausführen. Sie können beliebige Details eingeben. Beachten Sie jedoch, dass diese Informationen in Protokolldateien angezeigt werden, wenn die Clients eine Verbindung zum Server herstellen. Dadurch werden die Dateien ca.key und ca.crt im Unterordner keys erstellt. Halten Sie die ca.key -Datei geheim nter allen Umständen. Andernfalls kann jeder mit dem Schlüssel eine Verbindung zu Ihrem Server herstellen.
  7. Wenn Sie ein früheres Zertifikat haben, das verloren gegangen oder abgelaufen ist, müssen Sie das alte Zertifikat zuerst mit ./revoke-full server widerrufen. Andernfalls erhalten Sie einen Datenbankfehler.
  8. Erstellen Sie das Zertifikat für den Server, indem Sie Folgendes ausführen:

    ./build-key-server server
    

    Wenn Sie nach einem Kennwort gefragt werden, lassen Sie es leer, es sei denn, Sie möchten das Kennwort bei jedem Serverstart eingeben (nicht empfohlen). Bestätigen Sie, dass Sie das Zertifikat signiert und festgeschrieben haben. Im Verzeichnis keys erscheinen zwei neue Dateien: server.key und server.crt.

DH und bereite dich auf tls-auth vor

Generiere Diffie-Hellman Parameter mit:

./build-dh

Verwenden Sie gemäß Härtungsspitzentls-auth. Generieren Sie dazu den gemeinsamen geheimen Schlüssel mit:

openvpn --genkey --secret ta.key

Die resultierende Datei (ta.key) muss ebenfalls an Clients verteilt werden, Sie sollten sie jedoch nicht öffentlich zugänglich machen.

Erstellen Sie Zertifikate für Clients

Für jeden Kunden sollten diese Schritte wiederholt werden:

  1. Geben Sie das Verzeichnis ein, in dem Sie Ihr CA- und Server-Zertifikat erstellt haben:

    cd ~/openvpn-admin/easy-rsa
    
  2. Wenn Sie den CA-Erstellungsschritt übersprungen haben, weil Sie bereits einen haben, müssen Sie zuerst die Variablen laden:

    . vars
    
  3. Wenn Sie neue Zertifikate erstellen, weil die alten verloren gegangen sind oder abgelaufen sind , müssen Sie die alten zuerst mit ./revoke-full you widerrufen. Andernfalls erhalten Sie einen Datenbankfehler.
  4. Erstellen Sie das Client-Zertifikat you.key und das zugehörige Zertifikat you.crt:

    ./build-key you
    

    Das CommonName sollte eindeutig sein. Lassen Sie das Passwort leer, wenn Sie KDE verwenden, da es ab 10.10 noch nicht unterstützt wird. Bestätigen Sie wie bei der Serverzertifikaterstellung das Signieren des Zertifikats und das Übernehmen der Änderungen.

3. Richten Sie den OpenVPN-Dienst ein

Standardmäßig wird OpenVPN beim Akzeptieren von Verbindungen als Root ausgeführt. Keine gute Idee, wenn der Dienst über das böse Internet erreichbar ist.

  1. Erstellen Sie einen dedizierten Benutzer für OpenVPN, sagen Sie openvpn:

    Sudo useradd openvpn
    
  2. Kopieren Sie die Dateien server.key, server.crt, ca.crt und dh1024.pem (oder dh2048.pem, wenn Sie die Schlüsselgröße geändert haben) aus dem Schlüsselverzeichnis in /etc/openvpn. Eine Erlaubnis von 400 (nur lesbar für den Besitzer) ist in Ordnung.

    Sudo cp ~/openvpn-admin/easy-rsa/keys/{server.key,server.crt,ca.crt,dh*.pem} /etc/openvpn
    Sudo chmod 400 /etc/openvpn/{server.key,server.crt,ca.crt}
    
  3. Kopieren Sie auch die Datei ta.key:

    Sudo cp ~/openvpn-admin/easy-rsa/ta.key /etc/openvpn
    Sudo chmod 400 /etc/openvpn/ta.key
    
  4. Erstellen Sie die Datei /etc/openvpn/server.conf und fügen Sie die nächsten Zeilen ein:

    proto udp
    dev tap
    ca ca.crt
    cert server.crt
    key server.key
    dh dh1024.pem
    server 10.8.0.0 255.255.255.0
    Push "redirect-gateway def1"
    ifconfig-pool-persist ipp.txt
    keepalive 10 120
    tls-auth ta.key 0
    # Compress data to save bandwidth
    comp-lzo
    user openvpn
    group openvpn
    persist-key
    persist-tun
    # Logs are useful for debugging
    log-append openvpn-log
    verb 3
    mute 10
    
  5. Stellen Sie die entsprechenden Berechtigungen ein, es muss nicht geheim sein, aber ich bevorzuge es, keine Konfigurationsdetails preiszugeben:

    Sudo chmod 640 /etc/openvpn/server.conf
    

4. Beenden Sie den Server

Wenn Sie die Zertifikate auf dem Server erstellt haben, sollten Sie sie verschlüsseln oder vom Server entfernen. Verlieren Sie auf keinen Fall den ca.key und server.key. Im ersten Fall können andere Benutzer eine Verbindung zu Ihrem Server herstellen. In letzterem ist ein MITM möglich.

Klient

Neben der Server-IP-Adresse sollte der Serveradministrator die folgenden Dateien übergeben:

  • ca.crt: zum Überprüfen der Zertifikate
  • server.crt: Zum Überprüfen des Servers und zum Kommunizieren mit ihm
  • ta.key: zum Härten der Sicherheit
  • you.crt: um sich mit dem Server zu identifizieren
  • you.key: Es ist wie bei Ihrem Passwort, die Dateiberechtigungen sollten 400 sein (nur für Eigentümer lesbar)

1. Installation

Installieren Sie OpenVPN und das NetworkManager-Plugin (geeignet für KDE und Gnome):

Sudo apt-get install openvpn network-manager-openvpn

network-manager-openvpn befindet sich im Universums-Repository.

2. Konfiguration

Verwenden Sie in der Systemsteuerung die folgenden Details:

  • Gateway: Die IP-Adresse des Servers
  • Typ: "Zertifikate (TLS)" (Gnome) oder "X.509-Zertifikat" (KDE)
  • CA-Zertifikat: Pfad zu ca.crt
  • Benutzerzertifikat: Pfad zu you.crt
  • Privater Schlüssel: Pfad zu you.key

Um Advanced :

  • Gateway-Port: Automatisch (1194) (muss nicht geändert werden)
  • LZO-Datenkomprimierung verwenden: aktiviert
  • TCP Verbindung verwenden: deaktiviert
  • TAP-Gerät verwenden: aktiviert
  • Verschlüsselung: Standard
  • HMAC-Authentifizierung: Standard
  • TLS-Authentifizierung verwenden: aktiviert
    Geben Sie den Pfad der Schlüsseldatei zu ta.key an und setzen Sie "Schlüsselrichtung" auf 1.
  • ( todo - check it out ) Der Server pusht das Standard-Gateway, damit der gesamte Datenverkehr über die VPN-Verbindung geleitet wird. Das letzte Mal, als ich nachgesehen habe, hat das Plug-in "network-manager-openvpn" dies nicht getan.

Wenn NetworkManager nicht funktioniert oder nicht verwendet werden soll, legen Sie die Dateien (ca.crt, ...) in /etc/openvpn und erstellen Sie die Datei /etc/openvpn/client.conf:

client
dev tap
proto udp
# replace 1.2.3.4 by your server IP
remote 1.2.3.4 1194
resolv-retry infinite
nobind
persist-key
persist-tun
ca ca.crt
cert you.crt
key you.key
ns-cert-type server
tls-auth ta.key 1
comp-lzo
user nobody
group nogroup
verb 3
mute 20

Wenn Sie dieses VPN beim Booten nicht aktivieren möchten, bearbeiten Sie /etc/default/openvpn und kommentieren Sie die nächste Zeile aus, indem Sie # entfernen:

#AUTOSTART="none"

Um diese Verbindung zu starten, führen Sie Folgendes aus:

Sudo /etc/init.d/openvpn start client

client sollte umbenannt werden, wenn Ihre Konfigurationsdatei nicht den Namen client.conf trägt. Beispiel: Wenn Sie Ihre Konfigurationsdatei safe.conf genannt haben, müssen Sie Sudo /etc/init.d/openvpn start safe ausführen.

Um OpenVPN zu stoppen, müssen Sie Folgendes ausführen:

Sudo /etc/init.d/openvpn stop
40
Lekensteyn

Sie müssen sich nicht mit Anwendungen beschäftigen. Dies funktioniert "genau wie VPN".

  1. Installieren Sie zuerst das Paket tsocks (temporäre Socken):

    Sudo apt-get install tsocks
    
  2. Bearbeiten Sie dann /etc/tsocks.conf und geben Sie ein

    server = 127.0.0.1
    server_port = 3333
    
  3. Öffnen Sie nun ein Terminal und geben Sie Folgendes ein (dies verbindet Sie):

    ssh -ND 3333 ssh.url.to.your.home.machine
    
  4. Ausführen (über ein anderes Terminal oder ALT-F2):

    tsocks firefox
    

Jetzt überträgt Firefox die gesamte Kommunikation an den SOCKS-Server auf Ihrem Computer, den SSH erstellt hat. Dies wird weiter zu Ihrer Heimmaschine getunnelt, wo es ins Web geht. Alles, was Sie auf Ihrem Heimcomputer benötigen, ist ein SSH-Server. Wiederholen Sie nach dem ersten Mal einfach die Schritte 3 und 4.

Es wirkt wie ein Zauber! Leider mag Chrom keine Tsocks, aber hey, Firefox funktioniert.

8
MarkovCh1

Die SSH-Tunnellösung ist einfacher als Sie denken. Ein Programm wie gSTM startet/stoppt die Tunnel für Sie mit einer GUI. Öffnen Sie dann einfach den Netzwerk-Proxy und ändern Sie ihn von der direkten Internetverbindung zur manuellen Proxy-Konfiguration. Klicken Sie auf "Systemweit anwenden", und alle Ihre Apps sollten ihre Daten durch den Tunnel senden.

1
Felix