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
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.