Provya

Expertise pfSense

Sommaire des articles  -  Liens & Actualités  -  Firewall pour pfSense

[pfSense] Configurer son serveur DHCP

icon 06/08/2019 - 5 commentaires

pfSense peut être utilisé comme serveur DHCP ou relai DHCP.

Nous allons configurer ici pfSense en tant que serveur DHCP pour des adresses IPv4.

Article mis à jour le : 06/08/2019



Activer le service DHCP


Pour commencer, se rendre dans le menu "Services" > "DHCP Server" :

menu Services > DHCP Server pfSense Provya


On choisi l'interface sur laquelle nous souhaitons activer le serveur DHCP. Dans notre cas, ce sera "LAN".

Pour commencer, nous cochons évidemment la case "Enable DHCP server on LAN interface".



Configuration du serveur DHCP


Les éléments pouvant être configurés sont les suivants :

  • BOOTP : cocher cette case permet de désactiver la prise en charge des requêtes BOOTP. Le protocole BOOTP est en quelque sorte l'ancêtre du protocole DHCP.

  • Deny unknown clients : cette option permet de filtrer les requêtes DHCP.
Par défaut (option non-cochée), pfSense attribue une adresse IP à n'importe quel terminal connecté sur le réseau qui fait une demande d'adresse IP. C'est, à priori, le mode souhaité dans la plupart des cas. Cependant, il est possible, dans des environnements plus restrictifs, de n'autoriser la distribution d'adresses IP qu'aux terminaux connus (c'est-à-dire dont l'adresse MAC a été renseignée dans pfSense) ; dans ce cas, cette case doit être cochée. Il est à noter que cette option se défini par plage d'adresses.

  • Ignore denied clients : cocher cette case permet d'ignorer les requêtes DHCP des clients interdits plutôt que de leur renvoyer une réponse explicite de refus. Cette option n'est pas compatible avec une configuration de pfSense en haute-disponibilité.

  • Ignore client identifiers : permet d'ignorer l'UID du client. Cette option peut être intéressante si l'on souhaite qu'un ordinateur disposant d'un dual-boot conserve la même adresse IP lorsqu'il bascule d'un système d'exploitation à l'autre. Cependant, activer cette option revient à ne pas respecter les spécification officielles du fonctionnement du protocole DHCP.

  • Subnet : cette ligne rappelle l'adresse du réseau.

  • Subnet mask : cette ligne rappelle le masque de sous-réseau.

  • Available range : cette ligne donne la plage maximale sur laquelle des adresses IP peuvent être attribuées. Cette information est bien pratique pour les réseaux n'étant pas en /24.

  • Range : permet de définir la plage d'adresses IP qui sera utilisée.
Par défaut, pfSense propose la plage d'adresse allant de 100 à 199 (soit, par exemple, 192.168.1.100 à 192.168.1.199). Nous sommes libres de la modifier dans la limite de la taille maximale rappelée à la ligne précédente (available range).
Si nous souhaitons définir plusieurs plages d'adresses IP différentes (soit pour filtrer les terminaux connus des terminaux inconnus, soit pour d'autres raisons liées à notre architecture réseau), il est possible de définir plusieurs plages d'adresses IP (section Additional Pools juste en-dessous).

Pour ajouter une seconde plage d'adresses IP, cliquer sur le bouton "+ Add pool" de la section "Additional Pools". Cela aura pour effet d'ouvrir une nouvelle fenêtre permettant de définir l'ensemble des paramètres propres à cette plage d'adresses IP.

Évidemment, cette option n'est utile que si nous disposons d'un serveur WINS sur notre réseau. Les serveurs WINS n'ont pas forcément besoin d'être sur le même sous-réseau (dans ce cas, il faut veiller à bien configurer les règles de routage et de filtrage au niveau du firewall).
Dans le cas où nous n'utilisons pas de serveur WINS (ce qui doit être le cas de la quasi-totalité des réseaux modernes), nous laissons ces champs vides.

  • DNS servers : ce champ peut être renseigné ou resté vide. Si l'on souhaite passer au client la même configuration DNS que celle configurée dans pfSense, alors il faut laisser ces champs vides. En revanche, si l'on souhaite passer au client d'autres serveurs DNS que ceux configurés dans pfSense, ou si l'on souhaite que ce soit pfSense qui agisse comme serveur DNS, il faut renseigner les adresse IP correspondantes ici.
Pour les réseaux locaux avec des terminaux Windows et un serveur Active Directory, il est conseillé d'indiquer l'adresse du serveur Active Directory.

  • Gateway : si pfSense est la passerelle pour ce réseau, ce champ peut être laissé vide. Dans le cas contraire, nous indiquons ici l'adresse IP de la passerelle.

  • Domain name : permet d'indiquer aux clients le nom de domaine correspondant au réseau et donc qu'ils devront utiliser pour former leur FQDN. Si rien n'est indiqué, c'est le nom de domaine renseigné dans la configuration gloable de pfSense qui sera passé aux clients.

  • Domain search list : cette information est utile dans le cas où l'on dispose de plusieurs domaines.
Lors d'une recherche sur un nom d'hôte sur le réseau, le client concaténera le nom d'hôte au nom de domaine. Chaque domaine doit être séparé par un point-virgule. Cette information est passée au client via l'option DHCP 19. Donc, dans le cas où il n'y a qu'un seul domaine local, ce champ doit être laissé vide (lorsque qu'un client fera une recherche sur un nom d'hôte, la concaténation se fera avec le nom de domaine défini à la ligne précédente).

  • Default lease time et Maximum lease time : ces deux options permettent de contrôler la durée des baux DHCP.
Default lease time est utilisée quand un client ne demande pas de durée spécifique d'enregistrement pour son bail. Si le client demande une durée de bail qui est supérieure à Maximum lease time, la durée de bail donnée sera celle définie dans Maximum lease time. Ces valeurs sont définies en secondes.
Si les champs sont laissés vides, les valeurs par défaut sont de 7.200 secondes (2h) pour la durée de bail par défaut et 86.400 secondes (1 jour) pour la durée de bail max.

  • Failover peer IP : si vous possédez deux serveurs pfSense configurés en failover, renseignez ici l'adresse IP physique (pas l'adresse virtuelle) du second serveur pfSense. Autrement, laissez ce champ vide.

  • Static ARP : cette option est l'exact opposé de "Deny unknow clients" : elle permet de lister les machines capables de communiquer avec pfSense sur le réseau. Ainsi, tous les terminaux n'étant pas référencés (c'est-à-dire dont l'adresse MAC est connue et référencée dans pfSense) ne pourront pas communiquer avec pfSense. Il faut faire très attention lorsque l'on manipule cette option ! De plus, lorsqu'elle est cochée, cette option reste active même si le service DHCP est arrêté.

  • Time format change : par défaut, les durées de baux DHCP sont affichées au format UTC. En cochant cette option, elles sont formatées au fuseau horaire local. C'est une option d'affichage purement esthétique.

  • Statistics graphs : cocher cette option permet d'activer les graphiques RRD. Cette option est désactivée par défaut.

  • Dynamic DNS : cette option permet de définir un serveur DNS dynamique (à saisir dans le champ correspondant). Dans le cas où pfSense est configuré en mode "DNS forwarder", cette option ne devrait pas être cochée, et le DNS forwarder devrait être configuré en conséquence.

  • MAC Address Control : cette option permet de filtrer les accès au serveur DHCP par adresses MAC.
Le premier champ permet de définir les adresses MAC autorisées. Le second champ, les adresses MAC interdites. Ces adresses MAC peuvent être saisies partiellement (par exemple, saisir 01:E5:FF autorisera ou interdira, suivant le champ dans lequel elle aura été saisie, toutes les adresses MAC commençant par cette séquence).
Les adresses MAC (ou adresses MAC partielles) doivent être séparées par une virgule, sans espace. Ces champs peuvent être laissés vides si l'on ne souhaite pas appliquer de contrôle sur les adresses MAC des terminaux.

Il est important de comprendre qu'à partir du moment où une adresse MAC (ou adresse MAC partielle) est saisie dans le champ des adresses autorisées, toutes les autres adresses MAC seront interdites d'accès ; et inversement, si l'on saisi une ou des adresses MAC dans le champ des adresses interdites, toutes les autres adresses MAC seront autorisées.

Un exemple d'utilisation de cette fonctionnalité est la séparation des téléphones IP et des ordinateurs sur un même réseau sans utilisation de VLAN. En admettant que tous les téléphones IP disposent d'une adresses MAC commençant par aa:bb:cc, alors sur la plage d'adresses réservées aux ordinateurs, nous interdirons les adresses MAC commençant par aa:bb:cc (en saisissant cette séquence dans le champ des adresses interdites) ; et sur la plage d'adresse réservées à la VoIP, nous autoriserons uniquement les adresses MAC commençant par aa:bb:cc (en saisissant cette séquence dans le champ des adresses autorisées).


  • TFTP server : permet de saisir l'adresse IP ou le nom d'hôte d'un serveur TFTP. Cette option est principalement utilisée pour l'auto-provisioning pour la téléphonie sur IP. Elle correspond à l'option DHCP 66.

  • LDAP : permet d'envoyer l'URI d'un serveur LDAP aux clients en faisant la demande. Cela correspond à l'option DHCP 95. Le format saisi doit être celui d'une URI LDAP tel que ldap://ldap.example.com/dc=example,dc=com.

  • Network booting : pour activer cette fonctionnalité, il faut cocher la case correspondante (Enables network booting), saisir l'adresse IP du serveur ainsi que le nom du fichier d'image disque bootable. L'ensemble de ces champs doit être complété pour que cette option fonctionne correctement.

  • Additional BOOTP/DHCP Options : permet de pousser n'importe quelle option DHCP (dont nous détaillons le paramétrage au paragraphe suivant).

Une fois l'ensemble des configurations effectué, il ne reste plus qu'à cliquer sur Save !



Les options avancées du serveurs DHCP


L'une des grandes forces du serveur DHCP de pfSense est qu'il offre une interface de configuration simple pour la plupart des fonctionnalités DHCP. De plus, il permet également de délivrer l'intégralité des options DHCP. La liste des options DHCP possibles est disponible sur le site de l'IANA.

Plusieurs formats sont disponibles pour ces options DHCP. Les noms de ces formats pouvant être peu intuitifs, nous les détaillons ici :

Text : texte libre de forme.
String : une suite de chiffres hexadécimaux séparés par le caractère deux-points ":" (ex : 00:a8:c9)
Boolean : la valeur true ou la valeur false
Unsigned 8, 16, or 32-bit Integer : un nombre entier positif (supérieur à zéro), jusqu'à 86400
Signed 8, 16, or 32-bit Integer : un nombre entier positif ou négatif, jusqu'à -512
IP address or host : une adresse IP (ex : 192.168.1.2) ou un nom d'hôte (ex : www.example.com)



Exemple de configuration avancée : serveur DHCP pour ordinateurs et téléphones IP


Nous prendrons l'exemple d'une configuration où les postes téléphoniques et les ordinateurs se trouvent sur le même réseau (sans séparation par VLAN). Nous souhaitons regrouper les adresses IP des postes téléphoniques et celles des ordinateurs.

Dans notre exemple, nous utiliserons le plan d'adressage suivant : 192.168.2.0/24 ; le serveur pfSense dispose de l'adresse IP 192.168.2.1 ; le serveur de téléphonie de l'adresse IP 192.168.2.2.
Sur ce réseau, nous avons une vingtaine de postes informatiques et autant de postes téléphoniques.

Dans notre exemple, les téléphones IP ont tous une adresse MAC commençant par la séquences AA:BB:CC.

