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

OpenVPN - Sichern Sie Ihre Serververwaltung mit einer Multiplattform-VPN-Verbindung

OpenVPN ist ein SSL-VPN mit vollem Funktionsumfang, das die sichere Netzwerkerweiterung der OSI-Schicht 2 oder 3 unter Verwendung des branchenüblichen SSL/TLS-Protokolls implementiert. Es unterstützt flexible Client-Authentifizierungsmethoden basierend auf Zertifikaten, Smartcards und/oder Benutzernamen/Kennwort-Anmeldeinformationen und ermöglicht benutzer- oder gruppenspezifische Zugriffssteuerungsrichtlinien mithilfe von Firewall-Regeln, die auf die virtuelle VPN-Schnittstelle angewendet werden. OpenVPN ist kein Webanwendungs-Proxy und funktioniert nicht über einen Webbrowser.

Servervorbereitung

Für diese Anleitung verwenden wir einen Debian- oder Ubuntu-Server. Sie können jeden Server verwenden, den Sie bereits in Produktion haben.

OpenVPN-Installation

Alle bekannten Distributionen von Linux- und UNIX-Servern haben OpenVPN in ihrem Repository. Die Installation ist so einfach wie das Ausführen von:

apt-get install openvpn

Firewall-Konfiguration

Der Standard-Listening-Port für OpenVPN ist 1194. Es ist sicher, den Standard-Port zu verwenden. OpenVPN verwendet standardmäßig das UDP-Protokoll. Dafür gibt es einen einfachen Grund:

OpenVPN verwendet Layer 2 und 3

  • Schicht 2 ist die Datenverbindungsschicht, die eine fehlerfreie Übertragung von Datenrahmen über die physikalische Schicht bereitstellt, d. h. sie verwendet ein eigenes TUN/TAP-Netzwerkgerät.
  • Schicht 3 ist die Netzwerkschicht, die das Routing bereitstellt.

und das bedeutet, dass Schicht 4 (Transportschicht, die die Paketzustellung sicherstellt) vom Betriebssystem und der Anwendung selbst verwaltet wird. Einfach gesagt, jede Kontrolle des Datenverkehrs und der Paketzustellung wird vom Betriebssystem durchgeführt, daher muss OpenVPN selbst dies nicht zweimal tun. Natürlich gibt es eine Option, TCP für OpenVPN zu verwenden, was bedeutet, dass Sie mehr Ressourcen verschwenden, aber im Falle einiger spezieller Umgebungen kann es praktisch sein.

Zusammenfassend lässt sich sagen, dass das Öffnen von Port 1194 für UDP ausreicht, um die VPN-Verbindung zu ermöglichen. Es ist keine Filterung erforderlich, da OpenVPN eine eigene Überprüfung und Kontrolle implementiert hat (siehe in einem späteren Abschnitt). Fügen Sie die folgende Anweisung zu Ihrer Firewall-Konfiguration hinzu.

-A INPUT -p udp -m udp --dport 1194 -j ACCEPT

Serverkonfiguration

Nach erfolgreicher Installation von OpenVPN finden Sie alle OpenVPN-Konfigurationsdateien im Ordner /etc/openvpn. Lassen Sie uns die server.conf-Datei in unserem Editor öffnen und bearbeiten.

nano /etc/openvpn/server.conf

Überprüfen und bearbeiten Sie die folgenden Abschnitte:

# SSL/TLS root certificate (ca), certificate
# (cert), and private key (key).

ca /etc/openvpn/easy-rsa/keys/ca.crt
cert /etc/openvpn/easy-rsa/keys/server.crt
key /etc/openvpn/easy-rsa/keys/server.key # This file should be kept secret

# Diffie hellman parameters.
dh /etc/openvpn/easy-rsa/keys/dh2048.pem

# Configure server mode and supply a VPN subnet
server 10.9.8.0 255.255.255.0

# Push routes to the client
push "route 10.9.8.0 255.255.255.0"

# For extra security beyond that provided
# by SSL/TLS, create an "HMAC firewall"
# to help block DoS attacks and UDP port flooding.
tls-auth /etc/openvpn/easy-rsa/keys/ta.key 0 # This file is secret

# Select a cryptographic cipher.
cipher AES-128-CBC # AES

# Enable compression on the VPN link.
comp-lzo

# It's a good idea to reduce the OpenVPN
# daemon's privileges after initialization.
user vpn
group vpn

Da wir das Subnetz 10.9.8.0/24 als internes Subnetz ausgewählt haben, erhält Ihr Client nach dem Verbinden eine IP-Adresse von diesem Subnetz. Standardmäßig ist 10.9.8.1 für den Server selbst reserviert.

Generieren von Zertifikaten

Zuerst müssen wir die Variablen bearbeiten Datei. Füllen Sie die Parameter KEY_COUNTRY, KEY_PROVINCE, KEY_CITY, KEY_ORG und KEY_EMAIL aus. Diese Werte werden jedes Mal verwendet, wenn Sie ein neues Zertifikat generieren.

