VPN

De OpenWikiBSD.

Sommaire

IPSec

Usage de IPSec pour relier deux réseaux : IpSec en mode Tunnel

Tiré de

  • LAN A :
    • @IP Externe : Fixe: A.A.A.A/32
    • Plage Interne : 172.16.0.0/16
  • LAN B depuis le Soekris
    • @IP Externe : DHCP par ma XXXXBox : B.B.B.B/32
    • Plage Interne : 172.31.0.0/16
  • Sur chaque passerelle :
    • permettre le routage IP : /etc/sysctl.conf
net.inet.ip.forwarding=1        # 1=Permit forwarding (routing) of IPv4 packets
    • Permettre le NAT et le passage dans le firewall : /etc/pf.conf
ext_if="vic0"
int_if="vic1"
set skip on { lo $int_if }
nat on $ext_if from !($ext_if) -> ($ext_if:0)
block in
pass out keep state


clés

X509

PassPhrase

Le moins sécurisé, mais suffisant pour les tests.

Le fichier ipsec.conf devient :

ike ...etc.... main auth hmac-sha1 enc 3des group modp1024 quick auth hmac-sha1 enc 3des group none psk MAPASSPHRASE


et ça marche


lynx @IP_SE3:909



                                                                                                                            Authentification SE3

                                                                                                                                                  Bonjour
   
  Authentification...

   Afin de pouvoir rentrer dans l'interface SambaEdu, vous devez indiquer votre identifiant et votre mot de passe sur le r�seau.

   Identifiant :  ____________________
   Mot de passe : ____________________
                               Valider

   Cryptage du mot de passe actif ! 




OpenVPN

Tiré de cette excellente doc de Coagul qui n'a que le défaut de bosser sous Linux/Debian ;-)

Install

Très très fortement inspiré d'une doc simple récente en français : [1]

Install sur OpenBSD 4.7(Le paquet n'existe plus en 4.8, mais de nouveau en 4.9)

  • Installation du paquet
pkg_add -iv openvpn

  • Configuration de la carte virtuelle
echo "/etc/hostname.tun0
up
/usr/local/sbin/openvpn --daemon --config /etc/openvpn/server.conf
" > /etc/hostname.tun0
  • Génération du fichier de configuration
openssl dhparam -out /etc/openvpn/dh1024.pem 1024
  • Génération du fichier de configuration
echo '
;local a.b.c.d

port 1194
proto udp
dev tun0

ca /etc/openvpn/ca.crt
cert /etc/openvpn/server.crt
key /etc/openvpn/server.key  # This file should be kept secret

dh /etc/openvpn/dh1024.pem

server 10.1.1.0 255.255.255.0
#server 172.16.250.0 255.255.255.0

ifconfig-pool-persist ipp.txt
push "route 172.16.0.0 255.255.0.0"
push "dhcp-option DNS 172.16.0.XX"
push "dhcp-option DOMAIN maxp.local"
#push "dhcp-option WINS 172.16.0.2"


keepalive 10 120

comp-lzo

user _openvpn
group _openvpn

persist-key
persist-tun

status /var/log/openvpn-status.log

log         /var/log/openvpn.log
verb 3

' > /etc/openvpn/server.conf

Génération des clés et certificats

Export de certificat serveur

et

Export de certificat client


  • Vous pouvez vérifier le certicat serveur :
openssl verify -CAfile /etc/openvpn/ssl/ca.crt -purpose sslserver /etc/openvpn/ssl/ca.crt 
/etc/openvpn/ssl/ca.crt: OK


En cas de doute, n'hésitez pas à vérifier la chaine de signature :


Mauvaise chaine :

openssl verify -CAfile /etc/openvpn/ssl/ca.crt -purpose sslclient /etc/openvpn/clients/client3.crt 
unable to load certificate
18725:error:0906D06C:PEM routines:PEM_read_bio:no start line:/usr/src/lib/libssl/src/crypto/pem/pem_lib.c:650:Expecting: TRUSTED CERTIFICATE

Mauvais usage du certificat client

openssl verify -CAfile /etc/openvpn/diracCA.crt -purpose sslclient /etc/openvpn/phil.crt 
/etc/openvpn/phil.crt: /le/chemin/de/certification
error 26 at 0 depth lookup:unsupported certificate purpose
OK

Logs du serveur

Bonne chaine

openssl verify -CAfile /etc/openvpn/ssl/ca.crt -purpose sslclient /etc/openvpn/clients/client4.crt 
/etc/openvpn/clients/client4.crt: OK

Au final

Sur un client OpenBSD, il faut donc :

  • Un certificat client dans /etc/openvpn/clients/client.pem
  • Une clé cliente dans /etc/openvpn/clients/client.pem
  • Le certificat de l'AC dans /etc/openvpn/ssl/ca.crt

Config réseau

Côté serveur

  • La création de l'interface a déjà été faite.
sh /etc/netstart

Il va râler sur les permissions, mais les corriger aussitôt.


  • Firewall
echo "
# OpenVPN
pass in log quick on $WAN_IF proto udp from any to $WAN_IP  port 1194
" >> /etc/pf.conf

Ne pas oublier de faire la même chose côté pare-feu du client....


  • Côté client

Sur Ubuntu, j'ai eu un petit souci de résolution de nom sur le LAN, et donc :

#!/bin/bash
sudo perl -pi -e 's/# Generated by NetworkManager/nameserver @IP_DNS_Interne/'  /etc/resolv.conf

et j'accède en local aux imprimantes, serveurs, routeurs etc...


  • Attention à la route de retour!

Si vous passez d'une machine en adressage privé d'un LAN à une autre également NATée d'un autre LAN, il faudra donner aux machines les routes de retour hors du tunnel VPN..

Exemple avec un client sur un réseau en 10.0.0.0 24 qui cause, par le tunnel VPN à une autre machine sur un autre LAN en 10.10.10.9 en VPN. La passerelle VPN est en 10.10.10.5. /sbin/route add -net 10.0.0.0/24 10.10.10.5

Remarques

  • Il s'agit du portage rapide de l'appli depuis LInux. Exemple : /usr/local/share/examples/openvpn/sample-scripts/openvpn.init

contient

/sbin/modprobe pour lancer le module tun...

Essayez cette commande linux sous un BSD, ça marche moyen moyen...

Outils personnels