Nous souhaitons attribuer des adresses IP de 192.168.2.10 à 192.168.2.99 aux téléphones IP ; et des adresses IP de 192.168.2.100 à 192.168.2.199 aux autres terminaux (ordinateurs, imprimantes, etc.).


Le schéma de notre réseau est donc le suivant :

schéma réseau pfSense ordinateurs téléphones Provya



Nous configurons pfSense avec une première plage (champ Range) allant de 192.168.2.10 à 192.168.2.99 pour laquelle nous autorisons uniquement les adresses MAC (premier champ de l'option MAC Address Control) commençant par AA:BB:CC :

configuration DHCP voip pfSense Provya



Nous ajoutons ensuite une seconde plage (bouton "+ Add" de la section "Additional Pools") allant de 192.168.2.100 à 192.168.2.199 pour laquelle nous interdisons les adresses MAC (second champ de l'option MAC Address Control) commençant par AA:BB:CC :

configuration DHCP ordinateurs pfSense Provya


Notre configuration est terminée :

configuration deux pools DHCP pfSense Provya


Dernière étape : si un serveur d'auto-provisioning des téléphones IP est présent sur le réseau, on pourrait ajouter ce paramètre au serveur DHCP.



Pour aller plus loin


[pfSense] Configurer ses VLAN
Best practices / Recommandations pour la configuration de votre firewall
Tous nos articles classés par thème
Voir un article au hasard


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

Retrouvez nos services et firewall pour pfSense


Formation pfSense     Formation OPNsense     Liste de filtrage des IP malveillantes     Firewall pro-Large pour pfSense et OPNsense     Firewall pro-Alto pour pfSense et OPNsense     Firewall pro-Cito pour pfSense et OPNsense    

store.provya.fr

icon Tags de l'article :

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

icon 31/07/2019 - 25 commentaires

English version: [pfSense] Configuring a Site-to-Site OpenVPN Instance.

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

Article mis à jour le : 31/07/2019


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 VPN site-à-site à monter, il est recommandé d'utiliser des clés partagées. Au delà de 5 à 6 liens VPN 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 utiliser les mêmes sous-réseaux sur vos lien OpenVPN et IPsec.



OpenVPN Client & Serveur


OpenVPN est basé sur un mode de fonctionnement client-serveur. Qu'un pfSense soit défini 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".

Dans cet article, nous prendrons l'exemple de configuration suivant :

Schéma réseau OpenVPN pfSense - Provya


Le pfSense du site A sera configuré comme serveur OpenVPN. Le pfSense du site B sera configuré comme client OpenVPN.



Configurer OpenVPN côté "serveur"


Sur le pfSense du site A, se rendre dans le menu VPN > OpenVPN. Vous serez par défaut dirigé sur l'onglet Servers :

menu VPN > OpenVPN - pfSense Provya


Cliquer sur le bouton "+ Add" pour ajouter un serveur VPN.

Les champs à configurer sont les suivants :

  • 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 on IPv4 only".
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. Dans notre cas, nous saisissons "VPN Provya".
  • 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 si l'une des deux parties ne supporte pas le protocole NCP. N'importe quel algorithme travaillant avec une clé d'au moins 128 bits sera bon. 256 bits sera encore mieux. CAST/DES/RC2 sont moins sécurisés, et donc à bannir. Notre choix se porte sur AES 256 bits CBC
  • Enable NCP : cocher la case permet d'activer le protocole NCP pour que le client et le serveur négocie le protocole de chiffrement le plus approprié. Nous laissons la case cochée.
  • NCP Algorithms : Les algortithmes de chiffrement que nous souhaitons supporter côté serveur.
  • Auth digest algorithm : nous laissons la valeur par défaut SHA256.
  • Hardware Crypto : précise si le serveur dispose d'un support cryptographique.
  • IPv4 Tunnel Network : réseau utilisé pour le tunnel VPN. N'importe quel réseau privé 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). Dans notre cas, nous utilisons le sous-réseau 10.0.8.0/30.
  • IPv4 Remote network(s) : désigne le ou les réseaux distants accessibles par le serveur. Il convient d'utiliser la notation CIDR (ex : 192.168.1.0/24). Dans le cas où l'on souhaite indiquer plusieurs réseaux, il faut les séparer par une virgule. Dans notre cas, nous indiquons le réseau utilisé sur le site B, soit 192.168.2.0/24.
  • 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/LZ4 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.
  • Custom options : 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.

Une fois la configuration renseignée, nous cliquons sur "Save" pour valider notre configuration.

Exemple de résultat obtenu :

exemple configuration OpenVPN clée partagée pfSense Provya


La configuration openVPN est terminée côté serveur. Il faut maintenant ajouter les règles de filtrage pour rendre accessible le serveur openVPN.



Configuration du Firewall


Il est maintenant nécessaire d'autoriser le flux VPN au niveau du firewall. Pour cela, se rendre dans le menu Firewall > Rules :

menu Firewall > Rules pfSense Provya


Sur l'interface sur laquelle le serveur OpenVPN est en écoute (WAN, dans notre exemple), 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, l'adresse IP du pfSense sur le site A est 109.190.190.10, et l'adresse IP publique du site B est 108.198.198.8. Ce qui donne la configuration suivante :

  • Interface : WAN
  • Protocol : UDP
  • Source : si l'adresse IP publique du site distant n'est pas connue on laisse any, sinon on la renseigne 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 dans notre cas.

Ce qui nous donne la règle suivante :

règle firewall openVPN server pfSense Provya



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 pour créer ses règles.

Exemple de règle à configurer sur l'interface LAN du pfSense du site A :

règle firewall openVPN pour trafic LAN vers LAN pfSense Provya


Exemple de règle à configurer sur l'interface OpenVPN du pfSense du site A :

règle firewall openVPN pour trafic LAN vers LAN pfSense Provya



Passons à la configuration côté client.



Configurer OpenVPN côté "client"


Sur le pfSense du site "client", se rendre dans VPN > OpenVPN, puis dans l'onglet "Clients".

Cliquer sur l'icône "+ Add" pour ajouter un client VPN.

Les champs à configurer sons sensiblement les mêmes que ceux côté serveur :

  • 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 on IPv4 only)
  • Device mode : choisir tun
  • Interface : l'interface via laquelle le client OpenVPN va joindre le serveur. Dans notre cas, ce sera WAN
  • Local port : si ce champ est laissé vide, un port aléatoire sera choisi
  • Server host or address : l'adresse IP publique du site distant, c'est-à-dire l'adresse IP publique du site A dans notre cas (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 : idem ci-dessus
  • Description : le nom que vous souhaitez donner à votre tunnel VPN (ici, VPN Provya)
  • Auto generate / Shared Key : décochez la case "Auto generate" et copier/coller la clé générée côté OpenVPN serveur
  • Encryption algorithm : renseigner le même algorithme que celui saisi côté OpenVPN serveur (AES-256-CBC). Cet algorithme sera utilisé uniquement si NCP n'est pas activé ou supporté
  • NCP Algorithms : les mêmes que ceux sélectionnés côté serveur
  • Auth digest algorithm : on laisse la valeur par défaut, soit SHA256
  • Hardware Crypto : précise si le serveur dispose d'un support cryptographique
  • IPv4 Tunnel Network : même réseau que celui renseigné côté OpenVPN serveur, soit 10.0.8.0/30
  • IPv4 Remote Network(s) : on renseigne le réseau du site distant. Il convient d'utiliser la notation CIDR. Dans le cas où l'on souhaite indiquer plusieurs réseaux, il faut les séparer par une virgule. Dans notre cas, cela donne : 192.168.1.0/24
  • 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
  • Advanced : permet de passer des paramètres avancés à OpenVPN. Nous ne rentrerons pas dans le détail ici.

Exemple de résultat obtenu :

exemple configuration openVPN client clée partagée pfSense Provya



La configuration côté client est terminée. Il nous reste simplement à penser à autoriser ou filtrer nos flux transitant à travers notre nouvelle interface OpenVPN.

Exemple de règle à configurer sur l'interface LAN du pfSense du site B :

règle firewall openVPN pour trafic LAN vers LAN pfSense Provya


Exemple de règle à configurer sur l'interface OpenVPN du pfSense du site B :

règle firewall openVPN pour trafic LAN vers LAN pfSense Provya




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
[pfSense] Configurer un VPN IPsec site à site
Tous nos articles classés par thème
Voir un article au hasard


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

Retrouvez nos services et firewall pour pfSense


Formation pfSense     Formation OPNsense     Liste de filtrage des IP malveillantes     Firewall pro-Large pour pfSense et OPNsense     Firewall pro-Alto pour pfSense et OPNsense     Firewall pro-Cito pour pfSense et OPNsense    

store.provya.fr

icon Tags de l'article :

Best practices / Recommandations pour la configuration de votre firewall

icon 25/06/2019 - 1 commentaire

Nous présentons dans cet article les meilleures pratiques pour la configuration des règles de filtrage sur un firewall. Nous prendrons comme exemple la configuration d'un firewall pfSense, mais l'ensemble de ces recommandations est applicable aux autres firewall du marché.

Pour l'écriture de cet article, nous nous sommes basés sur les recommandations émises par l'ANSSI à travers ses publications Recommandations pour la définition d’une politique de filtrage réseau d’un pare-feu et Recommandations et méthodologie pour le nettoyage d’une politique de filtrage réseau d’un pare-feu.



Recommandations générales


La définition d'une politique de gestion d'un pare-feu doit être structurée et normée afin que tous les intervenants manipulant la configuration de l'équipement disposent d'un référentiel de travail clair et d'une manière de procéder qui soit uniforme.

Pour cela, nous recommandons l'application des principes suivants :


1. La configuration se fait sur l'interface d'arrivée du paquet


Lorsque l'on configure des règles de filtrage sur un pare-feu, deux approches sont possibles : appliquer le filtrage lorsque le paquet réseau arrive sur le pare-feu, on parle alors de filtrage de type ingress, ou appliquer le filtrage lorsque le paquet réseau quitte le pare-feu, on parle alors de filtrage de type egress.

C'est-à-dire que pour filtrer du trafic allant, par exemple, du réseau LAN vers Internet ou le réseau WAN, la configuration doit être effectuée sur l'interface LAN.
Ce mode de fonctionnement est d'ailleurs le seul proposé sur pfSense (filtrage sur l'interface d'arrivée des paquets).

Pour être tout à fait précis, pfSense peut faire un filtrage sur l'interface de sortie du pare-feu depuis les règles de floating ; mais ce n'est clairement pas le but premier des règles de floating.


2. Il faut être le plus précis possible


Dans l'écriture des règles de filtrage, il faut toujours être le plus précis possible. Plus une règle sera précise et mieux cela sera. D'une part car l'on sera certain que seul le trafic voulu correspondra à cette règle, et d'autre part cela facilitera grandement la lecture et la compréhension des règles de filtrage.

Ainsi, dès que l'on connaît l'adresse IP, le réseau source ou le réseau destination, le port de destination, le protocole (TCP, UDP, ...), il faut le préciser dans sa règle.

Dans l'organisation de sa politique de filtrage, il est également important de classer les règles des plus précises aux plus larges.
Les règles très précises (concernant seulement quelques postes, par exemple) seront placées avant les règles plus larges (concernant tout le réseau local, par exemple).


3. Toujours préciser la source pour les interface internes


Il est important de systématiquement préciser l'adresse IP source ou le réseau source lorsque les paquets à filtrer proviennent du réseau local. En effet, dans ce cas, les adresses IP sources ou le réseau source sont connus. Il n'y a donc pas de raison de laisser la source en "any" ou *.

Pour rappel, dans les règles de filtrage de pfSense, la valeur "LAN address" correspond à l'adresse IP du firewall sur son interface LAN (192.168.1.1, par exemple) et la valeur "LAN net" correspond à tout le sous-réseau de l'interface LAN (192.168.1.0/24, par exemple).


4. Préciser la destination lorsqu'elle est connue


Dès qu'il est possible d'identifier la destination d'un flux réseau, il est important de ne pas laisser une destination générique dans ses règles de filtrage.
Par exemple, si l'on souhaite autoriser le trafic DNS à destination des serveurs Quad9, il n'y aucune raison de ne pas préciser les adresses IP des serveurs Quad9 dans la règle de filtrage associée.
De la même manière pour les envois d'e-mails, il n'y a pas de raisons d'autoriser le trafic SMTP vers une autre destination que son serveur relais de courriels.

Être le plus précis possible dans ses règles de filtrage est un gage de sécurité pour le réseau, les utilisateurs et les données.
L'utilisation d'une destination générique (any ou *) doit être réservée uniquement pour le trafic dont on ne peut réellement pas connaître la destination.


5. Utiliser des alias


L'utilisation d'alias permet un gain notable en lisibilité et permet de regrouper sur une seule règle de filtrage des adresses IP ou des ports associés.
Il est à noter que certains firewall obligent à l'utilisation d'alias dans l'écriture de leurs règles : il n'est pas possible de saisir une règle de filtrage comportant des adresses IP ou des ports réseaux ; il faut forcément qu'ils aient été préalablement renseignés dans des alias. pfSense n'impose pas ce mode de fonctionnement.

Sous pfSense, la création des alias se fait depuis le menu Firewall > Aliases :

menu Firewall - Aliases pfSense - Provya


Les alias sont à regrouper par domaine fonctionnel. On peut, par exemple, créer un alias pour le surf Web contenant les ports HTTP et HTTPS.

Exemple, sous pfSense :

Création d'un alias sous pfSense


Il faudra, bien sûr, penser à sauvegarder puis appliquer les changements.


6. Ventiler et regrouper ses règles


La plupart des firewall modernes offrent la possibilité d'utiliser des séparateurs ou des couleurs pour ventiler et/ou regrouper les règles entre elles. Si votre firewall ne dispose pas de cette fonctionnalité, pensez à migrer vers pfSense. ;-)

Cette ventilation et organisation permet une plus grande lisibilité des règles et permet une administration de la solution beaucoup plus rapide.


7. Commenter, commenter, commenter


Pour conserver une compréhension de l'historique de l'implémentation des règles, il est indispensable de compléter le champ commentaire afin d'y faire figurer des informations utiles.

Dans le champ commentaire, nous pouvons par exemple faire figurer les informations suivantes :
  • le succinct descriptif fonctionnel à l'origine de la création de la règle ;
  • la date d'implémentation de la règle (cette information est gérée automatiquement par pfSense) ;
  • la référence de la demande (n° de ticket ou code projet) ;
  • le nom ou le matricule de la personne qui a créé ou modifié la règle (cette information est gérée automatiquement par pfSense, à condition que tout le monde n'utilise pas le compte "admin" par défaut...)



Ordre des règles de filtrage


Une fois les recommandations générales appliquées, nous classons nos règles de filtrage suivant l'ordre présenté ci-dessous.


1/5. Règles d'autorisation des flux à destination du pare-feu (administration ; services hébergés sur pfSense)


Dans l'idéal, le firewall doit être administré depuis une interface dédiée. S'il ne dispose pas d'une interface dédiée, il faut, a minima, définir les adresses IP sources autorisées.
Une bonne manière de faire peut être de prendre la main sur un serveur de rebond (serveur TSE, par exemple), puis se connecter sur le firewall. Dans ce cas, seul le serveur de rebond est autorisé à accéder à l'interface d'administration du pare-feu.

Le nombre de flux ouverts doit être limité au strict minimum (HTTPS + SSH - si nécessaire - dans le cas de pfSense)

On trouvera également les règles autorisant la supervision du firewall (snmp par exemple) et les services hébergés sur le firewall (Squid, OpenVPN, DHCP, NTP, ...).
Pour ces règles, les adresses IP sources et destinations seront précisées.

On activera les logs pour ces règles afin de pouvoir retrouver a posteriori tout accès anormal ou frauduleux.

Exemple de la mise en place de ces règles pour pfSense :

exemple de règles d'accès au firewall pfSense pour l'administration



2/5. Règles d'autorisation des flux émis par le pare-feu (pfSense n'est pas concerné)


On y retrouve : les règles autorisant l'envoi des logs du firewall vers le serveur de journalisation (un serveur syslog, par exemple), les règles autorisant les services d'alerte de la passerelle (alerte par e-mail, smtp, etc.), les règles autorisant les services qui permettent le MCO de la passerelle (les flux de sauvegardes - ssh par exemple).

Dans tous les cas, la destination doit être précisée (on n'utilisera pas une destination "any" ou *).

On activera les logs pour ces règles également.

/!\ pfSense n'est pas concerné par ces règles. En effet, pfSense effectue un filtrage sur les paquets arrivant sur ses interfaces. Ainsi, les paquets émis par le firewall ne sont pas filtrés.

Si l'on souhaite filtrer le trafic émis par pfSense, on peut utiliser des règles floating sur lesquelles seront appliquées un filtrage dans le sens OUT.
Attention cependant, si on applique un filtrage par ce biais, on va également filtrer le trafic issu du LAN qui aurait pris l'adresse IP du firewall (SNAT / Outbound NAT). Il faudrait alors procéder à un marquage des paquets pour identifier plus précisément leur origine. Mais ce sujet n'est pas le propos de cet article.


3/5. Règles de protection du pare-feu (règles spécifiques)


Dans la logique de tout ce qui n'est pas explicitement autorisé doit être interdit, il convient de placer une règle de filtrage interdisant tous les services depuis toutes les sources à destination de toutes les interfaces du firewall.
Cela permet de rendre le firewall invisible et bloquer tous les services inutiles.

On activera les logs pour cette règle.

exemple de règles interdisant l'accès au firewall pfSense



4/5. Règles d'autorisation des flux métiers


Il est recommandé d'organiser ses règles suivant une logique métier. Plusieurs approches sont possibles :
  • une organisation par entité métier (regroupement des règles du service comptabilité, des ressources humaines, du service achat, etc.) ;
  • une organisation par fonctions & services offerts : accès aux bases de données, accès à l'intranet, accès au serveur de messagerie, accès à Internet, etc.

Ces règles doivent être adaptées au contexte et conserver une logique entre elles (il ne faut pas passer d'une logique d'entité à une logique de fonctions en cours de route, par exemple).
Les adresses sources, destinations et les services doivent impérativement être précisés dans ces règles.
Ces règles constituent l'essentiel de la politique de filtrage.

Exemple de résultat obtenu sur un pfSense :

exemple de règles d'autorisations métier



5/5. Règle d'interdiction finale (inutile pour pfSense)


Tout ce qui n'a pas explicitement été autorisé précédemment doit être bloqué.
C'est le mode de fonctionnement par défaut de pfSense : default deny.
Il n'est donc pas nécessaire d'ajouter une règle spécifique pour pfSense.

Par défaut, ces paquets sont loggués par pfSense, ce qui permet de garder une trace de ces flux non légitimes (ou d'aider à faire du troubleshooting en cas d'erreur ou d'anomalie dans la configuration des règles précédentes).


En appliquant cette stratégie, nous obtenons l'exemple complet suivant :

exemple de règles de filtrage sur un firewall pfSense


Nous vous recommandons de suivre ces principes d'organisation de vos règles de filtrage. La maintenance de votre firewall en sera facilitée, ainsi que vos sessions de troubleshooting et analyses !



Pour aller plus loin


[pfSense] Troubleshooting / Dépannage de ses règles de filtrage
[pfSense] Bien choisir et dimensionner son firewall
Tous nos articles classés par thème
Voir un article au hasard


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

Retrouvez nos services et firewall pour pfSense


Formation pfSense     Formation OPNsense     Liste de filtrage des IP malveillantes     Firewall pro-Large pour pfSense et OPNsense     Firewall pro-Alto pour pfSense et OPNsense     Firewall pro-Cito pour pfSense et OPNsense    

store.provya.fr

icon Tags de l'article :

[pfSense] Comprendre la priorisation de trafic

icon 05/06/2019 - 16 commentaires

Dans pfSense, il existe 3 principaux mécanismes de priorisation de flux :

- CBQ - Class Based Queueing
- PRIQ - Priority Queueing
- HFSC - Hierarchical Fair-Service Curve

PRIQ est un protocole de priorisation très simple (simpliste ?) mais nécessitant de faire très attention dans sa configuration.

CBQ est sans doute le protocole à utiliser dans la plupart des cas pour une entreprise souhaitant une gestion de la priorisation de trafic simple et efficace.

HFSC est sans conteste le protocole le plus évolué permettant un niveau de souplesse avancé, au prix d'une forte complexité...


Nous nous proposons ici de passer en revue ces différents mécanismes.
Dans un prochain article, nous verrons comment les mettre en œuvre dans pfSense.



CBQ - Class Based Queueing


CBQ est un algorithme permettant de diviser la bande passante d'une connexion en multiples queues ou classes.
Le trafic est assigné à l'une des queues, en fonction du protocole source/destination utilisé, du numéro de port, de l'adresse IP, etc.

Chaque queue se voit attribuer une bande passante et une priorité.

Les queues CBQ sont organisées de manière hiérarchique. Au sommet, nous retrouvons la queue "ROOT" (racine).
Chaque queue fille partage la bande passante de sa queue mère.

Il est également possible d'autoriser une queue à utiliser la bande passante de sa queue parente si celle-ci est sous-utilisée.


Exemple :

Root Queue (5Mbps)
	- Queue 1 (2Mbps)
	- Queue 2 (2Mbps)
	- Queue 3 (1Mbps)

La somme de la bande passante attribuée aux queues filles ne peut pas être supérieure à la bande passante totale de la queue mère.
Ainsi, dans notre exemple, la somme des bandes passantes des queues 1, 2 et 3 ne peut être supérieure à la bande passante de la queue Root.

Chaque queue fille peut elle-même avoir des queues filles :

Root Queue (5Mbps)
	- Queue 1 (2Mbps)
		Queue VoIP (1Mbps)
		Queue SSH (1Mbps)
	- Queue 2 (2Mbps)
		Queue HTTP (800Kbps)
		Queue VNC (200Kbps)
	- Queue 3 (1 Mbps)

Pour chacune de ces queues, on peut activer l'emprunt ("borrow") de bande passante à sa queue mère :

Root Queue (5Mbps)
	- Queue 1 (2Mbps)
		Queue VoIP (1Mbps - borrow)
		Queue SSH (1Mbps)
	- Queue 2 (2Mbps)
		Queue HTTP (800Kbps)
		Queue VNC (200Kbps)
	- Queue 3 (1 Mbps)

Dans l'exemple ci-dessus, la queue VoIP dispose d'une bande passante de 1Mbps. Cependant, elle peut potentiellement utiliser jusqu'à 2Mbps (bande passante allouée à sa queue mère - Queue 1) si la queue SSH n'est pas pleine.

Une priorité est attachée à chaque queue. La priorité la plus forte sera préférée en cas de congestion. Si deux queues ont la même priorité, la distribution s'opère suivant un processus de type round-robin.

Root Queue (5Mbps)
	- Queue 1 (2Mbps, priorité 1)
		Queue VoIP (1Mbps - borrow, priorité 5)
		Queue SSH (1Mbps, priorité 3)
	- Queue 2 (2Mbps, priorité 1)
		Queue HTTP (800Kbps, priorité 1)
		Queue VNC (200Kbps, priorité 2)

Dans notre exemple ci-dessus, la queue 1 et la queue 2 ayant la même priorité, aucune des deux queues ne sera priorisée l'une par rapport à l'autre. Durant le temps où la queue 1 sera traitée, les queues filles seront traitées en même temps. La queue VoIP sera traitée en priorité par rapport à la queue SSH (en cas de congestion).
Il est à noter qu'uniquement les queue fille de la même queue mère sont comparées entre-elles (c'est-à-dire que la priorité de la queue VoIP sera comparée à la priorité de la queue SSH, mais ne sera pas comparée à la queue HTTP par exemple).


Davantage d'informations sur le protocole CBQ : CBQ sur openbsd.org - EN



PRIQ - Priority Queueing


PRIQ est un protocole permettant de définir plusieurs queues attachées à une interface et d'y affecter une priorité. Une queue avec une priorité supérieure sera toujours traitée avant une queue avec une priorité plus faible.
Si deux queues ont à la même priorité, la distribution se fera suivant le processus round-robin.

La construction des queues PRIQ est plate (il n'y a pas de notion de queue mère et de queue fille) - il n'est pas possible de définir une queue au sein d'une autre queue.

Une queue "ROOT" (racine) est définie, qui sera la bande passante totale de la connexion. Les autres queues sont définies sous la queue ROOT.

Exemple :

Root Queue (2Mbps)
	- Queue 1 (priorité 2)
	- Queue 2 (priorité 1)

La queue Root est définie comme disposant de 2Mbps. La queue 1 disposant de la plus forte priorité, l'ensemble de ses paquets seront traités en priorité. Tant qu'il existe des paquets dans la queue 1, la queue 2 ne sera pas traitée.
Dans chaque queue, les paquets sont traités dans l'ordre FIFO (First IN First OUT).

/!\ Attention : il est bien important de comprendre que dans le processus PRIQ, les paquets se trouvant dans les queues disposant de la priorité la plus élevée sont toujours traités avant les paquets des autres queues.
Ainsi, si une queue disposant d'une priorité élevée reçoit un flux de paquet continu, les queues disposant d'une priorité plus faible seront peu, voire pas traitées.


Davantage d'informations sur le protocole PRIQ : PRIQ sur openbsd.org - EN



H-FSC


HFSC est un algorithme évolué de traitement hiérarchique permettant de répartir la bande passante d'un lien et de contrôler l'allocation de ressources en fonction de la bande passante et de la latence.

Tout comme dans l'algorithme CBQ, les queues HFSC sont organisées de manière hiérarchique. Au sommet, nous retrouvons la queue "ROOT" (racine).
Chaque queue fille partage la bande passante de sa queue mère.

Chaque queue fille peut elle-même avoir des queues filles :

Root Queue (5Mbps)
	- Queue 1 (2Mbps)
		Queue VoIP (1Mbps)
		Queue SSH (1Mbps)
	- Queue 2 (2Mbps)
		Queue HTTP (800Kbps)
		Queue VNC (200Kbps)
	- Queue 3 (1 Mbps)

Une priorité est donnée à chaque queue. Les priorités vont de 0 (priorité la plus faible) à 7 (priorité la plus forte). Comme pour CBQ, ces priorités ne sont appliquées qu'en cas de saturation du lien.

Root Queue (5Mbps)
	- Queue 1 (2Mbps, priorité 1)
		Queue VoIP (1Mbps, priorité 5)
		Queue SSH (1Mbps, priorité 3)
	- Queue 2 (2Mbps, priorité 1)
		Queue HTTP (800Kbps, priorité 1)
		Queue VNC (200Kbps, priorité 2)


Qlimit


Chaque queue se voit attribuée en plus un paramètre "Qlimit". Qlimit correspond à un buffer (tampon) qui va se remplir lorsque la bande passante attribuée à la queue sera saturée : plutôt que de rejeter les nouveaux paquets arrivant, ceux-ci vont être mis en file d'attente dans ce buffer.

La valeur de Qlimit (la taille du buffer donc) est exprimée en nombre de paquets. Par défaut, sa valeur est de 50.

Un fois que le buffer définit par Qlimit est saturé, les nouveaux paquets sont supprimés (drop).

Il n'est pas nécessaire, et sûrement contre-productif, de définir une valeur trop grande pour Qlimit : cela ne solvera pas un problème de saturation de bande-passante. Une trop grande valeur peut entraîner un "buffer bloat".

Pour calculer la bonne valeur de Qlimit, il faut se demander combien de temps nous souhaitons garder un paquet dans le buffer.

Si le concept de MTU ou de latence ne vous est pas familier, lisez tout d'abord les liens cités précédemment.

Si l'on souhaite qu'un paquet reste bufferisé au maximum 0,5 seconde (ce qui est déjà long), le calcul à effectuer pour connaître la valeur de Qlimit est le suivant :

(BP / 8) / MTU = nb paquets/sec.
Avec :
BP : bande passante (en bits/s)
MTU : MTU du lien (en bytes)

Par exemple, si nous disposons d'un lien offrant 10Mbps en upstream ayant une MTU de 1500 bytes :

(10.000.000 / 8) / 1500 = 833 pq/sec

Soit, si l'on souhaite une bufferisation de 0,5 sec sur notre lien : 833x0,5 = 416 paquets (=valeur de notre Qlimit)

Si vous ne souhaitez pas vous lancer dans de tels calculs, laissez la valeur par défaut de Qlimit (50 paquets).


realtime


Ce paramètre permet de définir la bande-passante minimale garantit en permanence à la queue.


upperlimit


Le paramètre upperlimit permet de définir une limite haute de bande passante que la queue ne pourra jamais dépasser.
Cela permet, par exemple, de limiter l'usage fait de la bande passante pour un type de service ou d'utilisateurs.


linkshare


Ce paramètre remplit la même fonctionnalité que le paramètre "bandwith" définit plus haut. C'est-à-dire qu'il permet de définir la bande-passante disponible pour une queue ; cette bande-passante pouvant être empruntée à d'autres queues.

Aussi, si nous définissons le paramètre "bandwith" ET le paramètre "link share (m2)", c'est le paramètre "linkshare m2" qui sera pris en compte.


Ainsi, nous avons les paramètres suivants :
  1. realtime : bande-passante minimale garantie à une queue
  2. linkshare : bande-passante globale attribuée à la queue (utilisée une fois que realtime est plein)
  3. upperlimit : bande-passante maximale que la queue ne pourra jamais dépassée
  4. bandwith : redondant avec linkshare. Peut être utilisé si l'on ne souhaite pas utiliser le mécanisme NLSC.

Il est important de comprendre que le paramètre "linkshare" n'est utile que si l'on souhaite activer le mode NLSC (non linear service curve). Autrement, seul le paramètre "bandwith" peut être utilisé dans le paramétrage des queues.


NLSC


NLSC est un mécanisme permettant de définir une bande-passante initiale, puis après un certain temps, une bande-passante définitive.
Ainsi, on va pouvoir définir une bande-passante qui va évoluer dans le temps.

Il existe 3 paramètres pour la configuration de NLSC :
  1. m1 : bande passante initiale attribuée à la queue
  2. m2 : bande passante définitive attribuée à la queue
  3. d : durée (en ms) durant laquelle la bande passante attribuée à la queue est la bande passante initiale (m1), avant de devenir la bande passante définitive (m2)

NLSC est principalement utilisé dans le but d'offrir un maximum de bande-passante sur un certain laps de temps, puis de brider cette bande-passante. Ainsi, ce "bridage" n'impacte que les gros fichiers transitant dans la queue concernée.

NLSC est activable aussi bien sur les directives realtime, upperlimit et linkshare.
Si l'on ne souhaite pas faire évoluer la bande-passante dans le temps, seul le paramètre m2 doit être défini.


Options


Il existe plusieurs options que l'on peut définir sur nos queues. Actuellement, elles sont au nombre de quatre :
  1. Default queue : permet de définir la queue par défaut. Il ne peut y avoir qu'une seule queue par défaut par interface.
  2. Explicit Congestion Notification (ECN) : ECN permet d'envoyer une notification de congestion sur le réseau afin de limiter le "drop" de paquets. N'est utilisable qu'entre deux équipements le supportant.
  3. Random Early Detection (RED) : utilisé avec ECN, offre un mécanisme de détection de congestion (avant qu'elle n'ait lieu).
  4. Random Early Detection In and Out (RIO) : idem RED.

Nous ne recommandons pas l'usage des paramètres RED, RIO et ECN.

Une fois tous ces paramètres appliqués, si nous reprenons notre exemple de queues définit précédemment :

Root Queue (5Mbps)
	- Queue 1 (2Mbps, upperlimit: 3Mbps, realtime: 1Mbps)
		Queue VoIP (1Mbps, realtime: 1Mbps, qlimit: 500)
		Queue SSH (1Mbps, qlimit 500)
	- Queue 2 (2Mbps, upperlimit: 3Mbps, default)
		Queue HTTP (800Kbps, realtime: 500Kbps)
		Queue VNC (200Kbps, qlimit: 500)


Nous venons de passer en revu les 3 principaux mécanismes de priorisation de trafic proposés dans pfSense.

Dans un prochain article, nous verrons comment les configurer et les activer dans pfSense.



Pour aller plus loin


[pfSense] Configurer la priorisation de trafic avec CBQ
[pfSense] Utiliser les limiters pour contrôler la bande-passante par utilisateur
Tous nos articles classés par thème
Voir un article au hasard


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

Retrouvez nos services et firewall pour pfSense


Formation pfSense     Formation OPNsense     Liste de filtrage des IP malveillantes     Firewall pro-Large pour pfSense et OPNsense     Firewall pro-Alto pour pfSense et OPNsense     Firewall pro-Cito pour pfSense et OPNsense    

store.provya.fr

icon Tags de l'article :

[pfSense] Configurer ses VLAN

icon 18/05/2019 - 21 commentaires

Dans cet article, nous allons voir comment configurer ses VLAN avec pfSense. Nous aborderons la terminologie associée (trunk port, tagged / untagged port, etc.), puis nous prendrons un exemple concret de configuration de VLAN.



Intérêt des VLAN


L'utilisation de VLAN apporte un certain nombre d'avantages que nous ne détaillerons pas ici. Pour une bonne compréhension des VLAN, nous proposons la lecture de l'article VLAN - Réseaux virtuels sur commentcamarche.net

Les utilisations principales de VLAN sont :
  • séparation logique des réseaux Voix & Data
  • séparation logique des services d'une entreprise
  • mise en place d'un réseau invité différent du réseau local



Mode de fonctionnement des VLAN


Lorsque nous créons un VLAN, nous définissons deux éléments :
  • le subnet associé (ex : 192.168.1.0/24)
  • l'ID du VLAN (allant de 1 à 4094)

Les terminaux se trouvant sur un VLAN ne pourront communiquer qu'avec les autres terminaux se trouvant sur le même VLAN. S'ils souhaitent communiquer avec les terminaux d'un autre VLAN, les paquets passeront par pfSense. Cela nous permet de configurer au niveau de pfSense des règles fines de filtrage d'un VLAN à un autre.
Il est à noter que le routage d'un VLAN à l'autre peut également se faire au niveau du switch via la mise en place d'ACL (cas que nous n'aborderons pas dans le présent article).

Les VLANs doivent être déclarés et configurés côté pfSense d'une part, et sur les switches d'autre part (qui doivent bien-sûr être des switches supportant les VLAN).
La configuration des switches est le point le plus délicat. La terminologie employée n'étant pas toujours la même chez les constructeurs.



Terminologie


Lorsque nous souhaitons configurer les VLAN sur notre switch, nous avons deux possibilités de configuration :

  • tagged port (= trunk port chez Cisco)
  • untagged port (= access port chez Cisco)


Tagged port


Un port de switch configuré en "tagged" signifie que l'équipement branché derrière est capable de traiter les tags 802.1q et qu'il est configuré pour les traiter. C'est-à-dire qu'il faudra indiquer dans la configuration de l'équipement qu'il doit marquer ses paquets réseau avec son VLAN d'appartenance.


Untagged port


Un port de switch configuré en "untagged" signifie que la notion de VLAN est totalement transparente pour l'équipement branché derrière. C'est-à-dire qu'il ignore son VLAN de rattachement. C'est le switch qui utilise l'id VLAN associé pour son traitement interne pour la distribution des paquets sur ses ports. Les paquets ne sont pas taggués 802.1q en entrée et sortie des ports du switch configurés en "untagged".

Un switch ne peut avoir sur un port donné qu'un seul VLAN configuré en "untagged" (access). Il peut y avoir, sur ce même port, plusieurs VLANs configurés en "tagged" (trunk).



Cas concret : séparation VLAN voix / VLAN data


Un cas concret et classique d'utilisation des VLAN va être de séparer le réseau VoIP du réseau Data.

Nous prendrons l'exemple du réseau local suivant :

  • pfSense fait office de routeur/firewall et de serveur DHCP pour l'ensemble des VLAN
  • Les ordinateurs (et tous les autres équipements sauf téléphones) disposent d'une adresse IP sur la plage 192.168.1.0/24 - VLAN 10 (ce sera notre VLAN par défaut - configuré en untagged)
  • Les postes téléphoniques disposent d'une adresse IP sur la plage 192.18.2.0/24 - VLAN 20 (VLAN dédié à la téléphonie - configuré en tagged)
  • Le switch de cœur de réseau est un switch supportant les VLAN
  • Tous les ordinateurs sont branchés derrière un téléphone. C'est-à-dire que sur chaque port du switch il y aura généralement deux équipements branchés : un téléphone (dans le VLAN 20) et un ordinateur (VLAN 10) branché derrière

Le schéma réseau est le suivant :

Schéma réseau




Configuration du pfSense


Sur le pfSense, nous configurerons donc deux VLANs :
  • VLAN "LAN Data"
  • VLAN "LAN VoIP"

Pour commencer, nous allons dans le menu "Interface" > "(assign)" :

menu Interfaces > Assignments


Puis, nous nous rendons dans l'onglet "VLANs" et cliquons sur l'icône en forme de "+" se trouvant en bas à droite.

Les éléments de configurations sont les suivants :

  1. Parent interface : l'interface physique à laquelle sera rattachée le VLAN
  2. VLAN tag : l'ID du VLAN (la valeur doit être comprise entre 1 et 4094)
  3. VLAN Priority : la priorité à appliquer au VLAN (la valeur doit être comprise entre 0 et 7)
  4. Description : champ optionnel de description du VLAN

Exemple de résultat obtenu :

Configuration VLAN pfSense


Et une fois nos deux VLANs créés, nous disposons de deux interfaces virtuelles :

Exemples VLAN pfSense


Afin de configurer nos VLANs, nous devons maintenant associer ces interfaces virtuelles à des interfaces logiques.
Pour cela, nous retournons dans l'onglet "Interface assignments", puis nous cliquons sur l'icône en forme de "+" se trouvant un bas à droite afin d'ajouter une nouvelle interface logique.

Par défaut, l'interface logique créée porte le nom "OPT1" (ou OPT2, OPT3, etc.). Nous associons cette interface logique à l'interface virtuelle du VLAN que nous avons créée précédemment :

Création interface logique pfSense


Pour modifier l'interface logique créée (et la renommer), nous cliquons sur son nom. Les éléments de configuration sont les suivants :

  1. Enable Interface : cocher cette case pour activer l'interface
  2. Description : nom de l'interface
  3. IPv4 Configuration Type : la configuration IPv4 de cette interface. Dans notre cas, nous choisissons "Static IPv4"
  4. IPv6 Configuration Type : la configuration IPv6 de cette interface. Dans notre cas, nous choisissons "None"
  5. MAC controls : par défaut, c'est l'adresse MAC de l'interface physique qui est utilisée. Elle peut être personnalisée ici
  6. MTU : la MTU pour cette interface. 1500 octets par défaut
  7. MSS : "Maximum Segment Size", devrait être inférieur au MTU. Nous laissons vide
  8. Speed and duplex : nous laissons le choix par défaut

Enfin, nous appliquons les paramètre de configuration IP (adresse IP de l'interface et masque réseau associé).
Exemple de résultat obtenu :

Configuration interface logique pfSense


Sur cette interface, nous activons le service DHCP. Pour davantage de détails sur la manière de procéder pour l'activation du service DHCP, se référer à notre article dédié : [pfSense] Configurer son serveur DHCP.

Enfin, nous créons une règle de firewall sur notre nouvelle interface logique ("VLAN_voix") afin d'autoriser le trafic.

La configuration côté pfSense est terminée. Il reste à procéder à la configuration côté Switch.



Configuration du Switch


La configuration des VLAN sur le switch dépend du constructeur. Cependant, les étapes à suivre seront toujours les mêmes :

  1. Déclaration des VLAN sur le switch - sur la plupart des switches, il faut déclarer les VLANs avant de pouvoir les configurer sur n'importe quel port (dans notre cas, nous déclarons 2 VLAN : vlan_data avec l'ID 10 et vlan_voix avec l'ID 20)
  2. Configuration du port du switch sur lequel est branché le pfSense en mode trunk (ou tagged) sur les VLAN 10 et 20
  3. Configurer les ports du switch sur lesquels seront branchés les PC en mode access (ou untagged) - dans notre cas sur le VLAN 10
  4. Configurer les ports du switch sur lesquels seront branchés les téléphones en mode trunk (ou tagged) - dans notre cas sur le VLAN 20

Exemple sur un switch Cisco :

Déclaration des VLANs :
sw# vlan database
sw(vlan)# vlan 10 name "vlan_data"
sw(vlan)# vlan 20 name "vlan_voix"
sw(vlan)# exit

Configuration du port trunk :
sw# configure terminal
sw(config)# interface FastEthernet0/24
sw(config-if)# switchport mode trunk

Ajouter les ports au VLAN :
sw# configure terminal
sw(config)# interface FastEthernet0/12
sw(config-if)# switchport mode access
sw(config-if)# switchport access vlan 20


Nos VLANs sont configurés et prêts à fonctionner.



Peut-on configurer un VLAN sur le port LAN ?


Réponse succincte : oui.

Sur les anciennes versions de pfSense (antérieures à la version 2.4.5), il était très fortement recommandé par l'éditeur de ne pas configurer un VLAN sur un port réseau qui était déjà associé à une interface logique.
Si les notions de port réseau, interface physique, interface virtuelle et interface logique ne vous sont pas familières, nous vous invitons à consulter notre article [pfSense] Comprendre la gestion des interfaces réseaux.

Cette configuration entraînait des anomalies de fonctionnement pour un certain nombre de services (dont le portail captif).

Ce n'est plus du tout le cas aujourd'hui. On peut donc tout à fait configurer ses VLAN sur un port réseau déjà associé à une interface logique !



Pour aller plus loin


[pfSense] Comprendre la gestion des interfaces réseaux
[pfSense] Configurer son serveur DHCP
Tous nos articles classés par thème
Voir un article au hasard


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

Retrouvez nos services et firewall pour pfSense


Formation pfSense     Formation OPNsense     Liste de filtrage des IP malveillantes     Firewall pro-Large pour pfSense et OPNsense     Firewall pro-Alto pour pfSense et OPNsense     Firewall pro-Cito pour pfSense et OPNsense    

store.provya.fr

icon Tags de l'article :

[pfSense] Troubleshooting / Dépannage de ses règles de filtrage

icon 02/05/2019 - Aucun commentaire

Des difficultés pour comprendre pourquoi sur votre pfSense telle ou telle règle de filtrage ne fonctionne pas comme prévu ?
Alors, cet article est fait pour vous ! ;-)

En nous inspirant de la page Firewall Rule Troubleshooting (en anglais) issue de la documentation officielle de pfSense, nous proposons ici un guide rapide et en français sur la méthodologie à suivre pour le dépannage des règles de filtrage de pfSense.



Activer et vérifier les logs !


La première chose à faire est d'activer la journalisation (log) sur la ou les les règle(s) posant problème. Pour cela, éditez votre règle de filtrage et dans la partie "Extra Options" cochez la case Log packets that are handled by this rule.

log packets firewall pfSense


Pensez à sauvegarder, puis à appliquer le changement.


Pour visualiser les logs, se rendre dans le menu Status > System Logs, puis cliquez sur l'onglet Firewall.

Vous visualiserez tous les paquets correspondants à une règle de firewall pour laquelle la journalisation est activée, ainsi que les paquets bloqués par défaut par pfSense (car ils ne correspondaient à aucune règle d'autorisation de trafic).

Exemple :

firewall logs pfSense


Si vous cliquez sur l'icône d'action ( action block pfSense ou action pass pfSense ) tout à gauche de la ligne, cela affichera un popup vous indiquant quelle règle a autorisé ou interdit ce paquet.

Exemple :

détails logs rules pfSense


Sur cette capture d'écran, on peut voir que c'est une règle présente sur l'interface re1 qui autorise le trafic TCP depuis le réseau 192.168.0.0/24 vers n'importe quelle destination sur le port 443 et que la description associée à cette règle est "Trafic Web HTTPS".



S'assurer que la règle est configurée sur la bonne interface


Pour choisir l'interface sur laquelle configurer une règle de filtrage, il faut raisonner du point de vue du firewall et comprendre qu'il applique ses règles de filtrage sur l'interface sur laquelle il reçoit les paquets.
Par exemple, pour configurer un filtrage d'un flux réseau provenant du LAN et à destination du WAN, alors le firewall va recevoir les paquets réseaux sur son interface LAN ; c'est donc sur l'interface LAN qu'il faut configurer le filtrage voulu.

Pour filtrer les flux réseaux en provenance d'Internet et à destination de votre LAN, alors le firewall va recevoir les paquets réseaux sur son interface WAN ; c'est donc sur l'interface WAN qu'il faut configurer le filtrage voulu.

Techniquement, pfSense réalise un filtrage de type ingress.



Vérifier l'ordre de ses règles


Les règles de filtrage sont appliquées dans un ordre bien précis. Les règles sont analysées les unes après les autres du haut vers le bas. La première règle qui correspond à tous les critères qui l'emporte : l'action associée est appliquée et les règles suivantes sont ignorées (sauf pour les règles "floating").

La vérification des règles de filtrage est réalisée dans l'ordre suivant :
  1. Règles "floating" : ce sont les règles analysées en premier ;
  2. Règles de groupe d'interfaces : second jeu de règles à être analysé. Cela comprend le groupe "IPsec" et "OpenVPN" ;
  3. Règles de l'interface : les règles configurées sur l'interface (LAN, WAN, OPT1, ...) ne sont analysées qu'en dernier.

Il est important d'avoir cet ordre en tête car si vous recherchez quelle règle va s'appliquer à quel trafic réseau, vous devrez suivre ce cheminement.

L'interface floating a un mode de fonctionnement particulier : l'analyse des règles suit le processus de la dernière règle qui correspond à tous les critères l'emporte (alors que pour les groupes d'interfaces et pour les interfaces, c'est le fonctionnement inverse : la première règle qui correspond à tous les critères l'emporte).

Pour avoir un mode de fonctionnement suivant la logique de la première règle correspondant à tous les critères qui l'emporte sur l'interface floating, il est nécessaire de cocher la case "Quick" des règles concernées.

Enfin, pour être exhaustif, l'ordre de traitement complet (mais simplifié) des paquets réseau par pfSense est le suivant :
  • règles d'Outbound NAT
  • règles de translation de ports (Port Forwards)
  • règles de NAT pour le load-balancing
  • règles reçues dynamiquement par les clients OpenVPN et par RADIUS pour IPsec
  • règles automatiques internes (obtenues par diverses sources comme snort, DHCP, ...)
  • règles définies par l'utilisateur (sur l'interface floating, sur les interfaces de groupes et pour chaque interface)
  • règles automatiques pour les VPN



Vérifier le protocole


Dans la configuration des règles de filtrage, il faut définir le protocole de transport utilisé. Il s'agit généralement de TCP, UDP ou ICMP.
Vous pouvez rencontrer d'autres protocoles également si vous administrez des VPN ou avez une configuration pfSense en haute disponibilité.

Une erreur classique est de configurer une règle avec le protocole UDP à la place de TCP ou inversement.
Dans le doute, vous pouvez essayer de configurer votre règle avec la valeur TCP/UDP.



Translation de port & NAT


Lorsque l'on configure des règles de NAT entrant (port forward et 1:1 NAT), il faut se rappeler que le NAT s'applique avant les règles de filtrage. Ainsi, les règles de filtrage sont à appliquer sur les adresses IP privées de destination.



Port source et port destination


Quand vous configurez vos règles de filtrage, il faut garder en tête que généralement uniquement le port source ou le port destination doit être précisé, rarement les deux.
Dans la majorité des cas, le port source n'a pas d'intérêt.
Par exemple, pour configurer un accès SSH à un serveur, vous devrez uniquement préciser le port destination : 22 / TCP. Le port source du client sera aléatoire.



Penser à réinitialiser la table d'état si nécessaire


Si une nouvelle règle bloquant du trafic vient tout juste d'être créée, il est possible qu'un état existant dans la table d'état permette toujours au trafic de passer.

Pour être certain d'éliminer cette hypothèse, il faut réinitialiser la table d'état depuis le menu Diagnostics > States, onglet Reset States.

Dans la même logique, il est important de procéder à une réinitialisation de la table d'état lorsque l'on configure des règles de priorisation de trafic. Voir à ce sujet notre article dédié : [pfSense] Configurer la priorisation de trafic avec CBQ.



Trafic ne pouvant pas être filtré


Le trafic réseau entre deux équipements se trouvant sur le même réseau (sur le LAN, par exemple) ne pourra pas être filtré par le firewall car le trafic entre ces deux équipements ne passera jamais par le firewall. Ce trafic est transmis directement d'un équipement à l'autre par le switch.
Si vous avez besoin de mettre en place du filtrage entre deux équipements se trouvant sur votre réseau local, alors vous devrez créer 2 réseaux locaux distincts (soit physiquement, soit logiquement par la mise en place de VLAN). Ce sera souvent le cas pour séparer son réseau de téléphonie sur IP du reste de son réseau local ou encore pour isoler des serveurs du reste du LAN (en créant une DMZ, par exemple).



Règle "pass" automatiquement associée au Port Forward


Par défaut, lorsque l'on crée une règle de translation de port (Port Forward), pfSense propose de créer une règle d'autorisation du trafic. Cela va entrainer un bypass des autres règles de filtrage.
D'une façon générale, nous déconseillons de laisser cette option de création d'une règle automatique. Il vaut mieux la créer manuellement afin de bien comprendre comment et où la créer dans sa stratégie de filtrage complète.



Routage asymétrique


Dernier cas que nous souhaitions aborder : le routage asymétrique. Le routage asymétrique se produit dans le cas où le chemin aller est différent du chemin retour (ex : aller via A > B > C ; puis retour via C > D > A).
Ce cas peut se repérer à travers la présence de trafic comme TCP:A, TCP:SA, ou TCP:RA qui se retrouve bloqué dans les logs.
Si vous rencontrez un problème de routage asymétrique avec votre pfSense, nous vous recommandons la lecture de la documentation officielle sur le sujet : Troubleshooting Blocked Log Entries due to Asymmetric Routing.

Vous avez maintenant toutes les armes en main pour faire un troubleshooting efficace de vos règles de filtrage !



Pour aller plus loin


Best practices / Recommandations pour la configuration de votre firewall
[pfSense] Configurer un cluster de 2 pfSense redondants (failover)
[pfSense] Configurer ses VLAN
[pfSense] Comprendre la gestion des interfaces réseaux
Tous nos articles classés par thème
Voir un article au hasard


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

Retrouvez nos services et firewall pour pfSense


Formation pfSense     Formation OPNsense     Liste de filtrage des IP malveillantes     Firewall pro-Large pour pfSense et OPNsense     Firewall pro-Alto pour pfSense et OPNsense     Firewall pro-Cito pour pfSense et OPNsense    

store.provya.fr

icon Tags de l'article :

[pfSense] Sécurisez l'accès distant de vos collaborateurs nomades avec OpenVPN

icon 18/04/2019 - 6 commentaires

English version: [pfSense] Secure remote access for your home-office workers with OpenVPN.

Il est de plus en plus souvent nécessaire de pouvoir offrir des solutions d'accès distants à ses utilisateurs nomades.
Ces accès se doivent d'être sécurisés et fiables.

Bonne nouvelle, pfSense et OpenVPN forment la solution idéale pour ce besoin ! :-)



