VPN
De OpenWikiBSD.
Sommaire |
IPSec
Usage de IPSec pour relier deux réseaux : IpSec en mode Tunnel
- 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
et
- 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...

