informatique:logiciels:openvpn
Differences
This shows you the differences between two versions of the page.
| Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
| informatique:logiciels:openvpn [2016/10/15 16:39] – [Partie réseau] pteu | informatique:logiciels:openvpn [2018/08/20 12:49] (current) – [Générer les certificats] pteu | ||
|---|---|---|---|
| Line 3: | Line 3: | ||
| ======OpenVPN====== | ======OpenVPN====== | ||
| - | OpenVPN est un logiciel libre multiplateforme permettant de créer un tunnel VPN chiffré TLS ce qui signifie qu'il utilise TCP ou UDP (niveau 4). | + | {{: |
| - | **Ce mode opératoire décrit la mise en place d'un tunnel routé avec certificats entre un serveur Linux (Ubuntu ou Debian 8) plusieurs clients, peu importe leur système d' | + | [[https:// |
| + | |||
| + | **Ce mode opératoire décrit la mise en place d'un tunnel routé avec certificats entre un serveur Linux (Ubuntu ou Debian 8) et plusieurs clients, peu importe leur système d' | ||
| Avant de commencer il faut savoir qu'il existe 2 types de tunnels : | Avant de commencer il faut savoir qu'il existe 2 types de tunnels : | ||
| Line 15: | Line 17: | ||
| * par **certificat** : plus long à mettre en place, l' | * par **certificat** : plus long à mettre en place, l' | ||
| - | La méthode consiste à générer toutes les clés sur le serveur Linux (il jouera le rôle de CA) pour signer toutes les clés ; puis on installera ces clés sur chaque machine. | + | Si comme la plupart des gens no ne possède pas de CA, la méthode consiste à générer toutes les clés sur le serveur Linux (il jouera le rôle de CA) pour signer toutes les clés ; puis on installera ces clés sur chaque machine. |
| Line 31: | Line 33: | ||
| **OpenVPN** contient des outils permettant de générer facilement des couples de clés. Ils sont situés dans le répertoire **/ | **OpenVPN** contient des outils permettant de générer facilement des couples de clés. Ils sont situés dans le répertoire **/ | ||
| <code bash> | <code bash> | ||
| - | mkdir / | + | mkdir / |
| cp -R / | cp -R / | ||
| # alternative pour Debian 8 : | # alternative pour Debian 8 : | ||
| - | cp -a /usr/share/eay-rsa / | + | cp -a /usr/share/easy-rsa / |
| # puis dans tous les cas, aller dans le répertoire copié | # puis dans tous les cas, aller dans le répertoire copié | ||
| Line 158: | Line 160: | ||
| D' | D' | ||
| <code bash> | <code bash> | ||
| - | # envoyer cette route aux clients (réseau de votre LAN) | + | # envoyer cette route aux clients (pour qu'ils puissent accéder au réseau de votre LAN) |
| push "route 192.168.2.0 255.255.255.0" | push "route 192.168.2.0 255.255.255.0" | ||
| # le réseau utilisé pour les tunnels | # le réseau utilisé pour les tunnels | ||
| - | # NB : OpenVPN utilise l'IP .1 du premier /30 pour son IP à lui | + | # NB : OpenVPN utilise l'IP .1 du premier /30 pour lui |
| # les /30 suivants sont pour chaque tunnel | # les /30 suivants sont pour chaque tunnel | ||
| # ex : 192.168.3.4/ | # ex : 192.168.3.4/ | ||
| Line 168: | Line 170: | ||
| # spécification de l' | # spécification de l' | ||
| - | cipher AES-128-CBC | + | # pour lister tous les algos possibles : " |
| + | # (NB : '' | ||
| + | cipher AES-256-CBC | ||
| # activer la communication entre les clients | # activer la communication entre les clients | ||
| Line 244: | Line 248: | ||
| verb 3 | verb 3 | ||
| </ | </ | ||
| - | NB : avec OpenVPN Connect, le fichier de conf doit être renommé pour avoir l' | + | NB : avec OpenVPN Connect, le fichier de conf doit avoir l' |
| + | ====Intégrer les certificats dans le fichier de configuration==== | ||
| + | |||
| + | Plutôt que de pointer vers des fichiers externes, openvpn permet d' | ||
| + | <code bash> | ||
| + | #ca / | ||
| + | <ca> | ||
| + | -----BEGIN CERTIFICATE----- | ||
| + | MIIEoTCCA4mgAwIBAgIJAKWLtfNAkVCcMA0GCSqGSIb3DQEBCwUAMIGRMQswCQYD | ||
| + | [blabla...] | ||
| + | +/ | ||
| + | 9KljFHVPKEAFhZzokOREYCG+8yVA5F6Uk2miMw6ZVGDgbrYvWA== | ||
| + | -----END CERTIFICATE----- | ||
| + | </ca> | ||
| + | </ | ||
| + | |||
| + | Cela simplifie beaucoup la mise en œuvre, mais possède l' | ||
| =====Conf avancée===== | =====Conf avancée===== | ||
| Sur le serveur, on peut spécifier une configuration dédiée à un seul client en modifiant ainsi la conf : | Sur le serveur, on peut spécifier une configuration dédiée à un seul client en modifiant ainsi la conf : | ||
| <code bash> | <code bash> | ||
| - | # indique ou sont situes les fichiers | + | # indique ou sont situes les fichiers |
| client-config-dir / | client-config-dir / | ||
| + | # interdit la connexion des clients qui n'ont pas de fichier dédié | ||
| # | # | ||
| </ | </ | ||
| - | Ensuite place la config dédiée dans fichier portant le nom du client (le Common Name de son certificat). | + | Ensuite place la config dédiée dans fichier portant le nom du client (le **Common Name** (CN) de son certificat). |
| * '' | * '' | ||
| <code bash> | <code bash> | ||
| + | # son IP réservée 192.168.3.10 ainsi que l'IP du tunnel côté serveur : .9 | ||
| ifconfig-push 192.168.3.10 192.168.3.9 | ifconfig-push 192.168.3.10 192.168.3.9 | ||
| + | # une route pour que le client puisse avoir accès à un réseau connecté au serveur | ||
| + | # sa passerelle sera l'IP du tunnel du serveur (.9) | ||
| push "route 192.168.2.0 255.255.255.0" | push "route 192.168.2.0 255.255.255.0" | ||
| + | |||
| + | # LAN pour que le serveur accède au réseau du client (via 192.168.3.10) | ||
| + | iroute 192.168.100.0 255.255.255.0 | ||
| + | # NB : on doit ajouter également dans la conf serveur : "route 192.168.100.0 255.255.255.0" | ||
| </ | </ | ||
| - | De cette façon on attribue au client toto l'IP 192.168.3.10 ; sa gateway (l'autre bout du tunnel) sera 192.168.3.9 | + | **Le driver TAP sous Windows impose |
| - | * '' | + | On peut couper la connexion si inactivité du client avec l'option |
| - | **Le driver TAP sous Windows impose | + | |
| - | Sachant que, dans le cas d'un serveur sous DD-WRT, ce dernier ne permet | + | '' |
| - | Explications : | + | '' |
| - | * créer | + | |
| - | On peut couper la connexion si inactivité du client avec l'option | + | '' |
| - | '' | + | =====Intégration système===== |
| + | |||
| + | On va s'atteler à configurer les utilitaires du sytème pour une bonne intégration d'openvpn. | ||
| + | |||
| + | ====Démarrage automatique==== | ||
| + | |||
| + | Pour lancer openvpn automatiquement au démarrage de la machine : | ||
| + | <code bash> | ||
| + | update-rc.d openvpn defaults | ||
| + | </ | ||
| + | |||
| + | ====syslog==== | ||
| + | |||
| + | Pour orienter les log du daemon openvpn, on peut définir l'option idoine ('' | ||
| + | <code bash> | ||
| + | # Create a template for the vpn log location | ||
| + | $template | ||
| + | |||
| + | # Save log events where the programname starts with ovpn like ovpn-server to the | ||
| + | # location mentioned in the template | ||
| + | : | ||
| + | |||
| + | # Stop processing ovpn-* log events | ||
| + | : | ||
| + | </ | ||
| + | |||
| + | Relancer ensuite le syslog : | ||
| + | <code bash> | ||
| + | systemctl restart rsyslog | ||
| + | </ | ||
| + | |||
| + | ====logrotate==== | ||
| + | |||
| + | Une configuration classique, à déposer dans ''/ | ||
| + | <code bash> | ||
| + | / | ||
| + | { | ||
| + | rotate 12 | ||
| + | size 500M | ||
| + | monthly | ||
| + | missingok | ||
| + | notifempty | ||
| + | delaycompress | ||
| + | compress | ||
| + | copytruncate | ||
| + | } | ||
| + | </ | ||
| + | |||
| + | ====fail2ban==== | ||
| + | |||
| + | On déclare le fichier à surveiller dans en créant un ''/ | ||
| + | <code bash> | ||
| + | [openvpn] | ||
| + | enabled = true | ||
| + | protocol = udp | ||
| + | port = 5594 | ||
| + | filter | ||
| + | logpath = / | ||
| + | </ | ||
| + | |||
| + | Et on défini les filtres dans ''/ | ||
| + | <code bash> | ||
| + | [Definition] | ||
| + | failregex = < | ||
| + | < | ||
| + | < | ||
| + | </ | ||
| Line 281: | Line 373: | ||
| * '' | * '' | ||
| * '' | * '' | ||
| - | * la commande | + | * '' |
| + | * '' | ||
| =====Liens===== | =====Liens===== | ||
| + | * Documentation officielle : [[https:// | ||
| * installation d' | * installation d' | ||
| * [[http:// | * [[http:// | ||
| Line 292: | Line 387: | ||
| * tunnel routé sous Ubuntu : http:// | * tunnel routé sous Ubuntu : http:// | ||
| * [[http:// | * [[http:// | ||
| + | * Pour faire fonctionner le serveur OpenVPN de la Freebox Révolution avec le client OpenVPN : [[https:// | ||
| + | <code bash> | ||
| + | topology subnet | ||
| + | # copier/ | ||
| + | ifconfig 192.168.27.65 255.255.255.224 | ||
| + | # empêche d' | ||
| + | pull-filter ignore " | ||
| + | # ip de l' | ||
| + | route-gateway 192.168.27.94 | ||
| + | </ | ||
informatique/logiciels/openvpn.1476549572.txt.gz · Last modified: 2016/10/15 16:39 by pteu