Différences entre versions de « VPN »
Sauter à la navigation
Sauter à la recherche
imported>SylvainBeucler m |
imported>XavierBéguin (Ajout du lien vers la page Configuration_OpenVPN) |
||
(38 versions intermédiaires par 2 utilisateurs non affichées) | |||
Ligne 1 : | Ligne 1 : | ||
− | == Outils == | + | == Outils de référence == |
− | * [http://packages.debian.org/unstable/net/ | + | === IPSec === |
− | * [http://openvpn.net/ openvpn]: | + | |
− | * [http://vtun.sourceforge.net/ VTun]: Tun/Tap apparemment bien exploité | + | * [http://ipsec-howto.org/ 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. |
+ | ** [http://www.strongswan.org/ strongSwan] | ||
+ | ** [http://www.openswan.org/ 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: | ||
+ | * [http://www.xelerance.com/software/xl2tpd/ xl2tpd]: reprise de l'abandonné [http://l2tpd.sourceforge.net/ l2tpd], [ftp://ftp.xelerance.com/xl2tpd/ 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. | ||
+ | * [http://sourceforge.net/projects/l2tpns l2tpns]: ne fait pas client [http://packages.debian.org/unstable/net/l2tpd deb] | ||
+ | * [http://opensource.katalix.com/openl2tp/ OpenL2TP]: nécessite un pilote noyau | ||
+ | * [http://www.jacco2.dds.nl/networking/openswan-l2tp.html#L2TPoverview Autres] | ||
+ | |||
+ | === PPTP === | ||
+ | |||
+ | ==== Client ==== | ||
+ | |||
+ | * [http://pptpclient.sourceforge.net/documentation.phtml pptpclient]: client GNU/Linux [http://guides.ovh.com/OvpnPptp] [http://pptpclient.sourceforge.net/howto-debian.phtml] | ||
+ | * 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 [http://pptpclient.sourceforge.net/howto-debian.phtml#configure_by_hand] | ||
+ | |||
+ | # 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 | ||
+ | |||
+ | ==== Serveur ==== | ||
+ | |||
+ | * Configuration serveur: [http://poptop.sourceforge.net/dox/] | ||
+ | * Pare-feu: protocole IP 47/GRE, 1723/tcp | ||
+ | ** Apparemment le traffic GRE est inclus dans RELATED,ESTABLISHED - sauf pour le réseau local? | ||
+ | ** Utiliser <code>-i ppp+</code> pour une règle s'appliquant sur toutes les interfaces <code>ppp0</code>, <code>ppp1</code>, <code>ppp2</code>, 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: [http://accel-pptp.sourceforge.net/ 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, [http://asleap.sourceforge.net/ 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 [http://en.wikipedia.org/wiki/Rainbow_table rainbow] (force brute efficace pour algorithme de cryptage sans perturbation/''salt''), mais je n'ai pas trouvé d'outil tout prêt. | ||
+ | |||
+ | === OpenVPN === | ||
+ | |||
+ | * [http://openvpn.net/ 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) | ||
+ | |||
+ | * [http://openvpn.net/index.php/documentation/miscellaneous/static-key-mini-howto.html Static Key Mini-HOWTO]: démarrage rapide avec cryptographie symétrique | ||
+ | * [http://openvpn.net/index.php/documentation/howto.html HOWTO] officiel très complet | ||
+ | |||
+ | * la page de ce wiki sur l'installation d'un serveur et de clients OpenVPN: [[Configuration OpenVPN]] | ||
+ | |||
+ | == TCP over TCP == | ||
+ | |||
+ | * [http://docs.mandragor.org/files/Misc/GLFM/lm31/TCP_over_TCP_mauvaise_iD.html TCP over TCP ?]: d'après l'auteur, une mauvaise idée, avec dégradation facile du réseau. | ||
+ | * [http://www.lea-linux.org/cached/index/Tunnels_ethernet_avec_openssh.html Tunnels ethernet avec openssh]: OpenSSH 4 intégre TUN/TAP. | ||
+ | |||
+ | == À creuser == | ||
+ | |||
+ | * [http://vtun.sourceforge.net/ 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 == | ||
+ | |||
+ | * [http://www.freeswan.org/ FreeS/WAN]: abandonné et continué via les forks Openswan et strongSwan. | ||
+ | * [http://packages.debian.org/unstable/net/secvpn secvpn]: construit un VPN à base de SSH et ppp, suivant le [http://tldp.org/HOWTO/VPN-HOWTO/ VPN HOWTO]. TCP over TCP. Vieux. | ||
+ | |||
+ | == Liens == | ||
+ | |||
+ | * [http://www.nimlabs.org/~nim/dirtynat.html 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 <code>iptables -j NETMAP</code>: | ||
+ | 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 | ||
+ | * [http://www.debian-administration.org/articles/245 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 |
Version actuelle datée du 16 juin 2011 à 10:12
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 * mypassword 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)
- 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
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