OpenVPN Configuration Simple
Pour avoir un accès sécurisé, j'ai débuté l'installation d'OpenVPN en commençant simplement.
Je souhaite avoir accès par l'intermédiaire du VPN, au réseau interne et que le flux HTTP passe par lui.
Sur le réseau local, nous sommes en 192.168.0.0/24 avec un serveur dnsmasq pour gérer les requêtes DNS qui me permettent de faire mes propres entrées.
Donc pour récapituler la machine qui a dnsmasq et OpenVPN sera nommé "Serveur", avec sur le réseau local l'IP 192.168.0.10
On installe OpenVPN suivant sa distribution et on passe à la configuration.
Un HOWTO est disponible sur http://openvpn.net/index.php/open-source/documentation/howto.html#quick
La première chose à faire est de copier les fichiers servant à la configuration dans votre répertoire personnel afin de ne pas perdre les fichiers générés lors de mise à jour, etc.
L'ensemble des commandes s’exécuteront dans
Générer le Certificate Authority (CA) et la clé
Éditer le fichier vars
export KEY_COUNTRY=FR export KEY_PROVINCE=France export KEY_CITY=ville export KEY_ORG=societe export KEY_EMAIL=xxxxxxxxx@xxx.com
Initialiser le PKI.
./clean-all
./build-ca
La commande finale build-ca va construire le CA (certificate d'authorité) et la clé en invoquant les paramètres entrées dans le fichier vars. Le seul paramètre a rentrer et le Common Name (nom de domaine du serveur ou autre).
Générer le certificat et la clé du serveur
Générer le certificat et la clé privé pour le serveur.
Comme dans l'étape précédente, les paramètres sont prédéfinies, Mais lorsque l'on vous demande le Common Name entré "server". Les deux demandes suivantes requiert des réponses positives, "Sign the certificate? [y/n]" and "1 out of 1 certificate requests certified, commit? [y/n]".
Générer un certificat et une clé pour un client
Déterminer une méthode pour nommer les clients
Si vous souhaitez protéger la clé par un mot de passe, utilisé le script build-key-pass.
Lors de la génération, ne pas oubliez d'utiliser pour le Common Name, le même nom que dans l'appel du script et toujours utiliser un nom unique pour chaque client.
Générer les paramètres Diffie Hellman
Output:
Generating DH parameters, 1024 bit long safe prime, generator 2
This is going to take a long time
.................+...........................................
...................+.............+.................+.........
......................................
Copie des fichiers pour le serveur
Création du fichier de configuration pour le serveur
Des exemples de fichier de configuration sont présent dans /usr/share/doc/openvpn/examples/sample-config-files et le placer dans /etc/openvpn/.
Editer donc le fichier /etc/openvpn/server.conf
Quelques possibilités d'options:
- En cas d'utilisation d'Ethernet bridgé, il faut utiliser server-bridge et dev tap au lieu de server et dev tun
- Si le serveur doit écouter sur un port TCP au lieu d'UDP, il faut mettre proto tcp au lieu de proto udp
- Si l'adresse IP virtuelle utilisée doit être différente de 10.8.0.0/24, il faut modifier la directive server. Ne jamais oublier que la plage d'adresse IP virtuelles doit être inutilisée sur les réseaux de chaque côté du VPN.
- Pour que les clients soient capables de s'atteindre à travers le VPN, il faut décommenter la directive client-to-client. Par défaut, les clients ne peuvent atteindre que le serveur.
- Pour augmenter la sécurité, il est possible de décommenter les directives user nobody et group nobody. Diverses options de cryptage et de sécurité peuvent aussi être modifiées. (Le groupe nobody n'existe pas dans ubuntu, il faut donc mettre nogroup)
Pouvoir communiquer avec le réseau interne
push "route 192.168.0.0 255.255.255.0"
Activer l'IP Forwarding dans le noyau
echo 1 > /proc/sys/net/ipv4/ip_forward
Faire passer tout le trafic réseau par le VPN
push "redirect-gateway def1 bypass-dhcp"
Comme on fait passer tout le trafic réseau par le VPN, on utilise pousse la configuration DNS pour le client
(dnsmasq écoute sur l'adresse IP 10.8.0.1)
push "dhcp-option DNS 10.8.0.1"
Après avoir mis toutes ces options, exécuter la commande suivante
iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE
Cette commande fera que le trafic IP sortant du sous-réseau 10.8.0.0/24 vers l’extérieure pourra revenir routé vers le VPN avec la bonne destination.
Ne pas oublier de redémarrer OpenVPN
Création du fichier de configuration pour un client
On va prendre la configuration d'une machine sous winwdows
On installe OpenVPN http://openvpn.net/index.php/open-source/downloads.html
Une nouvelle GUI plus récente est disponible ici, il suffira de copier le fichier dans \bin et de refaire un raccourci.
Dans le répertoire config, copier les fichiers : ca.crt, nomclient.crt, nomclient.key
Copier et modifier le fichier de config présent dans sample-config, client.ovpn dans le repertoire config. Et reproduire la configuration server.
- Placer la directive remote suivant votre configuration remote domain.tld 1194 ou remote IP_EXTERNE 1194
- Définir les noms de fichier
ca ca.crt cert nomclient.crt key nomclient.key
Lancer la GUI d'OpenVPN, et se connecter. Normalement tout devrait fonctionner.
- Connectez-vous ou inscrivez-vous pour publier un commentaire