Racoon IPSec
...
L’objectif de ce document est de détailler la mise en place d’un VPN IPsec avec authentification LDAP (via FreeRadius) entre 2 passerelles puis entre un "roadwarrior" et une passerelle.
Ce document a été rédigé en LaTeX en utilisant l’excellent Vim sous Debian GNU/Linux. Il est disponible aux formats XHTML et PDF. Les sources LaTeX sont disponibles ici : LATEX
Copyright ©2008 Matthieu VOGELWEITH <matthieu@vogelweith.com>.
Vous avez le droit de copier, distribuer et/ou modifier ce document selon les termes de la GNU Free Documentation License, Version 1.2 ou ultérieure publiée par la Free Software Foundation ; avec aucune section inaltérable, aucun texte de première page de couverture, et aucun texte de dernière page de couverture. Une copie de la licence est disponible dans la page GNU Free Documentation License.
- Permet d’établir un tunnel inter-site, éventuellement avec un concentrateur matériel (Cisco PIX, Netopia, ...)
- Permet de donner un accès complet aux roadwarriors
# aptitude install racoon ipsec-tools
Création de l’autorité de certification
# openssl genrsa -des3 -out /etc/ssl/private/ca.key 2048 # openssl req -new -x509 -days 3650 -key /etc/ssl/private/ca.key -out /etc/ssl/certs/ca.pem
Création de la demande de signature :
# openssl genrsa -out /etc/ssl/private/vpn.key 2048 # openssl req -new -key /etc/ssl/private/vpn.key -out /etc/ssl/certs/vpn.csr
Signature du certificat :
# openssl x509 -req -days 3650 -CAcreateserial \
-in /etc/ssl/certs/vpn.csr -out /etc/ssl/certs/vpn.pem \
-CA /etc/ssl/certs/ca.pem -CAkey /etc/ssl/private/ca.key \
- distribution des routes
- distribution des DNS
Dans /etc/shorewall/zones :
net ipv4 lan ipv4 vpn ipsec
Dans /etc/shorewall/tunnels :
ipsec net 0.0.0.0/0 vpn ipsecnat net 0.0.0.0/0 vpn
Dans /etc/shorewall/hosts :
vpn ppp0:0.0.0.0/0
Dans /etc/shorewall/policy :
vpn lan ACCEPT
- schéma
- l’adresse du clients n’est pas déterminable à l’avance
- schéma
Dans /etc/racoon/racoon.conf :
listen {
adminsock disabled;
}
remote anonymous {
exchange_mode aggressive;
certificate_type x509 "/etc/ssl/certs/vpn.pem" "/etc/ssl/private/vpn.key";
ca_type x509 "/etc/ssl/certs/ca.pem";
my_identifier asn1dn;
proposal_check claim;
generate_policy on;
nat_traversal on;
dpd_delay 20;
ike_frag on;
proposal {
encryption_algorithm aes;
hash_algorithm sha1;
authentication_method hybrid_rsa_server;
dh_group 2;
}
}
mode_cfg {
network4 192.168.100.1; # 192.168.100.1 est la premiere adresse allouee aux clients VPN
pool_size 20;
netmask4 255.255.255.0;
auth_source system;
dns4 192.168.200.254; # 192.168.200.254 est l'adresse du DNS dans le reseau local distant
banner "/etc/racoon/motd";
pfs_group 2;
}
sainfo anonymous {
pfs_group 2;
lifetime time 1 hour;
encryption_algorithm aes;
authentication_algorithm hmac_sha1;
compression_algorithm deflate;
}
Les clients Linux utilisent également Racoon pour établir le tunnel avec le concentrateur VPN.
# aptitude install racoon ipsec-tools # cp /usr/share/doc/racoon/examples/samples/roadwarrior/client/phase1-*.sh /etc/racoon/
Dans /etc/racoon/racoon.conf :
path pre_shared_key "/etc/racoon/psk.txt";
listen {
adminsock "/var/run/racoon/racoon.sock" "root" "operator" 0660;
}
# 1.2.3.4 est l'adresse publique de la passerelle VPN
remote 1.2.3.4 {
exchange_mode aggressive;
ca_type x509 "/etc/ssl/certs/vpn.pem";
proposal_check obey;
nat_traversal on;
ike_frag on;
mode_cfg on;
script "/etc/racoon/phase1-up.sh" phase1_up;
script "/etc/racoon/phase1-down.sh" phase1_down;
verify_cert off;
passive off;
proposal {
encryption_algorithm aes;
hash_algorithm sha1;
authentication_method hybrid_rsa_client;
dh_group 2;
}
}
sainfo anonymous {
pfs_group 2;
lifetime time 1 hour;
encryption_algorithm aes;
authentication_algorithm hmac_sha1;
compression_algorithm deflate ;
}
Dans /etc/shorewall/zones :
net ipv4 wlan ipv4 vpn ipsec
Dans /etc/shorewall/tunnels :
ipsec net 0.0.0.0/0 vpn ipsecnat net 0.0.0.0/0 vpn ipsec wlan 0.0.0.0/0 vpn ipsecnat wlan 0.0.0.0/0 vpn
Dans /etc/shorewall/hosts :
vpn eth0:0.0.0.0/0 vpn wlan0:0.0.0.0/0
- établissement du tunnel :
# racoonctl vc -u <mon_login> 1.2.3.4
- fermeture du tunnel :
# racoonctl vd 1.2.3.4
Sous MacOS X, c’est également Racoon qui est utiliser pour établir les tunnels IPSec. Il existe ensuite plusieurs interfaces graphiques permettant de configurer Racoon le plus simplement possible.
Sous MacOS 10.4, l’interface native fournie par Apple est assez simpliste et ne permet pas d’établir le tunnel IPSec dans tous les cas de figure. Il y a donc deux solutions pour configurer correctement Racoon :
Avec MacOS 10.5 le support des VPN IPSec est beaucoup plus complet et il est possible de tout faire avec le client natif. http ://www.jacco2.dds.nl/networking/openswan-macosx.html#Certs
Le client natif de windows est assez limité mais il existe un très bon client IPSec gratuit développé par Shrew Soft [2].