Provya

Sécurité et téléphonie

Articles & Tutoriaux  -  Liens & Actualités

[pfSense] Monter un accès OpenVPN site-à-site

icon 15/06/2014

Nous allons voir dans cet article comment monter un VPN site-à-site entre deux environnements pfSense en nous reposant sur le logiciel OpenVPN.


VPN site-à-site
OpenVPN permet de monter un VPN site-à-site de manière très simple et efficace.

L'un des sites est configuré comme client et l'autre site comme serveur.

Pour monter notre VPN, nous utiliserons ici le système de clés partagées.
Si avez peu de liens site-à-site à monter, il est recommandé d'utiliser des clés partagées. Au dela de 5 à 6 liens site-à-site, il peut être judicieux d'utiliser la gestion de certificat (SSL/TLS - PKI) par simplicité d'administration.


IPsec vs OpenVPN
Faut-il monter son VPN site-à-site avec OpenVPN ou IPsec ? Vaste question à laquelle nous ne répondrons pas ici ! :-)

Nous préciserons simplement qu'IPsec et OpenVPN peuvent tous les deux être actifs et en service en parallèle sur un même serveur pfSense. La seule contrainte étant, évidemment, de ne pas attribuer les mêmes subnet sur vos lien OpenVPN et IPsec.


OpenVPN Client & Serveur
OpenVPN est basé sur un mode de fonctionnement client-serveur. Qu'un pfSense soit définit comme client ou comme serveur ne changera strictement rien d'un point de vue réseau. Cependant, si vous souhaitez connecter plusieurs sites distants sur un site principal, le plus logique est bien-sûr de définir le site principal comme "serveur" et les sites distants comme "clients".


Configurer OpenVPN côté "serveur"
Sur le pfSense du site "serveur", se rendre dans VPN > OpenVPN. Vous serez dirigez sur la page server par défaut :



Cliquer sur l'icône en forme de "+" pour ajouter un serveur VPN.


  • Server Mode : ici, nous avons cinq possibilités :
  1. Peer to peer (SSL/TLS) : pour monter un VPN site-à-site en utilisant une authentification par certificat.
  2. Peer to peer (Shared Key) : pour monter un VPN site-à-site en utilisant une authentification par clé partagée.
  3. Remote Access (SSL/TLS) : pour monter un accès distant pour clients nomades en utilisant une authentification par certificat.
  4. Remote Access (User Auth) : pour monter un accès distant pour clients nomades en utilisant une authentification par login/password.
  5. Remote Access (SSL/TLS + User Auth) : pour monter un accès distant pour clients nomades en utilisation une authentification par certificat et par login/password.
Nous choisissons Peer to peer (Shared Key).

  • Protocol : nous choisissons UDP.
