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 Netzwerkkarte ("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. Das ist so einfach wie sudo apt-get install openvpn
. Der schwierige Teil ist die Konfiguration. Die Konfiguration ist in vorhanden /etc/openvpn
.
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, sie muss 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 Verwaltung in zu erledigen /etc/openvpn
. Ich bin kein großer Fan davon, alles als root auszuführen, also werde ich es in ein anderes Verzeichnis stellen.
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
- Bearbeiten Sie die Standardeinstellungen nach
vars
Bedarf, indem KEY_SIZE=2048
Sie beispielsweise festlegen, dass Sie paranoid sind.
Laden Sie die Variablen und erstellen Sie das Schlüsselverzeichnis, indem Sie Folgendes ausführen:
. vars
Wenn Sie eine Fehlermeldung erhalten , dass No ... openssl.cnf file could be found
Further invocations will fail
, laufen ln -s openssl-1.0.0.cnf openssl.cnf
, dann . vars
wieder.
Wenn Sie diese Zertifizierungsstelle zum ersten Mal verwenden, bereiten Sie die Schlüsselumgebung vor. Sie nicht diesen Befehl ausführen , wenn Sie Ihre zuvor erstellten CA beibehalten möchten Dazu müssen Sie ein neues implementieren ca.crt
.
./clean-all
- Erstellen Sie die Zertifizierungsstelle, indem Sie ausführen
./build-ca
. 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 erstellt keys
. Halten Sie die ca.key
Datei unter allen Umständen geheim . Andernfalls kann jeder mit dem Schlüssel eine Verbindung zu Ihrem Server herstellen.
- Wenn Sie ein früheres Zertifikat haben, das verloren gegangen oder abgelaufen ist, müssen Sie das alte Zertifikat zuerst mit widerrufen
./revoke-full server
. Andernfalls erhalten Sie einen Datenbankfehler.
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 werden zwei neue Dateien angezeigt keys
: server.key
und server.crt
.
DH und bereite dich auf tls-auth vor
Generieren Sie Diffie-Hellman- Parameter mit:
./build-dh
Pro Aushärtungsspitzen verwenden tls-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:
Geben Sie das Verzeichnis ein, in dem Sie Ihr CA- und Server-Zertifikat erstellt haben:
cd ~/openvpn-admin/easy-rsa
Wenn Sie den CA-Erstellungsschritt übersprungen haben, weil Sie bereits einen haben, müssen Sie zuerst die Variablen laden:
. vars
- Wenn Sie neue Zertifikate erstellen, weil die alten verloren gehen oder abgelaufen sind , müssen Sie die alten Zertifikate zuerst mit widerrufen
./revoke-full you
. Andernfalls erhalten Sie einen Datenbankfehler.
Erstellen Sie das Client-Zertifikat you.key
und das zugehörige Zertifikat you.crt
:
./build-key you
Das CommonName
sollte einzigartig 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.
Erstellen Sie einen dedizierten Benutzer für OpenVPN, sagen Sie openvpn
:
sudo useradd openvpn
Kopieren Sie die Dateien server.key
, server.crt
, ca.crt
und dh1024.pem
(oder , dh2048.pem
wenn Sie haben Schlüsselgröße geändert) aus dem Schlüssel - Verzeichnis 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}
Kopieren Sie auch die Datei ta.key
:
sudo cp ~/openvpn-admin/easy-rsa/ta.key /etc/openvpn
sudo chmod 400 /etc/openvpn/ta.key
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
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 das ca.key
und server.key
. Im ersten Fall können andere Benutzer eine Verbindung zu Ihrem Server herstellen. In letzterem ist eine MITM möglich.
Klient
Neben der Server-IP-Adresse sollte der Serveradministrator die folgenden Dateien übergeben:
ca.crt
: zur Überprüfung der Zertifikate
server.crt
: um den Server zu überprüfen und mit ihm zu kommunizieren
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 (schreibgeschützt für Besitzer)
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
Bei 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 an ta.key
und setzen Sie "Schlüsselrichtung" auf 1
.
- (Zu erledigen - Auschecken ) 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
, ...) ein /etc/openvpn
und erstellen Sie die Datei /etc/openvpn/client.conf
file:
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
die nächste Zeile und kommentieren Sie sie aus, indem Sie Folgendes 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 benannt ist client.conf
. Beispiel: Wenn Sie Ihre Konfigurationsdatei benannt haben safe.conf
, müssen Sie ausführen sudo /etc/init.d/openvpn start safe
.
Um OpenVPN zu stoppen, müssen Sie Folgendes ausführen:
sudo /etc/init.d/openvpn stop