OpenVPN Bridge/fr
Est-ce que cet article vous a été utile ?
Svp, envisagez de faire un don ou du volontariat.
Merci !
Mainteneur
[1]Daniel B. from Firewall Services
Version
Description
Le Serveur KOOZALI versions 7.4 (obsolète), 8 (obsolète) et 9 disposent d’une contribution de Firewall Services permettant d’obtenir un serveur OpenVPN utilisable facilement, avec une page d'administration dans le gestionnaire du serveur.
Conditions requises
- Vous devez installer et activer la contribution bridge-interface.
- Vous devez installer PHPki/fr pour gérer facilement vos certificats.
Installation
Pour résumer la problématique, il y a 3 paquets à installer.
* bridge-interface : le paquet qui crée un pont entre l'interface interne et une interface TAP. * PHPki : le paquet qui servira à gérer vos certificats. * smeserver-openvpn-bridge : le paquet qui installe le serveur OpenVPN.
Le serveur OpenVPN attribuera des IP de votre réseau local aux clients VPN, ils auront ainsi accès à toutes les ressources accessibles depuis votre réseau local (partages de fichier, intranet, services de mail interne, etc). C’est donc un service de type « site to client » qui ne vous permet pas de relier deux SME Server ensemble (mais l’auteur de cette contribs géniale en a une autre dans ses cartons pour faire cela.)
On y va pour l’installer, ce n’est pas bien compliqué, un grand merci à Daniel (de Firewall Services).…spéciale dédicace.
bridge-interface
On installe le paquet qui va créer l'interface TAP (interface réseau virtuelle).
yum --enablerepo=smecontribs install smeserver-bridge-interface
Pour la plupart des installations les paramètres par défaut suffiront, mais vous pouvez quand même les vérifier.
db configuration show bridge bridge=service bridgeInterface=br0 ethernetInterface=eth0 status=enabled tapInterface=tap0
Au besoin vous avez la page de l’auteur pour modifier cela, je dois reconnaître que je n’en ai pas eu besoin.
PHPki
On va installer maintenant l’interface de gestion des certificats.
yum --enablerepo=smecontribs install smeserver-phpki
puis on lance les services :
expand-template /etc/httpd/conf/httpd.conf expand-template /etc/httpd/pki-conf/httpd.conf sv t /service/httpd-e-smith sv u /service/httpd-pki
smeserver-openvpn-bridge
Et enfin on installe le serveur VPN :
yum --enablerepo=smecontribs install smeserver-openvpn-bridge
Commande et monitoring d'openvpn
Maintenant que le serveur est installé, il nous faut discuter un peu des moyens de le contrôler en ligne de commande cela peut toujours servir…
start
sv u /service/openvpn-bridge
stop
sv d /service/openvpn-bridge
restart
sv t /service/openvpn-bridge
monitorer le serveur OPENVPN en temps réel
tailf /var/log/openvpn-bridge/current
Création des certificats
Il va nous falloir créer le certificat racine qui va permettre de signer tous les autres certificats, aussi pour cela nous utiliserons le menu que vous pouvez voir dans le menu du SME Server (https://[IP-DU-SERVEUR]/server-manager) « Gestion des certificats ».
Ce menu servira donc pour manager, révoquer et toutes les autres opérations qui concerneront des certificats (pas seulement pour OpenVPN…). On vous propose deux formats de certificats.
* PKCS12 (c’est un bundle qui englobe le certificat utilisateur, sa clef privée, et le certificat racine) * PEM (qui peuvent être utilisés par Network-manager)
Certificat racine
À la première sélection du menu, on vous propose de vous occuper du certificat racine. C'est lui qui attestera en tant qu'autorité de certification, la validité de tous les autres certificats.
La deuxième partie est la suivante :
vous pouvez laisser les paramètres par défaut, sauf « Help Document Contact Info » que vous pouvez modifier si vous le souhaitez. Après avoir cliqué sur le bouton « Submit » et avoir patienté quelques instants, vous aurez ceci…
Maintenant, vous êtes en mesure d’utiliser PHPki. L’interface d’administration est disponible sur le gestionnaire du serveur ou directement https://[IP-DU-SERVEUR]/phpki/ca.
Il y a aussi une interface publique, disponible uniquement à partir des réseaux locaux, mais sans mot de passe à l’adresse https://[IP-DU-SERVEUR]/phpki
Ici, les utilisateurs peuvent télécharger le certificat maître CA, ou faire des recherches pour les certificats d’autres utilisateurs (partie publique uniquement bien sûr).
Certificat du serveur
Maintenant, vous devez créer un certificat pour OpenVPN sur le serveur. Pour cela, dans le gestionnaire du serveur, section « Sécurité », le menu « Gestion des certificats » permet d'accéder à l’interface PHPki en anglais. (A vérifier)
Choisir « Create a new certificate ». Ici, vous devrez entrer quelques informations sur le certificat :
- Common Name: c’est le nom du certificat. Vous pouvez entrer ce que vous voulez, par exemple « openvpn-bridge »
- Email address: l’adresse e-mail du contact technique (ce champ n’est pas utilisé, vous pouvez entrer ce que vous voulez tant qu’il s’agit d’une adresse e-mail valide), par exemple admin@domain.tld
- Organization, Department, Locality, State and Country: les champs devraient avoir les valeurs que vous avez entrées lorsque vous avez créé votre PKI. Vous pouvez laisser ces valeurs.
- Password: Ce champ doit être vide. Rappelez-vous que le démon OpenVPN démarre sans intervention humaine lors du démarrage du serveur, donc il faut avoir accès à la clé du certificat sans être invité à entrer un mot de passe.
- Certificate life: Entrez ce que vous voulez, mais rappelez-vous, lorsque le certificat expire, vous devrez en créer un autre, et le mettre à jour dans le menu OpenVPN Bridge de la SME.
- Key size: vous pouvez entrer ce que vous voulez (j’utilise 2048 en général). Le plus grand utilisera un peu plus de puissance processeur lorsque la clé de session sera négociée (à la connexion, et une fois par heure).
- Certificate Use: vous devez utiliser « VPN server only». Ce point est important. Si vous ne choisissez pas ce type de certificats, les clients peuvent être incapables de se connecter.
Voici un exemple de configuration :
Valider en cliquant sur le bouton " Submit request ".
Vous pouvez confirmer votre certificat :
Configuration du serveur OpenVPN
Pour cela, dans le gestionnaire du serveur, section "Configuration", dans le menu OpenVPN-Bridge, cliquer sur le bouton "Configuration des certificats".
Vous avez quelques champs à renseigner :
- URL de mise à jour de la CRL: vous devriez laisser la valeur par défaut : à moins http://localhost:940/phpki/index.php?stage=dl_crl_pem PHPki soit installé sur un autre serveur (ou si vous utilisez un autre outil PKI).
- Certificat d'autorité : vous pouvez mettre ici le certificat racine au format PEM. Vous pouvez l’obtenir dans PHPki, en cliquant sur le lien « Afficher le certificat racine (PEM) » (faites un copier/coller).
- Certificat serveur : vous pouvez mettre ici le certificat du serveur. Vous pouvez l’obtenir dans PHPki, gérer les certificats, cliquez sur le lien de téléchargement correspondant au certificat que vous avez créé pour le serveur (« openvpn-bridge » dans l’exemple), choisissez certificat PEM dans le menu déroulant, le télécharger. Vous pouvez ouvrir ce fichier avec un éditeur de texte.
- Clé privée du serveur : il s’agit de la clé privée associée au certificat du serveur. Pour l’obtenir, suivez les mêmes étapes que ci-dessus, mais choisir « PEM key » dans le menu déroulant au lieu de « PEM Certificate ».
- Paramètres DH : pour obtenir les paramètres DH, cliquez sur « Display the Diffie-Hellman parameters » dans PHPki.
- Clé statique : cette option est facultative. Vous pouvez l’obtenir en utilisant l’option « Display the static pre-shared key » dans PHPki. Notez que si vous entrez cette clé sur le serveur, vous aurez à la déployer sur chaque poste client. (pour ma part, je l’ai fait, no problemo, faite-le).
Un exemple de ce que cela doit rendre :
Une fois les certificats paramétrés, vous devez aller dans le menu server-manager->OpenVPN-Bridge->configuration du service
Dans ce menu vous avez la possibilité :
- de contrôler le serveur VPN (start/stop) ;
- de choisir le mode d’authentification (certificat ou certificat+mot de passe) ;
- de fixer la plage d’IP que le serveur attribuera aux PC qui se connecteront (elles doivent faire partie de votre réseau et ne pas appartenir a la plage attribuée au DHCP).
Configuration du client
Certificat Client
Dans PHPki l’interface d’administration, cliquez sur le lien « Create a new certificate ». Vous allez devoir y remplir certaines informations, qui vous sont propres.
Le mieux étant de choisir un type de certificat en "VPN client Only", car les autres certificats nécessitent un mot de passe qui vous sera demandé obligatoirement à chaque connexion (en plus du mot de passe du compte utilisateur de la SME si il est paramétré).
Vous pouvez jouer sur la durée de vie du certificat pour autoriser l’accès pendant un temps donné, une fois cette période passée, le certificat devra être régénéré.
Une fois validé, votre certificat est créé, et vous pouvez en disposer dans le menu « manage certificates » de phpki.
Client Linux Debian Gnome
Texte copié à partir de la page de Stephdl [2] sur la configuration de network-manager, avec son aimable autorisation.
Les écrans sont issus du Gnome Classic.
Network-Manager (N-M) est un GUI (Graphical User Interface) originellement développé par Red Hat Entreprise Linux, pour gérer les interfaces réseaux sous Linux… Cela va de votre carte filaire à celle de votre wifi, en passant par les réseaux 3G et bien sûr la gestion des VPN (et pas seulement OPENVPN).
Bien évidemment, ce post pourra resservir pour tous les autres qui ne connaissent pas la SME, les pauvres… :) bon c’est quand même du Linux.
Voici le fichier de configuration que nous pouvons télécharger depuis le gestionnaire du serveur Koozali-SME (dans le menu Configuration/OpenVPN-Bridge/Afficher_un_fichier_de_configuration_fonctionnel_pour_les_clients), pour une authentification avec échange de certificats et de mots de passe. Il est à noter que vous pouvez dire à la SME de n’utiliser que les certificats…
en rouge et bleu les paramètres que vous devez renseigner dans N-M.
Il va nous falloir installer les paquets qui permettent à N-M de gérer l’openvpn, vous pouvez faire une recherche graphique, sinon, il vous faudra installer ces paquets pour Gnome :
apt-get install network-manager-openvpn network-manager-openvpn-gnome
Pour aller plus en avant, il nous faut obtenir les 4 certificats que la Sme vous a fournis dans la gestion intégrée des certificats (PHPki) :
le certificat Racine ou ca, en général nommé ca.pem le certificat de l’utilisateur, en général user.pem la clef privée de l’utilisateur, en général user-key.pem une clef statique prépartagée, en général takey.pem
Mettre ces 4 certificats sur une clé USB, par exemple, pour pouvoir les installer sur la machine cliente.
La suite en image…
Debian Stretch (v.9) Gnome Classic
ATTENTION, CE PARAGRAPHE N'EST PAS FINI.
1. Aller dans Applications/Outils système/Outils réseau Si vous avez déjà un réseau de configuré, vous pouvez arriver à cette fenêtre :
2. Cliquer sur le bouton « + » en bas à gauche.
3. Choisir OpenVPN, ce qui ouvre la fenêtre suivante.
- Donner un nom à votre connexion VPN dans le champ «Nom» ;
- indiquer si vous souhaitez mettre la connexion à disposition des autres utilisateurs en cochant la case ;
- mettre l'adresse IP de votre serveur suivie de «:1194» dans le champ «Passerelle» ;
- choisir le type d'authentification à «Mot de passe avec certificats (TLS)» ;
- entrer votre nom d'utilisateur et le mot de passe associé ;
- télécharger les certificats :
-- le certificat de l'utilisateur est de type : «utilisateur.pem» ;
-- le certificat du CA est du type : «utilisateur-bundle-root.pem» ;
-- la clé privée est du type : «utilisateur-key.pem».
Même si on n'utilise pas de «mot de passe pour la clé privée», il faut cliquer sur la petite icône à droite du champ pour sélectionner l'option «The password is not required» sinon, il n'est pas possible de sauvegarder la configuration, ce qu'il faut faire avant de passer à la phase suivant en cliquant sur le bouton «Ajouter» ou Appliquer».
Voir ci-dessous, un exemple de ce que cela doit donner :
4. Si tout semble correct, appuyer sur le bouton «Appliquer» en bas à droite pour enregistrer la configurtaion, puis sur le bouton «Advanced». Une fenêtre s'ouvre avec 4 onglets. Cliquer sur l'onglet «Authentification TLS»
ATTENTION : la procédure n'est pas terminée. Sera terminée prochainement.
Debian Jessie (v.8) XFCE
Aller dans «Menu des applications/Paramètres/Connexions réseau». Cette fenêtre s'ouvre :
Cliquer sur «+Ajouter». Une nouvelle fenêtre s'ouvre et cliquez sur la fenêtre déroulante pour valider le choix «OpenVPN» :
Puis cliquer sur le bouton «Créer...».
La suite de la procédure est identique à la procédure pour Wheezy ci-dessous.
Debian Wheezy (v.7) Gnome Classic
Faites un clic gauche sur N-M, et sélectionner connexions VPN, puis configurez le VPN… Ensuite ajouter
Il vous faut choisir quel type de VPN vous voulez paramétrer
et renseigner toutes les variables soulignées en rouge dans le fichier de configuration. Sélectionner les 3 certificats. Ne rien mettre dans la ligne Mot de passe de la clé privée puisqu'il n'y en a pas eu de créé lors de la génération de la clé. Ensuite cliquer sur Avancé...
Renseigner comme ci-dessous, puis aller sur authentification TLS
on renseigne la takey.pem, avec le sens de la clef (très important), et on valide
puis on va vers IPV4
on sélectionne Routes
et on coche la croix au bon endroit… En fait cela va dire au client openVPN, de ne pas diriger toutes les requêtes vers le serveur VPN distant, autrement dit, vous allez pouvoir avoir un accès internet (mail, web, etc…etc) en même temps que la connexion VPN.
That’s all folks, vous validez c’est fini.
Il ne vous reste plus qu’à faire un clic gauche sur N-M, puis connexions VPN, et utiliser le VPN que vous venez de créer.
Un des intérêts de l’open-vpn en mod Tap, est que vous avez une adresse IP du réseau sur lequel vous vous connectez, autrement dit vous faites partie du Groupe de travail Samba ou du domaine windows. Cependant il peut arriver que, lorsque vous demandez à browser le réseau pour parcourir les ordinateurs, et surtout les dossiers partagés, eh bien, que ce soit le vide absolu, vous êtes tout seul :)
La solution…..relancer samba pour analyser les ordinateurs présents : en root /etc/init.d/samba restart ou service samba restart
Client Windows 10
Pour les systèmes Windows, vous devrez télécharger l'exécutable OpenVPN à l'adresse https://openvpn.net/index.php/download/community-downloads.html. OpenVPN contient un GUI Windows dans l'installeur. Au 1er octobre 2017, la version stable est 2.2.4.
Sur Windows, le répertoire de configuration pour OpenVPN est C:\Program Files\OpenVPN\config. Vous pouvez déposer là tous les fichiers nécessaires, ou créer des sous-répertoires si vous voulez configurer plusieurs connexions. Vous pouvez aussi déposer vos fichiers dans les répertoires %utilisateur\OpenVPN\config.
Déposer, soit dans le répertoire de configuration, soit dans un sous-répertoire, le fichier PKCS#12 que vous avez téléchargé précédemment, et la clé secrète partagée (takey, je suppose, ndt) si vous en utilisez une sur le serveur. Puis, créer un fichier texte et changer l'extension en .ovpn (le nom n'est pas important). L'éditer avec votre éditeur de texte favori. Aller maintenant dans le panneau d'OpenVPN-Bridge et cliquer sur le lien « Afficher un fichier de configuration client fonctionnel ». Copier et coller-le dans votre fichier de configuration (.ovpn), et changer uniquement la directive pkcs12 pour qu'elle corresponde à votre nom de certificat. Sauvegarder ce fichier. Maintenant votre client devrait pouvoir se connecter avec l'interface graphique utilisateur OpenVPN.
Client Apple Mac
Installer tunnelblick
Cocher la case « tout le trafic IPv4 à travers le VPN ».
- Si cette option est cochée, Tunnelblick demandera à OpenVPN de router tout le trafic IPv4 à travers le serveur VPN.
- Si cette option n'est pas cochée, par défaut OpenVPN utilisera le VPN uniquement pour le trafic qui est destiné au réseau du VPN. Tout le reste du trafic utilisera la connexion internet normale sans passer par le VPN. Le comportement par défaut de OpenVPN peut être modifié dans la configuration OpenVPN ou dans le serveur VPN et peut faire que tout le trafic IPv4 soit routé vers le serveurVPN comme si cette option était cochée.
Fichier de configuration
Voici un fichier de configuration qui fonctionne mais dont la sécurité/sûreté n'a pas été testée.
client dev tap proto udp remote MonServeur.com 1194 resolv-retry infinite nobind auth-user-pass persist-key persist-tun pkcs12 MaCle.p12 tls-client ns-cert-type server tls-auth takey.pem 1 verb 3
Client Android
Vous ne pouvez pas utiliser le mode TAP, et donc openvpn-bridge, avec Android.
S'il vous plaît, lire ceci pour plus d'information :
https://openvpn.net/faq/why-does-the-app-not-support-tap-style-tunnels/
Vous pouvez utiliser openvpn-routed :
Solutions de contournement et problèmes connus
Si vous migrez de SME 8 à SME 9 et que vous ne parvenez pas à vous connecter après avoir correctement migré vos certificats, cela peut être lié à un algorithme insuffisamment sécurisé. Les notes de publication de CentOS 6.9 indiquent que "La prise en charge des protocoles et algorithmes cryptographiques non sécurisés a été abandonnée. Cela affecte l'utilisation des paramètres MD5, SHAO, RC4 et DH de moins de 1024 bits". Bien sûr, la vraie solution serait de migrer tous vos certificats vers un meilleur algorithme.
Bogues
Ouvrir, svp, des bogues dans la section SME-Contribs dans bugzilla et sélectionner le composant smeserver-openvpn-bridge ou utiliser ce lien.
ID | Product | Version | Status | Summary (6 tasks) ⇒ |
---|---|---|---|---|
12500 | SME Contribs | 10.0 | CONFIRMED | update default config file |
12437 | SME Contribs | 10.0 | CONFIRMED | initial install unable to connect after configuration |
12435 | SME Contribs | 10.0 | CONFIRMED | failure to download crl |
10914 | SME Contribs | 9.2 | UNCONFIRMED | OpenVPN kicking connections generate an error and does not disconnect |
10913 | SME Contribs | 9.2 | UNCONFIRMED | OpenVPN connections status showing time in non-human readable format |
6914 | SME Contribs | 8.0 | UNCONFIRMED | Can not access internet after switch serveronly to servergateway and back again |