Il est relativement simple de créer une connexion VPN avec pfsense, par exemple au moyen d’OpenVPN qui est intégré dans le logiciel. Une fois l’installation de pfsense terminée et validée il faut suivre différentes étapes qui sont détaillées dans la suite de cet article. Cette VPN est configurée pour permettre l’accès à des utilisateurs itinérants comme des commerciaux disposant de portables et souhaitant se connecter à distance au réseau interne de l’entreprise de manière sécurisée.
La première chose à faire est de télécharger OpenVPN GUI et de l’installer (la procédure suivante décrit une installation sous Windows XP). L’installation peut être effectuée en utilisant les options par défaut (à noter qu’il faut être administrateur local). En plus d’installer le logiciel lui-même, une connexion réseau supplémentaire est créée et il faudra la renommer, par exemple en VPN.
Ouvrir une console DOS et se rendre dans C:\Program Files\OpenVPN\easy-rsa puis taper init-config. Cela va créer (ou remplacer si les fichiers existent déjà) les fichiers vars.bat et openssl.cnf situés dans ce répertoire.
Editer le fichier vars.bat qui contient les paramètres par défaut qui seront utilisés lors de la création des différentes clés de cryptage. Définir les paramètres KEY_COUNTRY, KEY_PROVINCE, KEY_CITY, KEY_ORG et KEY_EMAIL (ne rien laisser vide).
Dans la fenêtre DOS, lancer les commandes vars, clean-all puis build-ca. Cela a pour effet de charger les paramètres par défaut, de supprimer tous les fichiers contenus dans le répertoire \OpenVPN\easy-rsa\keys et de créer le certificat CA (certificate authority) ca.key. La plupart des paramètres demandés seront déjà remplis grâce au fichier vars.bat et il faudra juste renseigner le Common Name, par exemple avec VPN_CA.
Une fois le CA créé il faut générer les clés de cryptage associées au serveur lui-même. Pour cela, toujours dans la console DOS, taper la commande build-key-server server et laisser les valeurs par défaut. Pour le paramètre Common Name, rentrer server. Répondre y au deux questions « Sign the certificate? » et « 1 out of 1 certificate requests certified, commit? » Cela crée les fichiers server.crt, server.csr et server.key dans le répertoire \OpenVPN\easy-rsa\keys.
Pour terminer la génération des clés indispensables au système, taper ensuite build-dh, le fichier dh1024.pem est alors créé.
Il reste enfin à créer les clés de cryptage pour les clients. Taper la commande build-key PrenomNom par exemple et entrer PrenomNom comme Common Name. Attention à bien taper exactement le même nom que dans la commande build-key et à utiliser un nom unique par client. Les fichiers PrenomNom.crt, PrenomNom.csr et PrenomNom.key sont créés, toujours dans \OpenVPN\easy-rsa\keys.
Attention, parmi tous ces fichiers certains sont à garder confidentiels : ca.key, server.key, PrenomNom.key, Prenom2Nom2.key, etc.
Dans l’interface de pfsense, cliquer sur VPN > OpenVPN puis sur l’icône « + » pour ajouter un tunnel VPN. Voici les paramètres à renseigner :
- sélectionner le protocole UDP
- cocher la case Dynamic IP pour permettre aux postes clients de se connecter depuis n’importe où dans le monde
- définir un port local (par exemple 1284)
- définir un pool d’IPs locales différentes de tous les sous-réseaux locaux (par exemple 192.168.192.0/24)
- indiquer le réseau local qui sera accessible aux postes clients connectés en VPN (par exemple 192.168.1.0/24)
- sélectionner BF-CBC (128 bits) comme méthode de cryptage
- sélectionner PKI comme méthode d’authentification
- copier coller le contenu du fichier ca.crt compris entre —– BEGIN CERTIFICATE—– et —–END CERTIFICATE—– dans le champ CA certificate
- copier coller le contenu du fichier server.crt compris entre —– BEGIN CERTIFICATE—– et —–END CERTIFICATE—– dans le champ Server certificate
- copier coller le contenu du fichier server.key compris entre —– BEGIN CERTIFICATE—– et —–END CERTIFICATE—– dans le champ Server key
- copier coller le contenu du fichier dh1024.pem compris entre —– BEGIN CERTIFICATE—– et —–END CERTIFICATE—– dans le champ DH parameters
- cocher la case LZO compression
- dans la case Custom Options entrer les options qui seront transmises aux clients lors de leur connection par exemple
push « dhcp-option DOMAIN corp.com »;push « dhcp-option DNS 192.168.1.1 « ;push « dhcp-option WINS 192.168.1.1 «
Cela a pour effet de définir le domaine local, le serveur DNS et le serveur WINS par défaut. On peut aussi ajouter une entrée de routage vers un autre sous-réseau avec la commande « route 192.168.2.0 255.255.255.0 » par exemple.
Dans le menu Firewall > Rules de pfsense, sélectionner l’onglet WAN puis cliquer sur l’icône « + » pour ajouter une nouvelle règle et entrer les paramètres suivants :
- Action : Pass
- Interface : WAN
- Protocol : UDP
- Source : Type : any
- Destination : Type : any
- Destination port range : from (other) 1284, to (other) 1284 (attention de bien entrer le numéro de port défini plus haut)
- Gateway : default
- Description : VPN
Cliquer ensuite sur Save puis Apply.
Créer un fichier VPN.ovpn dans \OpenVPN\easy-rsa\keys qui contiendra les paramètres de connexion pour les postes clients, en particulier l’IP du routeur et le port à utiliser. Voilà un exemple de fichier ovpn :
float
port 1284
dev tun
dev-node VPN
proto udp
remote IP_du_Routeur 1284
ping 10
persist-tun
persist-key
tls-client
ca ca.crt
cert PrenomNom.crt
key PrenomNom.key
ns-cert-type server
pull
comp-lzo
verb 4
Modifier le paramètre port en fonction du port à utiliser, dev-node en fonction du nom de la connexion réseau, remote en fonction de l’IP externe du routeur et le port à utiliser et les lignes cert et key en fonction de l’utilisateur.
L’installation sur les postes clients est extrêmement simple et peut-être réalisée par des utilisateurs sans formation particulière. Il suffit d’installer le client OpenVPN GUI téléchargé au début de cet article, de l’installer avec toutes les options par défaut puis de renommer la connexion créée par l’installation en VPN. Il faut ensuite fournir quatre fichiers au client qui devront être déposés dans le répertoire C:\Program Files\OpenVPN\config : ca.crt, NomPrenom.crt, NomPrenom.key et VPN.ovpn. Il faut bien sûr fournir les fichiers NomPrenom correspondants à l’utilisateur au cas par cas.
Pour se connecter le client n’aura qu’à faire un clic droit sur l’icône OpenVPN dans la barre de notifications puis cliquer sur Connect. Une fenêtre s’ouvre alors enregistrant les différentes opérations en cours et permettant le debuguage. Le client pourra alors accéder au réseau local de l’entreprise de manière sécurisée.