tuto:pfsense:pfsense_ipsec_mobile

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 ;-)

Dans le menu VPNIPsec, 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 ServicesDNS ResolverAccess List)

Après avoir sauvegardé, un bouton vert vous proposera de créer la phase 1 associée, il faut le faire

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 EntriesAdd P2

  • 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

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

Il faut maintenant autoriser (ou non) les clients VPN à se connecter à vos différentes zones. Ça se passe dans FirewallRules → 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

Pour configurer un Android, il faut aller dans le menu RéseauVPNAjouter puis le configurer comme sur la capture

Sur le réseau de certains opérateurs mobiles, il faut ajuster le paramètre Maximum MSS pour que le trafic passe. Dans VPNIPsecAdvanced Settings

  • Pour Free mobile: 1380
  • Pour Bouygues Télécom : 1370
  • tuto/pfsense/pfsense_ipsec_mobile.txt
  • Dernière modification: 25/03/2020 09:53
  • de dani