L'utilisation du protocole TCP n'est pas adaptée à un environnement VPN, car en cas de pertes de paquets ceux-ci devront être retransmis. Ce qui n'est pas forcément souhaité. La conséquence serait un ralentissement du lien VPN à cause d'une forte ré-émission de paquets.
TCP est en revanche particulièrement intéressant si vous devez passer au travers d'une connexion particulièrement restrictive. Dans ce cas, l'utilisation du port 443 (correspondant au port HTTPS) est particulièrement judicieux (il est rare que le port 443 soit bloqué en sortie d'un réseau vers Internet). Attention toutefois, si vous choisissez le port 443, assurez-vous d'abord que le WebGUI de pfSense ne tourne pas déjà sur ce port !

  • Device Mode : nous choisissons tun
TUN travaille avec des frames IP.
TAP travaille avec des frames Ethernet.
  • Interface : l'interface sur laquelle le serveur va recevoir les connexions entrantes. Généralement WAN ou OPT1. Il est également possible de choisir "any" et dans ce cas le serveur sera en écoute sur toutes les interfaces.
  • Local port : port d'écoute du serveur OpenVPN. Par défaut, c'est le 1194. Il est à noter que chaque serveur VPN doit disposer de son propre port d'écoute. De la même manière, il est important de s'assurer qu'aucun autre service ne soit déjà en écoute sur le port choisi... y'en a qui ont essayé ils ont eu des problèmes :-)
  • Description : nom que l'on souhaite donner à ce serveur VPN. C'est ce nom qui apparaîtra dans les listes déroulantes de sélection de VPN se trouvant aux différents endroits du WebGUI pfSense.
  • Shared Key : nous conseillons de laisser coché la case "Automatically generate a shared key". La clé sera à copier/coller côté client.
  • Encryption algorithm : ce paramètre doit être le même côté client et côté serveur. N'importe quel choix sera bon. CAST/DES/RC2 sont moins sécurisés, mais plus rapides. Notre choix se porte sur AES 128 bits
  • Hardware Crypto : précise si le serveur dispose d'un support cryptographique.
  • Tunnel Network : réseau utilisé pour le tunnel VPN. N'importe quel réseau inutilisé dans l'espace d'adressage de la RFC 1918 peut être utilisé. Pour une connexion site-à-site, l'utilisation d'un /30 est suffisant (inutile d'utiliser un /24).
  • Local Network/s : désigne les réseaux locaux accessibles par le client. Il convient d'utiliser la notation CIDR. Dans le cas où l'on souhaite indiquer plusieurs réseaux, il faut les séparer par un point-virgule.
  • Remote Network/s : utilisé uniquement pour l'accès au réseau distant (donc dans une configuration site-à-site). Il convient d'utiliser la notation CIDR. Dans le cas où l'on souhaite indiquer plusieurs réseaux, il faut les séparer par un point-virgule.
  • Concurrent connections : précise le nombre de connexion client possible en simultanée sur ce serveur. Dans le cas d'un VPN site-à-site, ce paramètre peut être renseigné à 1.
  • Compression : permet d'activer la compression LZO sur l'ensemble des flux transitant par ce tunnel VPN. Si les données transitant dans ce tunnel VPN sont principalement des données chiffrées (HTTPS, SSH, etc.), cocher cette option ne fera qu'ajouter un overhead inutile aux paquets.
  • Type-of-Service : cocher cette case indique de reprendre dans les paquets envoyés par OpenVPN la valeur du champ TOS des paquets encapsulés traversant le tunnel. Cette option peut être considérée comme présentant un risque potentiel de sécurité. Aussi, nous ne recommandons pas nécessairement son utilisation.
  • Duplicate Connections : cette option ne doit généralement pas être cochée, à moins que vous ne sachiez ce que vous faites.
  • Advanced : permet de passer des paramètres avancés à OpenVPN. Cela peut notamment être utile si l'on décide de faire du VPN natté (entre deux sites ayant le même plan d'adressage) ou pour pousser des routes spécifiques. Nous ne rentrerons pas dans le détail ici.




Configuration du Firewall
Il est maintenant nécessaire d'autoriser le flux VPN au niveau du firewall. Se rendre dans Firewall > Rules :



Sur l'interface sur laquelle le serveur OpenVPN est en écoute, créer une règle autorisant le trafic à atteindre l'adresse IP et le port du serveur OpenVPN.

Dans notre exemple, nous travaillons sur l'interface WAN et l'adresse IP de notre pfSense sur notre WAN est 109.190.190.10, ce qui donne :

  • Interface : WAN
  • Protocol : UDP
  • Source : si l'adresse IP publique du site distant est connue et fixe, la renseigner en choisissant le type "Single host or alias"
  • Destination : type "Single host or alias", address à 109.190.190.10
  • Destination port range : port choisi lors de la configuration du serveur OpenVPN, soit 1194

Ce qui nous donne la règle suivante :




La configuration côté serveur est terminée. Il nous reste simplement à penser à autoriser ou filtrer nos flux transitant à travers notre nouvelle interface OpenVPN. Pour cela, se rendre dans Firewall > Rules > OpenVPN.


Configurer OpenVPN côté "client"
Sur le pfSense du site "client", se rendre dans VPN > OpenVPN. Puis cliquer sur l'onglet "Client".

Cliquer sur l'icône en forme de "+" pour ajouter un client VPN.

  • Server Mode : ici, nous avons deux possibilités :
  1. Peer to peer (SSL/TLS)
  2. Peer to peer (Shared Key)
