GNU/Linux >> Tutoriels Linux >  >> Panels >> OpenVPN

OpenVPN - Sécurisez l'administration de votre serveur avec une connexion VPN multiplateforme

OpenVPN est un VPN SSL complet qui implémente l'extension de réseau sécurisé de couche 2 ou 3 OSI en utilisant le protocole SSL/TLS standard de l'industrie. Il prend en charge des méthodes d'authentification client flexibles basées sur des certificats, des cartes à puce et/ou des identifiants de nom d'utilisateur/mot de passe, et permet des politiques de contrôle d'accès spécifiques à l'utilisateur ou au groupe à l'aide de règles de pare-feu appliquées à l'interface virtuelle VPN. OpenVPN n'est pas un proxy d'application Web et ne fonctionne pas via un navigateur Web.

Préparation du serveur

Pour ce tutoriel, nous allons utiliser un serveur Debian ou Ubuntu. Vous pouvez utiliser n'importe quel serveur déjà en production.

Installer OpenVPN

Toutes les distributions connues de serveurs Linux et UNIX ont OpenVPN dans leur référentiel. L'installation est aussi simple que de lancer :

apt-get install openvpn

Configuration du pare-feu

Le port d'écoute par défaut pour OpenVPN est 1194. Vous pouvez utiliser le port par défaut en toute sécurité. OpenVPN utilise le protocole UDP par défaut. Il y a une raison simple à cela :

OpenVPN utilise les couches 2 et 3

  • La couche 2 est la couche de liaison de données assurant un transfert sans erreur des trames de données sur la couche physique, ce qui signifie qu'elle utilise son propre périphérique réseau TUN/TAP.
  • La couche 3 est la couche réseau assurant le routage.

et cela signifie que la couche 4 (couche transport assurant la livraison des paquets) est gérée par le système d'exploitation et l'application elle-même. En termes simples, tout contrôle du trafic et de la livraison des paquets est effectué par le système d'exploitation, il n'est donc pas nécessaire de le faire deux fois par OpenVPN lui-même. Bien sûr, il existe une option pour utiliser TCP pour OpenVPN, ce qui signifie que vous gaspillez plus de ressources, mais dans le cas de certains environnements spéciaux, cela peut être pratique.

Pour résumer, l'ouverture du port 1194 pour UDP est suffisante pour permettre la connexion VPN. Aucun filtrage n'est nécessaire car OpenVPN a sa propre vérification et son propre contrôle mis en œuvre (voir dans une section ultérieure). Ajoutez la déclaration suivante dans la configuration de votre pare-feu.

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

Configuration du serveur

Après une installation réussie d'OpenVPN, vous pouvez trouver tous les fichiers de configuration OpenVPN dans le dossier /etc/openvpn. Ouvrons le fichier server.conf dans notre éditeur et modifions-le.

nano /etc/openvpn/server.conf

Vérifiez et modifiez les sections suivantes :

# 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

Comme nous avons choisi le sous-réseau 10.9.8.0/24 comme sous-réseau interne, votre client obtiendra une adresse IP de ce sous-réseau après la connexion. Par défaut, 10.9.8.1 est réservé au serveur lui-même.

Génération de certificats

Tout d'abord, nous devons modifier les vars dossier. Renseignez les paramètres KEY_COUNTRY, KEY_PROVINCE, KEY_CITY, KEY_ORG et KEY_EMAIL. Ces valeurs seront utilisées chaque fois que vous générerez un nouveau certificat.

Pour charger le fichier vars, exécutez :

./vars

Après les avoir chargés, nous pouvons créer une autorité de certification :

./clean-all
./build-ca

Une fois l'AC générée, procédez à la génération des certificats de serveur :

./build-key-server server

Et un autre certificat pour le client :

./build-key client

Après tout, nous devons générer des paramètres DH :

./build-dh

Plus de sécurité

Pour nous assurer que nous avons sécurisé notre serveur OpenVPN, nous allons utiliser tls-auth. Cela garantit que nous n'enverrons pas nos certificats à des serveurs compromis.

openvpn –genkey –secret ta.key

Ce fichier ta.key doit maintenant être inclus dans l'ensemble de certificats de chaque client.

Configuration client

 ##############################################
# 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 

Enregistrez-le en tant que fichier client.ovpn et incluez ta.key, ca.crt, client.crt, client.key dans un dossier.

Après avoir installé le client openvpn sur votre ordinateur et exécuté le fichier de configuration client.ovpn, vous devriez pouvoir vous connecter à votre serveur VPN. Après cela, vous obtenez une adresse IP de la plage 10.9.8.0/24 que vous avez définie et coopérez avec votre serveur en privé.


OpenVPN
  1. Comment configurer un serveur OpenVPN sur Debian 9

  2. Configurer un serveur VPN Linux à l'aide d'OpenVPN - Guide étape par étape

  3. Comment sécuriser le serveur de messagerie contre le piratage avec VPN (Debian/Ubuntu)

  4. Installer le serveur VPN Wireguard avec Docker

  5. Configurer le serveur VPN IPSec avec Libreswan sur CentOS 8

Configurer un serveur OpenVPN avec Synology et Viscosity

Configuration d'un serveur OpenVPN avec Tomato router et Viscosity

Configurer un serveur OpenVPN avec Ubuntu et Viscosity

Configurer un serveur OpenVPN avec VyOS et Viscosity

Comment se connecter à un VPN avec OpenVPN

Comment sécuriser SSH avec Fail2Ban