Ipsec-tools:roadwarrior server
Un article de Free-4ever.
Sommaire |
Introduction
Dans cette section, nous verrons la configuration de Racoon et plus généralement des IPsec-tools pour configurer un concentrateur VPN/IPsec pour les clients roadwarrior configurés d'après ce document: RoadWarrior Client.
Préliminaires
Dans Debian GNU/Linux Sarge, la version de Racoon (0.5.2) ne possède pas le "mode_cfg" qui va nous permettre d'avoir cette configuration roadwarrior avec le concentrateur qui diffuse les paramètres réseau aux clients distants.
Nous allons devoir utiliser un backport de Debian Etch pour les paquets:
- ipsec-tools
- racoon
Ces paquets ne sont pas disponibles à l'heure actuelle sur le site officiel http://www.backports.org mais je les ai construis moi-même. Ils seront prochainement disponible dans http://debian.free-4ever.net voir même sur http://www.backports.org.
Envoyez moi un mail si vous en avez besoin de suite.
Vérifiez bien que vous remplissez les conditions énoncées dans la page Dépendances Noyau
Pour FreeBSD 6.2, IPsec-tools est dans une version assez récente pour être utilisé dans ce mode de configuration.
Mais il fallait bien un "mais".... Il y a un patch noyau à mettre pour le support du NAT traversal.
Il se récupère à l'adresse suivante: http://ipsec-tools.sourceforge.net/freebsd6-natt.diff
Puis on l'applique en se mettant dans le répertoire /usr/src/sys avec la commande patch et on recompile son noyau.
Promis un de ces jours, je ferais une doc sur la compilation noyau sur FreeBSD.
Configuration de Racoon
La première étape sera de créé un certificat pour le concentrateur VPN. Pour cela, vous pouvez vous reporter aux documents: Création de l'autorité de certification et Création d'un certificat avec le CA
Ensuite, il sera biensûr nécessaire d'installer les paquets ipsec-tools et racoon.
Nous allons maintenant configurer Racoon en modifiant le fichier /etc/racoon/racoon.conf.
Voici mon fichier de configuration avec les commentaires dedans:
# Répertoire où sont stockés les certificats
path certificate "/etc/racoon/certs";
# Les IP sur lesquelles Racoon écoute
listen {
isakmp 192.168.48.245 [500];
isakmp_natt 192.168.48.245 [4500];
}
# Définition d'un noeud distant
# Ici, on ne sait pas d'où viennent les connexions...
# On peut venir de n'importe où en roadwarrior
remote anonymous {
# Définition du mode pour la phase 1
# Doit être à aggressive pour une configuration roadwarrior
exchange_mode aggressive;
# le certificat et sa clef associée que l'on a généré pour notre concentrateur
certificate_type x509 "vpngw_cert.pem" "vpngw_key.pem";
# La facon de s'identifier. Racoon prendra le ASN.1 distinguished name dans le certificat
my_identifier asn1dn;
# Pour que le concentrateur soit "maitre" sur les paramètres de la phase 1
proposal_check claim;
# Racoon génère les "routes" pour savoir quels paquets doivent passer par le VPN
# On ne peut pas les définir d'avance car en roadwarrior, on ne connait pas l'IP source
generate_policy on;
# On active le NAT traversal avec détection automatique
nat_traversal on;
# Le delai pour la détection de defaillance de l'hôte distant
dpd_delay 20;
# workaround pour les firewalls qui posent problème avec les paquets IKE fragmentés.
ike_frag on;
# Proposition pour l'encryption et l'authentification
proposal {
# Encryptage en AES
encryption_algorithm aes;
# hashage en SHA1
hash_algorithm sha1;
# le type d'authentification
authentication_method hybrid_rsa_server;
# le groupe Diffie-Hellman utilisé
dh_group 2;
}
}
# Configuration du mode_cfg
mode_cfg {
# Configuration du pool d'adresse IP
# La première addresse allouable
network4 192.168.254.130;
# La nombre d'adresse et donc le nombre de clients simultanés maximum
pool_size 100;
# le netmask du réseau
netmask4 255.255.0.0;
# Le DNS que les clients doivent utiliser
dns4 192.168.48.252;
# Le server WINS que les clients doivent utiliser
nbns4 192.168.48.251
# La source pour authentifier les utilisateurs
auth_source pam;
# La banière que les clients recoivent à la connexion
banner "/etc/racoon/motd";
# PFS Group pour le client Cisco VPN
pfs_group 2;
}
# Spécifications pour le SA "anonymous"
# Comme précedement, en roadwarrior on connait pas la source
sainfo anonymous {
# le groupe Diffie-Hellman utilisé
pfs_group 2;
# Durée de vie d'une association
lifetime time 1 hour;
# Encryption en AES
encryption_algorithm aes;
# Authentification par SHA1
authentication_algorithm hmac_sha1;
# Compression activée
compression_algorithm deflate;
}
Il est à noter que les utilisateurs VPN seront authentifiés grâce à PAM. Il faut doit que PAM soit correctement configuré.
Pour ma part, j'ai teste avec PAM qui s'appuie sur l'authentification LDAP et fichier passwd.
Configuration de IPsec-tools
Les associations au niveau du kernel, les "routes" d'une certaine facon de parler, seront définies dynamiquement. Comme je l'ai écrit dans le fichier de configuration, en roadwarrior on ne sait pas d'où les clients se connectent donc on ne peut les définir d'avance.
C'est donc Racoon qui va les définir dynamiquement grâce à la directive: generate_policy on.
Il faut donc vérifier que le fichier /etc/ipsec-tools.conf est bien vide ou que toutes les lignes sont commentées.
Les certificats
Il faudra maintenant placer les certificats dans le répertoire /etc/racoon/certs.
Nous devrons y trouver:
- le certificat du concentrateur VPN
- la clef associée au certificat
- le certificat de l'autorité de certification. Si vous avez suivi Création de l'autorité de certification, il se trouve dans le sous répertoire demoCA et le nom du fichier est cacert.pem.
Attention aux droits des fichiers !!! Le plus simple est encore de faire appartenir le répertoire au root et qu'il ne soit lisible que par lui.
Activer les modifications
il ne reste plus qu'à redémarrer Racoon avec la commande suivante sur une Debian:
# /etc/init.d/racoon restart
TODO
Valider tout cela sur FreeBSD.
Mot de la fin
Le concentrateur VPN est maintenant configuré. Il ne reste plus qu'à s'occuper des clients. Pour cela, vous pouvez vous reportez au document RoadWarrior Client.
Par: Silencer 21 novembre 2006 à 16:34 (CET)