Nous choisissons Peer to peer (Shared Key), conformément à ce que nous avons configuré côté OpenVPN serveur.

  • Protocol : choisir le même protocole que celui choisi côté serveur (soit UDP)
  • Device mode : choisir tun
  • Interface : l'interface d'écoute du client OpenVPN. Dans notre cas, ce sera WAN
  • Local port : si ce champ est laissé vide, un port aléatoire sera choisi
  • Server host or address : le nom FQDN ou l'adresse IP publique du site distant (ici, 109.190.190.10)
  • Server port : port d'écoute du serveur OpenVPN distant (ici, 1194)
  • Proxy host or address : adresse du proxy si le pfSense client nécessite de passer par un proxy
  • Proxy port : idem ci-dessus
  • Proxy authentification extra options : idem ci-dessus
  • Server host name resolution : laissez décoché cette case
  • Description : le nom que vous souhaitez donner à votre tunnel VPN
  • Shared Key : copier/coller la clé générée côté OpenVPN serveur
  • Encryption algoithm : renseigner le même algorithme que celui saisi côté OpenVPN serveur
  • Hardware Crypto : précise si le serveur dispose d'un support cryptographique
  • Tunnel Network : même réseau que celui renseigné côté OpenVPN serveur
  • Remote Network/s : Renseigner le réseau du site distant ou n'importe quel autre réseau inutilisé si vous souhaitez faire du VPN natté par exemple. Il convient d'utiliser la notation CIDR. Dans le cas où l'on souhaite indiquer plusieurs réseaux, il faut les séparer par un point-virgule.
  • Limit ourgoing bandwidth : bande-passante maxi allouée à ce tunnel VPN. Laisser vide pour ne pas fixer de limite.
  • Compression : doit être similaire à la configuration côté OpenVPN serveur
  • Type-of-Service : cocher cette case indique de reprendre dans les paquets envoyés par OpenVPN la valeur du champ TOS des paquets encapsulés traversant le tunnel. Cette option peut être considérée comme présentant un risque potentiel de sécurité.
  • Advanced : permet de passer des paramètres avancés à OpenVPN. Nous ne rentrerons pas dans le détail ici.




La configuration côté client est terminée. Il nous reste simplement à penser à autoriser ou filtrer nos flux transitant à travers notre nouvelle interface OpenVPN. Pour cela, se rendre dans Firewall > Rules > OpenVPN.


Debug
Pour disposer d'informations sur vos liens OpenVPN (état, date de début de mise en service, volume entrant/sortant, etc.), se rendre dans Status > OpenVPN.

Pour les logs du firewall, se rendre dans Status > System logs > Firewall.


Pour aller plus loin
[pfSense] La gestion des certificats pour les connexions OpenVPN
[pfSense] Monter un VPN natté (Overlap network) avec OpenVPN
[pfSense] Sécurisez l'accès distant de vos collaborateurs nomades avec OpenVPN


Vous avez aimé cet article ? Vous cherchez un support professionnel ? Alors contactez-nous.

icon Tags de l'article :

8 commentaires

toufdepoil - 04/10/2015 à 13:29:08

super merci :)
Je vais essayer ça de suite sur deux sites distant avec pfsense 2.2

@répondre #lien

JOMILY - 14/07/2016 à 10:20:32

Bonjour,

J'aimerai savoir jusqu'à combien de client site-to-site un serveur openvpn pfsense peut supporter.

Merci

@répondre #lien

Guillaume - 19/07/2016 à 08:45:36

Bonjour,

Il n'y a pas vraiment de limites.

La limite sera la puissance de votre serveur.

Nous avons plusieurs installations avec plusieurs dizaines de tunnels VPN.

Cordialement,

Guillaume
--
Provya

@répondre #lien

Chouaib - 29/09/2016 à 23:51:03

Est qu on peut créer plusieurs utilisateurs openvpn actuellement j ai creer un seul utilisateur avec le port 1194 mai je n ai pas réussi à créer un deuxieme utilisateur

@répondre #lien

Guillaume - 02/10/2016 à 07:47:12

@Chouaib : Bonjour,
Vous avez dû créer un serveur (et non un utilisateur) qui est en écoute sur le port 1194. Vous pouvez créer un second serveur OpenVPN et le configurer pour qu'il soit en écoute sur un autre port (1195, par exemple).

Cordialement,

Guillaume
--
Provya

@répondre #lien

Selaire - 22/02/2018 à 18:14:27

BONSOIR JE SOUHAITE SAVOIR QUAND DOIT T ON UTILISER LE VPN iPSEC ET QUAND DOIT ON UTILISER LE OPENVPN ; MERCI D'AVANCE

@répondre #lien

Guillaume - 27/02/2018 à 09:16:48

@Selaire :
Bonjour,

Cela dépend de votre besoin.
Si vous souhaitez monter un VPN entre un pfSense et un autre firewall (Juniper, Cisco, etc.), il convient d'utiliser un VPN IPsec.
Si vous souhaitez monter un VPN entre 2 pfSense, vous pouvez opter pour un VPN IPsec ou un OpenVPN. Il convient de choisir la technologie avec laquelle vous êtes le plus à l'aise.

Si on veut aller plus dans le détail, il y a des différences de performance entre IPsec et OpenVPN. Mais pour un usage standard, ces différences sont négligeables. Les choix de configuration (comme l'algorithme de chiffrement, par exemple) impactent également la performance.

Cordialement,

Guillaume
--
Provya

@répondre #lien

icon Flux RSS des commentaires de cet article