Différences entre versions de « VPN »

De Cliss XXI
Sauter à la navigation Sauter à la recherche
imported>SylvainBeucler
imported>XavierBéguin
(Ajout du lien vers la page Configuration_OpenVPN)
 
(13 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 ===
Ligne 23 : Ligne 36 :
 
Configuration:
 
Configuration:
 
  # Installer pptpclient:
 
  # Installer pptpclient:
  aptitude install pptpclient
+
  aptitude install pptp-linux
 
   
 
   
 
  # /etc/ppp/options.pptp est automatiquement créé, sinon cf [http://pptpclient.sourceforge.net/howto-debian.phtml#configure_by_hand]
 
  # /etc/ppp/options.pptp est automatiquement créé, sinon cf [http://pptpclient.sourceforge.net/howto-debian.phtml#configure_by_hand]
 
   
 
   
 
  # Description du VPN distant:
 
  # Description du VPN distant:
  cat <<EOF > /etc/ppp/peers/cliss21
+
  cat <<EOF > /etc/ppp/peers/myconnection
 
  file /etc/ppp/options.pptp
 
  file /etc/ppp/options.pptp
 
  # Username (1st field in /etc/ppp/chap-secrets)
 
  # Username (1st field in /etc/ppp/chap-secrets)
  name 'sylvain'
+
  name sylvain
 
  # Remote name (2nd field in chap-secrets, not needed if there's "*")
 
  # Remote name (2nd field in chap-secrets, not needed if there's "*")
  remotename 'cliss21'
+
  remotename myconnection
 
  # Use a command instead of a real tty
 
  # Use a command instead of a real tty
  pty "pptp i.cliss21.org --nolaunchpppd"
+
  pty "pptp passerelle.vpn.net --nolaunchpppd"
 
  EOF
 
  EOF
 
   
 
   
 
  # Fichier de mot de passe:
 
  # Fichier de mot de passe:
 
  cat <<EOF > /etc/ppp/chap-secrets
 
  cat <<EOF > /etc/ppp/chap-secrets
  "sylvain"       "cliss21"      "motdepasse"
+
  sylvain myconnection mypassword
 +
# or more simply, if "sylvain" isn't used for another connection:
 +
sylvain * mypassword
 
  EOF
 
  EOF
  
Ligne 53 : Ligne 68 :
 
Configuration serveur:
 
Configuration serveur:
 
  # Installer PoPToP:
 
  # Installer PoPToP:
  aptitude install pptp-linux
+
  aptitude install pptpd
 
   
 
   
 
  # Authoriser l'accès vers sylvain@cliss21 pour toute adresse IP
 
  # Authoriser l'accès vers sylvain@cliss21 pour toute adresse IP
 
  # (recopier le chap-secrets du client et ajouter une '*' à la fin)
 
  # (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
 
  cat <<EOF >> /etc/ppp/chap-secrets
  sylvain      cliss21       motdepasse      *
+
  sylvain      pptp       motdepasse      *
 
  EOF
 
  EOF
 
   
 
   
 
  # Configurer le nom du serveur distant
 
  # Configurer le nom du serveur distant
 
  sed -i -e 's/^name .*$/name cliss21/' /etc/ppp/pptp-options
 
  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é ====
 
==== Sécurité ====
Ligne 99 : 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 119 : Ligne 143 :
 
  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 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
 
  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