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

Installer le serveur OpenVPN sur Debian 11/Debian 10

Dans ce guide, nous allons apprendre à installer OpenVPN Server sur Debian 11/Debian 10.

Installer le serveur OpenVPN sur Debian 11/Debian 10

Exécutez la mise à jour du système

apt update

Installer OpenVPN sur Debian 11/Debian 10

Le package OpenVPN est disponible sur les référentiels Debian 11/Debian 10 par défaut.

apt install openvpn -y

Créer une infrastructure à clé publique OpenVPN

Initialisez la PKI OpenVPN. L'ICP se compose de :

  • une clé publique et une clé privée pour le serveur et chaque client
  • un certificat et une clé d'autorité de certification principale (CA) utilisés pour signer chacun des certificats serveur et client.

Ainsi, copiez le répertoire de configuration easy-rsa à un emplacement différent pour vous assurer que les futures mises à niveau du package OpenVPN n'écraseront pas vos modifications.

cp -r /usr/share/easy-rsa /etc/

Ensuite, initialisez la PKI.

cd /etc/easy-rsa/
./easyrsa init-pki

Exemple de sortie de commande ;

init-pki complete; you may now create a CA or requests.
Your newly created PKI dir is: /etc/easy-rsa/pki

Créer le certificat et la clé de l'autorité de certification (CA)

Ensuite, générez le certificat CA et la clé pour signer les certificats serveur et client OpenVPN.

cd /etc/easy-rsa/
./easyrsa build-ca

Cela vous demandera la phrase secrète de la clé CA et le nom commun du serveur.

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

Le certificat CA est généré et stocké dans /etc/easy-rsa/pki/ca.crt .

Générer les paramètres Diffie Hellman

Générez des clés Diffie-Hellman utilisées pour l'échange de clés lors de la poignée de main TLS entre le serveur OpenVPN et les clients qui se connectent. Cette commande a été exécutée dans le répertoire Easy-RSA ;

./easyrsa gen-dh

Les paramètres DH de taille 2048 seront créés dans /etc/easy-rsa/pki/dh.pem .

Générer le certificat et la clé du serveur OpenVPN

Pour générer un certificat et une clé privée pour le serveur OpenVPN, exécutez la commande ci-dessous :

cd /etc/easy-rsa
./easyrsa build-server-full server nopass

Entrez la phrase secrète de la clé CA créée ci-dessus pour générer les certificats et les clés.

nopass désactive l'utilisation de la phrase de passe.

Exemple de sortie ;

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

Générer une clé HMAC (Hash-based Message Authentication Code)

La clé d'authentification pré-partagée TLS/SSL est utilisée comme signature HMAC supplémentaire sur tous les paquets de prise de contact SSL/TLS pour éviter les attaques DoS et l'inondation des ports UDP. Cela peut être généré à l'aide de la commande 

openvpn --genkey secret /etc/easy-rsa/pki/ta.key

Générer un certificat de révocation OpenVPN

Pour invalider un certificat précédemment signé, vous devez générer un certificat de révocation.

Exécutez le script dans le répertoire Easy-RSA ;

./easyrsa gen-crl

Le certificat de révocation est généré et stocké dans /etc/easy-rsa/pki/crl.pem .

Exemple de sortie ;

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

Copier les certificats et les clés du serveur dans le répertoire de configuration du serveur

Copiez tous les certificats/clés de serveur générés dans le répertoire de configuration du serveur OpenVPN.

cp -rp /etc/easy-rsa/pki/{ca.crt,dh.pem,ta.key,crl.pem,issued,private} /etc/openvpn/server/

Générer des certificats et des clés client OpenVPN

Les certificats et les clés privées des clients OpenVPN peuvent être générés comme suit

cd /etc/easy-rsa
./easyrsa build-client-full koromicha nopass
  • où koromicha est le nom du client pour lequel le certificat et les clés sont générés.
  • Utilisez toujours un nom commun unique pour chaque client pour lequel vous générez un certificat et des clés.

Exemple de sortie de commande ;

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

Pour générer pour le second client,

./easyrsa build-client-full janedoe nopass

