Les tunnels PPTP sont des tunnels qui sont intégrés nativement dans la plupart des OS depuis une dizaine d’années. S’appuyant sur PPP et ajoutant une couche d’authentification plus robuste voire du chiffrement, ils permettent aux utilisateurs distants de pouvoir se connecter à leur réseau d’entreprise.
Sous Debian tapez la commande suivante:
aptitude install pptpd radiusclient1
Sous FreeBSD:
cd /usr/ports/net/poptop
make install clean
Ouvrez/créez le fichier /usr/local/etc/pptpd.conf (/etc/pptpd.conf sous Debian) et insérez les lignes suivantes:
#
# PPTPD configuration
#
name pptpd
# Authentication
refuse-pap
refuse-chap
refuse-mschap
require-mschap-v2
require-mppe-128
plugin radius.so
plugin radattr.so
# Routing
proxyarp
nodefaultroute
# Misc
nobsdcomp
noipparam
logwtmp
Le nom est très important, car c’est ce nom qui permettra de faire le lien entre pptpd et pppd. Si le lien est incorrect et qu’il manque un label, l’erreur suivante apparaîtra dans les logs:
pptp: Configuration label not found
L’authentification est configurée au niveau de sécurité maximal sur MSChapv2, et on refuse explicitement toutes les autres méthodes. On active le chiffrement MPPE-128 bits sur la connexion et enfin on fait le lien avec le plugin du serveur radius.
Les options suivantes permettent
Ouvrez maintenant le fichier /etc/ppp/ppp.conf et ajoutez les lignes suivantes:
loop:
set timeout 0
set log phase chat connect lcp ipcp command
set device localhost:pptp
set dial
set login
set ifaddr 10.4.7.250 10.4.7.1-10.4.7.200 255.255.255.255
add default HISADDR
set server /tmp/loop "" 0177
loop-in:
set timeout 0
set log phase lcp ipcp command
allow mode direct
pptp:
load loop
disable pap
disable ipv6cp
enable proxy
accept dns
enable MSChapV2
enable mppe
set dns 129.175.196.160
set device !/etc/ppp/secure
set radius /etc/ppp/radius.conf
Dans le label loop, changez les IP de ifaddr par celles que vous souhaitez, la première étant l’adresse du tunnel VPN. Il est important que le masque soit 255.255.255.255 afin que vous n’ayez pas de mauvaise surprise !
Dans le label pptp, spécifiez un serveur DNS afin que le client l’utilise de manière préférable à celui de sa connexion physique (accept dns puis set dns ), activez MSChapv2 (enable MSChapV2) et MPPE (enable mppe). On a désactivé IPCP pour IPv6 ici car notre réseau ne le supporte pas (disable ipv6cp).
Créez maintenant le fichier /etc/ppp/secure et insérez les lignes suivantes:
#!/bin/sh
exec /usr/sbin/ppp -direct loop-in
et rendez le exécutable:
chmod +x /etc/ppp/secure
Ceci permettra à PPP de créer une interface de loopback direct pour relier le tunnel et l’interface physique du serveur.
Pour terminer on va configurer le serveur Radius en créant le fichier /etc/ppp/radius.conf
auth 10.4.3.1:1812 radPwd
acct 10.4.3.2:1813 radPwd2
Il faut maintenant nater le trafic du tunnel (à moins que vous ne souhaitiez le router), grâce à Packet Filter. Ouvrez le fichier pf.conf et ajoutez la ligne suivante:
nat on em0 inet proto { tcp, udp, icmp } from 10.4.7.0/24 to any -> <ip publique>
Editez le fichier /etc/rc.conf afin d’ajouter les lignes suivantes:
gateway_enable="YES"
pptpd_enable="YES"
Ensuite rechargez vos règles Packet Filter, activez le routage et lancez le service:
pfctl -f /etc/pf.conf
sysctl -w net.inet.ip.forwarding=1
service pptpd start
Dans le fichier /etc/pptpd.conf ajoutez les lignes suivantes permettant de configurer l’IP du tunnel et des clients:
localip 10.4.7.250
remoteip 10.4.7.1-250
Authentification
On va maintenant configurer l’authentification radius, ouvrez le fichier /etc/radiusclient/radiusclient.conf et modifiez les lignes suivantes:
authserver 10.4.3.1:1812
acctserver 10.4.3.2:1813
Ouvrez maintenant le fichier /etc/radiusclient/servers et ajoutez les mots de passe de vos serveurs radius
10.4.3.1 radPwd
10.4.3.2 radPwd2
Activez le routage en éditant le fichier /etc/sysctl.conf:
net.ipv4.ip_forward=1
puis ajoutez la ligne suivante au fichier /etc/rc.local (permettant le nat au démarrage)
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
et exécutez les lignes suivantes pour prendre en compte la configuration et lancer le service
sysctl -w net.ipv4.ip_forward=1
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
service pptpd start