OpenVPN = la solution idéale pour les utilisateurs nomades


OpenVPN est une solution facile à mettre en œuvre et efficace pour les utilisateurs nomades.

OpenVPN propose des clients pour tout type de plate-forme (Windows, MAC, Android, iOS) :

Plateformes supportées par OpenVPN


De plus, pfSense propose un mode d'export des configurations des clients pour encore plus de facilité.


À noter :
Cet article ne traite pas de la configuration d'OpenVPN serveur en mode site-à-site (clé partagée ou X.509).
Cet article traite uniquement de l'accès nomade. Nous ne rentrerons pas dans les détails de configuration d'OpenVPN côté serveur pfSense. Nous nous concentrons sur les spécificités de l'accès nomade.

Il existe plusieurs articles dédiés à la configuration d'OpenVPN en environnement pfSense : [pfSense] Monter un accès OpenVPN site-à-site.



Principe de fonctionnement


Le but est d'offrir une solution de VPN pour les utilisateurs nomades leur permettant de disposer d'un accès sécurisé au réseau local de l'entreprise.
Ces utilisateurs peuvent utiliser un ordinateur ou un smartphone pour se connecter.
Dans tous les cas, ils utiliseront un client OpenVPN.

Dans notre exemple de mise en application, nous partirons sur l'infrastructure suivante :

