VPN
Révision datée du 12 mars 2008 à 22:33 par imported>SylvainBeucler (→Client)
Outils de référence
IPSec
- IPSec: utilise de nouveaux protocoles IP (AH/50 et ESP/51). Nécessite un support noyau (natif ou KLIPS(=*swan)) et un démon optionnel pour la gestion de clefs, en principe interopétables.
- strongSwan
- Openswan
- intégré au noyau
- racoon
- ... à trier ...
- Utilisé par L2TP/IPSec, inclus dans Woe (2K et + ?)
- Pare-feu: protocoles IP 50/AH et 51/ESP, ports 500/udp (isakmp) et 4500/udp (ipsec-nat-t / NAT traversal); 1701/udp l2tp (?)
L2TP
IPSec est utilisé sous Windows > 2K avec L2TP.
Une page très (trop) fournie: http://www.jacco2.dds.nl/networking/openswan-l2tp.html
Implémentations:
- xl2tpd: reprise de l'abandonné l2tpd, releases récentes (2007). *l2tpd serait le seul à proposer la gestion d'un pool d'IP, les autres solutions déléguant la chose à RADIUS.
- l2tpns: ne fait pas client deb
- OpenL2TP: nécessite un pilote noyau
- Autres
PPTP
Client
- pptpclient: client GNU/Linux [1] [2]
- Inclus dans MS Woe depuis 95OSR2. Failles de sécurité dans la conception ainsi que dans l'implémentation, à réserver en solution de secours.
Support noyau: cf. QEMU#VPN
Configuration:
# Installer pptpclient: aptitude install pptp-linux # /etc/ppp/options.pptp est automatiquement créé, sinon cf [3] # Description du VPN distant: cat <<EOF > /etc/ppp/peers/myconnection file /etc/ppp/options.pptp # Username (1st field in /etc/ppp/chap-secrets) name sylvain # Remote name (2nd field in chap-secrets, not needed if there's "*") remotename myconnection # Use a command instead of a real tty pty "pptp passerelle.vpn.net --nolaunchpppd" EOF # Fichier de mot de passe: cat <<EOF > /etc/ppp/chap-secrets sylvain myconnection mypassword # or more simply, if "sylvain" isn't used for another connection: sylvain * motdepasse EOF
Serveur
- Configuration serveur: [4]
- Pare-feu: protocole IP 47/GRE, 1723/tcp
- Apparemment le traffic GRE est inclus dans RELATED,ESTABLISHED - sauf pour le réseau local?
- Utiliser
-i ppp+
pour une règle s'appliquant sur toutes les interfacesppp0
,ppp1
,ppp2
, etc.
- Support MPPE inclus dans le noyau Linux depuis v2.6.15
Configuration serveur:
# Installer PoPToP: aptitude install pptpd # Authoriser l'accès vers sylvain@cliss21 pour toute adresse IP # (recopier le chap-secrets du client et ajouter une '*' à la fin) # Le nom du serveur peut être différent sur le serveur et le client # mais doit correspondre à /etc/pptpd.conf:name cat <<EOF >> /etc/ppp/chap-secrets sylvain pptp motdepasse * EOF # Configurer le nom du serveur distant sed -i -e 's/^name .*$/name cliss21/' /etc/ppp/pptp-options
À creuser: accel-pptp qui annoncent de meilleurs performances via l'utilisation d'un module noyau.
Sécurité
Si vous utilisez un mot de passe qui se trouve dans le dictionnaire de l'attaquant, asleap le trouve immédiatement:
# ./genkeys -r /etc/dictionaries-common/words -f dict.dat -n dict.idx genkeys 1.4 - generates lookup file for asleap. <jwright@hasborg.com> Generating hashes for passwords (this may take some time) ...Done. 98570 hashes written in 0.25 seconds: 393931.74 hashes/second Starting sort (be patient) ...Done. Completed sort in 724210 compares. Creating index file (almost finished) ...Done. # time ./asleap -i eth0 -f dict.dat -n dict.idx asleap 1.4 - actively recover LEAP/PPTP passwords. <jwright@hasborg.com> Using the passive attack method. Captured PPTP exchange information: username: sylvain auth challenge: a0aa0d2e0ca2fde8e36d6a6c69002e9e peer challenge: 5568ef7b804b35ac77e757aaafa64afa peer response: 06e1349f2a38048f3702a728e46d9c440b0cd67918d697e1 challenge: 8e5fe08c7dcdbb6e hash bytes: 89f1 NT hash: 5fd76204806b2fffa86f8fbedf9189f1 password: zwieback Closing pcap ... real 0m3.006s user 0m0.116s sys 0m0.004s
Également vulnérable à une attaque de type rainbow (force brute efficace pour algorithme de cryptage sans perturbation/salt), mais je n'ai pas trouvé d'outil tout prêt.
OpenVPN
- OpenVPN: solution basée sur TLS, ne nécessite aucun support noyau. Non intégré à Woe. Clients et GUI dispos pour GNU/Linux et Woe.
- Pare-feu: 1194/udp (+ peut-être tcp pour le transport over TCP introduit dans la 1.5)
TCP over TCP
- TCP over TCP ?: d'après l'auteur, une mauvaise idée, avec dégradation facile du réseau.
- Tunnels ethernet avec openssh: OpenSSH 4 intégre TUN/TAP.
À creuser
- VTun: Tun/Tap apparemment bien exploité. La documentation du noyau Linux dit qu'il peut faire VPN. Je n'ai rien trouvé dans la doc :/
Vieux
- FreeS/WAN: abandonné et continué via les forks Openswan et strongSwan.
- secvpn: construit un VPN à base de SSH et ppp, suivant le VPN HOWTO. TCP over TCP. Vieux.
Liens
- Dirty NAT tricks to get a VPN to work with clients also numbered in the private address space: réadressage dynamique du réseau avec
iptables -j NETMAP
:
iptables -v -t nat -A PREROUTING -i ppp+ -d 10.22.8.0/24 -j NETMAP --to 192.168.1.0/24 iptables -v -t nat -A POSTROUTING -o ppp+ -s 192.168.1.0/24 -j NETMAP --to 10.22.8.0/24
- Creating a radius based VPN with support for Windows clients: L2TP + RADIUS + MySQL... et tous les petits soucis infâmes de ce type de montage