So richten Sie einen OpenVPN-Server unter Ubuntu 16.04 ein

Einführung

Möchten Sie von Ihrem Smartphone oder Laptop aus sicher auf das Internet zugreifen, wenn Sie mit einem nicht vertrauenswürdigen Netzwerk wie dem WiFi eines Hotels oder eines Coffeeshops verbunden sind? MitVirtual Private Network (VPN) können Sie nicht vertrauenswürdige Netzwerke privat und sicher durchlaufen, als wären Sie in einem privaten Netzwerk. Der Datenverkehr kommt vom VPN-Server und setzt seine Reise zum Ziel fort.

In Kombination mitHTTPS connections können Sie mit diesem Setup Ihre drahtlosen Anmeldungen und Transaktionen sichern. Sie können geografische Beschränkungen und Zensur umgehen und Ihren Standort sowie den unverschlüsselten HTTP-Datenverkehr vor dem nicht vertrauenswürdigen Netzwerk schützen.

OpenVPN ist eine Open-Source-SSL-VPN-Lösung (Secure Socket Layer) mit vollem Funktionsumfang, die eine Vielzahl von Konfigurationen unterstützt. In diesem Tutorial richten wir einen OpenVPN-Server in einem Droplet ein und konfigurieren dann den Zugriff von Windows, OS X, iOS und Android darauf. In diesem Lernprogramm werden die Installations- und Konfigurationsschritte für diese Setups so einfach wie möglich gehalten.

[.Hinweis]##

Note: Wenn Sie vorhaben, einen OpenVPN-Server auf einem DigitalOcean Droplet einzurichten, beachten Sie, dass wir wie viele Hosting-Anbieter Gebühren für Bandbreitenüberschreitungen erheben. Beachten Sie aus diesem Grund, wie viel Datenverkehr Ihr Server verarbeitet.

Weitere Informationen finden Sie unterthis page.

Voraussetzungen

Um dieses Tutorial abzuschließen, benötigen Sie Zugriff auf einen Ubuntu 16.04-Server.

Sie müssen einen Nicht-Root-Benutzer mitsudo-Berechtigungen konfigurieren, bevor Sie dieses Handbuch starten. Sie können unserenUbuntu 16.04 initial server setup guide folgen, um einen Benutzer mit den entsprechenden Berechtigungen einzurichten. Das verknüpfte Tutorial richtet auchfirewall ein, von denen wir annehmen, dass sie in diesem Handbuch vorhanden sind.

Wenn Sie bereit sind zu beginnen, melden Sie sich bei Ihrem Ubuntu-Server alssudo-Benutzer an und fahren Sie unten fort.

Schritt 1: Installieren Sie OpenVPN

Zunächst installieren wir OpenVPN auf unserem Server. OpenVPN ist in den Standard-Repositorys von Ubuntu verfügbar, sodass wirapt für die Installation verwenden können. Wir werden auch das Paketeasy-rsainstallieren, mit dessen Hilfe wir eine interne Zertifizierungsstelle (Zertifizierungsstelle) für unser VPN einrichten können.

So aktualisieren Sie den Paketindex Ihres Servers und installieren die erforderlichen Pakete:

sudo apt-get update
sudo apt-get install openvpn easy-rsa

Die benötigte Software befindet sich nun auf dem Server und kann konfiguriert werden.

Schritt 2: Richten Sie das CA-Verzeichnis ein

OpenVPN ist ein TLS / SSL-VPN. Dies bedeutet, dass Zertifikate verwendet werden, um den Datenverkehr zwischen Server und Clients zu verschlüsseln. Um vertrauenswürdige Zertifikate ausstellen zu können, müssen wir unsere eigene einfache Zertifizierungsstelle (CA) einrichten.

Zu Beginn können wir das Vorlagenverzeichniseasy-rsamit dem Befehlmake-cadir in unser Ausgangsverzeichnis kopieren:

make-cadir ~/openvpn-ca

Wechseln Sie in das neu erstellte Verzeichnis, um mit der Konfiguration der Zertifizierungsstelle zu beginnen:

cd ~/openvpn-ca

Schritt 3: Konfigurieren Sie die CA-Variablen

Um die Werte zu konfigurieren, die unsere Zertifizierungsstelle verwendet, müssen wir die Dateivarsim Verzeichnis bearbeiten. Öffnen Sie diese Datei jetzt in Ihrem Texteditor:

nano vars

Im Inneren finden Sie einige Variablen, die angepasst werden können, um zu bestimmen, wie Ihre Zertifikate erstellt werden. Wir müssen uns nur um einige davon kümmern.

Suchen Sie unten in der Datei nach den Einstellungen, mit denen die Feldstandards für neue Zertifikate festgelegt werden. Es sollte ungefähr so ​​aussehen:

~/openvpn-ca/vars

. . .

export KEY_COUNTRY="US"
export KEY_PROVINCE="CA"
export KEY_CITY="SanFrancisco"
export KEY_ORG="Fort-Funston"
export KEY_EMAIL="[email protected]"
export KEY_OU="MyOrganizationalUnit"

. . .

Bearbeiten Sie die Werte in Rot nach Ihren Wünschen, aber lassen Sie sie nicht leer:

~/openvpn-ca/vars

. . .

export KEY_COUNTRY="US"
export KEY_PROVINCE="NY"
export KEY_CITY="New York City"
export KEY_ORG="DigitalOcean"
export KEY_EMAIL="[email protected]"
export KEY_OU="Community"

. . .

Während wir hier sind, werden wir auch den Wert vonKEY_NAMEdirekt unter diesem Abschnitt bearbeiten, der das Betrefffeld ausfüllt. Um dies einfach zu halten, nennen wir es in diesem Handbuchserver:

~/openvpn-ca/vars

export KEY_NAME="server"

Wenn Sie fertig sind, speichern und schließen Sie die Datei.

Schritt 4: Erstellen Sie die Zertifizierungsstelle

