Configurer votre propre réseau privé avec OpenVPN
Commencez en installant OpenVPN:
1 2 3 |
apt-get install openvpn cp -r /usr/share/doc/openvpn/examples/easy-rsa/ /usr/share/doc/openvpn/examples/sample-config-files/server.conf.gz /etc/openvpn |
Les valeurs par défaut pour vos clés ne sont pas exactement plus en sécurité, pour résoudre cela il faut ouvrir /etc/openvpn/easy-rsa/2.0/vars avec votre éditeur de texte favori et modifier la ligne suivante:
1 |
export KEY_SIZE=4096 |
Ensuite, veiller à ce que les valeurs sont chargées dans votre session en cours, nettoyer les clés éventuellement existantes, et de générer votre autorité de certification:
1 2 3 |
cd /etc/openvpn/easy-rsa/2.0source ./vars ./clean-all ./build-ca |
Vous serez invité à entrer des informations. Facilitez vous la vie en fournissant des informations sur votre serveur, par exemple, où il se trouve et ce que le nom de domaine complet est / sera. Ceci est utile lorsque vous avez des problèmes de débogage:
1 2 3 4 5 6 7 8 |
Country Name (2 letter code) [US]:NL State or Province Name (full name) [CA]:- Locality Name (eg, city) [SanFrancisco]:Vultr Datacenter NL Organization Name (eg, company) [Fort-Funston]:- Organizational Unit Name (eg, section) [changeme]:- Common Name (eg, your name or your server's hostname) [changeme]:yourserver1.yourdomain.tld Name [changeme]:- Email Address [mail@host.domain]:youraddress@yourdomain.tld |
1 |
./build-dh |
Important: L’accumulation de dh commande est un processus relativement complexe qui peut prendre jusqu’à dix minutes, en fonction des ressources de votre serveur.
Pour améliorer encore la sécurité de cette connexion, nous allons générer un secret statique qui doit être réparti entre tous les clients:
1 2 |
mkdir /etc/openvpn/keys openvpn --genkey --secret /etc/openvpn/keys/ta.key |
Maintenant, vous pouvez générer la clé pour le serveur:
1 |
./build-key-server server1 |
Cette commande vous demandera quelques informations:
1 2 3 4 5 6 7 8 |
Country Name (2 letter code) [US]:NL State or Province Name (full name) [CA]:- Locality Name (eg, city) [SanFrancisco]:Vultr Datacenter NL Organization Name (eg, company) [Fort-Funston]:- Organizational Unit Name (eg, section) [changeme]:- Common Name (eg, your name or your server's hostname) [server1]:yourserver1.yourdomain.tld Name [changeme]:- Email Address [mail@host.domain]:youraddress@yourdomain.tld |
La dernière étape consiste à signer la demande de certificat qui a été tout simplement généré avec la clé du CA:
1 |
1 out of 1 certificate requests certified, commit? [y/n]y |
Copiez les clés et les certificats nécessaires dans un dossier distinct:
1 2 3 4 |
cd /etc/openvpn/easy-rsa/2.0/keys cp dh4096.pem ca.crt server1.crt server1.key /etc/openvpn/keys/ chmod 700 /etc/openvpn/keys chmod 600 /etc/openvpn/keys/* |
Maintenant, pour la configuration, décompressez-le …
1 2 |
cd /etc/openvpn gunzip server.conf.gz |
… Et ouvrir la résultante server.conf avec votre éditeur de texte favori. La configuration devrait ressembler à ceci:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
port 1194 proto udp dev tun ca keys/ca.crt cert keys/server1.crt key keys/server1.key dh keys/dh4096.pem server 10.8.100.0 255.255.255.0 ifconfig-pool-persist ipp.txt # Uncomment this if you have multiple clients # and want them to be able to see each other ;client-to-client keepalive 10 120 tls-auth keys/ta.key 0 tls-cipher DHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES256-SHA256:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES128-SHA256:DHE-RSA-CAMELLIA256-SHA:DHE-RSA-AES256-SHA:DHE-RSA-CAMELLIA128-SHA:DHE-RSA-AES128-SHA:CAMELLIA256-SHA:AES256-SHA:CAMELLIA128-SHA:AES128-SHA cipher AES-256-CBC auth SHA384 comp-lzo user nobody group nogroup persist-key persist-tun verb 3 mute 20 |
Après avoir redémarré le service que vous devriez regarder votre journal :
1 |
service openvpn restart && tail -f /var/log/syslog |
Il ne nous reste plus qu’a crée le fichier de configuration de nôtre client par exemple server2:
1 2 3 |
cd /etc/openvpn/easy-rsa/2.0 source ./vars ./build-key server2 |
Encore une fois, vous serez invité à l’information:
1 2 3 4 5 6 7 8 9 10 11 |
Country Name (2 letter code) [US]:FR State or Province Name (full name) [CA]:- Locality Name (eg, city) [SanFrancisco]:Vultr Datacenter FR Organization Name (eg, company) [Fort-Funston]:- Organizational Unit Name (eg, section) [changeme]:- Common Name (eg, your name or your server's hostname) [server2]:yourserver2.yourdomain.tld Name [changeme]:- Email Address [mail@host.domain]:youraddress@yourdomain.tld Une fois les certificats crée on peut les mettre dans un répertoire: Mkdir /etc/openvpn/clientconf cp /etc/openvpn/keys/ca.crt server2.crt server2.key ta.key /etc/openvpn/clientconf |
On profite par la même occasion de créer le fichier de configuration de nôtre client:
nano /etc/openvpn/clientconf/server2.conf et colle ce qu’il y a dessous:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
client dev tun proto udp remote yourserver yourport resolv-retry infinite nobind user nobody group openvpn persist-key persist-tun ca keys/ca.crt cert keys/server2.crt key keys/.key ns-cert-type server tls-auth keys/ta.key 1 tls-cipher DHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES256-SHA256:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES128-SHA256:DHE-RSA-CAMELLIA256-SHA:DHE-RSA-AES256-SHA:DHE-RSA-CAMELLIA128-SHA:DHE-RSA-AES128-SHA:CAMELLIA256-SHA:AES256-SHA:CAMELLIA128-SHA:AES128-SHA cipher AES-256-CBC auth SHA384 remote-cert-tls server comp-lzo verb 3 mute 20 |
Maintenant, vous devez transférer les fichiers nécessaires à votre server2, de préférence chiffré:
1 2 3 4 |
cd /etc/openvpn/clientconf tar -cf vpn.tar ca.crt server2.crt server2.key ta.key client.conf scp vpn.tar yourusername@server2:~/ rm vpn.tar |
Il ne reste plus qu’a installer openvpn sur votre pc où votre iphone et utiliser les fichiers pour vous connecter à votre serveur et vous aurez votre propre réseau privé avec OpenVP.
Plus d’info en anglais right there –> Dans le prochaine épisodes nous verrons comment mettre notre certificat sur un iphone ou ipad parcequ’il faut que tout soit dans un seul fichier..
Configurer votre propre réseau privé avec OpenVPN c’est fait 🙂