VPN
De ClissXXI.
Sommaire |
[modifier] Outils de référence
[modifier] 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 (?)
[modifier] 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
[modifier] PPTP
[modifier] 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 * mypassword EOF
[modifier] 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.
[modifier] 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.
[modifier] 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)
- Static Key Mini-HOWTO: démarrage rapide avec cryptographie symétrique
- HOWTO officiel très complet
- la page de ce wiki sur l'installation d'un serveur et de clients OpenVPN: Configuration OpenVPN
[modifier] 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.
[modifier] À 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 :/
[modifier] 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.
[modifier] 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

