GNU/Linux >> LINUX-Kenntnisse >  >> Ubuntu

So konfigurieren Sie OpenVPN unter Ubuntu 16.04

In Fortsetzung der Reihe von VPN-Artikeln installieren wir jetzt OpenVPN auf Ubuntu 16.04 Server. OpenVPN ist eine bekannte VPN-Software des gleichnamigen Unternehmens. Es ist etwas schwieriger zu konfigurieren als andere VPN-Software, daher konzentrieren wir uns in diesem Artikel auf die serverseitige Konfiguration und das Erstellen von ovpn-Dateien. Dieses Handbuch ist so konzipiert, dass es als Nicht-Root-Benutzer ausgeführt werden kann. Wenn Sie als Root angemeldet sind, beginnen wir zunächst mit dem Hinzufügen des Nicht-Root-Benutzers.

adduser newuser

Dann geben wir ihm sudo-Rechte und melden uns als Benutzer

an
usermod -aG sudo newuser

su newuser

Sie können diese Schritte überspringen, wenn Sie bereits Nicht-Root-Benutzer haben, was höchstwahrscheinlich der Fall ist.

Jetzt als neuer Benutzer oder ein anderer Nicht-Root-Benutzer angemeldet, installieren wir openvpn

sudo apt-get install openvpn easy-rsa

Server- und Client-Zertifikate

Zuerst müssen wir dir für die Zertifizierungsstelle erstellen und die Vars-Datei bearbeiten

make-cadir ~/openvpn-ca
cd ~/openvpn-ca
nano vars

Finden Sie die Zeilen, die export KEY_ enthalten, und machen Sie sie so

export KEY_COUNTRY="US"
export KEY_PROVINCE="New York State"
export KEY_CITY="New York City"
export KEY_ORG="Linoxide"
export KEY_EMAIL="[email protected]"
export KEY_OU="LinuxGeeks"

Es gibt auch eine Zeile mit dem Namen KEY_NAME in derselben Datei, also geben wir dort einfach den Server als Namen ein

export KEY_NAME="server"

Nachdem wir die vars-Datei gespeichert haben, geben wir als nächstes ein:

source vars

was Ihnen den Hinweis über den Befehl ./clean-all geben sollte. Geben Sie es daher ein, um sicherzustellen, dass wir die saubere Umgebung ausführen.

./clean-all

Jetzt gehen wir zum Teil zur Zertifikatserstellung über:

./build-ca

Es wird Ihnen einige Fragen aufwerfen, aber da wir vars bearbeitet haben, sollten die neuen Standardwerte in Ordnung sein, sodass Sie in allen Punkten die Eingabetaste drücken können.

./build-key-server server

Geben Sie erneut ein, aber diesmal nicht in allen Punkten. Wenn Sie aufgefordert werden, ein Passwort einzugeben, geben Sie es nicht ein und drücken Sie am Ende, um ein Zertifikat zu erstellen. Als nächstes kommt diffie hellman:

./build-dh

Es wird einige Zeit dauern, also seien Sie geduldig. Als nächstes brauchen wir den ta.key, um die Sicherheit des Servers zu verbessern.

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

Und dann kopieren wir alle relevanten Dateien in das Verzeichnis /etc/openvpn, da openvpn nur von dort liest.

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

Wir sind mit dem Serverzertifikat fertig, also erstellen wir jetzt ein Zertifikat für client100.

cd ~/openvpn-ca

source vars
./build-key client100

Die Sourced Defaults sind wieder ok, also einfach Enter und y am Ende drücken.

Serverkonfiguration

Als Ausgangspunkt kopieren wir die Beispielkonfiguration mit folgendem Befehl:

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

Als nächstes müssen wir server.conf bearbeiten, um unseren Server funktionsfähig zu machen. Sie können jeden Editor verwenden, aber wir werden jetzt den Befehl sed verwenden

sudo sed -i 's/;push "redirect-gateway def1 bypass-dhcp"/push "redirect-gateway def1 bypass-dhcp"/g' /etc/openvpn/server.conf
sudo sed -i 's/;push "dhcp-option DNS 208.67.222.222"/push "dhcp-option DNS 208.67.222.222"/g' /etc/openvpn/server.conf
sudo sed -i 's/;push "dhcp-option DNS 208.67.220.220"/push "dhcp-option DNS 208.67.220.220"/g' /etc/openvpn/server.conf
sudo sed -i 's/;user nobody/user nobody/g' /etc/openvpn/server.conf
sudo sed -i 's/;group nogroup/group nogroup/g' /etc/openvpn/server.conf

sudo sed -i 's/;log-append/log-append/g' /etc/openvpn/server.conf

Dinge, die wir hier gemacht haben:Wir haben den gesamten Datenverkehr so ​​eingestellt, dass er über OpenVPN geht, wir haben die Gruppe und den Benutzer auf nogroup und niemand eingestellt, und wir haben die Protokolle so eingestellt, dass sie nach /etc/openvpn/openvpn.log gehen. Danach brauchen wir noch eine Änderung an ta.key:

sudo nano /etc/openvpn/server.conf

Und finde diese Zeile

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

Das war's für server.conf, als nächstes müssen wir die Paketweiterleitung für unseren Ubuntu-Server aktivieren

sudo sed -i 's/#net.ipv4.ip_forward=1/net.ipv4.ip_forward=1/g' /etc/sysctl.conf
sudo sysctl -p

ufw-Regeln müssen ebenfalls geändert werden, um Maskierung zu ermöglichen, fügen Sie dies also am Anfang vor *filter hinzu
Abschnitt

