UMR7009 Mise en place d’un serveur VPN PPTP sous Linux Olivier Dijoux1 . RESINFO / ADMIN062 Juillet 2005, version 1.0 Résumé Ce document décrit l’installation d’un serveur VPN PPTP sous Linux Fedora Core avec Poptop (Open Source PPTP Server for Linux). Table des matières 1 Introduction 2 Installation 2.1 Packages RPM requis . . . . . . . . 2.2 Patch kernel MPPE . . . . . . . . . 2.3 Configuration des logins utilisateurs 2.4 Configuration Réseau . . . . . . . . . 2.4.1 Adresses IP des clients VPN 2.4.2 Firewall . . . . . . . . . . . . 2.4.3 DNS . . . . . . . . . . . . . . 2.4.4 Routage IP . . . . . . . . . . 3 Tests de connexion 1 2 [email protected] https://admin06.sophia.cnrs.fr 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 2 2 2 3 3 3 3 3 3 Serveur VPN PPTP sous Linux - Admin06 1 Introduction Poptop permets la mise en oeuvre rapide d’un serveur VPN PPTP compatible avec la plupart des OS Windows/MacOSX/Linux. http ://www.poptop.org 2 2.1 Installation Packages RPM requis Installer les pachages RPM suivant via YUM s’ils ne sont pas déja présent : [root@olinux ~]# yum install gcc [root@olinux ~]# yum install kernel-devel [root@olinux ~]# yum install rpm-build si le package RPM ppp est deja installé, desinstallez le car ppp ¿= 2.4.3 est nécessaire pour pptpd-1.2.3-1.i386 Installer les packages RPM à télécharger sur http://www.poptop.org : [root@olinux ~]# rpm -ivh ppp-2.4.3-5.fc3.i386.rpm [root@olinux ~]# rpm -ivh pptpd-1.2.3-1.i386.rpm [root@olinux ~]# rpm -ivh dkms-2.0.5-1.noarch.rpm Dans le cas ou vous utilisez Fedora Core 4 et que le RPM de ppp n’est pas disponible, créer le vous même à partir de la source SRPM ppp-versionxxx.src.rpm : [root@olinux ~]# rpm -ivh ppp-2.4.3-5.src.rpm [root@olinux ~]# rpmbuild -ba /usr/src/redhat/SPECS/ppp.spec [root@olinux ~]# rpm -Uvh /usr/src/redhat/RPMS/i386/ppp-2.4.3-5.fc4.i386.rpm 2.2 Patch kernel MPPE Par défaut, le kernel standard livré avec FC3 n’a pas le support MPPE3 . Vous obtiendrez ainsi l’erreur : olinux pppd[4677]: MPPE required, but kernel has no support. olinux pppd[4677]: Connection terminated. Il faut donc patcher le kernel pour MPPE grace à DKMS4 , qui va se charger d’installer correctement le module ppp_mppe dans /lib/modules/2.6.xxx_FC4/kernel/drivers/net/ [root@olinux ~]# rpm -Uvh kernel_ppp_mppe-0.0.5-2dkms.noarch.rpm Patientez jusqu’a la fin de DKMS, et rebooter le serveur pour reloader correctement le kernel patché. 2.3 Configuration des logins utilisateurs Ajoutez les logins de vos utilisateurs VPN dans /etc/ppp/chap-secrets # Secrets for authentication using CHAP # client server secret IP addresses #username pptpd password * Attention : ce fichier doit etre en chmod 600 par sécurité Il est également possible de forwarder la partie authentification vers un serveur Radius. 3 4 Microsoft Point to Point Encryption Dynamic Kernel Module Support 2 Serveur VPN PPTP sous Linux - Admin06 2.4 Configuration Réseau 2.4.1 Adresses IP des clients VPN Les adresses IP du tunnel et des clients VPN sont définies dans /etc/pptpd.conf : localip 192.168.0.5 # ip du tunnel serveur vpn remoteip 192.168.0.230-240 # plage des ip clients vpn 2.4.2 Firewall Sur votre Firewall, ouvrir le port TCP/1723 (et/ou IP protocol 47 (GRE)) vers l’adresse IP du serveur VPN. 2.4.3 DNS Déclarez les serveurs DNS qui seront utilisés par vos clients VPN dans /etc/ppp/options.pptpd : ms-dns 212.27.54.252 ms-dns 212.27.39.1 2.4.4 Routage IP Si necessaire, vous pouvez autoriser le routage IP (IP forwarding) sur le serveur VPN afin qu’il serve de passerelle par defaut : # enable IP forwarding in /etc/sysctl.conf net.ipv4.ip_forward = 1 # enable IP forwarding now: echo 1 > /proc/sys/net/ipv4/ip_forward Vous pouvez également activer le routage de broadcast entre le tunnel VPN et l’interface du reseau local du serveur VPN (utile pour les partages SMB/CIFS) : /etc/pptpd.conf bcrelay eth0 /etc/init.d/pptpd restart 3 Tests de connexion connexion depuis un poste client winxp /var/log/messages olinux olinux olinux olinux olinux olinux olinux olinux olinux olinux olinux pptpd[8979]: CTRL: Client 192.168.0.254 control connection started pptpd[8979]: CTRL: Starting call (launching pppd, opening GRE) pppd[8980]: Plugin /usr/lib/pptpd/pptpd-logwtmp.so loaded. pppd[8980]: pppd 2.4.3 started by root, uid 0 pppd[8980]: Using interface ppp0 pppd[8980]: Connect: ppp0 <--> /dev/pts/2 pptpd[8979]: CTRL: Ignored a SET LINK INFO packet with real ACCMs! pppd[8980]: MPPE 128-bit stateless compression enabled pppd[8980]: found interface eth0 for proxy arp pppd[8980]: local IP address 192.168.0.5 pppd[8980]: remote IP address 192.168.0.230 [root@olinux ~]# arp -a ? (192.168.0.2) at 00:0D:60:FD:7C:FE [ether] on eth0 ? (192.168.0.230) at * PERM PUP on eth0 man pptpd.conf 3 Serveur VPN PPTP sous Linux - Admin06 Références – – – – http ://www.poptop.org http ://pptpclient.sourceforge.net/howto-fedora-core-4.phtml http ://poptop.sourceforge.net/dox/redhat-howto.phtml Dynamic Kernel Module Support http ://linux.dell.com/dkms/dkms.html – RFC 2637 : Point-to-Point Tunneling Protocol (PPTP) http://www.ietf.org/rfc/rfc2637.txt – RFC 3078 : Microsoft Point to Point Encryption (MPPE) http://www.ietf.org/rfc/rfc3078.txt – RFC 2759 : Microsoft Challenge Handshake Authentication Protocol, Version 2 (MS-CHAPv2) http://www.ietf.org/rfc/rfc2759.txt 4