Installieren Sie OpenVPN Server auf Debian 11/Debian 10
Führen Sie das Systemupdate
apt updateaus
Installieren Sie OpenVPN auf Debian 11/Debian 10
Das OpenVPN-Paket ist in den standardmäßigen Debian 11/Debian 10-Repositorys verfügbar.
apt install openvpn -y
OpenVPN-Public-Key-Infrastruktur erstellen
Initialisieren Sie die OpenVPN-PKI. Die PKI besteht aus:
- ein öffentlicher Schlüssel und ein privater Schlüssel für den Server und jeden Client
- ein CA-Zertifikat (Master Certificate Authority) und einen Schlüssel, der verwendet wird, um jedes der Server- und Client-Zertifikate zu signieren.
Kopieren Sie daher das easy-rsa-Konfigurationsverzeichnis an einen anderen Ort, um sicherzustellen, dass zukünftige OpenVPN-Paket-Upgrades Ihre Änderungen nicht überschreiben.
cp -r /usr/share/easy-rsa /etc/
Als nächstes initialisieren Sie die PKI.
cd /etc/easy-rsa/
./easyrsa init-pki
Beispielbefehlsausgabe;
init-pki complete; you may now create a CA or requests.
Your newly created PKI dir is: /etc/easy-rsa/pki
Erstellen Sie das Zertifikat und den Schlüssel der Zertifizierungsstelle (CA)
Als nächstes generieren Sie das CA-Zertifikat und den Schlüssel zum Signieren von OpenVPN-Server- und -Client-Zertifikaten.
cd /etc/easy-rsa/ ./easyrsa build-ca
Dadurch werden Sie zur Eingabe der CA-Schlüssel-Passphrase und des allgemeinen Servernamens aufgefordert.
Using SSL: openssl OpenSSL 1.1.1d 10 Sep 2019 Enter New CA Key Passphrase: Re-Enter New CA Key Passphrase: Generating RSA private key, 2048 bit long modulus (2 primes) .............................................+++++ ...................................+++++ e is 65537 (0x010001) Can't load /etc/easy-rsa/pki/.rnd into RNG 139670192284800:error:2406F079:random number generator:RAND_load_file:Cannot open file:../crypto/rand/randfile.c:98:Filename=/etc/easy-rsa/pki/.rnd 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. ----- Common Name (eg: your user, host, or server name) [Easy-RSA CA]:Kifarunix-demo CA CA creation complete and you may now import and sign cert requests. Your new CA certificate file for publishing is at: /etc/easy-rsa/pki/ca.crt
Das CA-Zertifikat wird generiert und unter /etc/easy-rsa/pki/ca.crt
gespeichert .
Diffie-Hellman-Parameter generieren
Generieren Sie Diffie-Hellman-Schlüssel, die für den Schlüsselaustausch während des TLS-Handshakes zwischen dem OpenVPN-Server und den sich verbindenden Clients verwendet werden. Dieser Befehl muss im Easy-RSA-Verzeichnis ausgeführt werden;
./easyrsa gen-dh
DH-Parameter der Größe 2048 werden unter /etc/easy-rsa/pki/dh.pem
.
OpenVPN-Serverzertifikat und -schlüssel generieren
Um ein Zertifikat und einen privaten Schlüssel für den OpenVPN-Server zu generieren, führen Sie den folgenden Befehl aus:
cd /etc/easy-rsa
./easyrsa build-server-full server nopass
Geben Sie die oben erstellte Passphrase für den CA-Schlüssel ein, um die Zertifikate und Schlüssel zu generieren.
nopass
deaktiviert die Verwendung von Passphrasen.
Beispielausgabe;
Using SSL: openssl OpenSSL 1.1.1d 10 Sep 2019 Generating a RSA private key ........................................+++++ .......................................+++++ writing new private key to '/etc/easy-rsa/pki/private/server.key.MMFHTTtpKD' ----- Using configuration from /etc/easy-rsa/pki/safessl-easyrsa.cnf Enter pass phrase for /etc/easy-rsa/pki/private/ca.key: Check that the request matches the signature Signature ok The Subject's Distinguished Name is as follows commonName :ASN.1 12:'server' Certificate is to be certified until Oct 10 18:23:08 2024 GMT (1080 days) Write out database with 1 new entries Data Base Updated
Hash-basierten Message Authentication Code (HMAC)-Schlüssel generieren
Der vorinstallierte TLS/SSL-Authentifizierungsschlüssel wird als zusätzliche HMAC-Signatur für alle SSL/TLS-Handshake-Pakete verwendet, um DoS-Angriffe und UDP-Port-Flooding zu vermeiden. Diese kann mit dem Befehl
openvpn --genkey secret /etc/easy-rsa/pki/ta.keygeneriert werden
OpenVPN-Sperrzertifikat generieren
Um ein zuvor signiertes Zertifikat ungültig zu machen, müssen Sie ein Sperrzertifikat generieren.
Führen Sie das Skript im Easy-RSA-Verzeichnis aus;
./easyrsa gen-crl
Das Widerrufszertifikat wird generiert und unter /etc/easy-rsa/pki/crl.pem
gespeichert .
Beispielausgabe;
Using SSL: openssl OpenSSL 1.1.1d 10 Sep 2019 Using configuration from /etc/easy-rsa/pki/safessl-easyrsa.cnf Enter pass phrase for /etc/easy-rsa/pki/private/ca.key: An updated CRL has been created. CRL file: /etc/easy-rsa/pki/crl.pem
Serverzertifikate und -schlüssel in das Serverkonfigurationsverzeichnis kopieren
Kopieren Sie alle generierten Serverzertifikate/Schlüssel in das Konfigurationsverzeichnis des OpenVPN-Servers.
cp -rp /etc/easy-rsa/pki/{ca.crt,dh.pem,ta.key,crl.pem,issued,private} /etc/openvpn/server/
Generieren Sie OpenVPN-Client-Zertifikate und -Schlüssel
Zertifikate und private Schlüssel von OpenVPN-Clients können wie folgt generiert werden
cd /etc/easy-rsa
./easyrsa build-client-full koromicha nopass
- wo
koromicha
ist der Name des Clients, für den das Zertifikat und die Schlüssel generiert werden. - Verwenden Sie immer einen eindeutigen allgemeinen Namen für jeden Client, für den Sie Zertifikate und Schlüssel generieren.
Beispielbefehlsausgabe;
Using SSL: openssl OpenSSL 1.1.1d 10 Sep 2019 Generating a RSA private key ...........................+++++ ...........................................................................................................................+++++ writing new private key to '/etc/easy-rsa/pki/private/koromicha.key.saAaE6L0tX' ----- Using configuration from /etc/easy-rsa/pki/safessl-easyrsa.cnf Enter pass phrase for /etc/easy-rsa/pki/private/ca.key: Check that the request matches the signature Signature ok The Subject's Distinguished Name is as follows commonName :ASN.1 12:'koromicha' Certificate is to be certified until Oct 10 18:25:37 2024 GMT (1080 days) Write out database with 1 new entries Data Base Updated
Um für den zweiten Client
./easyrsa build-client-full janedoe nopasszu generieren
Sie können sehen, wie Sie easyrsa
verwenden Befehl mit ./easyrsa --help
.
Kopieren Sie Client-Zertifikate und -Schlüssel in das Client-Verzeichnis
Erstellen Sie Verzeichnisse für OpenVPN-Clients. Zum Beispiel haben wir Zertifikate und Schlüsseldateien für zwei Clients, koromicha und janedoe, generiert, daher erstellen wir Verzeichnisse als;
mkdir /etc/openvpn/client/{koromicha,janedoe}
Kopieren Sie danach die vom Client generierten Zertifikate/Schlüssel und das Server-CA-Zertifikat in das OpenVPN-Client-Konfigurationsverzeichnis. Sie können
cp -rp /etc/easy-rsa/pki/{ca.crt,issued/koromicha.crt,private/koromicha.key} /etc/openvpn/client/koromicha
cp -rp /etc/easy-rsa/pki/{ca.crt,issued/janedoe.crt,private/janedoe.key} /etc/openvpn/client/janedoe/
OpenVPN-Server auf Debian 11/Debian 10 konfigurieren
Der nächste Schritt ist die Konfiguration des OpenVPN-Servers. Kopieren Sie die OpenVPN-Beispielserverkonfiguration nach /etc/openvpn/server
Verzeichnis wie unten gezeigt;
Unter Debian 10;
cp /usr/share/doc/openvpn/examples/sample-config-files/server.conf.gz /etc/openvpn/server/
Extrahieren Sie die Konfiguration.
cd /etc/openvpn/server/ gunzip server.conf.gz
Unter Debian 11;
cp /usr/share/doc/openvpn/examples/sample-config-files/server.conf /etc/openvpn/server/
Ändern Sie die Konfigurationsdatei server.conf
, um Ihren Bedürfnissen gerecht zu werden;
So sehen unsere Konfigurationen ohne Kommentare aus.
cp /etc/openvpn/server/server.conf{,.bak}
cat > /etc/openvpn/server/server.conf << 'EOL' port 1194 proto udp dev tun ca ca.crt cert issued/server.crt key private/server.key # This file should be kept secret dh dh.pem topology subnet server 10.8.0.0 255.255.255.0 ifconfig-pool-persist /var/log/openvpn/ipp.txt push "redirect-gateway def1 bypass-dhcp" push "dhcp-option DNS 208.67.222.222" push "dhcp-option DNS 8.8.8.8" client-to-client keepalive 10 120 tls-auth ta.key 0 # This file is secret cipher AES-256-CBC comp-lzo persist-key persist-tun status /var/log/openvpn/openvpn-status.log log-append /var/log/openvpn/openvpn.log verb 3 explicit-exit-notify 1 auth SHA512 EOL
Speichern und beenden Sie die Konfiguration, sobald Sie mit der Bearbeitung fertig sind.
OpenVPN-IP-Weiterleitung konfigurieren
Um sicherzustellen, dass der Datenverkehr vom Client über die IP-Adresse des OpenVPN-Servers geleitet wird (hilft, die Client-IP-Adresse zu maskieren), müssen Sie die IP-Weiterleitung auf dem OpenVPN-Server aktivieren.
Entkommentieren Sie die Zeile net.ipv4.ip_forward=1
, auf /etc/sysctl.conf
um die Paketweiterleitung für IPv4 zu aktivieren
sed -i 's/#net.ipv4.ip_forward=1/net.ipv4.ip_forward=1/' /etc/sysctl.conf
Wenden Sie die Änderungen an, ohne den Server neu zu starten.
sysctl -p
OpenVPN-Dienstport durch Firewall zulassen;
ufw allow 1194/udp
IP-Masquerading auf UFW konfigurieren
Finden Sie Ihre Standardschnittstelle heraus, über die Ihre Pakete gesendet werden.
ip route get 8.8.8.8
8.8.8.8 via 10.0.2.2 dev enp0s3 src 10.0.2.15 uid 0
Aktualisieren Sie als Nächstes die UFW-Regeln;
vim /etc/ufw/before.rules
Fügen Sie die folgenden hervorgehobenen Zeilen direkt vor dem *filter
hinzu Tisch Einstellungen. Beachten Sie, dass die verwendete Schnittstelle mit dem obigen Schnittstellennamen übereinstimmen sollte.
...
*nat
:POSTROUTING ACCEPT [0:0]
-A POSTROUTING -s 10.8.0.0/8 -o enp0s3 -j MASQUERADE
COMMIT
# Don't delete these required lines, otherwise there will be errors
*filter
...
Speichern und beenden Sie die Konfiguration.
UFW-Paketweiterleitung aktivieren;
sed -i 's/DEFAULT_FORWARD_POLICY="DROP"/DEFAULT_FORWARD_POLICY="ACCEPT"/' /etc/default/ufw
UFW neu laden;
ufw reload
Laufen von OpenVPN-Server auf Debian 11/Debian 10
Starten und aktivieren Sie den OpenVPN-Server, damit er beim Systemstart ausgeführt wird;
systemctl enable --now [email protected]
Überprüfung des Status;
systemctl status [email protected]
● [email protected] - OpenVPN service for server Loaded: loaded (/lib/systemd/system/[email protected]; enabled; vendor preset: enabled) Active: active (running) since Tue 2021-10-26 15:06:18 EDT; 9s ago Docs: man:openvpn(8) https://community.openvpn.net/openvpn/wiki/Openvpn24ManPage https://community.openvpn.net/openvpn/wiki/HOWTO Main PID: 1595 (openvpn) Status: "Initialization Sequence Completed" Tasks: 1 (limit: 2359) Memory: 2.4M CGroup: /system.slice/system-openvpn\x2dserver.slice/[email protected] └─1595 /usr/sbin/openvpn --status /run/openvpn-server/status-server.log --status-version 2 --suppress-timestamps --config server.conf Oct 26 15:06:18 debian systemd[1]: Starting OpenVPN service for server... Oct 26 15:06:18 debian systemd[1]: Started OpenVPN service for server.
Wenn der OpenVPN-Dienst ausgeführt wird, erstellt er eine Tunneling-Schnittstelle, tun0;
ip add s
...
4: tun0: <POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UNKNOWN group default qlen 100
link/none
inet 10.8.0.1/24 brd 10.8.0.255 scope global tun0
valid_lft forever preferred_lft forever
inet6 fe80::bf6a:bdf4:58e1:ec24/64 scope link stable-privacy
valid_lft forever preferred_lft forever
Überprüfen Sie auch unbedingt die Protokolle;
tail /var/log/openvpn/openvpn.log
/sbin/ip link set dev tun0 up mtu 1500 /sbin/ip addr add dev tun0 10.8.0.1/24 broadcast 10.8.0.255 Could not determine IPv4/IPv6 protocol. Using AF_INET Socket Buffers: R=[212992->212992] S=[212992->212992] UDPv4 link local (bound): [AF_INET][undef]:1194 UDPv4 link remote: [AF_UNSPEC] MULTI: multi_init called, r=256 v=256 IFCONFIG POOL: base=10.8.0.2 size=252, ipv6=0 IFCONFIG POOL LIST Initialization Sequence Completed
Der OpenVPN-Server ist jetzt bereit, Verbindungen von Clients anzunehmen und weiterzuleiten.
Das markiert das Ende unserer Anleitung zur Installation von OpenVPN Server auf Debian 11/Debian 10.
Sie können nun Ihre Clients entsprechend konfigurieren.
Verwandte Anleitungen
Installieren und konfigurieren Sie den OpenVPN-Client unter CentOS 8/Ubuntu 18.04
Konfigurieren Sie die OpenVPN-LDAP-basierte Authentifizierung
Konfigurieren Sie IPSEC VPN mit StrongSwan auf Ubuntu 18.04