GNU/Linux >> Tutoriels Linux >  >> Ubuntu

Comment configurer OpenVPN sur Ubuntu 16.04

Poursuivant la série d'articles VPN, nous installons maintenant OpenVPN sur Ubuntu 16.04 Server. OpenVPN est un logiciel VPN bien connu de la société du même nom. Il est un peu plus difficile à configurer que les autres logiciels VPN, nous nous concentrerons donc sur la configuration côté serveur et sur la création de fichiers ovpn dans cet article. Ce guide est conçu pour être exécuté en tant qu'utilisateur non root. Si vous êtes connecté en tant que root, nous commençons d'abord par ajouter l'utilisateur non root.

adduser newuser

Ensuite, nous lui donnons les droits sudo et nous nous connectons en tant qu'utilisateur

usermod -aG sudo newuser

su newuser

Vous pouvez ignorer ces étapes si vous avez déjà des utilisateurs non root, et c'est très probablement le cas.

Maintenant connecté en tant que newuser ou tout autre utilisateur non root, nous allons installer openvpn

sudo apt-get install openvpn easy-rsa

Certificats serveur et client

Tout d'abord, nous devons créer un répertoire pour l'autorité de certification et modifier le fichier vars

make-cadir ~/openvpn-ca
cd ~/openvpn-ca
nano vars

Trouvez les lignes qui contiennent export KEY_ et transformez-les comme ceci

export KEY_COUNTRY="US"
export KEY_PROVINCE="New York State"
export KEY_CITY="New York City"
export KEY_ORG="Linoxide"
export KEY_EMAIL="[email protected]"
export KEY_OU="LinuxGeeks"

Il y a aussi une ligne nommée KEY_NAME dans le même fichier, nous allons donc simplement mettre le serveur comme nom

export KEY_NAME="server"

Après avoir enregistré le fichier vars, la prochaine chose que nous tapons est :

source vars

qui devrait vous donner la note sur la commande ./clean-all. Par conséquent, tapons-le pour être sûr que nous exécutons l'environnement propre.

./clean-all

Passons maintenant à la partie création de certificat :

./build-ca

Cela vous posera quelques questions, mais puisque nous avons modifié vars, les nouvelles valeurs par défaut devraient être correctes, vous pouvez donc appuyer sur Entrée sur tous les points.

./build-key-server server

Entrez à nouveau, mais pas sur tous les plans cette fois. Lorsqu'il vous demande de mettre un mot de passe, ne le mettez pas, et à la fin, appuyez sur y pour créer un certificat. Le suivant est Diffie Hellman :

./build-dh

Cela prendra du temps, alors soyez patient. Ensuite, nous avons besoin de ta.key pour améliorer la sécurité du serveur.

openvpn --genkey --secret keys/ta.key

Et puis nous copions tous les fichiers pertinents dans le répertoire /etc/openvpn, car openvpn ne lit qu'à partir de là.

cd ~/openvpn-ca/keys
sudo cp ca.crt ca.key server.crt server.key ta.key dh2048.pem /etc/openvpn

Nous en avons terminé avec le certificat de serveur, nous créons donc maintenant un certificat pour client100.

cd ~/openvpn-ca

source vars
./build-key client100

Les valeurs par défaut sont à nouveau correctes, il suffit donc d'appuyer sur Entrée et Y à la fin.

Configuration du serveur

Pour le point de départ, nous copions l'exemple de configuration avec la commande suivante :

gunzip -c /usr/share/doc/openvpn/examples/sample-config-files/server.conf.gz | sudo tee /etc/openvpn/server.conf

Ensuite, nous devons éditer server.conf pour rendre notre serveur fonctionnel. Vous pouvez utiliser n'importe quel éditeur mais nous allons utiliser la commande sed maintenant

sudo sed -i 's/;push "redirect-gateway def1 bypass-dhcp"/push "redirect-gateway def1 bypass-dhcp"/g' /etc/openvpn/server.conf
sudo sed -i 's/;push "dhcp-option DNS 208.67.222.222"/push "dhcp-option DNS 208.67.222.222"/g' /etc/openvpn/server.conf
sudo sed -i 's/;push "dhcp-option DNS 208.67.220.220"/push "dhcp-option DNS 208.67.220.220"/g' /etc/openvpn/server.conf
sudo sed -i 's/;user nobody/user nobody/g' /etc/openvpn/server.conf
sudo sed -i 's/;group nogroup/group nogroup/g' /etc/openvpn/server.conf

sudo sed -i 's/;log-append/log-append/g' /etc/openvpn/server.conf

Choses que nous avons faites ici :nous avons configuré tout le trafic pour qu'il passe par OpenVPN, nous avons défini le groupe et l'utilisateur sur nogroup et personne, et nous avons défini les journaux sur /etc/openvpn/openvpn.log. Ensuite, nous avons besoin d'un autre changement concernant ta.key :

sudo nano /etc/openvpn/server.conf

Et trouvez cette ligne

tls-auth ta.key 0 # This file is secret
key-direction 0

C'est à peu près tout pour server.conf, nous devons ensuite activer le transfert de paquets pour notre serveur Ubuntu

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

les règles ufw doivent également être modifiées pour permettre le masquage, alors ajoutez ceci au début, avant * filter
rubrique

