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
- AES 128 bits
- 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
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