- le sous-réseau LAN est 172.31.54.0/24
- le sous-réseau OpenVPN est 172.31.55.0/24

accès nomade OpenVPN avec pfSense


Pour l'identification et l'authentification des utilisateurs, nous utiliserons un certificat couplé à un login et un mot de passe.
Le certificat sera commun pour tous les utilisateurs. Le login et le mot de passe seront privatifs.


Passons maintenant à la configuration !



Configuration du serveur OpenVPN


Côté serveur OpenVPN, nous devons créer les éléments suivants :
  1. une autorité de certification, sauf si nous en disposons déjà d'une
  2. un certificat serveur
  3. un certificat client
  4. les accès utilisateurs (login et mot de passe)
  5. le serveur OpenVPN en tant que tel
  6. les règles de firewall et de NAT idoines
  7. la configuration des clients nomades



1. Création d'une autorité de certification


Cette étape n'est nécessaire que si nous ne disposons pas déjà d'une autorité de certification existante.
Si nous en avons déjà créé une lors de la mise en place d'une connexion VPN site-à-site ([pfSense] La gestion des certificats pour les connexions OpenVPN), nous pouvons réutiliser celle-ci plutôt que d'en recréer une nouvelle.

Autrement, nous nous rendons dans le menu System > Cert Manager :