sudo nano /etc/ufw/before.rules
# START OPENVPN RULES
# NAT table rules
*nat
:POSTROUTING ACCEPT [0:0]
# Allow traffic from OpenVPN client to eth0
-A POSTROUTING -s 10.8.0.0/8 -o eth0 -j MASQUERADE
COMMIT
# END OPENVPN RULES

Notez que la partie eth0 que vous devez probablement modifier pour refléter le vrai nom de votre interface réseau accessible sur Internet, je l'ai donc mis en évidence. Ensuite, nous activons le transfert dans ufw comme nous l'avons fait dans sysctl :

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

Nous configurons le pare-feu

sudo ufw allow 1194/udp
sudo ufw disable

sudo ufw enable
sudo systemctl start openvpn@server
sudo systemctl status -l openvpn

Si tout s'est bien passé, activez le démarrage d'openvpn au démarrage

sudo systemctl enable openvpn@server

Configuration client

Avec la partie configuration du client, nous utilisons des certificats que nous avons déjà créés, par exemple client100. Nous avons également besoin de fichiers de configuration client

mkdir -p ~/client-configs/files
chmod 700 ~/client-configs/files
cp /usr/share/doc/openvpn/examples/sample-config-files/client.conf ~/client-configs/base.conf

Le fichier que nous avons copié est une configuration de base, il doit donc être modifié.

nano ~/client-configs/base.conf

Et puis trouvez une ligne qui dit à distance. Changez-le également en indiquant l'adresse IP de votre serveur de FQDN.

remote your.serv.ipor.fqdn 1194

Gardez cela, comme reste de l'édition, nous le ferons avec les commandes sed et echo :

sudo sed -i 's/;user nobody/user nobody/g' ~/client-configs/base.conf
sudo sed -i 's/;group nogroup/group nogroup/g' ~/client-configs/base.conf

sudo sed -i 's/ca ca.crt/#ca ca.crt/g' ~/client-configs/base.conf
sudo sed -i 's/cert client.crt/#cert client.crt/g' ~/client-configs/base.conf
sudo sed -i 's/key client.key/#key client.key/g' ~/client-configs/base.conf

sudo echo key-direction 1 >> ~/client-configs/base.conf

Alors qu'est-ce qu'on a fait ici ? Nous définissons d'abord l'utilisateur et le groupe sur personne et sur aucun groupe. Ensuite, nous avons commenté les chemins de certificat, car nous intégrerons les certificats en ligne dans le fichier .ovpn. Ensuite, nous avons ajouté le paramètre key-direction 1.

Script pour créer des configurations client

Pour intégrer la configuration du client, les clés et les certificats dans un seul fichier .ovpn pour faciliter le transfert vers les clients distants, nous allons utiliser un script simple. Allons-y

nano ~/client-configs/make_config.sh

Et puis collez ce pastebin là. Après avoir enregistré cela, nous devons ajouter le bit exécutable, alors exécutez cette commande :

chmod +x ~/client-configs/make_config.sh

Ensuite, nous pouvons facilement créer des fichiers de configuration

cd ~/client-configs
./make_config.sh client100
ls ~/client-configs/files

La syntaxe de la commande est simple, vous devez être dans le répertoire client-configs et exécuter la commande avec un argument indiquant le nom du client que vous avez créé précédemment. Si vous avez besoin de plus de clients, créez plus de certificats client avec un autre nom et réexécutez cette commande. Si tout s'est bien passé, le répertoire client-configs/files devrait contenir le ou les fichiers ovpn. Vous devez les transférer à votre ou vos clients et vous connecter. Je vais le faire avec scp, depuis mon ordinateur portable Fedora, j'ai commandé comme ça

 scp [email protected]:/home/newuser/client-configs/files/client100.ovpn /home/miki/Documents/

De là, vous pouvez le charger sur un téléphone Android avec un câble USB ou via AirDroid, ou sur Windows VM, ou sur un Mac. Pour le gestionnaire de réseau Linux, vous devrez désassembler le fichier

Conclusion

Il s'agit de la configuration du serveur, ensuite nous aurions besoin de nous connecter à partir de différents clients. Pour Android, nous pouvons utiliser OpenVPN Connect, pour Mac Tunnelblick, pour Windows, il existe OpenVPN sur le site officiel et pour Linux, il existe un gestionnaire de réseau. Dans certains des articles suivants, nous couvrirons tout cela.


Ubuntu
  1. Comment installer et configurer le serveur d'accès OpenVPN

  2. Comment configurer un serveur OpenVPN sur Ubuntu 20.04

  3. Comment installer et configurer le serveur DHCP sur Ubuntu 20.04

  4. Comment installer et configurer le serveur Redis dans Ubuntu

  5. Comment installer OpenVPN sur Ubuntu 18.04

Comment configurer OSSEC sur Ubuntu - Partie 2

Comment installer et configurer DHCP sur Ubuntu 18.04

Comment configurer le serveur DNS sur Ubuntu 18.04 / Ubuntu 16.04

Comment configurer OpenVPN sur Ubuntu Server

Comment installer et configurer un serveur OpenVPN sur Ubuntu 22.04

Comment installer le serveur OpenVPN sur Ubuntu 20.04 LTS