VPN IPsec roadwarriors
Firewall Services privilégie généralement OpenVPN pour les VPN, que ça soit pour du site à site, ou des itinérants (en attendant wireguard …). Il est bien plus simple à manipuler qu'IPsec, utilise des interfaces “standards”, ajoute des entrées standards à la table de routage, bref tout est plus simple.
Mais IPSec peut avoir des avantages. En performances d'abord, mais aussi et surtout : il est supporté nativement par pas mal de systèmes, dont Android par exemple.
Dans ce tuto, on va configurer PfSense pour être serveur VPN pour une flotte d'Android. En utilisant PSK + Xauth (une clé secrète partagée et une vérification login / pass). Pour la partie login / pass, on utilise ici deux annuaires LDAP, mais ça pourrait être des comptes locaux.
IPSec a la particularité d'être complexe : on trouve beaucoup de tuto pour ça, chacun avec ses petites différences. Celui là n'est qu'un de plus
Activer IPSec mobile
Dans le menu VPN → IPsec, aller sur l'onglet Mobile Client
Cocher Enable IPSec Mobile Client support
Sélectionner les sources d'authentification pour les utilisateurs (dans cet exemple, 2 annuaires LDAP)
Laisser Group authentication à none
Cocher Provide a virtual IP address to clients et saisir une plage d'adresse (qui n'est pas utilisée ailleurs !)
Cocher Provide a list of accessible networks to clients
Cocher Allow clients to save Xauth passwords (Cisco VPN client only)
Cocher Provide a default domain name to clients et saisir le domaine de recherche à donner aux clients
Cocher
Provide a DNS server list to clients et saisir l'adresse du serveur
DNS à donner aux clients. Vous pouvez utiliser une adresse IP du PfSense (par exemple, son adresse IP
LAN), mais attention dans ce cas : il faut ajouter une
ACL autorisant la plage réseau VPN à requêter (Dans
Services →
DNS Resolver →
Access List)
Après avoir sauvegardé, un bouton vert vous proposera de créer la phase 1 associée, il faut le faire
Créer la phase 1
Dans la fenêtre de création de la phase 1, il faut :
Pour Key Exchange Version, choisir IKEv1
Internet protocol : selon votre environnement (probablement IPv4)
Interface : généralement WAN
Description : IPSec Mobile
Authentication Method : Mutual PSK + Xauth
Negociation mode : agressive
My identifier : My IP address
Peer identifier : User distinguished name → vpn@mobile (chaîne arbitraire, il faudra simplement mettre à la même sur les clients)
Pre-Shared Key : une passphrase. De préférence longue, et aléatoire. Elle devra être tapée sur les clients lors de la configuration
Encryption Algorithm
AES
128 bits
SHA256
2 (1024 bit)
Lifetime : 28800
NAT Traversal : Force
Sauver, puis cliquer sur Show Phase 2 Entries → Add P2
Créer la phase 2
Mode : Tunnel
Local Network : saisir ici le réseau qui doit être joignable depuis les clients. Si vous voulez que tout le trafic soit envoyé dans le tunnel, saisir 0.0.0.0/0
NAT / BINAT : Laisser à None
Protocol : ESP
Encryption Algorithms
Hash algorithms : SHA256
PFS key group : off
Lifetime : 3600
Ajout des règles sur l'interface WAN
Pour que le VPN puisse s'établir, il faut que les ports UDP 500 et 4500 soit accessibles. PfSense ajoute par défaut ces règles. Si vous avez désactivé l'option, il faut les créer manuellement
Ajout des règles sur l'interface IPSec
Il faut maintenant autoriser (ou non) les clients VPN à se connecter à vos différentes zones. Ça se passe dans Firewall → Rules → IPsec
Il n'y a qu'un seul onglet IPsec même si vous utilisez plusieurs tunnels différents. On peut discriminer en utilisant l'IP source
Configuration d'un android
Pour configurer un Android, il faut aller dans le menu Réseau → VPN → Ajouter puis le configurer comme sur la capture
Ajustement MSS
Sur le réseau de certains opérateurs mobiles, il faut ajuster le paramètre Maximum MSS pour que le trafic passe. Dans VPN → IPsec → Advanced Settings