braveo:docinstallsrvopenvpn
Différences
Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentesRévision précédente | |||
braveo:docinstallsrvopenvpn [2015/03/16 20:48] – [À l'attaque] benvii | braveo:docinstallsrvopenvpn [2024/04/16 22:20] (Version actuelle) – modification externe 127.0.0.1 | ||
---|---|---|---|
Ligne 1: | Ligne 1: | ||
+ | ===== Openvpn ===== | ||
+ | |||
+ | ==== Pré-requis ==== | ||
+ | |||
+ | Une Debian toute fraiche. | ||
+ | |||
+ | ==== À l' | ||
+ | Bon comme d' | ||
+ | |||
+ | [[http:// | ||
+ | |||
+ | [[http:// | ||
+ | |||
+ | [[http:// | ||
+ | |||
+ | Nous avons repris le tutoriel [[http:// | ||
+ | |||
+ | Nous installons openvpn | ||
+ | aptitude install openvpn | ||
+ | |||
+ | Ensuite nous créons des certificats | ||
+ | Ces certificats vont servir pour identifier le client et le serveur | ||
+ | cp -R / | ||
+ | |||
+ | < | ||
+ | |||
+ | nous placons dans ce nouveau repertoir | ||
+ | cd / | ||
+ | |||
+ | Nous renseignons le fichiers vars | ||
+ | vi vars | ||
+ | |||
+ | En lui mettant a la fin | ||
+ | export KEY_COUNTRY=" | ||
+ | export KEY_PROVINCE=" | ||
+ | export KEY_CITY=" | ||
+ | export KEY_ORG=" | ||
+ | export KEY_EMAIL=" | ||
+ | |||
+ | nous pouvons exécuter ce fichier | ||
+ | . ./vars | ||
+ | |||
+ | <note important> | ||
+ | Vous pouvez enlever les clés que dans le cas d'une installation neuve ou si vous voulez tout effacer. | ||
+ | </ | ||
+ | Nous donnons un petit coup de balai : | ||
+ | ./clean-all | ||
+ | |||
+ | =====Création de l' | ||
+ | Le script suivant permet de créer dans « keys » le certificat principal du serveur « ca.crt | ||
+ | ./build-ca | ||
+ | |||
+ | et renseigner les champs demandé comme cela | ||
+ | Country Name (2 letter code) [FR]: | ||
+ | State or Province Name (full name) [BRETAGNE]: | ||
+ | Locality Name (eg, city) [BREST]: | ||
+ | Organization Name (eg, company) [maison du libre]: | ||
+ | Organizational Unit Name (eg, section) []: | ||
+ | Common Name (eg, your name or your server' | ||
+ | Email Address [contact@mdl29.net]: | ||
+ | |||
+ | ===== Création du certificat Serveur(openvpn c'est son petit nom) ===== | ||
+ | Le script suivant permet de créer dans « keys » le certificat « openvpn.crt » et la clé « openvpn.key » pour le serveur VPN nommé par exemple «openvpn » : | ||
+ | |||
+ | ./ | ||
+ | |||
+ | que vous renseignez comme cela | ||
+ | countryName | ||
+ | stateOrProvinceName | ||
+ | localityName | ||
+ | organizationName | ||
+ | commonName | ||
+ | emailAddress | ||
+ | |||
+ | ===== Création des certificats clients | ||
+ | |||
+ | Le script suivant permet de créer dans ./ | ||
+ | |||
+ | cd / | ||
+ | . ./vars | ||
+ | ./build-key jean.dugenoux | ||
+ | |||
+ | et le renseigner comme cela | ||
+ | Country Name (2 letter code) [FR]: | ||
+ | State or Province Name (full name) [BRETAGNE]: | ||
+ | Locality Name (eg, city) [BREST]: | ||
+ | Organization Name (eg, company) [maison du libre]: | ||
+ | Organizational Unit Name (eg, section) []: | ||
+ | Common Name (eg, your name or your server' | ||
+ | Email Address [contact@mdl29.net]:' | ||
+ | |||
+ | < | ||
+ | |||
+ | ===== Création du paramètre Diffie Hellman ===== | ||
+ | |||
+ | Le script suivant permet de créer dans « keys » le fichier « dh1024.pem » : | ||
+ | |||
+ | ./build-dh | ||
+ | |||
+ | Résumé des certificats et clés créés précédemment dans « keys » | ||
+ | |Emplacement du fichier | ||
+ | |Serveur de certification (CA) OpenSSL| Certificat |ca.crt | ||
+ | |Serveur de certification (CA) OpenSSL| Clé | ||
+ | |Serveur OpenVPN | ||
+ | |Serveur OpenVPN | ||
+ | |paramètre Diffie Hellman | ||
+ | |jean.dugenoux | ||
+ | |jean.dugenoux | ||
+ | |||
+ | =====Mise en place des certificats et des clés===== | ||
+ | |||
+ | concernant le serveur OpenVPN, le plus simple est de copier les 4 fichiers dans le dossier « / | ||
+ | cp ./ | ||
+ | cp ./ | ||
+ | cp ./ | ||
+ | cp ./ | ||
+ | |||
+ | =====Création d’un utilisateur avec des droits limités pour OpenVPN===== | ||
+ | |||
+ | Pour limiter les risques d’attaques sur OpenVPN, il est important que le processus d’OpenVPN fonctionne sur un utilisateur n’ayant aucun droit sur le système. | ||
+ | |||
+ | Souvent, l’utilisateur « nobody | ||
+ | groupadd openvpn | ||
+ | useradd -d /dev/null -g openvpn -s /bin/false openvpn | ||
+ | |||
+ | =====Configuration du Serveur OpenVPN ===== | ||
+ | <note important> | ||
+ | Nous pouvons configurer sur deux protocoles en tcp, et en udp. | ||
+ | Les performances réseaux sont très largement meilleurs en UDP. | ||
+ | Toutefois dans les entreprises, | ||
+ | Ce n'est pas la panacée car dans les logs de ces équipements nous voyons très clairement que vous connectez en 443 sur l'ip du serveur vpn. mais ça permet de passer | ||
+ | </ | ||
+ | |||
+ | |||
+ | ==== Openvp En UDP ==== | ||
+ | |||
+ | Par défaut OpenVPN est fourni avec plusieurs fichiers d’exemples enregistrés dans le dossier : | ||
+ | / | ||
+ | |||
+ | Pour configurer le serveur, je suis parti du fichier d’exemple « server.conf.gz », qu’il faut donc décompresser et mettre en place dans « / | ||
+ | cd / | ||
+ | gunzip server.conf.gz | ||
+ | cp server.conf / | ||
+ | |||
+ | Il suffit ensuite d’adapter ce fichier en fonction de nos besoins. | ||
+ | ;Port en écoute utilisé pour la connexion VPN | ||
+ | port 1194 | ||
+ | | ||
+ | ;Protocole utilisé (Le protocole udp est plus performant que le tcp) | ||
+ | proto udp | ||
+ | | ||
+ | ;Type d' | ||
+ | dev tun | ||
+ | | ||
+ | ;Nom des fichiers servant à l' | ||
+ | ca ca.crt | ||
+ | cert openvpn.crt | ||
+ | key openvpn.key | ||
+ | dh dh1024.pem | ||
+ | | ||
+ | ;Adresse du réseau virtuel (Le serveur aura l' | ||
+ | server 10.8.3.0 255.255.255.0 | ||
+ | | ||
+ | ;Cette ligne ajoute sur le client la route du réseau du serveur | ||
+ | push "route 192.168.0.0 255.255.255.0" | ||
+ | | ||
+ | ;Ces lignes indiquent aux clients l' | ||
+ | push " | ||
+ | push " | ||
+ | push " | ||
+ | | ||
+ | # Cette ligne permet aux clients de voire les autres clients | ||
+ | ; | ||
+ | | ||
+ | keepalive 10 120 | ||
+ | | ||
+ | ;Cette ligne active la compression | ||
+ | comp-lzo | ||
+ | | ||
+ | ;Ces lignes indiquent un user et un group particulier pour le processus | ||
+ | user openvpn | ||
+ | group openvpn | ||
+ | | ||
+ | ;Ces lignes permettent de rendre persistante la connexion | ||
+ | persist-key | ||
+ | persist-tun | ||
+ | | ||
+ | status openvpn-status.log | ||
+ | | ||
+ | | ||
+ | | ||
+ | # Fix MTU problems | ||
+ | mssfix 1300 | ||
+ | | ||
+ | ;Cette ligne permet d' | ||
+ | verb 1 | ||
+ | # ces lignes definiseent les fichiers le log | ||
+ | status / | ||
+ | log-append / | ||
+ | | ||
+ | |||
+ | <note important> | ||
+ | </ | ||
+ | |||
+ | Pour cela, il suffit de créer le fichier / | ||
+ | vi / | ||
+ | |||
+ | et d’y ajouter les directives suivantes : | ||
+ | |||
+ | / | ||
+ | rotate 4 | ||
+ | daily | ||
+ | copytruncate | ||
+ | compress | ||
+ | missingok | ||
+ | notifempty | ||
+ | } | ||
+ | ==== Openvp En TCP IP ==== | ||
+ | |||
+ | Par défaut OpenVPN est fourni avec plusieurs fichiers d’exemples enregistrés dans le dossier : | ||
+ | / | ||
+ | |||
+ | Pour configurer le serveur, je suis parti du fichier d’exemple « server.conf.gz », qu’il faut donc décompresser et mettre en place dans « / | ||
+ | cd / | ||
+ | gunzip server.conf.gz | ||
+ | cp server.conf / | ||
+ | |||
+ | Il suffit ensuite d’adapter ce fichier en fonction de nos besoins. | ||
+ | ;Port en écoute utilisé pour la connexion VPN | ||
+ | port 443 | ||
+ | | ||
+ | ;Protocole utilisé (Le protocole udp est plus performant que le tcp) | ||
+ | proto tcp | ||
+ | | ||
+ | ;Type d' | ||
+ | dev tun | ||
+ | | ||
+ | ;Nom des fichiers servant à l' | ||
+ | ca ca.crt | ||
+ | cert openvpn.crt | ||
+ | key openvpn.key | ||
+ | dh dh1024.pem | ||
+ | | ||
+ | ;Adresse du réseau virtuel (Le serveur aura l' | ||
+ | server 10.8.4.0 255.255.255.0 | ||
+ | | ||
+ | ;Cette ligne ajoute sur le client la route du réseau du serveur | ||
+ | push "route 192.168.0.0 255.255.255.0" | ||
+ | | ||
+ | ;Ces lignes indiquent aux clients l' | ||
+ | push " | ||
+ | push " | ||
+ | push " | ||
+ | | ||
+ | # Cette ligne permet aux clients de voire les autres clients | ||
+ | ; | ||
+ | | ||
+ | keepalive 10 120 | ||
+ | | ||
+ | ;Cette ligne active la compression | ||
+ | comp-lzo | ||
+ | | ||
+ | ;Ces lignes indiquent un user et un group particulier pour le processus | ||
+ | user openvpn | ||
+ | group openvpn | ||
+ | | ||
+ | ;Ces lignes permettent de rendre persistante la connexion | ||
+ | persist-key | ||
+ | persist-tun | ||
+ | | ||
+ | status openvpn-status.log | ||
+ | | ||
+ | | ||
+ | | ||
+ | # Fix MTU problems | ||
+ | mssfix 1300 | ||
+ | | ||
+ | ;Cette ligne permet d' | ||
+ | verb 1 | ||
+ | # ces lignes definiseent les fichiers le log | ||
+ | status / | ||
+ | log-append / | ||
+ | | ||
+ | |||
+ | <note important> | ||
+ | </ | ||
+ | |||
+ | Pour cela, il suffit de créer le fichier / | ||
+ | vi / | ||
+ | |||
+ | et d’y ajouter les directives suivantes : | ||
+ | |||
+ | / | ||
+ | rotate 4 | ||
+ | daily | ||
+ | copytruncate | ||
+ | compress | ||
+ | missingok | ||
+ | notifempty | ||
+ | } | ||
+ | |||
+ | |||
+ | =====Démarrage du serveur OpenVPN==== | ||
+ | La commande suivante permet de démarrer ou redémarrer le serveur : | ||
+ | / | ||
+ | |||
+ | Ne pas hésiter à regarder dans les logs que tout c’est bien passé : | ||
+ | |||
+ | tail -100 / | ||
+ | |||
+ | Bien vérifier également que le processus tourne sous l’utilisateur « openvpn » | ||
+ | |||
+ | ps aux | grep openvpn | ||
+ | |||
+ | Pour finir, si tout c’est bien passé l’interface « tun0 » doit apparaître dans la configuration du réseau : | ||
+ | ifconfig | ||
+ | |||
+ | ... | ||
+ | tun0 Lien encap: | ||
+ | inet adr: | ||
+ | UP POINTOPOINT RUNNING NOARP MULTICAST | ||
+ | RX packets:0 errors:0 dropped:0 overruns:0 frame:0 | ||
+ | TX packets:0 errors:0 dropped:0 overruns:0 carrier:0 | ||
+ | | ||
+ | RX bytes:0 (0.0 b) TX bytes:0 (0.0 b) | ||
+ | |||
+ | Et il doit être possible de la pinguer : | ||
+ | |||
+ | ping 10.8.3.1 | ||
+ | ===== Partage de connexion ===== | ||
+ | Par défaut, les connexion vpn n'ont pas accès au réseau local du serveur . | ||
+ | Pour simplifier la conf, nous allons natter tout ce qui vient du vpn. | ||
+ | |||
+ | creation du script du demarrage | ||
+ | vi / | ||
+ | |||
+ | et nous lui mettons ... \\ | ||
+ | #! /bin/sh | ||
+ | ### BEGIN INIT INFO | ||
+ | # Provides: | ||
+ | # Required-Start: | ||
+ | # Required-Stop: | ||
+ | # Default-Start: | ||
+ | # Default-Stop: | ||
+ | # Short-Description: | ||
+ | ### END INIT INFO | ||
+ | |||
+ | | ||
+ | PATH=/ | ||
+ | | ||
+ | . / | ||
+ | . / | ||
+ | case " | ||
+ | start) | ||
+ | echo 1 > / | ||
+ | iptables -F | ||
+ | iptables -t nat -F | ||
+ | iptables -t mangle -F | ||
+ | iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE | ||
+ | ;; | ||
+ | | ||
+ | restart|reload|force-reload) | ||
+ | echo " | ||
+ | exit 3 | ||
+ | ;; | ||
+ | | ||
+ | stop) | ||
+ | echo 0 > / | ||
+ | iptables -F | ||
+ | iptables -t nat -F | ||
+ | iptables -t mangle -F | ||
+ | ;; | ||
+ | *) | ||
+ | echo " | ||
+ | exit 3 | ||
+ | ;; | ||
+ | esac | ||
+ | |||
+ | =====Configuration du client===== | ||
+ | ====en udp ==== | ||
+ | sur le client | ||
+ | aptitude install openvpn | ||
+ | |||
+ | puis | ||
+ | vi / | ||
+ | |||
+ | et on lui met | ||
+ | client | ||
+ | dev tun | ||
+ | proto udp | ||
+ | | ||
+ | remote ip_qui_va_bien 1194 | ||
+ | | ||
+ | resolv-retry infinite | ||
+ | nobind | ||
+ | | ||
+ | persist-key | ||
+ | persist-tun | ||
+ | | ||
+ | ca ca.crt | ||
+ | cert jean.dugenoux.crt | ||
+ | key jean.dugenoux.key | ||
+ | | ||
+ | comp-lzo | ||
+ | | ||
+ | verb 1 | ||
+ | |||
+ | il ne reste plus qu'a copier les cle ca.crt et le jean.dugenoux* dans le repertoire / | ||
+ | |||
+ | ====en tcp sans proxy ==== | ||
+ | <note warning> Au cas où le firewall de votre réseau ne laisse pas passer l' | ||
+ | |||
+ | sur le client | ||
+ | aptitude install openvpn | ||
+ | |||
+ | puis | ||
+ | vi / | ||
+ | |||
+ | et on lui met | ||
+ | client | ||
+ | dev tun | ||
+ | proto tcp | ||
+ | | ||
+ | remote 91.217.154.233 443 | ||
+ | | ||
+ | resolv-retry infinite | ||
+ | nobind | ||
+ | | ||
+ | persist-key | ||
+ | persist-tun | ||
+ | | ||
+ | ca ca.crt | ||
+ | cert jean.dugenoux.crt | ||
+ | key jean.dugenoux.key | ||
+ | | ||
+ | comp-lzo | ||
+ | | ||
+ | verb 1 | ||
+ | |||
+ | il ne reste plus qu'a copier les cle ca.crt et le jean.dugenoux* dans le repertoire / | ||
+ | |||
+ | ====En tcp avec proxy sans authentification ==== | ||
+ | <note warning> Au cas où il existe un proxy sur votre réseau . et que le firewall ne laisse pas passer l' | ||
+ | |||
+ | meme chose que pour tcp sans proxy, il suffit de rajouter à la fin du fichier client.conf | ||
+ | |||
+ | http-proxy-retry | ||
+ | http-proxy 172.29.11.211 8080 | ||
+ | http-proxy-option AGENT Mozilla/ | ||
+ | |||
+ | ====En tcp avec proxy avec authentification ==== | ||
+ | |||
+ | http-proxy-retry | ||
+ | http-proxy 172.29.11.211 8080 mypass basic | ||
+ | http-proxy-option AGENT Mozilla/ | ||
+ | |||
+ | et il faut creer le fichier mypass dans / | ||
+ | vi / | ||
+ | |||
+ | et lui mettre dedans | ||
+ | login | ||
+ | password | ||
braveo/docinstallsrvopenvpn.txt · Dernière modification : 2024/04/16 22:20 de 127.0.0.1