{"id":138,"date":"2019-07-19T15:28:39","date_gmt":"2019-07-19T13:28:39","guid":{"rendered":"http:\/\/take-it.ovh\/?p=138"},"modified":"2021-04-27T20:22:39","modified_gmt":"2021-04-27T18:22:39","slug":"configuration-passerelle-vpn","status":"publish","type":"post","link":"https:\/\/take-it.ovh\/index.php\/2019\/07\/19\/configuration-passerelle-vpn\/","title":{"rendered":"Configuration passerelle VPN"},"content":{"rendered":"\n<h2 class=\"wp-block-heading\">Introduction<\/h2>\n\n\n\n<p>Cet article explique comment monter une passerelle VPN PPTP (tr\u00e8s simple \u00e0 mettre en oeuvre) sur Linux Debian. Il y a pleins d&#8217;article sur le sujet sur internet. Pour une raison x ou y, il a fallu que j&#8217;en consulte beaucoup pour avoir une solution fonctionnelle de bout en bout.  <\/p>\n\n\n\n<p>Une passerelle vous permet de router le traffic de votre p\u00e9riph\u00e9rique au travers de la passerelle. la passerelle n&#8217;est pas un point terminal. elle doit donc \u00eatre capable de faire suivre (forwarder) le traffic au prochain &#8220;saut&#8221; (HOP)<\/p>\n\n\n\n<p>Trois \u00e9l\u00e9ments sont importants:<\/p>\n\n\n\n<ul><li>installation et configuration du serveur de tunnel PPTP<\/li><li>configuration du serveur pour l&#8217;autoriser a forward\u00e9 le traffic entre deux interfaces r\u00e9seau<\/li><li>configuration du firewall<\/li><\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">Installation et configuration du serveur PPTP<\/h2>\n\n\n\n<p>Installez le package du serveur pptpd depuis un compte utilisateur autoris\u00e9 ou depuis de compte root.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>compteadmin@vps123456:~$ sudo apt-get install pptpd\n....\ncompteadmin@vps123456:~$<\/code><\/pre>\n\n\n\n<p>Editez le fichier de configuration \/etc\/pptpd.conf pour ajouter la configuration r\u00e9seau a appliquer. Ici, on autorise la creation de 10 tunnels. Les IP d&#8217;interconnection seront sur le reseau 192.168.5.0\/25 dans notre exemple. Attention: le subnet a choisir doit etre diff\u00e9rents de celui du reseau du PC et du r\u00e9seau de la gateway. c&#8217;est une interconnection. Donc n&#8217;importe quel subnet pourrait etre mis. Cela dit, on pr\u00e9fere utiliser des IP dans les r\u00e9seaux &#8220;brul\u00e9s&#8221; 10.0.0.0\/8 ou 192.168.0.0\/16. Mais ils sont souvent utilis\u00e9s par les box ou les r\u00e9seaux d&#8217;entreprise.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>compteadmin@vps123456:~$ sudo vi \/etc\/pptpd.conf\n....\n\nlocalip 192.168.5.5-14\nremoteip 192.168.5.235-244\n\ncompteadmin@vps123456:~$ <\/code><\/pre>\n\n\n\n<p>Editez le fichier de configuration \/etc\/ppp\/pptpd-options pour modifier les options des tunnels<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>compteadmin@vps123456:~$ sudo vi \/etc\/ppp\/pptpd-options\n....\nms-dns 8.8.8.8\nms-dns 8.8.4.4\nnobsdcomp\nnoipx\nmtu 1490\nmru 1490\n\n\ncompteadmin@vps123456:~$ <\/code><\/pre>\n\n\n\n<p>Certaines configurations sur internet indiquent que l&#8217;on peut indiquer des valeurs pour mtu et mru. cela dit, en fonction des configurations des r\u00e9seaux ou est configur\u00e9 votre client VPN, ces valeurs ne sont pas ad\u00e9quates.<\/p>\n\n\n\n<p>Les comptes utilisateurs sont cr\u00e9\u00e9s dans le fichier \/etc\/ppp\/chap-secrets. les droits de ce fichier sont r\u00e9serv\u00e9s uniquement a root, sinon cela repr\u00e9senterait une faille de s\u00e9curit\u00e9. Il est important de respecter le format: les champs doivent \u00eatre s\u00e9par\u00e9s par un caract\u00e8re de tabulation ou un\/des espaces Voici un exemple de compte:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>compteadmin@vps123456:~$ sudo vi chap-secrets\n....\n# client        server  secret                  IP addresses\n\nnomutilisateur  *       motdepasseutilisateur   *\n\ncompteadmin@vps123456:~$ sudo pptpd restart\n\ncompteadmin@vps123456:~$<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Autoriser le serveur \u00e0 forwarder les donn\u00e9es<\/h2>\n\n\n\n<p>Par d\u00e9faut, un serveur ne se compte pas comme un routeur et les packets ne sont pas forwardable d&#8217;une interface vers une autre:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>compteadmin@vps123456:~$ sudo cat \/proc\/sys\/net\/ipv4\/ip_forward\n0\ncompteadmin@vps123456:~$ <\/code><\/pre>\n\n\n\n<p>Vous pouvez \u00e9crire la valeur 1 dans le fichier up_forward pour activer le routage mais cela ne sera par persistent: au prochain red\u00e9marrage du serveur, la valeur sera de nouveau \u00e9cras\u00e9es. Pour cela, nous allons modifier les param\u00e8tres du serveur et les appliquer:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>compteadmin@vps123456:~$ sudo vi \/etc\/sysctl.conf\n.....\nnet.ipv4.ip_forward=1\ncompteadmin@vps123456:~$ sudo sysctl -p \/etc\/sysctl.conf\nnet.ipv4.ip_forward = 1\ncompteadmin@vps123456:~$<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Configurer le firewall<\/h2>\n\n\n\n<p>Le firewall a un role essentiel: celui de natter le traffic provenant du tunnel avant d&#8217;\u00eatre envoy\u00e9 vers la route par defaut du serveur. Sans cela, point de salut: il serait impossible de recevoir les packets en r\u00e9ponse.<\/p>\n\n\n\n<p>Voici les commandes necessaires pour la configuration du firewall dans notre exemple de configuration. Le traffic est natt\u00e9 vers l&#8217;interface ens3 de mon serveur. Cela pourrait \u00eatre eth0. Utilisez ifconfig pour r\u00e9cup\u00e9rer la bonne valeur.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>compteadmin@vps123456:~$ sudo iptables -I INPUT -p tcp --dport 1723 -m state --state NEW -j ACCEPT\ncompteadmin@vps123456:~$ sudo iptables -I INPUT -p gre -j ACCEPT\ncompteadmin@vps123456:~$ sudo iptables -t nat -I POSTROUTING -o ens3 -j MASQUERADE\ncompteadmin@vps123456:~$ sudo iptables -I FORWARD -p tcp --tcp-flags SYN,RST SYN -s 192.168.5.0\/24 -j TCPMSS  --clamp-mss-to-pmtu\n\ncompteadmin@vps123456:~$ \n<\/code><\/pre>\n\n\n\n<p>La premi\u00e8re r\u00e8gle autorise le traffic entrant sur le port 1723 de pptp.<\/p>\n\n\n\n<p>la seconde r\u00e8gle autorise le traffic GRE pour les tunnels.<\/p>\n\n\n\n<p>La troisi\u00e8me r\u00e8gle natte le traffic vers l&#8217;inteface r\u00e9seau ens3<\/p>\n\n\n\n<p>La quatri\u00e8me r\u00e8gle &#8230; myst\u00e8re. <\/p>\n\n\n\n<p>Pour les rendre persistente, ajoutez les a votre script de configuration du firewall trouv\u00e9e sur internet et modifi\u00e9e. <\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>#!\/bin\/sh\n\n### BEGIN INIT INFO\n# Provides:          start and stop iptable\n# Required-Start:    $local_fs $network\n# Required-Stop:     $local_fs\n# Default-Start:     2 3 4 5\n# Default-Stop:      0 1 6\n# Short-Description: start and stop iptable with rules\n# Description:       start and stop uptables with rules\n### END INIT INFO\n\nFW_start() {\necho \"&#91;D\u00e9marrage du pare-feu]\"\n\n# Supprime tous les filtres\niptables -F\niptables -t filter -F\niptables -t nat -F\niptables -t mangle -F\n\n# Ne pas casser les connexions d\u00e9j\u00e0 \u00e9tablies\niptables -t filter -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT\niptables -t filter -A OUTPUT -m state --state RELATED,ESTABLISHED -j ACCEPT\n\n# SSH\niptables -t filter -A INPUT -p tcp --dport 2222 -j ACCEPT\niptables -t filter -A OUTPUT -p tcp --dport 2222 -j ACCEPT\n\n# PPTP\niptables -I INPUT -p tcp --dport 1723 -m state --state NEW -j ACCEPT\niptables -I INPUT -p gre -j ACCEPT\niptables -t nat -I POSTROUTING -o ens3 -j MASQUERADE\niptables -I FORWARD -p tcp --tcp-flags SYN,RST SYN -s 192.168.5.0\/24 -j TCPMSS  --clamp-mss-to-pmtu\n\necho \"Filtrages &#91;OK]\"\n\n# Attribut une politiques \"ACCEPT\" aux tables\niptables -P INPUT ACCEPT\niptables -P FORWARD ACCEPT\niptables -P OUTPUT ACCEPT\n\niptables -t filter -P INPUT ACCEPT\niptables -t filter -P FORWARD ACCEPT\niptables -t filter -P OUTPUT ACCEPT\n\niptables -t nat -P PREROUTING ACCEPT\niptables -t nat -P POSTROUTING ACCEPT\niptables -t nat -P OUTPUT ACCEPT\n\niptables -t mangle -P PREROUTING ACCEPT\niptables -t mangle -P INPUT ACCEPT\niptables -t mangle -P FORWARD ACCEPT\niptables -t mangle -P OUTPUT ACCEPT\niptables -t mangle -P POSTROUTING ACCEPT\n\necho \"Politiques &#91;OK]\"\n}\n\n\nFW_stop() {\necho \"&#91;Arret du pare-feu]\"\n\n# Supprime tous les filtres\niptables -F\niptables -t filter -F\niptables -t nat -F\niptables -t mangle -F\n\n# Attribut une politiques \"ACCEPT\" aux tables\niptables -P INPUT ACCEPT\niptables -P FORWARD ACCEPT\niptables -P OUTPUT ACCEPT\n\niptables -t filter -P INPUT ACCEPT\niptables -t filter -P FORWARD ACCEPT\niptables -t filter -P OUTPUT ACCEPT\n\niptables -t nat -P PREROUTING ACCEPT\niptables -t nat -P POSTROUTING ACCEPT\niptables -t nat -P OUTPUT ACCEPT\n\niptables -t mangle -P PREROUTING ACCEPT\niptables -t mangle -P INPUT ACCEPT\niptables -t mangle -P FORWARD ACCEPT\niptables -t mangle -P OUTPUT ACCEPT\niptables -t mangle -P POSTROUTING ACCEPT\n}\n\nW_restart() {\nFW_stop;\nsleep 2;\nFW_start;\n}\n\n\ncase \"$1\" in\n'start')\nFW_start\n;;\n\n'stop')\nFW_stop\n;;\n\n'restart')\nFW_restart\n;;\n\n'status')\niptables -L\niptables -t nat -L\niptables -t mangle -L\n;;\n\n*)\necho \"Usage: firewall {start|stop|restart|status}\"\n;;\nesac\n\n<\/code><\/pre>\n","protected":false},"excerpt":{"rendered":"<p>Introduction Cet article explique comment monter une passerelle VPN PPTP (tr\u00e8s simple \u00e0 mettre en oeuvre) sur Linux Debian. Il y a pleins d&#8217;article sur le sujet sur internet. Pour une raison x ou y, il a fallu que j&#8217;en consulte beaucoup pour avoir une solution fonctionnelle de bout en bout. Une passerelle vous permet &hellip; <a href=\"https:\/\/take-it.ovh\/index.php\/2019\/07\/19\/configuration-passerelle-vpn\/\" class=\"more-link\">Continue reading <span class=\"screen-reader-text\">Configuration passerelle VPN<\/span><\/a><\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[10,4,9],"tags":[],"_links":{"self":[{"href":"https:\/\/take-it.ovh\/index.php\/wp-json\/wp\/v2\/posts\/138"}],"collection":[{"href":"https:\/\/take-it.ovh\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/take-it.ovh\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/take-it.ovh\/index.php\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/take-it.ovh\/index.php\/wp-json\/wp\/v2\/comments?post=138"}],"version-history":[{"count":31,"href":"https:\/\/take-it.ovh\/index.php\/wp-json\/wp\/v2\/posts\/138\/revisions"}],"predecessor-version":[{"id":176,"href":"https:\/\/take-it.ovh\/index.php\/wp-json\/wp\/v2\/posts\/138\/revisions\/176"}],"wp:attachment":[{"href":"https:\/\/take-it.ovh\/index.php\/wp-json\/wp\/v2\/media?parent=138"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/take-it.ovh\/index.php\/wp-json\/wp\/v2\/categories?post=138"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/take-it.ovh\/index.php\/wp-json\/wp\/v2\/tags?post=138"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}