sudo nano /etc/ufw/before.rules
# START OPENVPN RULES
# NAT table rules
*nat
:POSTROUTING ACCEPT [0:0]
# Allow traffic from OpenVPN client to eth0
-A POSTROUTING -s 10.8.0.0/8 -o eth0 -j MASQUERADE
COMMIT
# END OPENVPN RULES

Beachten Sie, dass Sie den eth0-Teil höchstwahrscheinlich ändern müssen, um den echten Namen Ihrer mit dem Internet verbundenen Netzwerkschnittstelle widerzuspiegeln, daher habe ich ihn hervorgehoben. Als nächstes aktivieren wir die Weiterleitung in ufw wie in sysctl:

sudo sed -i 's/DEFAULT_FORWARD_POLICY="DROP"/DEFAULT_FORWARD_POLICY="ACCEPT"/g' /etc/default/ufw

Wir konfigurieren die Firewall

sudo ufw allow 1194/udp
sudo ufw disable

sudo ufw enable
sudo systemctl start openvpn@server
sudo systemctl status -l openvpn

Wenn alles gut gegangen ist, aktivieren Sie den Start von openvpn beim Booten

sudo systemctl enable openvpn@server

Client-Konfiguration

Beim Client-Konfigurationsteil verwenden wir Zertifikate, die wir bereits erstellt haben, zum Beispiel client100. Wir brauchen auch Client-Konfigurationsdateien

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

Die Datei, die wir kopiert haben, ist eine grundlegende Einrichtung, daher muss sie bearbeitet werden.

nano ~/client-configs/base.conf

Und dann finden Sie eine Zeile, die remote sagt. Ändern Sie es auch auf Ihre Server-IP-Adresse von FQDN.

remote your.serv.ipor.fqdn 1194

Speichern Sie das, als Rest der Bearbeitung werden wir die Befehle sed und echo verwenden:

sudo sed -i 's/;user nobody/user nobody/g' ~/client-configs/base.conf
sudo sed -i 's/;group nogroup/group nogroup/g' ~/client-configs/base.conf

sudo sed -i 's/ca ca.crt/#ca ca.crt/g' ~/client-configs/base.conf
sudo sed -i 's/cert client.crt/#cert client.crt/g' ~/client-configs/base.conf
sudo sed -i 's/key client.key/#key client.key/g' ~/client-configs/base.conf

sudo echo key-direction 1 >> ~/client-configs/base.conf

Also, was haben wir hier gemacht? Wir setzen zuerst user und group auf none und nogroup. Dann haben wir die Zertifikatspfade auskommentiert, da wir Inline-Zertifikate in die .ovpn-Datei integrieren werden. Dann haben wir den Parameter Schlüsselrichtung 1 hinzugefügt.

Skript zum Erstellen von Client-Konfigurationen

Zum Einbetten der Client-Konfiguration, Schlüssel und Zertifikate in eine einzelne .ovpn-Datei zur einfacheren Übertragung an Remote-Clients verwenden wir ein einfaches Skript. Lass es uns tun

nano ~/client-configs/make_config.sh

Und fügen Sie dann diesen Pastebin dort ein. Nach dem Speichern müssen wir das ausführbare Bit hinzufügen, also führen Sie diesen Befehl aus:

chmod +x ~/client-configs/make_config.sh

Dann können wir einfach Konfigurationsdateien erstellen

cd ~/client-configs
./make_config.sh client100
ls ~/client-configs/files

Die Syntax des Befehls ist einfach, Sie müssen sich im client-configs-Verzeichnis befinden und den Befehl mit dem Argument ausführen, das den Namen des Clients angibt, den Sie zuvor erstellt haben. Wenn Sie mehr Clients benötigen, erstellen Sie weitere Clientzertifikate mit einem anderen Namen und führen Sie diesen Befehl erneut aus. Wenn alles gut gelaufen ist, sollten sich im Verzeichnis client-configs/files ovpn-Dateien befinden. Sie müssen diese an Ihren Client oder Ihre Clients übertragen und eine Verbindung herstellen. Ich werde es mit scp machen, von meinem Fedora-Laptop habe ich so befehlen

 scp [email protected]:/home/newuser/client-configs/files/client100.ovpn /home/miki/Documents/

Von dort aus können Sie es mit einem USB-Kabel oder über AirDroid auf ein Android-Telefon oder auf eine Windows-VM oder auf einen Mac laden. Für den Linux-Netzwerkmanager müssten Sie die Datei disassemblieren

Schlussfolgerung

Hier geht es um die Serverkonfiguration, als nächstes müssten wir uns von verschiedenen Clients verbinden. Für Android können wir OpenVPN Connect verwenden, für Mac Tunnelblick, für Windows gibt es OpenVPN von der offiziellen Seite und für Linux gibt es den Netzwerkmanager. In einigen der folgenden Artikel werden wir all dies behandeln.


Ubuntu
  1. So installieren und konfigurieren Sie den OpenVPN-Zugriffsserver

  2. So richten Sie einen OpenVPN-Server unter Ubuntu 20.04 ein

  3. So installieren und konfigurieren Sie den DHCP-Server unter Ubuntu 20.04

  4. So installieren und konfigurieren Sie den Redis-Server in Ubuntu

  5. So installieren Sie OpenVPN unter Ubuntu 18.04

So konfigurieren Sie OSSEC unter Ubuntu – Teil 2

So installieren und konfigurieren Sie DHCP unter Ubuntu 18.04

So konfigurieren Sie den DNS-Server unter Ubuntu 18.04 / Ubuntu 16.04

So richten Sie OpenVPN auf Ubuntu Server ein

So richten Sie einen OpenVPN-Server unter Ubuntu 22.04 ein und konfigurieren ihn

So installieren Sie OpenVPN-Server auf Ubuntu 20.04 LTS