Um die vars-Datei zu laden, führen Sie Folgendes aus:

./vars

Nachdem wir sie geladen haben, können wir eine Zertifizierungsstelle erstellen:

./clean-all
./build-ca

Wenn die CA generiert wurde, fahren Sie mit dem Generieren von Serverzertifikaten fort:

./build-key-server server

Und noch ein Zertifikat für den Client:

./build-key client

Schließlich müssen wir DH-Parameter generieren:

./build-dh

Mehr Sicherheit

Um sicherzustellen, dass wir unseren OpenVPN-Server gesichert haben, werden wir tls-auth verwenden. Dadurch wird sichergestellt, dass wir unsere Zertifikate nicht an kompromittierte Server senden.

openvpn –genkey –secret ta.key

Diese ta.key-Datei muss jetzt im Zertifikatspaket jedes Clients enthalten sein.

Client-Konfiguration

 ##############################################
# Sample client-side OpenVPN 2.0 config file #
# for connecting to multi-client server. #
# #
# This configuration can be used by multiple #
# clients, however each client should have #
# its own cert and key files. #
# #
# On Windows, you might want to rename this #
# file so it has a .ovpn extension #
##############################################

# Specify that we are a client and that we
# will be pulling certain config file directives
# from the server.
client

# Use the same setting as you are using on
# the server.
# On most systems, the VPN will not function
# unless you partially or fully disable
# the firewall for the TUN/TAP interface.
;dev tap
dev tun

# Windows needs the TAP-Windows adapter name
# from the Network Connections panel
# if you have more than one. On XP SP2,
# you may need to disable the firewall
# for the TAP adapter.
;dev-node MyTap

# Are we connecting to a TCP or
# UDP server? Use the same setting as
# on the server.
;proto tcp
proto udp

# The hostname/IP and port of the server.
# You can have multiple remote entries
# to load balance between the servers.
remote <your-server-ip> 1194
;remote my-server-2 1194

# Choose a random host from the remote
# list for load-balancing. Otherwise
# try hosts in the order specified.
;remote-random

# Keep trying indefinitely to resolve the
# host name of the OpenVPN server. Very useful
# on machines which are not permanently connected
# to the internet such as laptops.
resolv-retry infinite

# Most clients don't need to bind to
# a specific local port number.
nobind

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

# Try to preserve some state across restarts.
persist-key
persist-tun

# If you are connecting through an
# HTTP proxy to reach the actual OpenVPN
# server, put the proxy server/IP and
# port number here. See the man page
# if your proxy server requires
# authentication.
;http-proxy-retry # retry on connection failures
;http-proxy [proxy server] [proxy port #]

# Wireless networks often produce a lot
# of duplicate packets. Set this flag
# to silence duplicate packet warnings.
;mute-replay-warnings

# 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

# Verify server certificate by checking
# that the certicate has the nsCertType
# field set to "server". This is an
# important precaution to protect against
# a potential attack discussed here:
# http://openvpn.net/howto.html#mitm
#
# To use this feature, you will need to generate
# your server certificates with the nsCertType
# field set to "server". The build-key-server
# script in the easy-rsa folder will do this.
;ns-cert-type server

# If a tls-auth key is used on the server
# then every client must also have the key.
tls-auth ta.key 1

# Select a cryptographic cipher.
# If the cipher option is used on the server
# then you must also specify it here.
cipher AES-128-CBC

# Enable compression on the VPN link.
# Don't enable this unless it is also
# enabled in the server config file.
comp-lzo

# Set log file verbosity.
verb 3

# Silence repeating messages
mute 20 

Speichern Sie es als client.ovpn-Datei und fügen Sie ta.key, ca.crt, client.crt, client.key in einen Ordner ein.

Nachdem Sie den OpenVPN-Client auf Ihrem Computer installiert und die Konfigurationsdatei client.ovpn ausgeführt haben, sollten Sie sich mit Ihrem VPN-Server verbinden können. Danach erhalten Sie eine IP-Adresse aus dem von Ihnen festgelegten Bereich 10.9.8.0/24 und kooperieren privat mit Ihrem Server.


OpenVPN
  1. So richten Sie einen OpenVPN-Server unter Debian 9 ein

  2. Einrichten eines Linux-VPN-Servers mit OpenVPN – Schritt-für-Schritt-Anleitung

  3. So schützen Sie E-Mail-Server mit VPN vor Hackerangriffen (Debian/Ubuntu)

  4. Installieren Sie den Wireguard VPN-Server mit Docker

  5. Richten Sie den IPSec-VPN-Server mit Libreswan auf CentOS 8 ein

Einrichten eines OpenVPN-Servers mit Synology und Viscosity

Einrichten eines OpenVPN-Servers mit Tomato-Router und Viscosity

Einrichten eines OpenVPN-Servers mit Ubuntu und Viscosity

Einrichten eines OpenVPN-Servers mit VyOS und Viscosity

So verbinden Sie sich mit OpenVPN mit einem VPN

So sichern Sie SSH mit Fail2Ban