menu System > Cert. Manager - pfSense - Provya


Dans l'onglet "CAs" (l'onglet par défaut), nous cliquons sur l'icône "+ Add" se trouvant en bas à droite de la liste des CAs existants.

Les champs à renseigner sont les suivants :
  • Descriptive name : le nom que l'on souhaite donner à notre autorité de certification
  • Method : 3 méthodes sont possibles :
  1. Import an existing Certificate Authority : permet d'importer le certificat (clé publique + clé privée) d'une autorité de certification existante
  2. Create an internal Certificate Authority : permet de créer une nouvelle autorité de certification
  3. Create an intermediate Certificate Authority : permet de créer une autorité de certification intermédiaire. Cette autorité de certification intermédiaire doit être rattachée à une autorité de certification existante
Dans notre cas, nous créons une nouvelle autorité de certification (Create an internal Certificate Authority).
  • Key length : la longueur de la clé de chiffrement du certificat. Plus elle est longue, plus elle sera sécurisée (mais plus la charge CPU sera grande également...). Nous gardons la valeur par défaut : 2048
  • Digest Algorithm : la fonction de hachage qui sera utilisée. Nous gardons la valeur par défaut : SHA256
  • Lifetime : la durée de vie de l'autorité de certification. Si nous n'avons pas de raison de réduire sa durée de vie, nous laissons la valeur par défaut (3650 jours, soit 10 ans)
  • Country Code : le code ISO du pays. Dans notre cas : FR
