GNU/Linux >> LINUX-Kenntnisse >  >> Panels >> OpenVPN

Installieren Sie OpenVPN-Server auf Debian 11/Debian 10

In diesem Handbuch werden wir lernen, wie man OpenVPN Server auf Debian 11/Debian 10 installiert.

Installieren Sie OpenVPN Server auf Debian 11/Debian 10

Führen Sie das Systemupdate

apt update
aus

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.key
generiert 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 nopass
zu 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

OpenVPN
  1. So installieren und konfigurieren Sie OpenVPN Server unter Debian 10

  2. So installieren Sie Redis Server unter Debian 11

  3. So installieren Sie MySQL 8.0 / 5.7 unter Debian 11 / Debian 10

  4. So installieren Sie ProFTPD unter Debian 8

  5. Installieren Sie Cockpit unter Debian 9

So installieren Sie FastPanel unter Debian 11

Installieren Sie einen Redis-Server auf Debian 11

So installieren Sie I2P auf einem Debian-Server:

Installieren Sie Firefox Sync Server auf Debian 11

So installieren Sie OpenVPN auf Debian 9 Stretch

So installieren Sie OpenVPN-Server unter Debian 11