Différences entre versions de « VPN »

De Cliss XXI
Sauter à la navigation Sauter à la recherche
imported>SylvainBeucler
m
imported>XavierBéguin
(Ajout du lien vers la page Configuration_OpenVPN)
 
(29 versions intermédiaires par 2 utilisateurs non affichées)
Ligne 11 : Ligne 11 :
 
** Utilisé par L2TP/IPSec, inclus dans Woe (2K et + ?)
 
** 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 (?)
 
** 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 ===
 
=== PPTP ===
  
* [http://pptpclient.sourceforge.net/documentation.phtml PPTP]: inclus MS Woe depuis 95OSR2. Failles de sécurité dans la conception ainsi que dans l'implémentation, à réserver en solution de secours. Nécessite un support noyau (protocole IP GRE/47)? PPP MPPE?
+
==== Client ====
** Pare-feu: protocoles IP 47/GRE, 1723/tcp
 
  
Lancement: [http://guides.ovh.com/OvpnPptp] [http://pptpclient.sourceforge.net/howto-debian.phtml]
+
* [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.
  
Nécessaire:
+
Support noyau: cf. [[QEMU#VPN]]
modprobe ppp-compress-18
 
  
Noyau: MPPE ne suffit apparemment pas. Il me manque quelque chose d'autre.
+
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 ===
 
=== OpenVPN ===
Ligne 28 : Ligne 118 :
 
* [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.
 
* [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)
 
** 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 ==
 
== TCP over TCP ==
Ligne 45 : Ligne 140 :
 
== Liens ==
 
== 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>.
+
* [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 à 11: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 interfaces ppp0, 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

À 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

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