Les autres champs sont principalement cosmétiques et doivent permettre d'identifier l'organisation. Le seul élément important est le "Common name" dans lequel il ne doit pas y avoir d'espace et qui doit être unique.

Exemple de résultat obtenu :

Exemple de configuration d'un C.A. pfSense - Provya


Notre autorité de certification est créée.

Nous devons exporter la clé publique du certificat. Pour cela, dans l'onglet "CAs" (l'onglet par défaut), nous cliquons sur l'icône "Export CA" de l'autorité de certification que nous avons créée précédemment :

Exporter un CA pfSense - Provya




2. Création d'un certificat serveur


Nous restons dans le menu System > Cert Manager et basculons sur l'onglet "Certificates" (deuxième onglet).
Pour créer un nouveau certificat (client ou serveur), nous cliquons sur l'icône "+ Add" se trouvant en bas à droite de la liste des certificats existants.

Les champs à renseigner sont les suivants :
  • Method : 3 méthodes sont possibles :
  1. Import an existing Certificate : permet d'importer la clé publique et la clé privée d'un certificat existant
  2. Create an internal Certificate : permet de créer une nouveau certificat
  3. Create a certificate Signing Request : permet de créer un fichier de requête qui pourra être envoyé à un CA tiers pour être signé. Cela peut être utile pour obtenir un certificat d'un CA root de confiance.
Dans notre cas, nous créons un nouveau certificat (Create an internal Certificate).
  • Descriptive name : le nom que l'on souhaite donner à notre certificat serveur
  • Certificate authority : l'autorité de certification qui signera le certificat que nous sommes en train de créer. Dans notre cas, nous choisissons le CA que nous venons de créer, soit "CA Provya"
  • Key length : la longueur de la clé de chiffrement du certificat. Plus elle est longue, plus elle sera sécurisée (mais plus la charge CPU sera grande également...). Nous gardons la valeur par défaut : 2048
  • Digest Algorithm : la fonction de hachage qui sera utilisée. Nous gardons la valeur par défaut : SHA256
  • Certificate Type : le type de certificat. Il existe 2 valeurs possibles :
  1. User Certificate : pour définir un certificat pour un client
  2. Server Certificate : pour définir un certificat pour un serveur
