TEXT   98

pptp-vpn.txt

Guest on 26th August 2021 01:36:53 AM

  1. Mise en place d'un réseau privé virtuel VPN sous protocole PPTP
  2.  
  3.  
  4. PPTP et le tunneling
  5.  
  6.  
  7. Qu'est ce que le tunneling
  8.  
  9. Quand on passe dans un tunnel,  personne à l'extérieur de ce tunnel ne
  10. peut nous voir. Deuxièmement,  un  tunnel à deux extrémités. Si  l'on
  11. rentre d'un côté, on ne peut sortir que  par l'autre (à moins de faire
  12. demi-tour).
  13.  
  14.   Appliqué au domaine des réseaux le tunneling permet dans un
  15.   environnement aussi dense que l'Internet de:
  16.  
  17.          - ne pas être lu par les autres usagés d'Internet (les
  18.          paquets sont cryptés)
  19.  
  20.          - d'envoyer des paquets à l'autre bout du tunnel comme s'il
  21.          s'agissait d'un simple câble de liaison Ethernet et donc
  22.          d'une liaison locale.
  23.  
  24.  
  25.  
  26. Pourquoi utilisé ce protocole
  27.  
  28. PPTP est utilisé par Microsoft pour permettre à des postes Windows de
  29. se connecter par l'intermédiaire d'un Réseau Privé Virtuel (Virtual
  30. Private Network, in english).  Le but de cet article est de relier via
  31. le voisinage réseau de Microsoft un ordinateur connecté sur
  32. l'Internet avec un réseau local (LAN).
  33.  
  34.  
  35.  
  36. Le protocole PPTP
  37.  
  38. Le protocole PPTP (Point to Point Tunneling Protocol)est issu de la
  39. RFC2637 (http://www.ietf.org/rfc/rfc2637.txt) Ce protocole est basé
  40. sur l'authentification ms-chap Il présente des trous de sécurités.
  41. Voici quelques remarques issues de l'internet.
  42.  
  43. Ces attaques sont liées à des choix de conception peu rigoureux ou à
  44. des erreurs de mise en oeuvre.  L'attaque contre MS-CHAP v1 est liée à
  45. un protocole défi-réponse mal conçu et à la décision de Microsoft de
  46. recourir à un mot de passe pour en assurer la sécurité. On ne doit, en
  47. aucun cas, utiliser MS-CHAP v1. Les attaques contre MS-CHAP v2 sont
  48. également liées à la décision de Microsoft de recourir à un mot de
  49. passe pour toutes les fonctions de sécurité.  Avec l'arrivée des
  50. protocoles d'échange de clés tels DH-EKE et SPEKE, qui utilisent des
  51. mots de passe et ne sont pas vulnérables au programme de craquage de
  52. mot de passe hors ligne, on assistera certainement à l'abandon des
  53. systèmes d'authentification par mot de passe qui n'utilisent pas ces
  54. techniques plus sécuritaires. De plus, de nombreux responsables de
  55. mise en oeuvre de RPV se tournent davantage vers IPSec pour assurer la
  56. sécurité de leur système et l'authentification d'utilisateur...
  57.  
  58.   Donc pour être sérieux, je vous recommande d'utiliser IPSec. (Client non
  59. fourni par Microsoft).
  60.  
  61.         En ce qui nous concerne, nous utiliserons ms-chap-v2
  62.  
  63.  
  64.  
  65. Installation du serveur (agent) sous Linux : pptpd
  66.  
  67. 3 étapes sont nécessaires :
  68.   - installer le serveur pptpd et le client pour linux : linux-pptp
  69.   - patcher le démon ppp
  70.   - patcher votre noyau linux
  71.  
  72.  
  73. *Installer le package pptpd :
  74.            download : http://www.moretonbay.com/vpn/download_pptp.html
  75.            ou sur le site http://www.poptop.org/
  76.            ou si vous êtes sous Débian un simple :
  77.                #apt-get install pptpd
  78.            devrait suffire
  79.  
  80.          
  81.  
  82. *Patcher le démon ppp
  83.  
  84.           patcher le démon pppd pour qu'il puisse gérer le
  85.           l'encryptage et l'authentification Microsoft MSCHAPv2/MPPE
  86.          
  87.           En tant que root : Aller dans ou creer le réperoire /usr/local/src/
  88.            #cd /usr/local/src/
  89.  
  90.  
  91.           suivant la version de votre noyau ( taper la commande :
  92.            $uname -a ,pour voir la version de votre noyau),
  93.           télécharger le bon source. en ce qui me concerne c'est un
  94.           2.4.18.  récupérer les sources:
  95.          
  96.           - ppp sur  ftp://cs.anu.edu.au/pub/software/ppp/
  97.             ou sur http://www.advancevpn.com/public/
  98.           ppp-2.4.1.tar.gz
  99.            
  100.           la bibliothèque SSl
  101.           http://maga.di.unito.it/security/resources/mirrors/SSLeay/SSLeay090/SSLeay-0.9.0.tar.gz
  102.  
  103.           - le patch sur http://www.advancevpn.com/public/
  104.           ppp-2.4.1-openssl-0.9.6-mppe-patch.gz
  105.  
  106.  
  107.         Mise en forme des sources:
  108.          
  109.          Détarer ppp-2.4.1.tar.gz et SSLeay-0.9.0.tar.gz :
  110.           # tar xvzf ppp-2.4.1.tar.gz
  111.           # tar xvzf SSLeay-0.9.0.tar.gz
  112.  
  113.          Déziper ppp-2.4.1-openssl-0.9.6-mppe-patch.gz
  114.           # gunzip ppp-2.4.1-openssl-0.9.6-mppe-patch.gz
  115.  
  116.          puis
  117.           #cp SSLeay-0.9.0/crypto/rc4/rc4.h ppp-2.4.1/linux/
  118.           #cp SSLeay-0.9.0/crypto/rc4/rc4_enc.c ppp-2.4.1/linux/
  119.           #patch -p0 < ppp-2.4.1-openssl-0.9.6-mppe-patch
  120.           #cd ppp-2.4.1
  121.  
  122.         Compilation :
  123.           #./configure
  124.           #make
  125.  
  126.         Remplacement de l'ancien pppd
  127.           #cp /usr/sbin/pppd /usr/sbin/pppd.old   (sauvegarde de l'ancien)
  128.           #cp pppd/pppd /usr/sbin/
  129.          
  130.           ok passons à la suite
  131.  
  132.  
  133. *Patcher le noyau :
  134.          
  135.           #cd /usr/src
  136.  
  137.          Récupérer le patch :
  138.          http://www.advancevpn.com/public/linux-2.4.16-openssl-0.9.6b-mppe.patch.gz
  139.          
  140.          Déziper le :
  141.           #gunzip linux-2.4.16-openssl-0.9.6b-mppe.patch.gz
  142.          
  143.          ensuite :
  144.           #cd /usr/src/linux
  145.           #patch -p1 < ../linux-2.4.16-openssl-0.9.6b-mppe.patch
  146.  
  147.          Compiler le noyau
  148.           pour avoir les options suivantes en plus :
  149.  
  150.           CONFIG_PPP=m
  151.           CONFIG_PPP_FILTER=y
  152.           CONFIG_PPP_ASYNC=m
  153.           CONFIG_PPP_SYNC_TTY=m
  154.           CONFIG_PPP_DEFLATE=m
  155.           CONFIG_PPP_BSDCOMP=m
  156.           CONFIG_PPP_MPPE=m
  157.           CONFIG_UNIX98_PTYS=y
  158.  
  159.            #make menuconfig , ou make xconfig (selon vos goûts)
  160.            #make dep 1>/dev/null &&  make clean 1>/dev/null && make bzImage 1>/dev/null
  161.            #make modules 1>/dev/null &&  make modules_install 1>/dev/null
  162.            #cp arch/i386/boot/bzImage /boot/kernel-versionx
  163.  
  164.           Modifier lilo.conf pour prendre en compte le nouveau noyau
  165.           et relancer lilo (comment faire ? : man lilo )
  166.            #vi /etc/lilo.conf
  167.            #lilo
  168.  
  169.  
  170.           Bon et bien, on reboot !!  (sauf si vous n'avez eu besoin de
  171.           recompiler que les modules)
  172.  
  173.  
  174.  
  175.  
  176. Configuration du serveur PPTP :pptpd
  177.  
  178.                
  179.                
  180.    fichier de conf : /etc/pptp.conf
  181. +-------------------------------------------------
  182. # début
  183. option /etc/ppp/pptpd-options   #options qui seront passees a ppp
  184. debug                            #un peu de log de pptpd
  185.                                 #dans /var/log/syslog
  186. localip 192.168.68.100          #adr. IP virtuel de notre
  187.                                  # serveur a la connection
  188. remoteip 192.168.68.110-150     #spool d'adr. IP que l'on
  189.                                 #donnera aux clients  
  190. #fin
  191. +-------------------------------------------------
  192.  
  193.  
  194.  
  195.    fichier: /etc/ppp/pptpd-options pour pppd
  196. -------------------------------------------------
  197. # debut
  198. debug                   # un peu de log de pppd dans syslog
  199. name PPTP               # id pour /etc/ppp/chap-secrets
  200. require-chapms-v2       # chap ms v2 requis
  201. +chap                   # chap
  202. +chapms                 # chap Microsoft
  203. +chapms-v2              # chap Microsoft version 2 (sécurité +)
  204. mppe-40                 # clé de 40 bits
  205. mppe-128                # clé de 128 bits
  206. mppe-stateles           # renegotiation des clés a chaque
  207.                           #pacquet (securite +)
  208. netmask 255.255.255.0
  209. nodefaultroute          # ne pas creer de route par default
  210.                           # sur cette liaison
  211. proxyarp                # ajouter cette connection dans
  212.                           #la table ARP (adr. MAC)
  213. lock                    # acces au device ppp réservé à pptpd
  214. nobsdcomp               # pas de compression de type bsd
  215. nodeflate               # pas de compression de type deflate
  216. mtu 1000                # taille maximun d'un paquet sur ce réseau
  217. mru 1000                # renseigne l'hote distant sur la taille
  218.                           #maxi des paquets
  219. auth                    # authentification obligatoire
  220. # fin du fichier
  221. ----------------------------------------------------------------
  222.  
  223.  
  224.  
  225.  
  226.    gestion des mots de passes d'authentification.
  227.     fichier /etc/ppp/chap-secrets
  228. ---------------------------------------------------
  229. #debut
  230.  
  231.     ------- autres login et mot de passe
  232.     ------- pour vos accès Internet par exemple
  233.  
  234. # client         server  secret          IP addresses
  235.  
  236. nom_de_login     PPTP    mot_de_passe    *       
  237. un-autre-nom     PPTP    passe_de_mot    *
  238.  
  239.    ------- etc -----------
  240.  
  241. #fin du fichier
  242. ----------------------------------------------------
  243.  
  244.       noter que dans /etc/ppp/pptpd.options, la variable name
  245.       correspond au champ 'server' de /etc/ppp/chap-secrets
  246.  
  247.  
  248.               Ok, on y est.
  249.               On peu maintenant relancer le démon pptpd:
  250.                # /etc/init.d/pptpd stop
  251.                # /etc/init.d/pptpd start
  252.  
  253.  
  254.     Bon et maintenant, il nous faut trouver un ou plusieurs
  255.     clients. Lançons une opération marketing !!! (prenez votre
  256.     téléphone et appeler un pote qui à Windows et un accès internet)
  257.     ou alors, si vous avez la chance d'avoir plusieurs bécanes en
  258.     réseau chez vous, vous pouvez aussi faire quelques simulations par
  259.     votre réseau Ethernet.
  260.  
  261.  
  262.  
  263.  
  264. Installation et configuration d'un client Microsoft Windows (98):
  265.              
  266.      Installation :
  267.      
  268.        Poste de travail --> Panneau de config --> Ajout/suppression de
  269.        programmes --> onglet |installation de Windows | :
  270.                        - communications - (détail)
  271.                            [*] réseau privé virtuel
  272.  
  273.         (OK)
  274.        
  275.         On reboot
  276.  
  277.         L'install n'est pas fini car ce programme est bugé. Il faut
  278.         télécharger le patch DUN14-98.exe ou DUN14-SE.exe (suivant la
  279.         version de Windows) à l'adresse suivante :
  280.         http://www.advancevpn.com/public/
  281.        
  282.         Exécuter le programme
  283.         On reboot
  284.  
  285.      Configuration :
  286.  
  287.        Poste de travail -->
  288.              Acces reseau a distance -->
  289.                    |clic droit sur l'icone du vpn|
  290.  
  291.                    nom ou adresse de l'hote :
  292.                          mettre l'adresse IP du server vpn
  293.  
  294.                    se connecter en utilisant :
  295.                          microsoft VPN adapter           
  296.                          
  297.                    |onglet type de serveur|
  298.                          
  299.                          [*] se connecter à un réseau
  300.                          [*] activer la compression logicielle
  301.                          [ ] demander un mot de passe crypte
  302.                          [ ] demander le cryptage des données
  303.                          [*] créer un journal pour cette connexion
  304.                          
  305.                          [ ] NetBEUI
  306.                          [ ] IPX
  307.                          [*] TCP/IP
  308.                          
  309.  
  310.                    |clic sur paramètres TCP/IP|
  311.                          (*) adresse IP attribuée par le serveur
  312.                          ( )
  313.  
  314.                          (*) adresse de serveur de nom attribuées ..* 
  315.                          ( )
  316.                          
  317.                          [ ] utiliser la compression d'entête IP
  318.                          [ ] utiliser la passerelle par défaut...
  319.  
  320.  
  321.  
  322.                 OK c'est bon.
  323.  
  324.         *: nous verrons plus tard s'il faut spécifier une adresse
  325.         de server WINS pour faire fonctionner notre voisinage réseau
  326.         avec samba
  327.  
  328.  
  329.  Un petit essai pour voir si ça marche :
  330.          
  331.          prenons un exemple par exemple :
  332.  
  333.          nous avons dans /etc/pptpd.conf
  334.               localip 192.168.68.100
  335.               remoteip 192.168.68.110-150
  336.  
  337.  
  338.          Et un pote sur internet à qui on a fait installer le client
  339.          windows. On se connecte sur Internet et à nos téléphones
  340.          portables (ou autres moyens moins chers de communication)
  341.  
  342.          Demander lui de choisir un nom d'utilisateur et un mot de
  343.          passe pour établir la connexion PPTP chez vous. Par exemple
  344.          toto et son-mot-de-passe.  Ensuite, vous éditez le fichier
  345.          /etc/ppp/chap-secrets et ajouter la ligne :
  346.  
  347.          toto PPTP  son-mot-de-passe *
  348.  
  349.                  
  350.          Vous vous renseignez sur votre adresse IP attribuée par votre
  351.          fournisseur d'accès. En ligne de commande par exemple :
  352.          $/sbin/ifconfig
  353.  
  354.          ce qui donne:
  355.          ppp0      Link encap:Point-to-Point Protocol  
  356.           inet addr:196.35.25.17  P-t-P:196.35.25.16  Mask:255.255.255.255
  357.           UP POINTOPOINT RUNNING NOARP MULTICAST  MTU:1500  Metric:1
  358.           RX packets:3 errors:0 dropped:0 overruns:0 frame:0
  359.           TX packets:3 errors:0 dropped:0 overruns:0 carrier:0
  360.           collisions:0 txqueuelen:3
  361.  
  362.           d'ou notre adresse ip : 196.35.25.17 (ceci est un exemple !!!)
  363.  
  364.           En résume :
  365.           PC1 : server PPTP (c'est vous)
  366.           PC2 : client windows (votre potau)
  367.  
  368.  
  369.  
  370.  
  371.                     196.35.25.17 +------------+ 212.36.22.25
  372.                +-----------------|  Internet  |-----------------+
  373.                |                 +------------+                 |
  374.                |                                                |
  375.         196.35.25.18                                      212.36.22.26
  376.             +--+--+                                             |
  377.             | PC1 |                                             |
  378.             +-----+                                          +--+--+
  379.                                                              | PC2 |
  380.                                                              +-----+
  381.  
  382.  
  383.      Demandez à votre collègue d'ouvrir la connexion vpn ( en cliquant
  384.      sur l'icône vpn dans la fenêtre accès réseau à distance) et de
  385.      mettre comme adresse de connexion votre adresse IP vue de
  386.      l'Internet, soit ici dans l'exemple 196.35.25.18, puis son nom et
  387.      son mot de passe (pptp).
  388.  
  389.      Bon alors, ça marche !! Au quel cas vous avez maintenant une
  390.      deuxième interface (virtuelle) ppp en route
  391.  
  392.      soit :
  393.          ppp0      Link encap:Point-to-Point Protocol  
  394.           inet addr:196.35.25.18  P-t-P:196.35.25.17  Mask:255.255.255.255
  395.           UP POINTOPOINT RUNNING NOARP MULTICAST  MTU:1500  Metric:1
  396.           RX packets:3 errors:0 dropped:0 overruns:0 frame:0
  397.           TX packets:3 errors:0 dropped:0 overruns:0 carrier:0
  398.           collisions:0 txqueuelen:3
  399.          ppp1      Link encap:Point-to-Point Protocol  
  400.           inet addr:192.168.68.100  P-t-P:192.168.68.110  Mask:255.255.255.255
  401.           UP POINTOPOINT RUNNING NOARP MULTICAST  MTU:1000  Metric:1
  402.           RX packets:3 errors:0 dropped:0 overruns:0 frame:0
  403.           TX packets:3 errors:0 dropped:0 overruns:0 carrier:0
  404.           collisions:0 txqueuelen:3
  405.  
  406.      faites des essais de ping.
  407.             PC1 : ping 192.168.68.110
  408.                     et
  409.             PC2 : ping 192.168.68.100
  410.  
  411.      Bon ben voila, vous étés relié par un tunnel, et après ? vous
  412.      pouvez faire du VNC, ssh, telnet etc... Mais c'est pas encore
  413.      gagné pour le réseau Microsoft (voisinage réseau). Pour ça il
  414.      faut aller voir le chapitre plus loin...
  415.  
  416.      Si vous n'avez pas de copain sur Internet et que vous avez un
  417.      réseau local alors rien ne vous empêche de faire la manipe
  418.  
  419.      PC1 : serveur PPTP
  420.      PC2 : client windows
  421.  
  422.  
  423.                         LAN 192.168.0.0
  424.         -------+------------------------+------------------
  425.                |                        |
  426.                |                        |
  427.         192.168.0.1                 192.168.0.2
  428.             +--+--+                  +--+--+
  429.             | PC1 |                  | PC2 |
  430.             +-----+                  +-----+
  431.  
  432.  
  433.             connecter le client vpn à 192.168.0.1 vérifiez les ajouts
  434.             d'interfaces ppp virtuelles avec leurs adresses ip. Vérifiez les
  435.             pings et les tables de routage.
  436.  
  437.  
  438.  
  439. Le client Linux , linux-pptp :
  440.                
  441.             Installer le client pptp (pptp-linux): soit
  442.             http://pptpclient.sourceforge.net/
  443.              ou sur Débian :
  444.             #apt-get install pptp-linux
  445.  
  446.         Ensuite, il faut patcher le démon pppd pour qu'il puisse prendre en
  447.         charge ms-chapv2 comme pour le serveur.
  448.        
  449.         Donc refaite la manipe de recompilation de ppp comme pour le serveur.
  450.        
  451.  
  452.  
  453.           Configuration:
  454.                 Le client pptp est utilisé par ppp :
  455.                 pppd  -pty "pptp serveur.site.net  --nolaunchpppd"
  456.  
  457.                 ou serveur.site.net est l'adresse IP du serveur pptp a joindre.
  458.  
  459.           La démarche est à peu près identique à celle que l'on aurait
  460.           si on voulait initier une connexion à internet. Pour se
  461.           connecter à notre VPN, on aura juste à taper en ligne de
  462.           commande :
  463.            #pon tunnel
  464.  
  465.           Les fichiers de configurations sont :
  466.            /etc/ppp/peers/tunnel     ->  fichier pour la commande pon
  467.            /etc/ppp/options.pptp     ->  options spécifique à pptp
  468.            /etc/ppp/chap-secrets     ->  notre login et notre mot-de-passe
  469.  
  470.  
  471. fichier /etc/ppp/peers/tunnel :
  472.  
  473. -------------------------------------------
  474. #debut fichier
  475. pty "pptp ginette.est.belle --nolaunchpppd"
  476. remotename PPTP-GINETTE
  477. name nico
  478. require-chapms-v2
  479. +chapms-v2
  480. file /etc/ppp/options.pptp
  481. ipparam tunnel
  482.  
  483.  
  484. #fin du fichier
  485. --------------------------------------------
  486.  
  487.                 'ginette.est.belle' est résolue en adr. IP. C'est là
  488.                 que l'on veut se connecter et ou se trouve un serveur
  489.                 pptp
  490.  
  491.                 'remotename PPTP-GINETTE' est référencé dans
  492.                 chap-secrets pour envoyer notre nom de login et notre
  493.                 mot de passe.
  494.  
  495.                 'name nico' est référencé dans chap-secrets pour
  496.                  trouver la correspondance du mot de passe associé.
  497.                  
  498.                 'require-chapms-v2' type du cryptage
  499.  
  500.                 'file /etc/ppp/options.pptp' emplacement du fichier de
  501.                 configuration de pptp
  502.  
  503.                 'ipparam tunnel' passe 'tunnel' en 6eme parametre pour
  504.                 les scripts ip-up et ip-down. Voir /etc/ppp/ip-up,
  505.                 /etc/ppp/ip-up.d/ et meme chose pour ip-down. Le
  506.                 parametre 'tunnel' est mis dans la variable
  507.                 d'environnement PPP_IPPARAM.
  508.  
  509.  
  510. fichier fichier /etc/ppp/options.pptp :
  511.  
  512. -------------------------------------------
  513. #debut
  514. lock
  515. noauth     # le serveur n'a pas à s'authentifier
  516. nodetach   # ne pas mettre ppp en tache de fond
  517. nobsdcomp
  518. nodeflate
  519. mppe-40
  520. mppe-128
  521. mppe-stateless
  522. mtu 1000
  523. mru 1000
  524. #fin
  525. --------------------------------------------
  526.  
  527.  
  528.  
  529. fichier /etc/ppp/chap-secrets :
  530.  
  531. ------------------------------------------------
  532. #debut
  533.  
  534. #client        server        secret     IP addresses
  535.  
  536. nico        PPTP-GINETTE     mot-de-passsss          
  537. pat         PPTP-GINETTE     patounet
  538.  
  539. #fin du fichier
  540. ------------------------------------------------
  541.  
  542.  
  543.  
  544.         Voila, c'est fini.
  545.        
  546.        
  547.  
  548.  Faire un test:
  549.  
  550.      Assurez vous que vous avez accès à un serveur PPTP soit sur
  551.      Internet, soit sur votre LAN, en faisant un ping sur celui-ci.
  552.       exemple : ping ginette.est.belle
  553.  
  554.      Puis lancer la connexion:
  555.       # pon tunnel
  556.  
  557.       et pour clore la connexion
  558.       # poff tunnel
  559.  
  560.  
  561.       Remarque : vous ne pouvez pas faire de connexion avec un serveur
  562.       qui est lancer sur la même machine que le client (interface
  563.       loopback). Vous aurez le message suivant :
  564.      
  565.         Using interface ppp0 Connect:
  566.          ppp0 <--> /dev/pts/5
  567.          Serial line is looped back.
  568.          Connexion terminated.
  569.  
  570.  
  571.  A propos de pppd et de son fichier de configuration /etc/ppp/options.
  572.  
  573.         certaines valeurs peuvent être redondantes par rapport à nos
  574.         autres fichiers de configuration mais peuvent entre nécessaires
  575.         pour les autres types de connections (Internet par exemple). par
  576.         exemple, j'ai :
  577.  
  578.            asyncmap 0
  579.            auth
  580.            crtscts
  581.            lock
  582.            hide-password
  583.            modem
  584.            mru 542
  585.            -detach
  586.            lcp-echo-interval 30
  587.            lcp-echo-failure 4
  588.            noipx
  589.            +chap
  590.            +chapms
  591.            +chapms-v2
  592.            mppe-40
  593.            mppe-128
  594.            mppe-stateless
  595.  
  596.         De toute façon, ces valeurs peuvent être redéfinies par nos
  597.         autres fichiers de configuration. Pour le client pptp, les
  598.         fichiers de configurations sont lus dans l'ordre suivant:
  599.                  /etc/ppp/options
  600.                  /etc/ppp/peers/tunnel
  601.                  /etc/ppp/options.pptp
  602.                  /etc/ppp/chap-secrets
  603.  
  604.  
  605.  
  606.  
  607. Configuration pour mettre en partage le voisinage réseau de Microsoft,
  608. via le VPN
  609.  
  610.    
  611.     Pré requis : Vous disposez d'un serveur Samba configuré sur votre
  612.     machine Linux.  Vous connaissez les manipes rudimentaires pour
  613.     faire fonctionner Samba.  Votre VPN pptp fonctionne entre un poste
  614.     distant Microsoft et votre réseau
  615.  
  616.  
  617.   Ce qu'il faut savoir sur les réseaux Microsoft Netbios:
  618.    
  619.    Si vous comprenez l'Anglais, je vous conseille de lire BROWSING.TXT
  620.    dans /usr/share/doc/samba-doc/textdocs/BROWSING.txt, contenu dans
  621.    le pacquage 'samba-doc'. Ou encore le numéro 44 de Linux Magazine.
  622.  
  623.    Ce qui suit s'appuie sur ce document:
  624.  
  625.  
  626.    - le protocole applicatif Microsoft est ssn-netbios. Sur le port 139.
  627.  
  628.    - Pour être efficace, n'utiliser qu'un seul type de protocole
  629.    réseau. C'est à dire IP et rien d'autre.
  630.  
  631.    - le mécanisme de base de résolution de nom des machines connectées
  632.    sur un LAN Microsoft se fait par broadcast (tout les bits à 1 sur
  633.    la partie host de IP).
  634.  
  635.    - Un ordinateur sera vu des autres si ses services de partages de
  636.    fichiers et/ou d'imprimantes sont activés. (dans 'propriété du
  637.    voisinage réseau')
  638.  
  639.    - pour faire simple, définir un seul groupe de travail pour tout
  640.    les postes.
  641.  
  642.    - Un paquet broadcast NE PASSE PAS LES ROUTEURS.
  643.    
  644.     Donc, ce paquet ne passera pas de notre interface LAN ethernet (eth0)
  645.     vers l'interface ppp. Les réseaux Microsoft ne pourront se voir.
  646.  
  647.   - Le moyen pour ne pas faire appel au broadcast IP est de mettre en
  648.     place un serveur WINS, dont l'adresse IP sera connue par chaque
  649.     ordinateur.
  650.  
  651.  
  652.  
  653.  
  654.  
  655.   Un schéma pour y voir plus claire :
  656.  
  657.  
  658.                                    
  659.              N1_A      N1_B        N1_C       N1_D        N1_E
  660.               |          |           |          |           |
  661.           -------------------------------------------------------
  662.             |          subnet 1                       |
  663.           +---+                                      +---+
  664.           |R1 | Router 1                  Router 2   |R2 |
  665.           +---+                                      +---+
  666.             |                                          |
  667.             |  subnet 2              subnet 3          |
  668.   --------------------------       ------------------------------------
  669.   |     |     |      |               |        |         |           |
  670.  N2_A  N2_B  N2_C   N2_D           N3_A     N3_B      N3_C        N3_D
  671.                    
  672.  
  673.  
  674.    Sur une config de base, deux ordinateurs situés sur des réseaux
  675.    différents (subnet1, subnet2, subnet3) ne peuvent se voir par le
  676.    'voisinage réseau Microsoft'.
  677.  
  678.    Sur chaque réseau (ou sous réseau), le mécanisme netbios-ssn est le
  679.    suivant :
  680.  
  681.    - broadcast pour savoir qui est sur le réseau
  682.  
  683.    - élection du maître explorateur local ( Local Master Browser, LMB)
  684.  
  685.    - Le LMB enregistre le nom NetBios et les adresses IP des machines
  686.    qui offrent un service sur le réseau. (via le broadcast)
  687.  
  688.    - les machines de ce réseau consultent le LMB pour avoir ces noms.
  689.  
  690.    - Le LMB est réélu en gros toutes les 15 minutes.
  691.  
  692.  
  693.  
  694.  
  695.  Mise en place de WINS:  
  696.  
  697.  
  698.                    
  699.         quelques règles de fonctionnement:
  700.        
  701.            - chaque ordinateur connaît l'adresse IP du serveur WINS.
  702.  
  703.            - Il ne peut y avoir sur tout cet ensemble de réseaux
  704.            qu'un et un seul serveur WINS
  705.  
  706.            - Il y a un LMB par réseau ou sous-réseau, sauf si ce
  707.            réseau contient le DMB (voir plus bas).
  708.  
  709.            - Une fois que le LMB est élu, il demande au serveur WINS
  710.            sur le port 137 ou se situe le maître explorateur global
  711.            (Domaine Master Browser, DMB).
  712.  
  713.            - le LMB et le DMB synchronisent leur base de nom NetBios (en
  714.            UDP sur le port 138)
  715.  
  716.            - il n'y a qu'un DMB sur tout cet ensemble de
  717.            réseau. (Ceci n'a rien à voir avec le serveur de Domaine
  718.            Microsoft)
  719.  
  720.            
  721.            par exemple :
  722.  
  723.                                  (DMB)
  724.              N1_A      N1_B        N1_C       N1_D        N1_E
  725.               |          |           |          |           |
  726.           -------------------------------------------------------
  727.             |          subnet 1                       |
  728.           +---+                                      +---+
  729.           |R1 | Router 1                  Router 2   |R2 |
  730.           +---+                                      +---+
  731.             |                                          |
  732.             |  subnet 2              subnet 3          |
  733.   --------------------------       ------------------------------------
  734.   |     |     |      |               |        |         |           |
  735.  N2_A  N2_B  N2_C   N2_D           N3_A     N3_B      N3_C        N3_D
  736.        (LMB)       (WINS)                                         (LMB)
  737.  
  738.  
  739.        
  740.        
  741.        Revenons à notre VPN :
  742.  
  743.         Je vous propose la configuration suivante :
  744.  
  745.  
  746.  
  747.  
  748.                      +---------[ Internet  ]------------+
  749.                      |                                  |
  750.                      |                                  |
  751.                      |                                  |
  752.                      |                                  |
  753.                      |                                  |
  754.                      |                                  +--N2 (LMB)
  755.  N1_D  N1_C  N1_B   N1_A            
  756.   |     |     |    (WINS)                                      
  757.   |     |     |    (DMB)
  758.   |     |     |    router
  759.   |     |     |      |
  760.   +-----+-----+------+
  761.   net 1: 192.168.68.0/24
  762.  
  763.  
  764.  
  765.         N1_A : machine linux qui nous sert de routeur, de serveur
  766.         maître explorateur global (Domaine Master Browser) et enfin de
  767.         serveur WINS.( et qui expose de manière dangereuse le réseau
  768.         net 1 à l'Internet ..., mais bon c'est une autre histoire)
  769.  
  770.         N2 : une machine seule et qui naturellement a été élu en
  771.         maître explorateur local. Son groupe de travail WORKGROUP est
  772.         le même que celui du réseau 1.
  773.    
  774.  
  775.         N1_A : 192.168.68.1
  776.         N1_B : 192.168.68.2
  777.         N1_C : 192.168.68.3
  778.         N1_D : 192.168.68.4
  779.        
  780.         N2_A : 192.168.0.1
  781.        
  782.         les machines N1_B, N1_C et N1_D sont configurées pour partager
  783.         des fichiers et doivent se faire connaître auprès du serveur
  784.         wins N1_A. (ce sont des clients wins).
  785.  
  786.         Pour que la machine N1_A devienne serveur WINS et DMB, on
  787.         informe les lignes suivantes du fichier de configuration de
  788.         samba.  /etc/samba/smb.conf :
  789.          
  790.          netbios name  = elea-ssn      # je vous conseille de rajouter
  791.                                        # l'intitulé -ssn a votre nom de
  792.                                        # machine pour birn faire la difference
  793.                                        # entre netbios et DNS
  794.  
  795.          workgroup = WORKGROUP         # le même pour tous
  796.  
  797.          encrypt passwords = true      # nécessaire pour windows
  798.  
  799.          domain master = yes           # DMB ok
  800.  
  801.          local master  = yes           # redondance ?
  802.  
  803.          prefered master = yes         # force l'élection
  804.  
  805.          os level = 65                 # force de chez force l'élection
  806.  
  807.          wins support    = yes         # devenir serveur WINS
  808.  
  809.          name resolve order = wins lmhosts bcasts
  810.  
  811.  
  812.  
  813.         Sur les autres machines du réseau 1 on a
  814.          
  815.           wins server = 192.168.68.1   # où est le serveur WINS
  816.  
  817.           workgroup = WORKGROUP        # le même pour tous
  818.  
  819.         ou bien si on est en windows :
  820.                 Propriété réseau -> TCP/IP de l'interface
  821.                                    -> serveur wins : 192.168.68.1
  822.  
  823.  
  824.  
  825.  
  826.  
  827.         Ensuite on relance les services de samba des machines :
  828.  
  829.          #/etc/init.d/samba force-reload
  830.  
  831.  
  832.         Rendu à ce stade là, on doit pouvoir consulter chaque services
  833.         samba de chaque machine:
  834.          
  835.          #smbclient -L elea-ssn
  836.  
  837.         Pour voir qui est le maître explorateur sur le réseau:
  838.  
  839.          #nmblookup -M -
  840.  
  841.  
  842.    Il existe un programme en mode graphique pour linux qui ressemble au
  843.    voisinage réseau de Microsoft et qui est : xsmbrowser.
  844.  
  845.  
  846.   Maintenant que nos services samba (voisinage réseau Microsoft)
  847.   fonctionnent, il ne reste plus qu'à connecter l'ordinateur distant
  848.   N2.
  849.  
  850.   Un truc que peut faire pptpd, c'est de transmettre à l'hote distant
  851.   l'adresse du serveur wins. pour cela, il suffit de rajouter la ligne
  852.   suivante dans le fichier de configuration : /etc/ppp/pptpd.options :
  853.  
  854.            ms-wins 192.168.68.1
  855.  
  856.   et de réinitialiser pptpd :
  857.  
  858.            #/etc/init.d/pptpd stop
  859.            #/etc/init.d/pptpd start
  860.  
  861.  
  862.            
  863.   Ok, on rappelle notre pote qui est sur Internet, c'est celui qui a
  864.   l'ordi N2.  On lui demande de se connecter par le VPN sur
  865.   N1. (donnez lui votre adresse IP vu de l'internet ). Si ça a marché
  866.   tout à l'heure, il n'y a pas de raison pour que ça ne marche pas
  867.   maintenant.  Vérifiez avec lui sa table de routage.
  868.  
  869.  normalement, il doit avoir quelque part dans sa table la route pour
  870.  aller chez vous:
  871.  
  872.    route                       masque         passerelle
  873.  
  874.  adr.IP_de_votre_interface_VPN  255.255.255.0  adr.IP_de_son_interface_VPN
  875.  
  876.  sinon il faut rajouter cet route avec la commande :
  877.  
  878.         route add -net 192.168.68.0 gw 192.168.68.100 netmask 255.255.255.0
  879.        
  880. (ou 192.168.68.100 est l'adresse ip du serveur pptp via vpn, cf /etc/pptp.conf)
  881. vous pouvez également ajouter cette route automatiquement grace a un script de
  882. connexion situé dans /etc/ppp/ip-up.d/
  883. exemple : fichier tunnel.sh
  884.   #---------debut du fichier-------
  885.   #!/bin/sh -x
  886.   if [ "$PPP_IPPARAM" == "tunnel" ] ; then
  887.          route add -net 192.168.0.0 gw 192.168.0.100 netmask 255.255.255.0
  888.   fi
  889.   #-------------- fin du fichier---
  890.  
  891.  ou $PPP_PPARAM correspond au parametre 'ipparam'
  892.  du fichier /etc/ppp/peers/tunnel
  893.  
  894.  
  895.  demandez lui de pinguer vos machines: (console dos)
  896.  
  897.           ping 192.168.68.1
  898.  
  899.           ping 192.168.68.2
  900.  
  901.           ping 192.168.68.3
  902.  
  903.           ping 192.168.68.4
  904.                  
  905.  
  906.  Puis enfin, faite lui ouvrir son voisinage réseau. Peut être lui
  907.  faudra t'il une petite minute le temps de voir toutes vos machines.
  908.  
  909.  
  910.  
  911.  
  912. Comment configurer son (ses) firewall(s):
  913.  
  914.  Règles générales :
  915.         - authoriser les paquets en protocole tcp sur le port 1723
  916.         - authoriser le protocole GRE , numéro protocole ip=47
  917.        
  918.         Cette dernière règle est a marquée d'un pierre blanche car
  919.         souvent oubliée....
  920.        
  921.  
  922.  Exemples :
  923.  
  924. pour un firewall en openBSD en tête de réseau devant transmettre les requettes
  925. entrantes à un serveur pptp sur la LAN :
  926.  
  927.   #-------- fichier /etc/firewall.conf
  928.   nat on $IF_EXT from $LAN to any -> ($IF_EXT)
  929.   rdr on $IF_EXT proto tcp from any to any port 1723 -> $SERVEUR_PPTP
  930.   pass in quick on $IF_EXT proto gre from any to any
  931.   pass out quick on $IF_EXT proto gre from any to any
  932.   #---------- fin du fichier -----------
  933.  
  934.   et executer la commande :
  935.   pfctl -f /etc/firewall.conf
  936.  
  937.   remarque : gre doit être renseigner dans /etc/protocols
  938.    la commande suivante :
  939.        cat /etc/protocols | grep gre
  940.    donne :
  941.         gre     47      GRE             # General Routing Encapsulation
  942.  
  943.  
  944.  
  945.  les modules suivant vous seront surement necessaires :
  946.           ip_tables
  947.           iptable_nat
  948.           ip_conntrack
  949.           iptable_filter
  950.           ipt_state
  951.          a charger avec la commande modprobe
  952.          
  953.  
  954. Pour un firewall en linux 2.4.xxx (non testé) en tête de réseau devant
  955. transmettre les requettes entrantes à un serveur pptp sur la LAN :
  956.  
  957.  iptables -t nat -A POSTROUTING -s $IP_LAN -j MASQUERADE
  958.  iptables -A FORWARD -p tcp --dport 1723 -j ACCEPT
  959.  iptables -t nat -A PREROUTING -i $IF_MOD -p tcp --dport 1723 \
  960.                         -j DNAT --to-destination $SERVEUR_PPTP
  961.  iptables -A FORWARD -p gre -j ACCEPT
  962.  iptables -t nat -A POSTROUTING -p gre -j ACCEPT
  963.  iptables -t nat -A PREROUTING -p gre -j ACCEPT
  964.  
  965.  
  966.  
  967. Pour un firewall situé en tête d'un réseau Lan abritant un client pptp:
  968.  
  969.   # partie pour pptp VPN
  970.  
  971.   iptables -A FORWARD -m state --state ESTABLISHED -j ACCEPT
  972.  
  973.   echo "Forward authorise pour le protocole GRE"
  974.   iptables -A FORWARD  -m state --state NEW -p gre -j ACCEPT
  975.  
  976.   echo "NAT pour le protocole GRE"
  977.   iptables -t nat -A POSTROUTING -p gre -j MASQUERADE
  978.  
  979.   echo "Nat

Raw Paste


Login or Register to edit or fork this paste. It's free.