====== 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 {{ :tuto:pfsense:pfs_ipsec_1.png |}} {{ :tuto:pfsense:pfs_ipsec_2.png |}} ===== 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 {{ :tuto:pfsense:pfs_ipsec_3.png |}} {{ :tuto:pfsense:pfs_ipsec_4.png |}} {{ :tuto:pfsense:pfs_ipsec_5.png |}} {{ :tuto:pfsense:pfs_ipsec_6.png |}} 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 {{ :tuto:pfsense:pfs_ipsec_7.png |}} {{ :tuto:pfsense:pfs_ipsec_8.png |}} ===== 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 {{ :tuto:pfsense:pfs_ipsec_9.png?300 |}} ===== 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** {{ :tuto:pfsense:pfs_ipsec_10.png |}} * Pour Free mobile: 1380 * Pour Bouygues Télécom : 1370