Dans notre cas, nous choisissons "Server Certificate".
  • Lifetime : la durée de vie du certificat. Si nous n'avons pas de raison de réduire sa durée de vie, nous laissons la valeur par défaut (3650 jours, soit 10 ans)
Les autres champs sont principalement cosmétiques et doivent permettre d'identifier l'organisation émettrice du certificat. Par défaut, l'ensemble des champs sont pré-complétés avec les informations issues du CA. Le seul élément important est le "Common name" dans lequel il ne doit pas y avoir d'espace et qui doit rester unique

Exemple de résultat obtenu :

Exemple de création d'un certificat pfSense - Provya


Notre certificat pour le serveur OpenVPN est créé.



3. Création d'un certificat client


Il nous reste à créer un certificat pour nos clients nomades.
Nous procédons exactement de la même manière que pour la création d'un certificat serveur. Le seul élément distinctif est le champ Certificate Type pour lequel nous choisissons "User Certificate".

Exemple de résultat obtenu :

Création d'un certificat pour pfSense - Provya


Notre certificat pour les clients OpenVPN est créé.

Nous exportons la clé privée et la clé publique (qui nous sera nécessaire pour les clients nomades).
Pour cela, nous cliquons successivement sur les icônes "Export certificat" et "Export key" du certificat client que nous avons créé précédemment :

Export du certificat et de la clef - pfSense - Provya




4. Création des utilisateurs


La création et la gestion des utilisateurs se passent dans le menu System > User Manager :

menu System > User Manager - pfSense - Provya


Nous commençons par créer un groupe : se rendre sur l'onglet "Groups", puis cliquer sur l'icône "+ Add" se trouvant en bas à droite de la liste des groupes.

Nous renseignons les champs comme suit :
  • Group name : le nom du nouveau groupe. Ce nom ne doit pas contenir d'espace. Dans notre cas, nous indiquons "OpenVPN-user"
  • Scope : la portée du groupe. Nous laissons la valeur par défaut "Local"
  • Description : une description facultative
  • Group Memberships la liste des membres du groupe. Dans notre cas, nous la laissons vide pour le moment

Exemple de résultat obtenu :

Création d'un groupe pfSense - Provya


Si nous souhaitons assigner des privilèges aux membres du groupe, il faut l'éditer en cliquant sur l'icône en forme de crayon se trouvant à sa droite.
Dans notre cas, les utilisateurs n'ayant pas besoin de se connecter à pfSense, nous ne leur attribuons aucun droit particulier.


Nous nous rendons ensuite dans l'onglet "Users" pour créer notre premier utilisateur en remplissant les champs comme suit :
  • Disabled : permet de désactiver un utilisateur sans le supprimer
  • Username : le nom d'utilisateur (sans espace ni caractères spéciaux)
  • Password : le mot de passe
  • Full name : Le nom de l'utilisateur associé à ce compte
  • Expiration date : La date d'expiration du compte. Elle doit être saisie au format américain, c'est-à-dire mm/jj/aaaa (mois/jour/année). Si ce champ est laissé vide, le compte n'expirera jamais.
  • Group Memberships : c'est ici que nous définissons le groupe auquel nous rattachons l'utilisateur. Dans notre cas, nous choisirons "OpenVPN-user"
  • Certificate : si l'on souhaite créer par la même occasion un certificat pour l'utilisateur (ce que nous ne ferons pas)
  • Authorized keys : si l'on souhaite définir la clé autorisée pour la connexion de l'utilisateur (nous ne cochons pas cette case)
  • IPsec Pre-Shared Key : utiliser pour les connexions en VPN IPsec ; ce qui n'est pas notre cas (nous laissons donc ce champ vide)

Exemple de résultat obtenu :

Création d'un utilisateur pfSense - Provya




5. Création du serveur OpenVPN


Le détail de la configuration du serveur OpenVPN se trouve dans l'article dédié [pfSense] Monter un accès OpenVPN site-à-site.

Les différences au moment de la configuration sont les suivantes :
  • Server Mode : choisir "Remote Access (SSL/TLS + User Auth)"
  • TLS Authentication : cocher la case "Enable authentication of TLS packets" pour davantage de sécurité. Nous ne conseillons pas de la cocher
  • Peer Certificate Authority : choisir l'autorité de certification créée précédemment ("CA Provya (ca-provya)")
  • Server Certificate : choisir le certificat serveur créé précédemment ("Certificat Serveur (certif-serveur-provya)")
  • DH Parameters Length : nous laissons la valeur par défaut (1024 bits)

Exemple de résultat obtenu :

Configuration du serveur OpenVPN




6. Configuration du firewall et du NAT


Se rendre dans Firewall > Rules :

menu Firewall > Rules


Sur l'interface sur laquelle le serveur OpenVPN est en écoute ("WAN", très sûrement), créer une règle autorisant le trafic à atteindre l'adresse IP et le port du serveur OpenVPN.

  • Interface : WAN
  • Protocol : UDP
  • Source : choisir "any"
  • Destination : WAN address
  • Destination port range : port choisi lors de la configuration du serveur OpenVPN (1194 dans notre exemple)

Exemple de résultat obtenu :

Exemple d'une règle de filtrage


Si nous avons besoin de faire une redirection d'adresse (cas où le port public utilisé serait différent du port configuré pour le serveur OpenVPN), nous créons une règle de NAT dans Firewall > NAT.
Les éléments à renseigner sont :

  • Interface : WAN
  • Protocol : UDP
  • Src. addr & Src. port : choisir "any"
  • Dest. addr : l'adresse IP WAN
  • Dest. ports : le port d'écoute du serveur OpenVPN
  • NAT IP : l'adresse IP du pfSense sur l'interface WAN
  • NAT Ports : le porte d'écoute du serveur OpenVPN (1194, dans notre exemple)



7. Configuration des clients nomades


Il ne reste plus qu'à mettre en route OpenVPN client sur les postes nomades.

Les clients Windows, Mac, Android ou iOS sont téléchargeables directement sur le site d'OpenVPN ou sur les stores associés : iPhone et Android.

3 fichiers nous serons nécessaires :
  • la clé publique et la clé privée du certificat client créé précédemment
  • un fichier de configuration d'OpenVPN à créer manuellement

La documentation d'OpenVPN fournit un fichier de configuration d'exemple. Il est reproduit ci-dessous.

Les éléments à configurer sont :
  • remote my-server 1194 => à remplacer par l'adresse IP publique (ou le nom de domaine associé) et par le bon port d'écoute
  • ca ca-provya.crt => la clé publique de l'autorité de certification
  • cert provya-client.crt => la clé publique du certificat client
  • key provya-client.key => la clé privée du certificat client

##############################################
# Sample client-side OpenVPN 2.0 config file #
# for connecting to multi-client server.     #
#                                            #
# This configuration can be used by multiple #
# clients, however each client should have   #
# its own cert and key files.                #
#                                            #
# On Windows, you might want to rename this  #
# file so it has a .ovpn extension           #
##############################################

# Specify that we are a client and that we
# will be pulling certain config file directives
# from the server.
client

# Use the same setting as you are using on
# the server.
# On most systems, the VPN will not function
# unless you partially or fully disable
# the firewall for the TUN/TAP interface.
;dev tap
dev tun

# Windows needs the TAP-Windows adapter name
# from the Network Connections panel
# if you have more than one.  On XP SP2,
# you may need to disable the firewall
# for the TAP adapter.
;dev-node MyTap

# Are we connecting to a TCP or
# UDP server?  Use the same setting as
# on the server.
;proto tcp
proto udp

# The hostname/IP and port of the server.
# You can have multiple remote entries
# to load balance between the servers.
remote my-server 1194


# Choose a random host from the remote
# list for load-balancing.  Otherwise
# try hosts in the order specified.
;remote-random

# Keep trying indefinitely to resolve the
# host name of the OpenVPN server.  Very useful
# on machines which are not permanently connected
# to the internet such as laptops.
resolv-retry infinite

# Most clients don't need to bind to
# a specific local port number.
nobind

# Downgrade privileges after initialization (non-Windows only)
;user nobody
;group nobody

# Try to preserve some state across restarts.
persist-key
persist-tun