Jetzt können wir die von uns festgelegten Variablen und die Dienstprogrammeeasy-rsaverwenden, um unsere Zertifizierungsstelle zu erstellen.

Stellen Sie sicher, dass Sie sich in Ihrem CA-Verzeichnis befinden, und geben Sie dann die soeben bearbeitetevars-Datei ein:

cd ~/openvpn-ca
source vars

Sie sollten Folgendes sehen, wenn es korrekt bezogen wurde:

OutputNOTE: If you run ./clean-all, I will be doing a rm -rf on /home/sammy/openvpn-ca/keys

Stellen Sie sicher, dass wir in einer sauberen Umgebung arbeiten, indem Sie Folgendes eingeben:

./clean-all

Jetzt können wir unsere Stammzertifizierungsstelle erstellen, indem wir Folgendes eingeben:

./build-ca

Dadurch wird der Prozess zum Erstellen des Stammzertifizierungsstellenschlüssels und des Zertifikats gestartet. Da wir die Dateivarsausgefüllt haben, sollten alle Werte automatisch ausgefüllt werden. Drücken Sie einfachENTER durch die Eingabeaufforderungen, um die Auswahl zu bestätigen:

OutputGenerating a 2048 bit RSA private key
..........................................................................................+++
...............................+++
writing new private key to 'ca.key'
-----
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [US]:
State or Province Name (full name) [NY]:
Locality Name (eg, city) [New York City]:
Organization Name (eg, company) [DigitalOcean]:
Organizational Unit Name (eg, section) [Community]:
Common Name (eg, your name or your server's hostname) [DigitalOcean CA]:
Name [server]:
Email Address [[email protected]]:

Wir haben jetzt eine Zertifizierungsstelle, mit der wir den Rest der benötigten Dateien erstellen können.

Schritt 5: Erstellen Sie das Serverzertifikat, den Schlüssel und die Verschlüsselungsdateien

Als Nächstes generieren wir unser Serverzertifikat und das Schlüsselpaar sowie einige zusätzliche Dateien, die während des Verschlüsselungsprozesses verwendet werden.

Generieren Sie zunächst das OpenVPN-Serverzertifikat und das Schlüsselpaar. Wir können dies tun, indem wir Folgendes eingeben:

[.note] #Note: Wenn Sie hier einen anderen Namen alsserver wählen, müssen Sie einige der folgenden Anweisungen anpassen. Wenn Sie beispielsweise die generierten Dateien in die Direktive/etc/openvpnkopieren, müssen Sie die richtigen Namen ersetzen. Sie müssen die/etc/openvpn/server.conf-Datei später auch ändern, um auf die richtigen.crt- und.key-Dateien zu verweisen.
#

./build-key-server server

Erneut haben die Eingabeaufforderungen Standardwerte, die auf dem gerade übergebenen Argument (server) und dem Inhalt unserervars-Datei basieren, die wir bezogen haben.

Übernehmen Sie die Standardwerte, indem SieENTER drücken. Geben Sienot ein Challenge-Passwort für dieses Setup ein. Gegen Ende müssen Siey für zwei Fragen eingeben, um das Zertifikat zu unterschreiben und festzuschreiben:

Output. . .

Certificate is to be certified until May  1 17:51:16 2026 GMT (3650 days)
Sign the certificate? [y/n]:y


1 out of 1 certificate requests certified, commit? [y/n]y
Write out database with 1 new entries
Data Base Updated

Als Nächstes generieren wir einige andere Elemente. Wir können einen starken Diffie-Hellman-Schlüssel generieren, der während des Schlüsselaustauschs verwendet wird, indem wir Folgendes eingeben:

./build-dh

Dies kann einige Minuten dauern.

Anschließend können wir eine HMAC-Signatur generieren, um die TLS-Integritätsprüfungsfunktionen des Servers zu stärken:

openvpn --genkey --secret keys/ta.key

Schritt 6: Generieren Sie ein Client-Zertifikat und ein Schlüsselpaar

Als Nächstes können wir ein Client-Zertifikat und ein Schlüsselpaar generieren. Dies kann zwar auf dem Clientcomputer durchgeführt und dann aus Sicherheitsgründen vom Server / der Zertifizierungsstelle signiert werden, in diesem Handbuch wird jedoch der Einfachheit halber der signierte Schlüssel auf dem Server generiert.

Wir erstellen einen einzelnen Client-Schlüssel / ein Zertifikat für dieses Handbuch. Wenn Sie jedoch mehr als einen Client haben, können Sie diesen Vorgang beliebig oft wiederholen. Übergeben Sie für jeden Client einen eindeutigen Wert an das Skript.

Da Sie zu einem späteren Zeitpunkt möglicherweise auf diesen Schritt zurückkommen, werden wir dievars-Datei neu beziehen. Wir werdenclient1 als Wert für unser erstes Zertifikat / Schlüssel-Paar für dieses Handbuch verwenden.

Verwenden Sie den folgenden Befehlbuild-key, um Anmeldeinformationen ohne Kennwort zu erstellen und automatisierte Verbindungen zu unterstützen:

cd ~/openvpn-ca
source vars
./build-key client1

Wenn Sie stattdessen einen kennwortgeschützten Satz von Anmeldeinformationen erstellen möchten, verwenden Sie den Befehlbuild-key-pass:

cd ~/openvpn-ca
source vars
./build-key-pass client1

Auch hier sollten die Standardeinstellungen ausgefüllt sein, sodass Sie einfachENTER drücken können, um fortzufahren. Lassen Sie das Challenge-Passwort leer und geben Siey für die Eingabeaufforderungen ein, in denen Sie gefragt werden, ob Sie das Zertifikat signieren und festschreiben möchten.

Schritt 7: Konfigurieren Sie den OpenVPN-Dienst

Als Nächstes können wir den OpenVPN-Dienst mit den von uns generierten Anmeldeinformationen und Dateien konfigurieren.

Kopieren Sie die Dateien in das OpenVPN-Verzeichnis

Zu Beginn müssen wir die benötigten Dateien in das Konfigurationsverzeichnis von/etc/openvpnkopieren.

Wir können mit allen Dateien beginnen, die wir gerade erzeugt haben. Diese wurden beim Erstellen im Verzeichnis~/openvpn-ca/keysabgelegt. Wir müssen unser CA-Zertifikat, unser Serverzertifikat und -schlüssel, die HMAC-Signatur und die Diffie-Hellman-Datei verschieben:

cd ~/openvpn-ca/keys
sudo cp ca.crt server.crt server.key ta.key dh2048.pem /etc/openvpn

Als nächstes müssen wir eine OpenVPN-Beispielkonfigurationsdatei kopieren und in das Konfigurationsverzeichnis entpacken, damit wir sie als Grundlage für unser Setup verwenden können:

gunzip -c /usr/share/doc/openvpn/examples/sample-config-files/server.conf.gz | sudo tee /etc/openvpn/server.conf

Passen Sie die OpenVPN-Konfiguration an

Nachdem unsere Dateien vorhanden sind, können wir die Serverkonfigurationsdatei ändern:

sudo nano /etc/openvpn/server.conf

Grundkonfiguration

Suchen Sie zunächst den HMAC-Abschnitt, indem Sie nach der Direktivetls-authuchen. Entfernen Sie die ";", um die Zeile "tls-auth" zu kommentieren:

/etc/openvpn/server.conf

tls-auth ta.key 0 # This file is secret

Suchen Sie als Nächstes den Abschnitt zu kryptografischen Chiffren, indem Sie nach den auskommentiertencipher-Zeilen suchen. DieAES-128-CBC-Verschlüsselung bietet eine gute Verschlüsselungsstufe und wird gut unterstützt. Entfernen Sie die ";", um die Zeilecipher AES-128-CBC zu kommentieren:

/etc/openvpn/server.conf

cipher AES-128-CBC

Fügen Sie darunter eineauth-Zeile hinzu, um den HMAC-Message-Digest-Algorithmus auszuwählen. Dafür istSHA256 eine gute Wahl:

/etc/openvpn/server.conf

auth SHA256

Suchen Sie schließlich die Einstellungen füruser undgroup und entfernen Sie die ";" am Anfang, um diese Zeilen zu kommentieren:

/etc/openvpn/server.conf

user nobody
group nogroup

(Optional) Push-DNS-Änderungen, um den gesamten Datenverkehr über das VPN umzuleiten

Die obigen Einstellungen stellen die VPN-Verbindung zwischen den beiden Computern her, erzwingen jedoch keine Verwendung des Tunnels. Wenn Sie das VPN zum Weiterleiten des gesamten Datenverkehrs verwenden möchten, möchten Sie wahrscheinlich die DNS-Einstellungen auf die Clientcomputer übertragen.

Dazu müssen Sie einige Anweisungen auskommentieren, mit denen Clientcomputer so konfiguriert werden, dass der gesamte Webdatenverkehr über das VPN umgeleitet wird. Suchen Sie den Abschnittredirect-gateway und entfernen Sie das Semikolon „;“ vom Anfang der Zeileredirect-gateway, um es zu kommentieren:

/etc/openvpn/server.conf

push "redirect-gateway def1 bypass-dhcp"

Gleich darunter finden Sie den Abschnittdhcp-option. Entfernen Sie erneut die ";" vor beiden Zeilen, um sie zu kommentieren:

/etc/openvpn/server.conf

push "dhcp-option DNS 208.67.222.222"
push "dhcp-option DNS 208.67.220.220"

Dies sollte Clients bei der Neukonfiguration ihrer DNS-Einstellungen unterstützen, um den VPN-Tunnel als Standardgateway zu verwenden.

(Optional) Passen Sie den Port und das Protokoll an

Standardmäßig verwendet der OpenVPN-Server Port 1194 und das UDP-Protokoll, um Clientverbindungen zu akzeptieren. Wenn Sie aufgrund restriktiver Netzwerkumgebungen, in denen sich Ihre Clients befinden, einen anderen Port verwenden müssen, können Sie die Optionport ändern. Wenn Sie keine Webinhalte auf Ihrem OpenVPN-Server hosten, ist Port 443 eine beliebte Wahl, da dies normalerweise durch Firewall-Regeln zulässig ist.

/etc/openvpn/server.conf

# Optional!
port 443

Oft wird das Protokoll auch auf diesen Port beschränkt. Wenn ja, ändern Sieproto von UDP zu TCP:

/etc/openvpn/server.conf

# Optional!
proto tcp

Wenn Sie keinen anderen Port verwenden müssen, lassen Sie diese beiden Einstellungen am besten als Standardeinstellungen.

(Optional) Zeigen Sie auf Nicht-Standardanmeldeinformationen

Wenn Sie zuvor während des Befehls./build-key-server einen anderen Namen ausgewählt haben, ändern Sie die angezeigten Zeilencert undkeyo, dass sie auf die entsprechenden Dateien.crt und.key verweisen . Wenn Sie die Standardeinstellungserver verwendet haben, sollte dies bereits richtig eingestellt sein:

/etc/openvpn/server.conf

cert server.crt
key server.key

Wenn Sie fertig sind, speichern und schließen Sie die Datei.

Schritt 8: Passen Sie die Servernetzwerkkonfiguration an

Als nächstes müssen wir einige Aspekte des Servernetzwerks anpassen, damit OpenVPN den Datenverkehr korrekt weiterleiten kann.

IP-Weiterleitung zulassen

Zunächst müssen wir dem Server erlauben, Datenverkehr weiterzuleiten. Dies ist ziemlich wichtig für die Funktionalität, die unser VPN-Server bereitstellen soll.

Wir können diese Einstellung anpassen, indem wir die Datei/etc/sysctl.confändern:

sudo nano /etc/sysctl.conf

Suchen Sie im Inneren nach der Zeile, in dernet.ipv4.ip_forward festgelegt sind. Entfernen Sie das Zeichen "#" vom Zeilenanfang, um diese Einstellung zu kommentieren:

/etc/sysctl.conf

net.ipv4.ip_forward=1

Speichern und schließen Sie die Datei, wenn Sie fertig sind.

Geben Sie Folgendes ein, um die Datei zu lesen und die Werte für die aktuelle Sitzung anzupassen:

sudo sysctl -p

Passen Sie die UFW-Regeln an, um Clientverbindungen zu maskieren

Wenn Sie die Installationsanleitung für den Ubuntu 16.04-Server befolgt haben, sollten Sie die UFW-Firewall installiert haben. Unabhängig davon, ob Sie die Firewall verwenden, um unerwünschten Datenverkehr zu blockieren (was Sie fast immer tun sollten), benötigen wir die Firewall in diesem Handbuch, um einen Teil des auf dem Server eingehenden Datenverkehrs zu manipulieren. Wir müssen die Regeldatei ändern, um die Maskierung einzurichten, einiptables-Konzept, das dynamisches NAT im laufenden Betrieb bietet, um Clientverbindungen korrekt weiterzuleiten.

Bevor wir die Firewall-Konfigurationsdatei öffnen, um Masquerading hinzuzufügen, müssen wir die öffentliche Netzwerkschnittstelle unseres Computers finden. Geben Sie dazu Folgendes ein:

ip route | grep default

Ihre öffentliche Schnittstelle sollte dem Wort "dev" folgen. Dieses Ergebnis zeigt beispielsweise die Schnittstelle mit dem Namenwlp11s0, die unten hervorgehoben ist:

Outputdefault via 203.0.113.1 dev wlp11s0  proto static  metric 600

Wenn Sie die Schnittstelle mit Ihrer Standardroute verknüpft haben, öffnen Sie die Datei/etc/ufw/before.rules, um die entsprechende Konfiguration hinzuzufügen:

sudo nano /etc/ufw/before.rules

Diese Datei behandelt die Konfiguration, die vor dem Laden der herkömmlichen UFW-Regeln eingerichtet werden sollte. Fügen Sie oben in der Datei die markierten Zeilen hinzu. Dadurch wird die Standardrichtlinie für die KettePOSTROUTINGin der Tabellenatfestgelegt und der vom VPN kommende Datenverkehr maskiert:

[.note] #Note: Denken Sie daran,wlp11s0 in der Zeile-A POSTROUTING unten durch die Schnittstelle zu ersetzen, die Sie im obigen Befehl gefunden haben.
#

/etc/ufw/before.rules

#
# rules.before
#
# Rules that should be run before the ufw command line added rules. Custom
# rules should be added to one of these chains:
#   ufw-before-input
#   ufw-before-output
#   ufw-before-forward
#

# START OPENVPN RULES
# NAT table rules
*nat
:POSTROUTING ACCEPT [0:0]
# Allow traffic from OpenVPN client to wlp11s0 (change to the interface you discovered!)
-A POSTROUTING -s 10.8.0.0/8 -o wlp11s0 -j MASQUERADE
COMMIT
# END OPENVPN RULES

# Don't delete these required lines, otherwise there will be errors
*filter
. . .

Speichern und schließen Sie die Datei, wenn Sie fertig sind.

Wir müssen UFW anweisen, auch weitergeleitete Pakete standardmäßig zuzulassen. Dazu öffnen wir die Datei/etc/default/ufw:

sudo nano /etc/default/ufw

Im Inneren finden Sie die DirektiveDEFAULT_FORWARD_POLICY. Wir werden den Wert vonDROP inACCEPT ändern:

/etc/default/ufw

DEFAULT_FORWARD_POLICY="ACCEPT"

Speichern und schließen Sie die Datei, wenn Sie fertig sind.

Öffnen Sie den OpenVPN-Port und aktivieren Sie die Änderungen

Als Nächstes passen wir die Firewall selbst so an, dass der Verkehr zu OpenVPN zugelassen wird.

Wenn Sie den Port und das Protokoll in der/etc/openvpn/server.conf-Datei nicht geändert haben, müssen Sie den UDP-Verkehr für Port 1194 öffnen. Wenn Sie den Port und / oder das Protokoll geändert haben, ersetzen Sie die hier ausgewählten Werte.

Wir werden auch den SSH-Port hinzufügen, falls Sie ihn nicht hinzugefügt haben, wenn Sie das vorausgesetzte Tutorial befolgen:

sudo ufw allow 1194/udp
sudo ufw allow OpenSSH

Jetzt können wir UFW deaktivieren und erneut aktivieren, um die Änderungen aus allen Dateien zu laden, die wir geändert haben:

sudo ufw disable
sudo ufw enable

Unser Server ist jetzt so konfiguriert, dass er den OpenVPN-Verkehr korrekt verarbeitet.

Schritt 9: Starten und aktivieren Sie den OpenVPN-Dienst

Nun können wir den OpenVPN-Dienst auf unserem Server starten. Wir können dies mit systemd tun.

Wir müssen den OpenVPN-Server starten, indem wir den Namen unserer Konfigurationsdatei als Instanzvariable nach dem Namen der Systemeinheit angeben. Unsere Konfigurationsdatei für unseren Server heißt/etc/openvpn/server.conf, daher fügen wir beim Aufruf@server am Ende unserer Einheitendatei hinzu:

sudo systemctl start openvpn@server

Stellen Sie sicher, dass der Dienst erfolgreich gestartet wurde, indem Sie Folgendes eingeben:

sudo systemctl status openvpn@server

Wenn alles gut gelaufen ist, sollte Ihre Ausgabe ungefähr so ​​aussehen:

Output● [email protected] - OpenVPN connection to server
   Loaded: loaded (/lib/systemd/system/[email protected]; disabled; vendor preset: enabled)
   Active: active (running) since Tue 2016-05-03 15:30:05 EDT; 47s ago
     Docs: man:openvpn(8)
           https://community.openvpn.net/openvpn/wiki/Openvpn23ManPage
           https://community.openvpn.net/openvpn/wiki/HOWTO
  Process: 5852 ExecStart=/usr/sbin/openvpn --daemon ovpn-%i --status /run/openvpn/%i.status 10 --cd /etc/openvpn --script-security 2 --config /etc/openvpn/%i.conf --writepid /run/openvpn/%i.pid (code=exited, sta
 Main PID: 5856 (openvpn)
    Tasks: 1 (limit: 512)
   CGroup: /system.slice/system-openvpn.slice/[email protected]
           └─5856 /usr/sbin/openvpn --daemon ovpn-server --status /run/openvpn/server.status 10 --cd /etc/openvpn --script-security 2 --config /etc/openvpn/server.conf --writepid /run/openvpn/server.pid

May 03 15:30:05 openvpn2 ovpn-server[5856]: /sbin/ip addr add dev tun0 local 10.8.0.1 peer 10.8.0.2
May 03 15:30:05 openvpn2 ovpn-server[5856]: /sbin/ip route add 10.8.0.0/24 via 10.8.0.2
May 03 15:30:05 openvpn2 ovpn-server[5856]: GID set to nogroup
May 03 15:30:05 openvpn2 ovpn-server[5856]: UID set to nobody
May 03 15:30:05 openvpn2 ovpn-server[5856]: UDPv4 link local (bound): [undef]
May 03 15:30:05 openvpn2 ovpn-server[5856]: UDPv4 link remote: [undef]
May 03 15:30:05 openvpn2 ovpn-server[5856]: MULTI: multi_init called, r=256 v=256
May 03 15:30:05 openvpn2 ovpn-server[5856]: IFCONFIG POOL: base=10.8.0.4 size=62, ipv6=0
May 03 15:30:05 openvpn2 ovpn-server[5856]: IFCONFIG POOL LIST
May 03 15:30:05 openvpn2 ovpn-server[5856]: Initialization Sequence Completed

Sie können auch überprüfen, ob die OpenVPNtun0-Schnittstelle verfügbar ist, indem Sie Folgendes eingeben:

ip addr show tun0

Sie sollten eine konfigurierte Schnittstelle sehen:

Output4: tun0:  mtu 1500 qdisc noqueue state UNKNOWN group default qlen 100
    link/none
    inet 10.8.0.1 peer 10.8.0.2/32 scope global tun0
       valid_lft forever preferred_lft forever

Wenn alles geklappt hat, aktivieren Sie den Dienst, damit er beim Booten automatisch gestartet wird:

sudo systemctl enable openvpn@server

Schritt 10: Client-Konfigurationsinfrastruktur erstellen

Als Nächstes müssen wir ein System einrichten, mit dem wir einfach Client-Konfigurationsdateien erstellen können.

Erstellen der Client-Konfigurationsverzeichnisstruktur

Erstellen Sie eine Verzeichnisstruktur in Ihrem Ausgangsverzeichnis, um die Dateien zu speichern:

mkdir -p ~/client-configs/files

Da in unseren Client-Konfigurationsdateien die Client-Schlüssel eingebettet sind, sollten wir die Berechtigungen für unser inneres Verzeichnis sperren:

chmod 700 ~/client-configs/files

Basiskonfiguration erstellen

Kopieren Sie als Nächstes eine Beispiel-Client-Konfiguration in unser Verzeichnis, um sie als Basiskonfiguration zu verwenden:

cp /usr/share/doc/openvpn/examples/sample-config-files/client.conf ~/client-configs/base.conf

Öffnen Sie diese neue Datei in Ihrem Texteditor:

nano ~/client-configs/base.conf

Im Inneren müssen wir einige Anpassungen vornehmen.

Suchen Sie zuerst die Direktiveremote. Dadurch wird der Client auf unsere OpenVPN-Serveradresse verwiesen. Dies sollte die öffentliche IP-Adresse Ihres OpenVPN-Servers sein. Wenn Sie den Port geändert haben, den der OpenVPN-Server überwacht, ändern Sie1194 in den von Ihnen ausgewählten Port:

~/client-configs/base.conf

. . .
# The hostname/IP and port of the server.
# You can have multiple remote entries
# to load balance between the servers.
remote server_IP_address 1194
. . .

Stellen Sie sicher, dass das Protokoll mit dem Wert übereinstimmt, den Sie in der Serverkonfiguration verwenden:

~/client-configs/base.conf

proto udp

Kommentieren Sie als Nächstes die Anweisungenuser undgroup aus, indem Sie die Anweisungen „;“ entfernen:

~/client-configs/base.conf

# Downgrade privileges after initialization (non-Windows only)
user nobody
group nogroup

Suchen Sie die Anweisungen, dieca,cert undkey festlegen. Kommentieren Sie diese Anweisungen aus, da die Zertifikate und Schlüssel in der Datei selbst hinzugefügt werden:

~/client-configs/base.conf

# SSL/TLS parms.
# See the server config file for more
# description.  It's best to use
# a separate .crt/.key file pair
# for each client.  A single ca
# file can be used for all clients.
#ca ca.crt
#cert client.crt
#key client.key

Spiegeln Sie die Einstellungen fürcipher undauth, die wir in der Datei/etc/openvpn/server.conf festgelegt haben:

~/client-configs/base.conf

cipher AES-128-CBC
auth SHA256

Fügen Sie als Nächstes die Anweisungkey-direction irgendwo in der Datei hinzu. Diesemustwerden auf "1" gesetzt, um mit dem Server zu arbeiten:

~/client-configs/base.conf

key-direction 1

Fügen Sie zum Schluss einigecommented out Zeilen hinzu. Wir möchten diese in jede Konfiguration aufnehmen, sollten sie jedoch nur für Linux-Clients aktivieren, die mit einer/etc/openvpn/update-resolv-conf-Datei geliefert werden. Dieses Skript verwendet das Dienstprogrammresolvconf, um DNS-Informationen für Linux-Clients zu aktualisieren.

~/client-configs/base.conf

# script-security 2
# up /etc/openvpn/update-resolv-conf
# down /etc/openvpn/update-resolv-conf

Wenn auf Ihrem Client Linux ausgeführt wird und eine/etc/openvpn/update-resolv-conf-Datei vorhanden ist, sollten Sie diese Zeilen aus der generierten OpenVPN-Clientkonfigurationsdatei entfernen.

Speichern Sie die Datei, wenn Sie fertig sind.

Erstellen eines Konfigurationsgenerierungsskripts

Als Nächstes erstellen wir ein einfaches Skript, um unsere Basiskonfiguration mit den relevanten Zertifikats-, Schlüssel- und Verschlüsselungsdateien zu kompilieren. Dadurch wird die generierte Konfiguration im Verzeichnis~/client-configs/filesabgelegt.

Erstellen und öffnen Sie eine Datei mit dem Namenmake_config.sh im Verzeichnis~/client-configs:

nano ~/client-configs/make_config.sh

Fügen Sie das folgende Skript ein:

~/client-configs/make_config.sh

#!/bin/bash

# First argument: Client identifier

KEY_DIR=~/openvpn-ca/keys
OUTPUT_DIR=~/client-configs/files
BASE_CONFIG=~/client-configs/base.conf

cat ${BASE_CONFIG} \
    <(echo -e '') \
    ${KEY_DIR}/ca.crt \
    <(echo -e '\n') \
    ${KEY_DIR}/${1}.crt \
    <(echo -e '\n') \
    ${KEY_DIR}/${1}.key \
    <(echo -e '\n') \
    ${KEY_DIR}/ta.key \
    <(echo -e '') \
    > ${OUTPUT_DIR}/${1}.ovpn

Speichern und schließen Sie die Datei, wenn Sie fertig sind.

Markieren Sie die Datei als ausführbar, indem Sie Folgendes eingeben:

chmod 700 ~/client-configs/make_config.sh

Schritt 11: Generieren Sie Client-Konfigurationen

Jetzt können wir einfach Client-Konfigurationsdateien generieren.

Wenn Sie dem Handbuch gefolgt sind, haben Sie ein Client-Zertifikat und einen Schlüssel mit den Namenclient1.crt bzw.client1.key erstellt, indem Sie in Schritt 6 den Befehl./build-key client1 ausgeführt haben. Wir können eine Konfiguration für diese Anmeldeinformationen generieren, indem wir in das Verzeichnis~/client-configswechseln und das von uns erstellte Skript verwenden:

cd ~/client-configs
./make_config.sh client1

Wenn alles gut gegangen ist, sollten wir eineclient1.ovpn-Datei in unserem~/client-configs/files-Verzeichnis haben:

ls ~/client-configs/files
Outputclient1.ovpn

Übertragen der Konfiguration auf Clientgeräte

Wir müssen die Client-Konfigurationsdatei auf das entsprechende Gerät übertragen. Dies kann beispielsweise Ihr lokaler Computer oder ein mobiles Gerät sein.

Die genauen Anwendungen, die für diese Übertragung verwendet werden, hängen von Ihrer Wahl und dem Betriebssystem des Geräts ab. Sie möchten jedoch, dass die Anwendung im Backend SFTP (SSH File Transfer Protocol) oder SCP (Secure Copy) verwendet. Dadurch werden die VPN-Authentifizierungsdateien Ihres Clients über eine verschlüsselte Verbindung übertragen.

Hier ist ein Beispiel für einen SFTP-Befehl am Beispiel vonclient1.ovpn. Dieser Befehl kann auf Ihrem lokalen Computer (OS X oder Linux) ausgeführt werden. Die Datei.ovpnwird in Ihrem Home-Verzeichnis abgelegt:

sftp sammy@openvpn_server_ip:client-configs/files/client1.ovpn ~/

Hier einige Tools und Tutorials zum sicheren Übertragen von Dateien vom Server auf einen lokalen Computer:

Schritt 12: Installieren Sie die Client-Konfiguration

Im Folgenden wird erläutert, wie Sie ein Client-VPN-Profil unter Windows, OS X, iOS und Android installieren. Keine dieser Client-Anweisungen ist voneinander abhängig. Sie können also jederzeit zu den Anweisungen wechseln, die für Sie relevant sind.

Die OpenVPN-Verbindung wird wie auch immer Sie die.ovpn-Datei genannt nennen. In unserem Beispiel bedeutet dies, dass die Verbindung für die erste von uns generierte Client-Dateiclient1.ovpn heißt.

Windows

Installieren

Die OpenVPN-Clientanwendung für Windows befindet sich unterOpenVPN’s Downloads page. Wählen Sie die entsprechende Installationsversion für Ihre Windows-Version.

Note

[.note] # OpenVPN benötigt Administratorrechte, um.
# zu installieren

Kopieren Sie nach der Installation von OpenVPN die Datei.ovpnnach:

C:\Program Files\OpenVPN\config

Wenn Sie OpenVPN starten, wird das Profil automatisch angezeigt und verfügbar gemacht.

OpenVPN muss bei jeder Verwendung als Administrator ausgeführt werden, auch von Administratorkonten. Um dies zu tun, ohne bei jeder Verwendung des VPN mit der rechten Maustaste klicken undRun as administrator auswählen zu müssen, können Sie dies voreingestellt haben. Dies muss jedoch über ein Administratorkonto erfolgen. Dies bedeutet auch, dass Standardbenutzer das Administratorkennwort eingeben müssen, um OpenVPN verwenden zu können. Auf der anderen Seite können Standardbenutzer nur dann eine ordnungsgemäße Verbindung zum Server herstellen, wenn die OpenVPN-Anwendung auf dem Client über Administratorrechte verfügt. Daher sind erhöhte Berechtigungen erforderlich.

Um festzulegen, dass die OpenVPN-Anwendung immer als Administrator ausgeführt wird, klicken Sie mit der rechten Maustaste auf das Verknüpfungssymbol und gehen Sie zuProperties. Klicken Sie unten auf der RegisterkarteCompatibility auf die SchaltflächeChange settings for all users. Aktivieren Sie im neuen FensterRun this program as an administrator.

Anschließen

Jedes Mal, wenn Sie die OpenVPN-Benutzeroberfläche starten, werden Sie von Windows gefragt, ob Sie zulassen möchten, dass das Programm Änderungen an Ihrem Computer vornimmt. Klicken Sie aufYes. Durch das Starten der OpenVPN-Clientanwendung wird das Applet nur in die Taskleiste verschoben, sodass das VPN nach Bedarf verbunden und getrennt werden kann. Die VPN-Verbindung wird nicht hergestellt.

Sobald OpenVPN gestartet ist, stellen Sie eine Verbindung her, indem Sie das Applet in der Taskleiste aufrufen und mit der rechten Maustaste auf das OpenVPN-Applet-Symbol klicken. Dies öffnet das Kontextmenü. Wählen Sie oben im Menüclient1 aus (dies ist unserclient1.ovpn-Profil) und wählen SieConnect.

Ein Statusfenster wird geöffnet und zeigt die Protokollausgabe an, während die Verbindung hergestellt wird. Sobald der Client verbunden ist, wird eine Meldung angezeigt.

Trennen Sie die Verbindung zum VPN auf die gleiche Weise: Gehen Sie in das Taskleisten-Applet, klicken Sie mit der rechten Maustaste auf das OpenVPN-Applet-Symbol, wählen Sie das Client-Profil aus und klicken Sie aufDisconnect.

OS X

Installieren

Tunnelblick ist ein kostenloser Open Source OpenVPN-Client für Mac OS X. Sie können das neueste Disk-Image vonTunnelblick Downloads page herunterladen. Doppelklicken Sie auf die heruntergeladene.dmg-Datei und befolgen Sie die Anweisungen zur Installation.

Gegen Ende des Installationsvorgangs werden Sie von Tunnelblick gefragt, ob Sie Konfigurationsdateien haben. Es kann einfacher sein,No zu beantworten und Tunnelblick beenden zu lassen. Öffnen Sie ein Finder-Fenster und doppelklicken Sie aufclient1.ovpn. Tunnelblick installiert das Client-Profil. Administratorrechte sind erforderlich.

Anschließen

Starten Sie Tunnelblick, indem Sie im OrdnerApplicationsauf Tunnelblick doppelklicken. Nach dem Start von Tunnelblick befindet sich in der Menüleiste oben rechts auf dem Bildschirm ein Tunnelblick-Symbol zur Steuerung der Verbindungen. Klicken Sie auf das Symbol und dann auf den MenüpunktConnect, um die VPN-Verbindung herzustellen. Wählen Sie die Verbindung vonclient1.

Linux

Installieren

Wenn Sie Linux verwenden, gibt es eine Vielzahl von Tools, die Sie abhängig von Ihrer Distribution verwenden können. Ihre Desktop-Umgebung oder Ihr Fenstermanager enthalten möglicherweise auch Verbindungsdienstprogramme.

Die universellste Art der Verbindung besteht jedoch darin, einfach die OpenVPN-Software zu verwenden.

Unter Ubuntu oder Debian können Sie es wie auf dem Server installieren, indem Sie Folgendes eingeben:

sudo apt-get update
sudo apt-get install openvpn

Unter CentOS können Sie die EPEL-Repositorys aktivieren und dann installieren, indem Sie Folgendes eingeben:

sudo yum install epel-release
sudo yum install openvpn

Konfigurieren

Überprüfen Sie, ob Ihre Distribution ein/etc/openvpn/update-resolv-conf-Skript enthält:

ls /etc/openvpn
Outputupdate-resolve-conf

Bearbeiten Sie als Nächstes die von Ihnen übertragene OpenVPN-Client-Konfigurationsdatei:

nano client1.ovpn

Kommentieren Sie die drei Zeilen aus, in die wir die DNS-Einstellungen angepasst haben, wenn Sie eineupdate-resolv-conf-Datei finden konnten:

client1.ovpn

script-security 2
up /etc/openvpn/update-resolv-conf
down /etc/openvpn/update-resolv-conf

Wenn Sie CentOS verwenden, ändern Sie diegroup vonnogroup innobody, um sie an die verfügbaren Gruppen der Distribution anzupassen:

client1.ovpn

group nobody

Speichern und schließen Sie die Datei.

Jetzt können Sie eine Verbindung zum VPN herstellen, indem Sie einfach den Befehlopenvpn auf die Client-Konfigurationsdatei verweisen:

sudo openvpn --config client1.ovpn

Dies sollte Sie mit Ihrem Server verbinden.

iOS

Installieren

Suchen und installieren Sie im iTunes App Store nachOpenVPN Connect, der offiziellen iOS OpenVPN-Clientanwendung. Um Ihre iOS-Client-Konfiguration auf das Gerät zu übertragen, schließen Sie es direkt an einen Computer an.

Der Abschluss der Übertragung mit iTunes wird hier beschrieben. Öffnen Sie iTunes auf dem Computer und klicken Sie aufiPhone>apps. Scrollen Sie nach unten zum AbschnittFile Sharing und klicken Sie auf die OpenVPN-App. Das leere Fenster rechts,OpenVPN Documents, dient zum Freigeben von Dateien. Ziehen Sie die Datei.ovpnin das Fenster OpenVPN-Dokumente.

iTunes showing the VPN profile ready to load on the iPhone

Starten Sie nun die OpenVPN-App auf dem iPhone. Es wird eine Benachrichtigung angezeigt, dass ein neues Profil zum Import bereit ist. Tippen Sie auf das grüne Pluszeichen, um es zu importieren.

The OpenVPN iOS app showing new profile ready to import

Anschließen

OpenVPN kann jetzt mit dem neuen Profil verwendet werden. Starten Sie die Verbindung, indem Sie die TasteConnect in die PositionOn schieben. Trennen Sie die Verbindung, indem Sie dieselbe Taste aufOff schieben.

Note

[.note] # Der VPN-Switch unterSettings kann nicht zum Herstellen einer Verbindung zum VPN verwendet werden. Wenn Sie es versuchen, erhalten Sie eine Benachrichtigung, dass Sie nur mit der OpenVPN-App eine Verbindung herstellen sollen.
#

The OpenVPN iOS app connected to the VPN

Android

Installieren

Öffnen Sie den Google Play Store. Suchen und installieren SieAndroid OpenVPN Connect, die offizielle Android OpenVPN-Clientanwendung.

Das Profil von.ovpnkann übertragen werden, indem das Android-Gerät über USB an Ihren Computer angeschlossen und die Datei kopiert wird. Wenn Sie über einen SD-Kartenleser verfügen, können Sie auch die SD-Karte des Geräts entfernen, das Profil darauf kopieren und die Karte dann wieder in das Android-Gerät einlegen.

Starten Sie die OpenVPN-App und tippen Sie auf das Menü, um das Profil zu importieren.

The OpenVPN Android app profile import menu selection

Navigieren Sie dann zum Speicherort des gespeicherten Profils (der Screenshot verwendet/sdcard/Download/) und wählen Sie die Datei aus. Die App merkt sich, dass das Profil importiert wurde.

The OpenVPN Android app selecting VPN profile to import

Anschließen

Um eine Verbindung herzustellen, tippen Sie einfach auf die SchaltflächeConnect. Sie werden gefragt, ob Sie der OpenVPN-Anwendung vertrauen. Wählen SieOK, um die Verbindung herzustellen. Um die Verbindung zum VPN zu trennen, kehren Sie zur OpenVPN-App zurück und wählen SieDisconnect.

The OpenVPN Android app ready to connect to the VPN

Schritt 13: Testen Sie Ihre VPN-Verbindung

Sobald alles installiert ist, wird durch eine einfache Überprüfung bestätigt, dass alles ordnungsgemäß funktioniert. Öffnen Sie einen Browser und gehen Sie zuDNSLeakTest, ohne dass eine VPN-Verbindung aktiviert ist.

Die Site gibt die von Ihrem Internetdienstanbieter zugewiesene IP-Adresse zurück und wie Sie dem Rest der Welt erscheinen. Um Ihre DNS-Einstellungen über dieselbe Website zu überprüfen, klicken Sie aufExtended Test und Sie erfahren, welche DNS-Server Sie verwenden.

Verbinden Sie nun den OpenVPN-Client mit dem VPN Ihres Droplets und aktualisieren Sie den Browser. Die völlig andere IP-Adresse Ihres VPN-Servers sollte nun angezeigt werden. So erscheinen Sie jetzt der Welt. Wiederum überprüftDNSLeakTest’sExtended Test Ihre DNS-Einstellungen und bestätigt, dass Sie jetzt die von Ihrem VPN übertragenen DNS-Resolver verwenden.

Schritt 14: Widerrufen von Client-Zertifikaten

Gelegentlich müssen Sie möglicherweise ein Client-Zertifikat widerrufen, um den weiteren Zugriff auf den OpenVPN-Server zu verhindern.

Geben Sie dazu Ihr CA-Verzeichnis ein und geben Sie dievars-Datei erneut ein:

cd ~/openvpn-ca
source vars

Rufen Sie als Nächstes den Befehlrevoke-full mit dem Clientnamen auf, den Sie widerrufen möchten:

./revoke-full client3

Dies zeigt eine Ausgabe an, die miterror 23 endet. Dies ist normal und der Prozess sollte erfolgreich die erforderlichen Sperrinformationen generiert haben, die in einer Datei namenscrl.pem im Unterverzeichniskeys gespeichert sind.

Übertragen Sie diese Datei in das Konfigurationsverzeichnis von/etc/openvpn:

sudo cp ~/openvpn-ca/keys/crl.pem /etc/openvpn

Öffnen Sie als Nächstes die OpenVPN-Serverkonfigurationsdatei:

sudo nano /etc/openvpn/server.conf

Fügen Sie am Ende der Datei die Optioncrl-verify hinzu, damit der OpenVPN-Server die Zertifikatsperrliste überprüft, die wir bei jedem Verbindungsversuch erstellt haben:

/etc/openvpn/server.conf

crl-verify crl.pem

Speichern und schließen Sie die Datei.

Starten Sie OpenVPN neu, um die Zertifikatsperrung zu implementieren:

sudo systemctl restart openvpn@server

Der Client sollte nun länger in der Lage sein, mit dem alten Berechtigungsnachweis eine Verbindung zum Server herzustellen.

Gehen Sie folgendermaßen vor, um weitere Clients zu widerrufen:

  1. Generieren Sie eine neue Zertifikatsperrliste, indem Sie die Dateivarsim Verzeichnis~/openvpn-cauchen und dann das Skriptrevoke-fullfür den Clientnamen aufrufen.

  2. Kopieren Sie die neue Zertifikatsperrliste in das Verzeichnis/etc/openvpn, um die alte Liste zu überschreiben.

  3. Starten Sie den OpenVPN-Dienst neu.

Mit diesem Vorgang können Sie alle zuvor für Ihren Server ausgestellten Zertifikate widerrufen.

Fazit

Herzliche Glückwünsche! Sie sind jetzt sicher im Internet unterwegs und schützen Ihre Identität, Ihren Standort und Ihren Datenverkehr vor Schnüfflern und Zensoren.

Um mehr Clients zu konfigurieren, müssen Sie nur die Schritte6 und11-13 für jedes weitere Gerät ausführen. Befolgen Sie die Schritte14, um den Zugriff auf Clients zu widerrufen.