Vous pouvez voir comment utiliser easyrsa commande avec ./easyrsa --help .

Copier les certificats client et les clés dans le répertoire client

Créez des répertoires de clients OpenVPN. Par exemple, nous avons généré des certificats et des fichiers clés pour deux clients, koromicha et janedoe, nous créons donc des répertoires comme ;

mkdir /etc/openvpn/client/{koromicha,janedoe}

Après cela, copiez les certificats/clés générés par le client et le certificat CA du serveur dans le répertoire de configuration du client OpenVPN. Vous pouvez

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/

Configurer le serveur OpenVPN sur Debian 11/Debian 10

L'étape suivante consiste à configurer le serveur OpenVPN. Copiez l'exemple de configuration du serveur OpenVPN dans /etc/openvpn/server répertoire comme indiqué ci-dessous ;

Sur Debian 10 ;

cp /usr/share/doc/openvpn/examples/sample-config-files/server.conf.gz /etc/openvpn/server/

Extrayez la configuration.

cd /etc/openvpn/server/
gunzip server.conf.gz

Sur Debian 11 ;

cp /usr/share/doc/openvpn/examples/sample-config-files/server.conf /etc/openvpn/server/

Modifiez le fichier de configuration, server.conf , pour répondre à vos besoins ;

Voici à quoi ressemblent nos configurations sans commentaires.

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

Enregistrez et quittez la configuration une fois l'édition terminée.

Configurer le transfert IP OpenVPN

Pour vous assurer que le trafic du client est acheminé via l'adresse IP du serveur OpenVPN (aide à masquer l'adresse IP du client), vous devez activer le transfert IP sur le serveur OpenVPN.

Décommentez la ligne, net.ipv4.ip_forward=1 , sur /etc/sysctl.conf pour activer le transfert de paquets pour IPv4

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

Appliquez les modifications sans redémarrer le serveur.

sysctl -p

Autoriser le port de service OpenVPN via le pare-feu ;

ufw allow 1194/udp

Configurer le masquage IP sur UFW

Trouvez votre interface par défaut à travers laquelle vos paquets sont envoyés.

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

Ensuite, mettez à jour les règles UFW ;

vim /etc/ufw/before.rules

Ajoutez les lignes en surbrillance suivantes juste avant le *filter paramètres du tableau. Notez que l'interface utilisée doit correspondre au nom de l'interface ci-dessus.

...
*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
...

Enregistrez et quittez la configuration.

Activer le transfert de paquets UFW ;

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

Recharger UFW ;

ufw reload

Exécuter le serveur OpenVPN sur Debian 11/Debian 10

Démarrez et activez le serveur OpenVPN pour qu'il s'exécute au démarrage du système ;

systemctl enable --now [email protected]

Vérification de l'état ;

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.

Lorsque le service OpenVPN s'exécute, il crée une interface de tunnellisation, 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

Assurez-vous également de vérifier les journaux ;

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

Le serveur OpenVPN est maintenant prêt à accepter et acheminer les connexions des clients.

Cela marque la fin de notre guide sur l'installation d'OpenVPN Server sur Debian 11/Debian 10.

Vous pouvez maintenant configurer vos clients en conséquence.

Tutoriels associés

Installer et configurer le client OpenVPN sur CentOS 8/Ubuntu 18.04

Configurer l'authentification basée sur OpenVPN LDAP

Configurer le VPN IPSEC à l'aide de StrongSwan sur Ubuntu 18.04

OpenVPN
  1. Comment installer et configurer OpenVPN Server sur Debian 10

  2. Comment installer le serveur Redis sur Debian 11

  3. Installer le serveur Wireguard sur Debian 10/11

  4. Installer le serveur OpenVPN sur Debian 10/11

  5. Installer Cockpit sur Debian 9

Comment installer FastPanel sur Debian 11

Installer un serveur Redis sur Debian 11

Comment installer I2P sur le serveur Debian :

Installer le serveur de synchronisation Firefox sur Debian 11

Comment installer OpenVPN sur Debian 9 Stretch

Comment installer le serveur OpenVPN sur Debian 11