# If you are connecting through an
# HTTP proxy to reach the actual OpenVPN
# server, put the proxy server/IP and
# port number here.  See the man page
# if your proxy server requires
# authentication.
;http-proxy-retry # retry on connection failures
;http-proxy [proxy server] [proxy port #]

# Wireless networks often produce a lot
# of duplicate packets.  Set this flag
# to silence duplicate packet warnings.
;mute-replay-warnings

# SSL/TLS parms.
# See the server config file for more
# description.  It's best to use
# a separate .crt/.key file pair
# for each client.  A single ca
# file can be used for all clients.
ca ca-provya.crt
cert provya-client.crt
key provya-client.key

# Verify server certificate by checking
# that the certicate has the nsCertType
# field set to "server".  This is an
# important precaution to protect against
# a potential attack discussed here:
#  http://openvpn.net/howto.html#mitm
#
# To use this feature, you will need to generate
# your server certificates with the nsCertType
# field set to "server".  The build-key-server
# script in the easy-rsa folder will do this.
;ns-cert-type server

# If a tls-auth key is used on the server
# then every client must also have the key.
;tls-auth ta.key 1

# Select a cryptographic cipher.
# If the cipher option is used on the server
# then you must also specify it here.
;cipher x

# Enable compression on the VPN link.
# Don't enable this unless it is also
# enabled in the server config file.
;comp-lzo

# Set log file verbosity.
verb 3

# Silence repeating messages
;mute 20

# Autentification par login et mot de passe
auth-user-pass


Le fichier de configuration d'OpenVPN et les clés publiques & privées sont à stocker dans un même répertoire.


La configuration est terminée.

pfSense propose également un outil d'export (ce qui évite de devoir créer un fichier .ovpn manuellement). Cet outil est accessible en installant le package "OpenVPN Client Export Utility".



Analyse et Debug


Pour voir si un client est connecté, ça se passe dans le menu "Status" > "OpenVPN".

Les logs de connexion sont eux accessibles dans "Status" > "System logs", puis onglet "OpenVPN".



Pour aller plus loin


[pfSense] Monter un accès OpenVPN site-à-site
[pfSense] Monter un VPN natté (Overlap network) avec OpenVPN
[pfSense] La gestion des certificats pour les connexions OpenVPN
Tous nos articles classés par thème
Voir un article au hasard


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

Retrouvez nos services et firewall pour pfSense


Formation pfSense     Formation OPNsense     Liste de filtrage des IP malveillantes     Firewall pro-Large pour pfSense et OPNsense     Firewall pro-Alto pour pfSense et OPNsense     Firewall pro-Cito pour pfSense et OPNsense    

store.provya.fr

icon Tags de l'article :

[pfSense] Implémenter DNS sur TLS (chiffrement des requêtes DNS)

icon 08/04/2019 - Aucun commentaire

Le nouveau service DNS de Cloudfare a suscité beaucoup d'attention et de commentaires.

En nous inspirant de l'article DNS over TLS with pfSense, nous proposons ici un guide rapide et en français sur la configuration de vos serveurs DNS sur pfSense et plus particulièrement sur la configuration du DNS sur TLS.

Edit : cet article n'est plus à jour.

Dans ce mini-guide, nous utiliserons les serveurs DNS de Cloudfare, mais ce guide est également applicable avec les serveurs DNS Quad9.

À noter : cet article n'est plus à jour pour pfSense 2.5.x. Une mise à jour de cet article est à paraître prochainement.

À noter : dans ce guide nous travaillerons avec le mode "DNS resolver" actif et le mode transfert (DNS Query Forwarding) doit être désactivé puisque notre configuration va créer sa propre zone de transfert. Il s'agit de la configuration par défaut de pfSense.



1. Utiliser les serveurs DNS Cloudfare (ou Quad9)


La première étape consiste à configurer pfSense pour qu'il utilise les serveurs DNS de Cloudfare. Pour cela, se rendre dans le menu System > General Setup (ou Système > Configuration générale si votre interface est en français) :

pfSense menu System - General Setup


Les serveurs DNS à configurer sont :

  • 1.1.1.1
  • 1.0.0.1

Exemple de résultat obtenu :

pfSense - configuration DNS


Cliquer sur le bouton Save (ou Sauvegarder) en bas de page pour enregistrer les modifications.

Si nous avions souhaité utiliser les serveurs DNS de Quad9, les serveurs DNS à configurer auraient été les suivants :

  • 9.9.9.9
  • 149.112.112.112



2. Activer DNS sur TLS


Il nous reste à configurer pfSense pour lui dire de contacter ces serveurs DNS sur TLS.
Pour cela, se rendre dans le menu Services > DNS Resolver (ou Services > Résolveur DNS) :

pfSense - Services - DNS Resolver


Dans l'onglet General Settings (Paramètres généraux), descendre jusqu'à la zone "Custom options" (il faut cliquer sur le bouton "Display Custom Options" pour l'afficher).

Dans cette zone de texte, copier-coller la configuration suivante :

server:
forward-zone:
name: "."
forward-ssl-upstream: yes
forward-addr: 1.1.1.1@853
forward-addr: 1.0.0.1@853

Pour utiliser les serveurs DNS de Quad9 à la place de ceux de Cloudfare, il suffit d'adapter la valeur des lignes forward-addr. La configuration serait alors :

server:
forward-zone:
name: "."
forward-ssl-upstream: yes
forward-addr: 9.9.9.9@853
forward-addr: 149.112.112.112@853

Exemple de résultat obtenu :

pfSense - DNS custom options


Cliquer sur Save (Enregistrer) pour sauvegarder les modifications. Puis appliquer les changements en cliquant sur "Apply Changes" (Appliquer les modifications).

La configuration est terminée !



Pour aller plus loin


[pfSense] Configurer un dual-WAN (plusieurs connexions Internet)
[pfSense] Configurer un cluster de 2 pfSense redondants (failover)
[pfSense] Monter un accès OpenVPN site-à-site
Tous nos articles classés par thème
Voir un article au hasard


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

Retrouvez nos services et firewall pour pfSense


Formation pfSense     Formation OPNsense     Liste de filtrage des IP malveillantes     Firewall pro-Large pour pfSense et OPNsense     Firewall pro-Alto pour pfSense et OPNsense     Firewall pro-Cito pour pfSense et OPNsense    

store.provya.fr

icon Tags de l'article :

[pfSense] Configurer son point d'accès Wi-Fi

icon 21/03/2019 - 2 commentaires

pfSense peut être utilisé pour servir de point d'accès Wi-Fi. Ainsi, c'est pfSense qui diffuse le réseau Wi-Fi, qui gère sa sécurité et ses modalités d'accès et qui filtre le trafic.

Dans cet article, nous détaillerons comment configurer un point d'accès Wi-Fi sur pfSense.
Il faut que la carte Wi-Fi de votre pfSense soit pleinement supportée. Nous ne détaillerons pas dans cet article comment bien choisir sa carte Wi-Fi pour pfSense. Si ce sujet vous intéresse, nous vous invitons à lire notre article complet [pfSense] Comment bien choisir sa carte Wi-Fi.

Attention : plusieurs utilisateurs rapportent des instabilités du Wi-Fi depuis la dernière version de pfSense (2.4.5-RELEASE-p1). Aussi, pour le moment, nous ne recommandons pas d'utiliser pfSense comme point d'accès Wifi pour les nouveaux déploiements ou en environnement professionnel.



1. Créons une interface sans-fil


Nous commençons par créer une interface sans-fil, que nous associerons ensuite à une interface logique que nous pourrons configurer. Si cette notion d'interface logique, virtuelle ou physique n'est pas claire pour vous, nous vous invitons à relire notre article détaillé : [pfSense] Comprendre la gestion des interfaces réseaux.

Se rendre dans le menu Interfaces > Assignments :
menu Interfaces > Assignments (pfSense)


Puis se rendre dans le sous-menu Wireless :
Onglet Wireless pfSense


Nous cliquons sur l'icône "+ Add" située sur la droite de la page.
Nous choisissons notre carte Wi-Fi depuis le menu déroulant "Parent Interface" (ath0, par exemple), le mode et remplissons si nous le souhaitons une description
Pour le mode, 3 choix nous sont proposés :
  • Infrastructure (BSS) : permet de se connecter à un réseau Wi-Fi existant ;
  • Ad-Hoc (IBSS) : permet de se connecter à un Wi-Fi existant en mode point-à-point ;
  • Access Point : permet de créer et diffuser un nouveau point d'accès Wi-Fi.

Dans notre cas, nous choisissons le mode "Access Point".
Exemple de résultat obtenu :

configuration interface wifi pfSense


Nous cliquons sur l'icône "Save" pour sauvegarder nos changements.

Cette interface sans-fil va pouvoir être associée à une interface logique afin d'être configurée.



2. Configurons l'interface Wi-Fi


Nous retournons dans le sous-menu Interface Assignments, nous choisissons notre interface sans-fil dans le menu "Available network ports:" et cliquons sur le bouton "+ Add" associé :
creation interface logique wifi pfSense


Puis nous cliquons sur notre nouvelle interface afin de la configurer. Les principaux paramètres à personnaliser sont les suivants :
  • Enable : cocher cette case pour activer l'interface, bien-sûr.
  • Description : le nom de notre interface. Nous choisissons tout simplement "wifi".
  • IPv4 Configuration Type : la configuration IPv4 à appliquer sur cette interface. Les choix parlent d'eux-mêmes. Nous choisissons "Static IPv4" pour donner à cette interface une adresse IP statique.
  • IPv6 Configuration Type : la configuration IPv6 à appliquer sur cette interface. Dans notre cas, nous ne travaillerons pas avec IPv6, nous choisissons donc "None".
  • MAC Address : ce champ est à compléter si l'on souhaite modifier l'adresse MAC de notre carte Wi-Fi. Ce ne sera pas notre cas ici, nous laissons donc ce champ vide.
  • MTU : permet de personnaliser la valeur du MTU, qui correspond à la taille maximale d'un paquet pouvant être transmis en une seule fois sans être fragmenté. Dans notre cas, nous laissons ce champ vide afin de garder la valeur par défaut, soit 1 500 octets.
  • MSS : permet de personnaliser la taille du MSS pour les connexions TCP. Si vous décidez de personnaliser cette valeur, pfSense la diminuera automatiquement de 40 octets (ce qui correspond à la taille de l'en-tête TCP/IP). Dans notre cas, nous laissons ce champ vide afin de garder la valeur par défaut.
  • Speed and Duplex : permet de définir la vitesse de fonctionnement de l'interface. Le menu déroulant présente toutes les configurations supportées par votre carte Wi-Fi. Nous restons sur le choix par défaut.
  • IPv4 Address : l'adresse IPv4 de notre interface Wi-Fi
  • IPv4 Upstream gateway : nous laissons la valeur à None.
  • Persist common settings : cocher cette case permet de conserver les configurations effectuées même lorsque l'interface logique est supprimée. Nous laissons cette case décochée.
  • Standard : la déclinaison du standard 802.11 avec lequel nous souhaitons travailler. Les choix proposés dépendent de votre carte Wi-Fi. Dans notre cas, nous choisissons 802.11 ng.
  • Channel : le canal Wi-Fi qui sera utilisé par pfSense. Il est recommandé d'opter pour le 1, le 6 ou le 11. Dans notre cas, nous choisissons le 6.
  • Mode : nous choisissons "Access Point".
  • SSID : l'identifiant de notre réseau Wi-Fi. Vous pouvez choisir ce que vous souhaitez. Dans notre exemple, nous l'avons nommé Point-Acces-pfSense.
  • Enable WME : cocher cette case.
  • WAP - Enable : cocher cette case.
  • WPA mode : pour des raisons de sécurité, choisir WPA 2 exclusivement.

Exemple de résultat obtenu :

configuration complete interface wifi pfsense


La configuration de l'interface est terminée. Il nous reste à activer le service DHCP et autoriser les flux réseau.



3. Activons le serveur DHCP


Se rendre dans le menu Services > DHCP Server et configurer le serveur DHCP pour l'interface wifi.

menu Services > DHCP pfSense



Les options à configurer son assez parlantes, il ne paraît pas pertinent de les détailler ici.
Si vous avez besoin d'assistance pour la configuration de votre serveur DHCP, vous pouvez vous appuyer sur notre article complet : [pfSense] Configurer son serveur DHCP.



4. Créons une règle de firewall


Par défaut, tout le trafic est systématiquement bloqué sur chaque interface de pfSense (sauf l'interface LAN où une règle d'autorisation est créée automatiquement par pfSense).
Pour autoriser le trafic, se rendre dans le menu Firewall > Rules, puis sur l'onglet du nom de l'interface que nous venons de créer ("wifi", dans notre cas).
L'ajout d'une règle se fait depuis l'un des 2 boutons "Add".

Si vous ne souhaitez appliquer aucun filtrage spécifique, alors, lors de la création de votre règle, modifiez la valeur de "Protocol" et indiquez "any". Sauvegardez, puis cliquez sur le bouton "Apply changes".

À noter : nous ne recommandons pas de ne configurer aucun filtrage.

Exemple de résultat obtenu :

Création d'une règle de firewall sous pfSense



Votre réseau Wi-Fi est maintenant prêt et fonctionnel !



5. Debug / Dépannage


Vérifier l'état de son interface Wi-Fi


Se rendre dans le menu Interfaces > Status. Vous pourrez visualiser l'état de toutes les interfaces de pfSense. Exemple de résultat obtenu pour notre interface Wi-Fi :

État de l'interface wifi - pfSense


On constate que l'interface est bien up et qu'elle diffuse le SSID "Point-Acces-pfSense".


Voir les autres réseaux Wi-Fi à proximité


Se rendre dans le menu Status > Wireless. Si aucun point d'accès n'est listé, cliquez sur le bouton Rescan. Vous pourrez alors visualiser la liste des autres points d'accès disponibles :

Scanner les autres réseaux wifi visibles (pfSense)



Pour terminer, si vous souhaitez approfondir le sujet sur la configuration du Wi-Fi sur pfSense, vous pouvez consulter la documentation officielle Netgate (en anglais) : https://docs.netgate.com/pfsense/en/latest/wireless/index.html



Pour aller plus loin


[pfSense] Comment bien choisir sa carte Wi-Fi
[pfSense] Comprendre la gestion des interfaces réseaux
[pfSense] Configurer son serveur DHCP
Tous nos articles classés par thème
Voir un article au hasard


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

Retrouvez nos services et firewall pour pfSense


Formation pfSense     Formation OPNsense     Liste de filtrage des IP malveillantes     Firewall pro-Large pour pfSense et OPNsense     Firewall pro-Alto pour pfSense et OPNsense     Firewall pro-Cito pour pfSense et OPNsense    

store.provya.fr

icon Tags de l'article :