Provya

Sécurité et téléphonie

Articles & Tutoriaux  -  Liens & Actualités

[Asterisk] Sécuriser efficacement et simplement son serveur avec iptables et fail2ban

icon 14/05/2019 - Aucun commentaire

Héberger son serveur Asterisk sur un cloud public, ou d'une façon générale rendre son serveur Asterisk accessible sur Internet peut être une nécessité ou une facilité d'usage, mais cela implique de le sécuriser avec la plus grande précaution afin d'éviter les mauvaises surprises...

Bonne nouvelle, il est possible de se protéger très facilement en adoptant une démarche pragmatique, en réalisant une simple configuration d'Asterisk et en adoptant les outils fail2ban et iptables.

Cet article est dédié à la sécurisation d'un serveur Asterisk.
Cet article n'est pas un tuto détaillé sur la configuration du logiciel Asterisk.



fail2ban & iptables, qu'est-ce que c'est ?

iptables est un outil accessible en ligne de commande sur n'importe quel serveur GNU/Linux permettant de configurer des règles de filtrage des flux réseaux entrants et sortants d'un serveur. C'est un véritable pare-feu intégré à la machine.
Pour être tout à fait précis, iptables est une interface utilisateur au framework Netfilter qui implémente un pare-feu au sein du noyau Linux.

fail2ban est un outil d'analyse de journaux (log) dont l'objectif premier est de détecter des tentatives d'intrusions ou de connexions infructueuses sur un service et de bannir les adresses IP à l'origine de ces tentatives d'intrusion.

Le trio d'une configuration d'Asterisk pragmatique + fail2ban + iptables va nous permettre de nous mettre en sécurité contre la quasi-totalité des attaques que peut subir notre serveur Asterisk.



[1/4] Pour commencer : soyons pragmatiques

Pour sécuriser Asterisk, il est important d'adopter une approche logique et pragmatique. Pour cela, nous respecterons deux règles très simples :
  1. n'autoriser que ce qui est nécessaire. C'est-à-dire que l'on n'activera pas les services que l'on n'utilise pas d'une part, et que l'on appliquera des filtrages par adresse IP lorsque cela est possible d'autre part.
  2. ne pas utiliser un identifiant et/ou un mot de passe simple. Jamais. Il ne faut pas utiliser d'identifiant trivial comme : "100", "abc", "demo", "Pierre", "test", "temporaire", etc. Idem pour les mots de passe.


Filtrer l'authentification SIP par adresse IP

Dans la configuration de nos comptes SIP (fichier sip.conf et dérivés) il est possible de préciser l'adresse IP ou les adresses IP autorisées à s'enregistrer sur les comptes SIP de notre Asterisk.
Cette configuration se fait par compte SIP (ou trunk SIP). Elle permet donc d'être très souple.

Dans la configuration de chaque compte SIP, nous ajoutons les paramètres suivants :
deny=0.0.0.0/0.0.0.0
permit=33.12.13.14/255.255.255.255
La première ligne interdit toutes les adresses IP.
La second ligne autorise exclusivement l'adresse IP 33.12.13.14

Si nous devons autoriser plusieurs adresses IP ou plages d'adresses IP, nous pouvons ajouter autant de lignes permises que nécessaire. Exemple :
deny=0.0.0.0/0.0.0.0
permit=33.12.13.14/255.255.255.255
permit=33.22.23.24/255.255.255.255
Dans cet exemple, les adresses IP 33.12.13.14 et 33.22.23.24 seront autorisées.



Appliquer une sécurité de base sur notre configuration SIP

Il y a deux paramètres indispensables à faire figurer dans notre contexte general de notre configuration SIP :
[general]
...
allowguest=no
alwaysauthreject=yes
...

La signification de ces deux paramètres est la suivante :
  • allowguest=no : bloque la possibilité de passer un appel sans être préalablement enregistré
  • alwaysauthreject=yes : configure Asterisk pour qu'il renvoi le même message d'erreur générique lors d'une tentative de connexion erronée, que l'identifiant soit valide ou non



Utiliser un bon identifiant et un bon mot de passe

Un bon identifiant SIP est un identifiant faisant au moins 8 caractères. Plus il sera long, mieux ce sera. C'est un identifiant que vous n'avons pas à retenir.
Si l'utilisateur Pierre dispose d'un compte SIP dont l'identifiant est aB7ytWxEd, rien n'empêche qu'il soit joignable sur l'extension 100. Il faut bien distinguer l'identifiant SIP et le numéro ou l'extension d'appel.
Par exemple, pour faire correspondre l'extension 100 au compte SIP aB7ytWxEd, alors dans notre fichier de configuration extensions.conf nous aurons quelque chose comme cela :

; Appel vers l'extension 100
exten => 100,1,Dial(SIP/aB7ytWxEd,25,rtT)
   same => n,Voicemail(100@mycontext,u)
   same=> n,Hangup()

Bien évidemment, l'identifiant SIP et le mot de passe SIP doivent être différents. Nous recommandons d'utiliser des mots de passe composés d'au-moins 20 caractères.



[2/4] Bye-bye script-kiddies ou comment réduire le nombre d'attaques d'environ 99%

Pour réduire le nombre d'attaques d'au-moins 99%, une configuration très simple mais malheureusement trop rarement appliquée consiste à paramétrer le service Asterisk pour qu'il soit en écoute sur un autre port que le port SIP standard 5060.

Cette configuration n'est pas un élément de sécurité à proprement parler, et il ne faut pas considérer être en sécurité juste parce qu'on applique cette mesure, mais elle nous permettra d'échapper à l'immense majorité des script-kiddies qui scannent le port 5060 des serveurs.

Pour modifier le port SIP d'écoute d'Asterisk, ouvrir le fichier /etc/asterisk/sip.conf et dans la section [general] ajouter ou modifier la valeur de l'option bindport :
[general]
bindport=5872

Dans l'exemple ci-dessus, nous avons configuré notre serveur Asterisk pour que son port SIP d'écoute soit le 5872. Vous pouvez choisir une autre valeur (en fait, nous vous encourageons à choisir une autre valeur).

L'ensemble des configurations réalisées jusqu'à présent permet de réduire la surface d'attaque. Nous allons maintenant voir comment filtrer et sécuriser les services restant actifs.

Nous insistons sur le fait que d'après nos statistiques internes, simplement en changeant le port SIP d'écoute d'Asterisk, on peut passer de plusieurs dizaines de tentatives d'intrusions par force brute par jour à un chiffre compris entre zéro et dix par an.
Ceci étant, il ne faut pas croire que cette configuration soit suffisante pour sécuriser un serveur Asterisk.



[3/4] Configurer fail2ban pour Asterisk

fail2ban est inclus dans toutes les distributions GNU/Linux. Pour l'installer :
Debian/Ubuntu/Mint : apt-get install fail2ban
CentOS/RedHat : yum install fail2ban (s'il ne trouve pas le paquet fail2ban, le faire précéder d'un yum install epel-release)

Dès que fail2ban est installé, il est immédiatement opérationnel pour le port SSH. Nous allons le configurer pour Asterisk.


3.1 - Créons un fichier de log Asterisk pour fail2ban

Dans son mode de fonctionnement, fail2ban lit un fichier de log pour y repérer les tentatives d'intrusions. Nous allons créer un fichier de log Asterisk spécifique pour fail2ban.
Commençons par ouvrir avec notre éditeur de texte préféré le fichier de configuration des logs d'Asterisk /etc/asterisk/logger.conf pour y ajouter la ligne suivante en fin de fichier :
fail2ban => notice,security

On recharge la configuration de journalisation d'Asterisk, en saisissant la commande suivante :
myserver# asterisk -rx 'logger reload'

Cette action a permis la création d'un fichier de log spécifique se situant à l'emplacement /var/log/asterisk/fail2ban (sauf si vous avez modifié le répertoire par défaut de stockage des logs d'Asterisk, bien-sûr) qui contiendra uniquement les informations de type "notice" et "security".
Nous allons maintenant configurer fail2ban pour Asterisk.


3.2 - Créons un "jail" pour Asterisk

Créons un fichier du nom de notre choix dans le répertoire /etc/fail2ban/jail.d/. Dans notre exemple, nous nommerons ce fichier provya.conf ; et ajoutons le code suivant dans le fichier :
[asterisk-provya]
enabled  = true
ignoreip = 127.0.0.1 1.2.3.4
filter   = asterisk
action   = iptables-allports[name=asterisk, protocol=all]
logpath  = /var/log/asterisk/fail2ban
findtime  = 10m
maxretry = 3
bantime  = 10d

Détaillons ligne-par-ligne :
  • [asterisk-provya] : nom de notre jail (prison)
  • enabled = true : permet d'activer ce jail ; c'est-à-dire cette règle
  • ignoreip = 127.0.0.1 1.2.3.4 : la liste des adresses IP sources qui ne doivent pas être prises en compte par fail2ban. Il s'agit généralement des adresses IP légitimes comme l'adresse IP de notre connexion Internet ou d'un serveur VPN, par exemple. Il est recommandé de toujours laisser l'adresse 127.0.0.1. Chaque adresse IP doit être séparée par un simple espace.
  • filter = asterisk : le nom du filtre qui contient l'expression régulière qu'utilisera fail2ban pour détecter les tentatives d'intrusion. Le filtre "asterisk" est un filtre déjà pré-existant avec fail2ban. Il est bien fait. Nous l'utilisons.
  • action = iptables-allports[name=asterisk, protocol=all] : l'action qui sera exécutée par fail2ban lorsque les critères de déclenchement s'activeront. Dans le cas présent, nous indiquons à fail2ban d'utiliser l'action "iptables-allports" qui est une action pré-existante qui va créer une règle iptables de filtrage. La règle de filtrage iptables comportera le mot clef "asterisk" (ce qui nous permettra de la repérer facilement) et bloquera tous les ports de notre serveur pour l'adresse IP source incriminée (protocol=all).
  • logpath = /var/log/asterisk/fail2ban : le nom du fichier de log que fail2ban devra lire pour détecter les tentatives d'intrusion. Il s'agit du fichier de log Asterisk que nous avons créé à l'étape précédente.
  • findtime = 10m : la durée sur laquelle le nombre de tentatives de connexion va être prise en compte par fail2ban. Ici, 10 minutes.
  • maxretry = 3 : le nombre de tentatives de connexions à partir de laquelle notre filtrage va se déclencher. Ici, 3 tentatives.
  • bantime = 360m : la durée de bannissement. Ici, 360 minutes, soit 6 heures. Si vous souhaitez bannir une adresse IP plus d'une journée, il vous faudra personnaliser la valeur de "dbpurgeage" du fichier fail2ban.conf

Ainsi donc, dans cette configuration, nous bannissons pour 6 heures toute adresse IP ayant effectué 3 tentatives de connexions erronées sur notre serveur en moins de 10 minutes.
Attention : pensez à bien configurer le champ "ignoreip" si vous ne voulez pas vous retrouver coupé de votre serveur suite à une mauvaise manipulation... ;-)


3.3 - [Optionnel] Personnalisons le filtre pour Asterisk

Le filtre pour Asterisk fourni par défaut avec fail2ban est bien fait et il n'est pas forcément nécessaire de le changer.
Nous avons seulement déjà remarqué qu'une des règles du filtre peut avoir tendance à créer des faux-positifs. Il s'agit de la ligne :
^Call from '[^']*' \(<HOST>:\d+\) to extension '[^']*' rejected because extension not found in context

Le problème de cette règle est que si un utilisateur compose à 3 reprises en moins de 10 minutes un faux numéro (relativement peu probable, certes, mais cas déjà rencontré), alors son adresse IP va se faire bannir par fail2ban.
De plus, cette règle est inutile si vous avez défini le paramètre allowguest=no dans le fichier sip.conf comme indiqué en début d'article.

Nous commentons donc cette ligne en ajoutant un dièse (#) devant.

Il ne nous reste plus qu'à recharger fail2ban et le tour est joué !

systemctl reload fail2ban


3.4 - Les commandes utiles pour fail2ban

Quelques commandes utiles pour fail2ban :

  • fail2ban-client status : liste tous les « jails » configurés
  • fail2ban-client status asterisk-provya : affiche le statut du jail spécifié (ici, asterisk-provya) et précise le nombre d'adresses IP bannies
  • systemctl restart fail2ban : redémarre le service fail2ban
  • fail2ban-client set asterisk-provya banip 1.2.3.4 : permet de bannir manuellement l'adresse IP 1.2.3.4 dans le jail asterisk-provya
  • fail2ban-client set asterisk-provya unbanip 1.2.3.4 : permet de dé-bannir manuellement une adresse IP qui a été précédemment bannie
  • fail2ban-regex /var/log/asterisk/fail2ban /etc/fail2ban/filter.d/asterisk.conf : permet de tester le bon fonctionnement d'un filtre fail2ban sur un fichier de log
  • fail2ban-client get dbpurgeage : affiche la durée maximum durant laquelle les adresses IP bannies seront conservées
  • fail2ban-client get asterisk-provya bantime : affiche la durée de bannissement du jail indiqué

La configuration de fail2ban est terminée. Passons à la configuration du filtrage avec iptables.



[4/4] Configurer iptables pour Asterisk

Dernière étape dans notre stratégie de sécurisation de notre serveur Asterisk, la configuration des règles de filtrage des flux réseaux avec iptables.

La démarche va consister à définir le plus précisément possible la liste du trafic réseau que nous souhaitons autoriser, puis interdire le reste du trafic réseau.
Pour cela, nous devons définir quels services tournent sur notre serveur Asterisk et sur quels ports ces services sont joignables.

Par exemple :
  • serveur Asterisk (SIP) : port UDP/5060 (ou celui que vous aurez configuré précédemment !)
  • serveur Asterisk (flux audio RTP) : ports UDP/10.000-20.000
  • serveur SSH : port TCP/22
  • interface d'administration web (si installée) : port TCP/443
  • ICMP (si l'on souhaite que son serveur réponde au ping) : icmp

Si l'on utilise une distribution Asterisk packagée (type Wazo, Xivo, Elastix, ...), il faut aussi prendre en compte les services spécifiques de ces distributions. Pour Wazo, la liste des flux réseaux est présentée dans la documentation en ligne.

Nous faisons le même travail pour les flux sortant du serveur ; c'est-à-dire les flux réseaux émis par le serveur.

Par exemple :
  • mise à jour (HTTP/HTTPS) : ports TCP/80, TCP/443
  • flux NTP : port UDP/123
  • flux DNS : port UDP/53
  • flux trunk SIP : port UDP/5060 (ou celui configuré par votre opérateur SIP)
  • flux RTP : ports UDP/10.000-20.000

Par simplicité, il est possible de n'appliquer aucune restriction sur les flux sortants, et de ne filtrer que les flux entrants. C'est un choix à faire en terme de sécurité.

Nous devons ensuite définir pour chacun de ces services, dans la mesure du possible, quelles adresses IP sont autorisées à joindre les services hébergés sur le serveur Asterisk (trafic entrant) et quelles adresses IP sont autorisées à être contactées par le serveur Asterisk (trafic sortant).

Cette étape est importante. Si les adresses IP sources sont connues, il n'y a aucune raison de laisser le serveur Asterisk joignable sans aucune restriction par adresse IP source. C'est la base de la sécurisation du serveur. Et cela évite de se reposer uniquement sur fail2ban pour filtrer les tentatives de connexions mal-intentionnées. Les rôles d'iptables et fail2ban sont complémentaires.

Pour l'exemple d'implémentation de nos règles de filtrage, nous partirons sur le cas suivant :
  • Nous autorisons l'accès aux services d'administration du serveur (SSH et HTTPS, par exemple) uniquement pour l'adresse IP de la connexion Internet de notre entreprise : 188.10.11.12
  • Nous n'appliquons pas de filtrage par adresse IP pour les services Asterisk (SIP & RTP) afin de permettre l'accès par les utilisateurs nomades
  • Nous autorisons la plage d'adresses IP utilisées par notre opérateur SIP : 51.5.6.0/24

Ce qui nous donnera en terme de filtrage des flux entrants les règles suivantes :
iptables -A INPUT -s 51.5.6.0/24 -p udp -m udp --dport 5060 -m comment --comment "Opérateur SIP - flux SIP" -j ACCEPT
iptables -A INPUT -s 51.5.6.0/24 -p udp -m udp --dport 10000:20000 -m comment --comment "Opérateur SIP - flux RTP" -j ACCEPT
iptables -A INPUT -s 188.10.11.12/24 -p tcp -m tcp --dport 443 -m comment --comment "Administration - IP du bureau" -j ACCEPT
iptables -A INPUT -s 188.10.11.12/24 -p tcp -m tcp --dport 22 -m comment --comment "Administration - IP du bureau" -j ACCEPT
iptables -A INPUT -m comment --comment "filtrage fail2ban" -j asterisk-provya
iptables -A INPUT -p udp -m udp --dport 5060 -m comment --comment "Flux SIP Open" -j ACCEPT
iptables -A INPUT -p udp -m udp --dport 10000:20000 -m comment --comment "Flux RTP Open" -j ACCEPT
iptables -A INPUT -p icmp -m comment --comment "si l'on souhaite autoriser les PING" -j ACCEPT
iptables -A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
iptables -A INPUT -m comment --comment "On bloque tout le reste" -j DROP

iptables -A asterisk-provya -j RETURN

Il faut bien évidemment adapter cet exemple à votre configuration réelle et aux services que vous souhaitez filtrer.

Et pour le filtrage des flux sortants :
iptables -A OUTPUT -d 51.5.6.0/24 -p udp -m udp --dport 5060 -m comment --comment "Opérateur SIP - flux SIP" -j ACCEPT
iptables -A OUTPUT -d 51.5.6.0/24 -p udp -m udp --dport 10000:20000 -m comment --comment "Opérateur SIP - flux RTP" -j ACCEPT
iptables -A OUTPUT -p udp -m udp --dport 10000:20000 -m comment --comment "Flux RTP Open" -j ACCEPT
iptables -A OUTPUT -p udp -m tcp --dport 80,443 -m comment --comment "Flux HTTP/HTTPS" -j ACCEPT
iptables -A OUTPUT -p udp -m udp --dport 123 -m comment --comment "Flux NTP" -j ACCEPT
iptables -A OUTPUT -d 9.9.9.9/32 -p udp -m udp --dport 53 -m comment --comment "Flux DNS vers Quad9" -j ACCEPT
iptables -A OUTPUT -p icmp -m comment --comment "si l'on souhaite autoriser les PING" -j ACCEPT
iptables -A OUTPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -m comment --comment "On bloque tout le reste" -j DROP

Encore une fois, il faut bien évidemment adapter cet exemple à votre configuration réelle et aux flux que vous souhaitez filtrer.


Commandes utiles pour iptables

Quelques commandes utiles pour iptables :

  • iptables -L -n : liste toutes les règles iptables (l'option -n permet l'affichage des adresse IP au format numérique)
  • iptables -L --line-numbers : affiche le numéro de ligne de chaque règle
  • iptables -D OUTPUT 2 : supprime la règle numéro 2 de la chaîne OUTPUT
  • iptables-save > provya.txt : fait une sauvegarde des règles iptables vers le fichier provya.txt
  • iptables-restore < provya.txt : restaure les règles contenues dans le fichier provya.txt


Vous avez toutes les armes en main pour sécuriser correctement et efficacement votre serveur Asterisk.
Il faut bien évidemment adapter ces recommandations à votre usage, à votre besoin et à la localisation du serveur Asterisk (hébergement public type Cloud, hébergement privé derrière un firewall, etc.).
D'une façon générale, au plus vous serez précis dans vos règles de filtrage et mieux ce sera.
Enfin, il faut aussi rester pragmatique et implémenter la solution correspondant aux besoins réels avec les contraintes associées sans chercher à faire trop, ni tomber dans la fainéantise du pas-assez. Bref, à vous de trouver le juste équilibre ! ;-)



Pour aller plus loin

fail2ban est-ce vraiment utile ? Partage d'expérience
[Asterisk] Les commandes utiles pour Asterisk
[Asterisk] Connaître son nombre d'appels simultanés


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

Découvrez nos firewall Gbps full-SSD pour pfSense 2.4+

           

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

[pfSense] Configurer un cluster de 2 pfSense redondants (failover)
[pfSense] Configurer la priorisation de trafic avec CBQ
[pfSense] Configurer ses VLAN
[pfSense] Comprendre la gestion des interfaces réseaux


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

Découvrez nos firewall Gbps full-SSD pour pfSense 2.4+

           

store.provya.fr

icon Tags de l'article :

fail2ban est-ce vraiment utile ? Partage d'expérience

icon 04/04/2019 - 7 commentaires

fail2ban est un outil d'analyse de journaux (log) dont l'objectif premier est de détecter des tentatives d'intrusion ou de connexions infructueuses sur un service et de bannir les adresses IP à l'origine de ces tentatives d'intrusions.

Mais est-ce vraiment utile d'implémenter ce logiciel (ou un logiciel similaire) sur son serveur GNU/Linux ? Et dans quels cas est-ce utile ou inutile ?

Nous répondrons à ces questions dans cet article, ou du tout moins, nous donnerons notre point de vue sur fail2ban en nous basant sur notre expérience de la sécurisation de serveurs et en partageant un retour d'expérience quant à l'implémentation de fail2ban.


fail2ban, est-ce bien utile ?

Non, fail2ban n'est pas utile ; fail2ban est absolument indispensable.

Soyons parfaitement clair, il nous paraît totalement inconcevable d'avoir un serveur GNU/Linux hébergeant un service accessible sur le réseau (que ce soit un réseau public comme Internet ou privé comme un réseau local) sans que ne soit implémenté fail2ban ou un outil similaire.

À partir du moment où votre serveur est allumé et connecté à un réseau, il devient de facto une cible d'attaques ; qu'il soit connecté à Internet ou non, et que vous en ayez conscience ou non.

Le premier type d'attaque que l'on rencontre le plus fréquemment est la tentative d'intrusion par force brute (brute-force). Ces attaques peuvent cibler un serveur SSH, un CMS Wordpress, un service Asterisk, etc. fail2ban protège efficacement contre ce type d'attaque en identifiant les tentatives de connexions infructueuses et en bloquant (via iptables, par exemple) les adresses IP à l'origine de ces tentatives d'intrusions.

Le second type d'attaque est la tentative de déni de service. fail2ban peut protéger couramment contre ce type d'attaque en identifiant rapidement les adresses IP à l'origine de trop nombreuses requêtes.



Pas convaincu de la nécessité de fail2ban ? Partage d'un retour d'expérience

Pour se convaincre de l'utilité d'implémenter un service comme fail2ban, nous avons réalisé l'expérience suivante : nous avons configuré fail2ban sur trois serveurs hébergeant les services suivants :

  • serveur 1 : SSH (port 22) et Asterisk (port 5060)
  • serveur 2 : SSH (port 22) et Apache (port 80)
  • serveur 3 : SSH (port 22) et Apache (port 443)

Nous avons mesuré le nombre de tentatives d'intrusions sur le port SSH sur chacun de ces serveurs et nous sommes demandés si le fait d'avoir d'autres services en écoute avait une incidence sur ce nombre.

Dans le cadre de ce test, nous avons configuré fail2ban pour superviser uniquement le port SSH et bannir les adresses IP faisant 3 tentatives de connexions infructueuses en moins de 10 minutes. La durée de bannissement a été défini à 15 jours. Le test a duré 15 jours. Ainsi, au cours de ces 15 jours, nous sommes certains de ne pas avoir banni plusieurs fois la même adresse IP.

Le graphique ci-dessous présente en bleu l'évolution heure par heure du nombre d'adresses IP bannies pour les trois serveurs ; la courbe rouge représente la courbe de tendance au démarrage de la mesure (attention à l'échelle) :

adresses IP bannies par fail2ban - provya


1° constat : au bout de 15 jours, chaque serveur a banni plus de 6 000 adresses IP uniques !
2° constat : la progression est continue au cours des 5 à 8 premiers jours, avant de commencer à décliner par la suite.
3° constat : le serveur hébergeant un service Asterisk est nettement plus attaqué que ceux hébergeant un serveur Apache (+30% d'attaques environ)
4° constat : le serveur hébergeant un service Asterisk a banni plus de 3 000 adresses IP les 3 premiers jours, tandis que les deux autres serveurs en ont banni environ 1 750 sur les 3 premiers jours ; soit +70% d'attaques environ sur le serveur Asterisk lors des 3 premiers jours.


Le graphique ci-dessous présente en bleu le nombre d'adresses IP bannies heure par heure ; la courbe rouge représente la courbe de tendance (attention à l'échelle) :

adresses IP bannies par fail2ban heure par heure - provya


1° constat : le nombre de tentatives d'intrusions baisse clairement au fil du temps ; la plus forte baisse étant constatée sur le serveur 1 (SSH + Asterisk), qui était le serveur enregistrant le plus d'attaques. Le serveur 2 (SSH + Apache) est celui qui a la tendance la plus stable.
2° constat : sur les 15 jours, il y a eu en moyenne 21 tentatives d'intrusion par heure sur le serveur 1 (SSH + Asterisk), 16 sur le serveur 2 (SSH + Apache) et 17 sur le serveur 3 (SSH + Apache). La valeur médiane pour les serveurs 2 et 3 est équivalente à leur moyenne à moins d'un point près (valeur médiane à 16 pour tous les deux) ; pour le serveur 1, la valeur médiane est de 18.
3° constat : il y a plus de tentatives d'intrusions la nuit (créneau 20h - 08h), que le jour (créneau 08h - 20h) ; 35 % en moyenne.
4° constat : nous n'avons pas vu d'augmentation significative du nombre d'attaques durant le week-end. De notre point de vue et de notre expérience, un serveur qui essuie une attaque par force-brute durant le week-end (à partir du vendredi soir, bien souvent...) a généralement déjà été testé de manière beaucoup moins virulente durant la semaine ; dans le cadre de ce test, notre script bannissant directement pour 15 jours, cela empêche l'attaquant d'effectuer un repérage en semaine avant de lancer une attaque durant le week-end.



Conclusion : fail2ban, c'est indispensable !

Il est extrêmement simple d'installer fail2ban sur n'importe quel serveur GNU/Linux. Il est inclus dans toutes les distributions.
Debian/Ubuntu/Mint : apt-get install fail2ban
CentOS/RedHat : yum install fail2ban (s'il ne trouve pas le paquet fail2ban, le faire précéder d'un yum install epel-release)

Dès qu'il est installé, il est immédiatement opérationnel pour le port SSH.
fail2ban incorpore un nombre important de règles prédéfinies pour énormément de logiciel, ce qui facilite grandement sa mise en œuvre.
Il ne vous reste plus qu'à le personnaliser pour mettre vos adresses IP en withelist par exemple ou pour modifier la durée du bannissement.
Il existe de nombreux tutos sur Internet pour chaque service que vous souhaiterez superviser par fail2ban.

fail2ban est également indispensable pour les serveurs internes (non-accessibles depuis Internet) car vous n'êtes pas à l'abri d'une personne mal-intentionnée ou qu'un ordinateur de votre réseau local soit infecté par un bot ou un ver informatique.
À noter que vous pouvez configurer fail2ban pour qu'il vous envoie un e-mail dès qu'il détecte un nombre important de tentatives d'intrusions. Nous recommandons l'utilisation de cette option d'alerte par e-mail pour les serveurs accessibles uniquement en interne.

À noter : si votre fail2ban est amené à bloquer un très grand nombre d'adresses IP, alors l'hébergeur Octopuce propose de coupler fail2ban à IPset plutôt que iptables. Vous pouvez lire leur article : IPSET & filtrages des attaques sur les serveurs. Ils partagent le code source de leurs scripts sur leur espace GitHub.



Et vous, utilisez-vous fail2ban ?

Dans l'article [Asterisk] Sécuriser efficacement et simplement son serveur avec iptables et fail2ban, nous présentons comment sécuriser simplement et efficacement un serveur Asterisk avec un peu de bon sens, fail2ban et iptables.


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

Découvrez nos firewall Gbps full-SSD pour pfSense 2.4+

           

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.



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 :
Interfaces > assign (pfSense)


Puis se rendre dans le sous-menu Wireless :
wireless submenu 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 service 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 :

alt



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 :

alt


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 :

alt



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


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

Découvrez nos firewall Gbps full-SSD pour pfSense 2.4+

           

store.provya.fr

icon Tags de l'article :

[pfSense] Comment bien choisir sa carte Wi-Fi

icon 22/11/2018 - Aucun commentaire

pfSense supporte depuis de nombreuses années des fonctionnalités de gestion du Wi-Fi lui permettant d'agir comme un point d'accès sans-fil ou de se connecter à un point d'accès existant.

Pour pouvoir profiter pleinement de toutes les fonctionnalités offertes par pfSense dans la gestion du Wi-Fi, il est important de bien choisir sa carte Wi-Fi afin qu'elle soit pleinement compatible.

Dans cet article, nous faisons un tour d'horizon des caractéristiques supportées par pfSense pour la gestion des réseaux sans-fil et détaillerons comment bien choisir sa carte Wi-Fi et où l'acheter au meilleur prix !



[Introduction] L'ensemble de normes 802.11

Le fonctionnement des réseaux Wi-Fi est normalisé à travers l'ensemble de normes 802.11.

Cet ensemble de normes comporte plusieurs protocoles, dont les principaux sont les suivants :
  • 802.11a : offre un débit jusqu'à 54 Mbps sur la bande des fréquences des 5 GHz
  • 802.11b : offre un débit jusqu'à 11 Mbps sur la bande des fréquences des 2,4 GHz
  • 802.11g : offre un débit jusqu'à 54 Mbps sur la bande des fréquences des 2,4 GHz
  • 802.11n : offre un débit théorique jusqu'à 450 Mbps par multiplexage "MIMO" sur les bandes des fréquences 2,4 et 5 GHz
  • 802.11 ac : offre un débit théorique en Gbps sur la bande des fréquences des 5 GHz

Pour en savoir plus sur le fonctionnement des réseaux sans-fil et de ces normes, nous vous recommandons la lecture de l'article Wi-Fi n, ac, ad, ax… : tout savoir sur le réseau sans fil et ses débits du site FrAndroid.

Il est important de savoir qu'il existe plusieurs protocoles et d'identifier quels protocoles sont supportés par pfSense ou par sa carte Wi-Fi afin d'être certain de faire le bon choix en fonction de ses besoins.



Support du 802.11b, 802.11g, 802.11n

Les versions actuelles de pfSense supportent ces 3 protocoles sur une variété de matériels.

Il est difficile de dresser la liste exhaustive des matériels supportés. D'autant que certains matériels peuvent fonctionner, mais à des débits très faibles...
C'est pourquoi, avant de choisir une carte Wi-Fi, il vaut mieux s'assurer qu'elle soit effectivement annoncée comme étant compatible pfSense par le fabricant ou le revendeur (qui l'aura donc préalablement testée).



Support du 802.11ac

C'est très simple, il n'y a actuellement aucun support du 802.11ac sous pfSense.



Fréquences radio et dual-band

Certaines cartes Wi-Fi supportent les fréquences sur la bande des 2,4 Ghz et sur la bande des 5 GHz. Cependant, actuellement il n'y a aucune carte qui puisse fonctionner sous pfSense en opérant à la fois dans la bande des fréquences des 2,4 GHz et des 5 GHz.

L'idée d'utiliser 2 cartes différentes dans le même boîtier (afin d'en configurer une qui fonctionnerait sur la bande des 2,4 GHz et la seconde sur la bande des 5 GHz) est à proscrire car cela créerait inévitablement des interférences radio.

Aussi, s'il est nécessaire de disposer d'un point d'accès supportant ce fonctionnement dual-band (pour des raisons de compatibilité avec des terminaux spécifiques, notamment), alors nous recommandons clairement l'utilisation d'un point d'accès externe dédié.



Point d'accès multi-SSID

Une fonctionnalité très utile est la capacité à pouvoir diffuser plusieurs SSID (plusieurs réseaux Wi-Fi) indépendants dans leur configuration et dans leur mode de fonctionnement (l'un avec authentification par clé WPA/WPA2, l'autre avec une authentification par portail captif, ...) depuis la même carte Wi-Fi.

Un exemple concret d'utilisation serait que notre pfSense diffuse un réseau Wi-Fi pour les collaborateurs de l'entreprise et en parallèle diffuse également un second réseau Wi-Fi "invité" (sur lequel on pourra d'ailleurs configurer un portail captif depuis pfSense) pour les personnes externes à l'entreprise de passage dans les locaux.

pfSense supporte pleinement cette fonctionnalité. Cependant, toutes les cartes Wi-Fi ne peuvent pas fonctionner avec ce mode... Si cette fonctionnalité vous intéresse, il est donc nécessaire que la carte Wi-Fi que vous choisirez la supporte.


Nous avons fait le tour des éléments à prendre en considération dans le choix de sa carte Wi-Fi.



Est-ce une bonne idée de faire porter par pfSense le point d'accès Wi-Fi de son réseau ?

C'est une question fréquente. Dans la même logique, une question qui revient souvent est de se demander s'il est pertinent de faire supporter par pfSense plusieurs fonctionnalités (firewall, serveur DHCP, point d'accès WiFi, ...).

Nous profitons de cet article pour y apporter notre réponse.
Cette réponse va dépendre principalement du contexte et de la taille de la structure concernée. De notre point de vue, il faut distinguer 2 cas :


1. Cas d'un usage SOHO / TPE / PME

Dans le cas d'un usage personnel ou pour une petite structure (de l'ordre de moins d'une vingtaine d'utilisateurs), il apparaît comme tout à fait pertinent de confier à pfSense la gestion de son point d'accès sans-fil.

La totalité des fonctionnalités attendues est normalement pleinement couverte par pfSense et cela permet de bénéficier d'un usage de pfSense de type "BOX professionnelle".

On peut alors voir pfSense comme une BOX s'occupant de délivrer l'ensemble des services réseaux nécessaires : routeur, filtrage firewall, serveur DHCP, serveur ou relais DNS, point d'accès sans-fil, serveur VPN, proxy, portail captif, etc.

C'est un choix rationnel qui permet de centraliser et d'administrer l'ensemble de ces fonctionnalités réseau à travers une seule interface et sur un produit open-source dans lequel on a pleinement confiance.

C'est également un choix économiquement intéressant car il n'y a alors qu'un seul matériel à acquérir (la "BOX" pour pfSense).

Enfin, sachez qu'il existe de très nombreux retours d'expérience probants quant à l'utilisation de pfSense en point d'accès quels que soient les équipements se connectant dessus (Mac, iPhone, Android, Windows, Xbox, ...).


2. Cas d'un usage grosse entreprise type ETI / Grand Compte

Dans les plus gros environnements de production, cela a beaucoup moins de sens de vouloir faire porter par pfSense le rôle de point d'accès sans-fil.
La fonctionnalité première de pfSense est de garantir la sécurité des flux sur le réseau de l'entreprise.

Sans parler des problématiques de sécurité du fait de vouloir faire porter trop de fonctionnalités par un seul équipement (défense en profondeur, notamment), il y a de nombreux cas d'utilisation où pfSense ne sera pas le plus adapté.
En particulier pour les déploiements répondant à des exigences telles que le support du 802.11ac, la possibilité de fonctionner en simultanée sur la bande des 2,4 et des 5 GHz ou les réseaux sans-fil maillés, etc.
Il faut également réfléchir à la localisation du point d'accès car bien souvent le firewall n'est pas placé au meilleur endroit pour diffuser un réseau sans-fil.

Enfin, les besoins pour ce type d'environnement sont très différents et pfSense n'est pas une solution adaptée pour y répondre : gestion des réseaux sans-fil étendu, cartographie, ... sont autant de fonctionnalités que n'offre pas pfSense pour la gestion d'un réseau Wi-Fi de grande envergure.

Si vous êtes dans ce cas d'usage et que vous avez un besoin Wi-Fi, nous recommandons l'utilisation des solution d'Ubiquiti Networks ou d'autres solutions spécialisées.



On résume : comment choisir sa carte Wi-Fi

Si vous souhaitez utiliser pfSense en point d'accès Wi-Fi ou en client Wi-Fi dans le cadre d'un usage particulier ou petite entreprise, c'est tout à fait possible.

Les éléments à prendre en compte sont :
  • s'assurer que la carte Wi-Fi soit compatible pfSense et supporte les protocoles 802.11b/g/n
  • s'assurer que la carte Wi-Fi puisse fonctionner sous pfSense aussi bien en mode client qu'en mode point d'accès
  • s'assurer que la carte Wi-Fi supporte la possibilité de diffuser plusieurs réseaux Wi-Fi (plusieurs SSID) en parallèle
  • s'assurer du débit offert par la carte Wi-Fi en fonctionnant sous pfSense


Il faut avoir conscience des limitations suivantes :
  • pfSense ne supporte par le protocole 802.11ac
  • aucune carte Wi-Fi ne peut actuellement fonctionner sous pfSense en diffusant à la fois dans la bande des 2,4 et des 5 GHz
  • pfSense n'est clairement pas adapté pour servir de point d'accès Wi-Fi dans le cadre d'un réseau sans-fil d'envergure


D'une façon générale, nous recommandons uniquement les cartes Atheros. Et uniquement elles.
Les appareils sans-fil les plus couramment utilisés par les développeurs et les utilisateurs de FreeBSD ou pfSense sont ceux qui utilisent des pièces fabriquées par Atheros.



Où acheter sa carte Wi-Fi ?

Netgate propose sur sa boutique en ligne la carte WLE200NX (chipset Atheros AR9280) : https://store.netgate.com/WLE200NX-80211nabg-miniPCIe-Card-P1763.aspx. Cette carte répond normalement à tous les pré-requis vu précédemment.

Nous proposons sur notre boutique en ligne la carte Atheros AR9287. Cette carte répond à tous les pré-requis vu précédemment. Elle est garantie 3 ans.

Il existe, bien évidemment, beaucoup d'autres endroits ailleurs sur Internet où acheter une carte Wi-Fi. Nous vous recommandons de vous assurer que la carte que vous choisirez dispose bien d'un chipset Atheros, qu'elle supporte les fonctionnalités détaillées dans cet article et que le revendeur communique les débits attendus en fonctionnement sous pfSense.



Pour aller plus loin

[pfSense] Bien choisir et dimensionner son firewall


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

Découvrez nos firewall Gbps full-SSD pour pfSense 2.4+

           

store.provya.fr

icon Tags de l'article :

[pfSense] Bien choisir et dimensionner son firewall

icon 16/10/2018 - 4 commentaires

Le choix du bon matériel pour accueillir pfSense est toujours délicat. Il n'est pas évident de dimensionner correctement son firewall par rapport à son besoin, ni de choisir les bons composants lorsque l'on souhaite assembler son matériel soi-même.

Nous présentons dans cet article les éléments à prendre en considération pour le dimensionnement de son firewall, ainsi que les points de vigilance à avoir dans le choix des composants.



[Intro] Dimensionner son firewall, qu'est-ce que cela signifie ?

Avant de rentrer dans le vif du sujet, il est important de donner la définition du terme "dimensionner". Dans le choix d'un firewall, il va être important de définir les paramètres suivants :

  • Débit attendu : élément essentiel du choix du matériel. Quel débit maximal souhaitons-nous que le firewall puisse supporter ?
  • Mémoire-vive : de quelle quantité de mémoire-vive le firewall a-t-il besoin et quel est l'impact des services ou packages que j'active sur la consommation de mémoire ?
  • Processeur : comment choisir correctement son processeur pour être sûr qu'il ne soit pas le goulet d'étranglement de mon firewall ?
  • Disque-dur : quelle taille de disque-dur prévoir ? Faut-il opter pour un disque-dur SSD ?

Ces éléments sont les principales caractéristiques de dimensionnement à prendre en compte dans le choix de son firewall.



1. Quel débit ?

Le premier élément à prendre en considération est le débit souhaité. Est-ce 100 Mbps ? 1 Gbps ? 10 Gbps ? Ou davantage ?
Il faut également se poser la question de la connectique attendue : Ethernet (RJ45), Fibre Optique, WiFi, ... ?

Le débit standard actuel des réseaux modernes pour des entreprises de type TPE/PME est de 1 Gbps.
C'est un débit suffisant pour offrir de bonnes conditions de travail tout en répondant aux besoins d'évolutivité des débits des prochaines années. C'est donc le débit qu'il conviendra de retenir dans l'immense majorité des usages.
Ainsi, il nous paraît indispensable que votre firewall soit équipé de ports RJ45 Gigabits.
De plus, si votre firewall dispose de plusieurs ports réseaux 1 Gbps, il vous sera possible de faire de l'agrégation de liens afin d'accroître le débit offert (par exemple : 2x1 Gbps, 4x1 Gbps, ...).

Il est important de préciser ici que si votre firewall dispose de ports Gigabits, mais que vos switch disposent uniquement de ports Fast Ethernet (c'est-à-dire fonctionnant au maximum à 100 Mbps), alors le débit maximum que pourra offrir votre firewall sur chacune de ses interfaces connectée au switch sera de 100 Mbps.

Pour un usage intensif, de type très grande entreprise ou Centre de données (data center), il conviendra de prévoir une connectique fibre optique offrant des débits de 10 Gbps ou davantage.

Dans tous les cas, il est parfaitement inutile de voir trop large et de choisir des débits largement surdimensionnés ; cela augmentera sensiblement vos coûts d'acquisition sans aucun bénéfice à l'appui.

Dans l'article [pfSense] Comment bien choisir sa carte Wi-Fi, nous détaillons comment choisir sa carte WiFi pour pfSense afin d'être certain de faire le bon choix.

Enfin, et pour conclure sur le débit, il est important d'avoir conscience que ce n'est pas parce que votre firewall dispose de ports Gigabits que le débit maximum délivré sera d'1 Gbps sur chaque port !
En effet, si les autres composants matériels ne sont pas correctement dimensionnés (CPU trop faible, par exemple), si vous utilisez un VPN à haut niveau de chiffrement sans disposer d'accélération cryptographique ou si vous faites de l'inspection de trafic par exemple, alors le débit risque très fortement d'être ralenti.

D'une façon générale, les modules faisant de l'inspection de trafic (comme squidGuard, Snort, Suricata, ...) vont forcément légèrement ralentir le débit.
La plupart des autres modules disponibles sur pfSense ne vont pas ralentir le débit, mais vont principalement augmenter le besoin en ressource processeur ou en mémoire-vive.



2. L'impact des fonctionnalités sur le dimensionnement


Fonctionnement de base de pfSense

Pour fonctionner correctement, pfSense nécessite dans son installation par défaut de disposer de 256 à 512 Mo de mémoire-vive.

Ensuite, dans le fonctionnement de pfSense (et dans le fonctionnement de n'importe quel autre matériel de type stateful), chaque connexion est suivie dans la table d'état.
Pour chaque connexion, il y a 2 états de stockés dans la table : une pour la connexion entrante sur le firewall, l'autre pour la connexion sortante.

Un exemple simple d'une connexion est un ordinateur connecté sur le réseau local (sur le LAN) qui consulte le site web google.fr.
Attention : si l"utilisateur consulte en parallèle le site wikipedia.fr, alors il consomme une deuxième connexion, etc. Il ne faut donc pas penser qu'un ordinateur = une connexion qui sera stockée dans la table d'état. C'est potentiellement beaucoup plus.

La table d'état est stockée en mémoire-vive. Sa taille a donc un impact sur la mémoire-vive nécessaire. Il faut considérer que la consommation en mémoire-vive est la suivante :

  • 50 000 connexions = 100 000 états = ~ 100 Mo de RAM
  • 500 000 connexions = 1 000 000 états = ~ 1 Go de RAM


VPN

D'une façon générale, les VPN IPsec offrent un meilleur débit que les VPN OpenVPN.

L'impact du VPN sur le débit maximal possible va dépendre du choix du chiffrement. Si le matériel ne dispose pas d'accélération cryptographique, les débits vont très rapidement s'effondrer. En revanche, si le matériel supporte le jeu d'instruction AES (également appelé AES-NI), alors l'impact sur le débit sera extrêmement minime.

Ainsi, notre recommandation est clairement d'opter pour un processeur supportant l'AES-NI que vous utilisiez ou non la fonctionnalité VPN. C'est d'ailleurs un pré-requis à pfSense 2.5.


Snort/Suricata

Les modules Snort et Suricata vont avoir une consommation de mémoire-vive de l'ordre de 1 à 2 Go.
Leur impact sur le débit est très dur à quantifier et va dépendre principalement du processeur et du nombre d'instructions d'inspection de trafic qui sera configuré.


Squid

Squid utilise beaucoup le disque-dur (contrairement à pfSense qui, dans son usage par défaut, est très peu consommateur d'espace disque).
La quantité d'espace disque nécessaire va dépendre de la quantité de données que l'on souhaite conserver en cache et se paramètre dans la configuration de squid.

Pour le choix du type de disque-dur, on considère que jusqu'à environ une centaine d'utilisateurs, n'importe quel disque-dur (disposant d'une vitesse de rotation de 7 200 tour/min, qui est le standard) fera l'affaire.

Au-delà, le choix d'un disque SSD est clairement à privilégier. Si vous faites le choix d'un disque-dur SSD, il est indispensable de choisir un disque-dur SSD de qualité, autrement le nombre élevé de lecture-écriture produit par le proxy va provoquer une fin de vie rapide de votre SSD...

Concernant la mémoire-vive consommée par squid, il faut compter environ 15 Mo de mémoire-vive pour 1 Go de cache sur le disque-dur.
Soit, pour un cache de 100 Go, il faut compter 1,5 Go de mémoire-vive.



3. Bien choisir son matériel

Une fois le dimensionnement de son firewall défini, il est important de bien choisir son matériel afin qu'il soit pleinement compatible avec pfSense et pleinement évolutif.

Nos principales recommandations sont :

  • Architecture 64 bits : les architectures 32 bits ne sont officiellement plus supportées à la fin du mois d'octobre 2018. Il est indispensable de choisir une architecture 64 bits ;
  • Support de l'AES-NI : AES-NI est un pré-requis à pfSense 2.5 (qui devrait sortir vraisemblablement en 2019). Il est donc indispensable de choisir un processeur supportant le jeu d'instructions AES-NI ;

Si vous achetez un firewall déjà assemblé pour pfSense :

  • Acheter son matériel en France et bénéficiant d'un remplacement/échange sous 24-48h : en cas de panne de votre firewall vous vous retrouvez bloqués (plus d'accès à Internet, plus d'accès distants, plus de VPN, etc.) ; pour les installation critiques, la mise en place de pfSense en haute-disponibilité est très fortement conseillée ; pour les autres installations, il est indispensable de pouvoir obtenir un matériel de remplacement rapidement ;
  • Disposer d'une garantie matérielle d'au moins 3 ans : c'est la garantie que les composants sont tous de qualité ;
  • Éviter les plateformes type Ebay, alibaba, etc. : les délais de livraisons sont très longs, vous risquez d'avoir à régler des droits de douane et des frais de dédouanement et la garantie sera compliquée à mettre en œuvre si votre matériel tombe en panne après plusieurs mois de fonctionnement ;
  • Choisir un revendeur de confiance : il vous proposera du matériel de qualité et un service après-vente performant en cas de besoin.



Où acheter son firewall pour pfSense ?

De notre expérience, nous estimons qu'il existe aujourd'hui 2 solutions :

1/ Acquérir du matériel officiel vendu par la société Netgate (éditeur du logiciel pfSense). L'avantage est que vous bénéficiez du matériel officiel avec la garantie absolue qu'il est totalement supporté par l'éditeur. Les inconvénients principaux à nos yeux sont : les durées de garantie extrêmement courtes, le temps nécessaire pour un échange, le prix.
Boutique en ligne Netgate : https://store.netgate.com

2/ Acquérir du matériel vendu par Provya : face au besoin de disposer de matériel fiable et économique et au manque de solutions qui étaient disponibles sur le marché, nous avons décidé de façonner notre propre matériel, avec des composants de qualité et au meilleur coût. L'assemblage, le support et la garantie sont effectués par nos soins depuis la France ; tous nos matériels sont garantis 3 ans avec remplacement/échange en 24-48h, et les composants sont choisis avec soin pour fonctionner au mieux et durablement avec pfSense (support AES-NI, disque SSD de qualité, ...).
Boutique en ligne Provya : https://store.provya.fr


Vous avez maintenant toutes les cartes en main pour dimensionner correctement votre firewall pour pfSense !



Pour aller plus loin

[pfSense] Comment bien choisir sa carte Wi-Fi
[pfSense] Configurer un dual-WAN (plusieurs connexions Internet)
[pfSense] Configurer un cluster de 2 pfSense redondants (failover)


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

Découvrez nos firewall Gbps full-SSD pour pfSense 2.4+

           

store.provya.fr

icon Tags de l'article :

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

icon 08/04/2018 - 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.

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

À 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


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

Découvrez nos firewall Gbps full-SSD pour pfSense 2.4+

           

store.provya.fr

icon Tags de l'article :

[pfSense] Utiliser les limiters pour contrôler la bande-passante par utilisateur

icon 27/11/2017 - Aucun commentaire

Les limiters sont une évolution des technologies de priorisation de trafic existante sur pfSense.
D'une façon générale, les limiters permettent de définir une bande-passante maximale pour un usage. Un limiter peut être utilisé pour limiter le trafic d'une adresse IP spécifique ou d'un sous-réseau, pour limiter le trafic pour un type de service spécifique (ex : e-mail, web, ...) ou encore pour répartir de manière équitable le trafic entre plusieurs utilisateurs.

Les usages classiques des limiters sont les suivants :
  • limiter l'utilisateur X à 100 kbps de bande-passante Internet ;
  • répartir équitablement 1 Mbps de bande-passante entre tous les utilisateurs du réseau "LAN" ;
  • limiter le réseau "OPT" à 5 Mbps de bande-passante au total ;
  • limiter le protocole FTP à 2 Mbps de bande-passante Internet

Si vous vous reconnaissez dans ces usages ou ces besoins, alors le présent article est fait pour vous. Si vous souhaitez mettre en place une solution de gestion de priorisation de trafic plus globale, alors notre article [pfSense] Configurer la priorisation de trafic avec CBQ est fait pour vous.

Les limiters permettent de définir une bande-passante maximale pour un usage. À l'inverse, la priorisation de trafic permet de garantir une bande-passante minimale.

Dans cet article, nous allons mettre en place des limiters afin de répartir équitablement la bande-passante de notre connexion Internet entre tous les usagers de notre réseau local.



Généralités sur les limiters

Tout comme pour la priorisation de trafic, la mise en place des limiters se fait en 2 étapes consistant à créer les limiters d'une part et à définir les règles d'affectation du trafic dans ces limiters d'autre part :
  • Limiters : le limiter associé à un débit maximum et ses règles d'application globale ou par groupe d'adresses IP
  • Rules : "règle d'affectation" définissant le limiter par laquelle un trafic spécifique va transiter. Ces règles sont les mêmes que pour la configuration du firewall : filtrage par port et adresse IP source, port et adresse IP de destination, protocole utilisé, etc.

Les limiters se créent généralement par paire : un limiter pour le trafic entrant (Download) et un limiter pour le trafic sortant (Upload).

Les limiters s'organisent de manières hiérarchiques. C'est-à-dire que l'on définit un limiter root (également appelé pipe), pour lequel on va généralement définir un débit et une latence, et des limiters enfants (appelés queues), pour lesquels on va généralement définir un poids (c'est-à-dire une priorité).



Cas d'usage : répartir équitablement la bande-passante Internet

Dans cet article nous partons du cas d'école suivant : nous disposons d'une connexion Internet ADSL offrant un débit descendant (download) de 20 Mbps et un débit montant (upload) de 1 Mbps.
Nous souhaitons que cette bande-passante soit automatiquement et dynamiquement partagée équitablement entre tous les utilisateurs.

C'est-à-dire que si nous avons 2 utilisateurs connectés en même temps, ils disposeront chacun de 10 Mbps en download et 0,5 Mbps en upload au maximum.
Si nous avons 10 utilisateurs connectés en même temps, ils disposeront chacun de 1 Mbps en download et 100kbps en upload au maximum.

pfSense gérera cette répartition équitable automatiquement et dynamiquement au fil de l'eau.

Notre schéma réseau est le suivant :

schéma réseau pfSense LAN et WAN


Démarrons la configuration sans plus attendre !



1. Création du limiter pour l'upload

Nous allons créer 2 limiters root : un pour l'upload et un pour le download.
La création s'effectue depuis le menu Firewall > Traffic Shaper :

menu pfSense Firewall > Traffic Shaper


Cliquer sur l'onglet Limiters, puis sur le bouton "+ New Limiter".

Les éléments à configurer sont les suivants :

  • Enable : case à cocher pour activer le limiter root et ses queues
  • Name : le nom de votre limiter root (caractères alphanumériques, tiret et underscore uniquement). Dans notre cas, nous l’appellerons "Upload"
  • Bandwidth : la bande-passante de votre limiter root. Il est à noter que l'on peut définir une bande-passante en fonction d'un calendrier (option "Schedule"). Dans notre cas, nous choisissons "1 Mbps"
  • Mask : ce paramètre permet de définir comment la limitation va s'appliquer sur le trafic. 3 choix sont possibles :
  1. none : la limitation s'appliquera à tout le trafic comme un ensemble unique. Dans notre cas, c'est ce que nous choisissons pour le limiter root "Upload" (on veut que l'ensemble du trafic soit limité à 1 Mbps).
  2. Source addresses : la limitation s'appliquera par adresse IP source (ou groupe d'adresses IP source, suivant le masque). Ainsi, pour effectuer une limitation par adresse IP d'un réseau, on choisira "Source addresses" et préciserons un masque /32. C'est cette valeur que nous choisirons lorsque nous configurerons la queue de notre limiter root d'Upload.
  3. Destination addresses : la limitation s'appliquera par adresse IP destination (ou groupe d'adresses IP destination, suivant le masque). Ainsi, pour effectuer une limitation par adresse IP d'un réseau de destination, on choisira "Destination addresses" et préciserons un masque /32. C'est cette valeur que nous choisirons lorsque nous configurerons la queue de notre limiter root de Download.
  • Description : champ de description, purement informatif
  • Advanced Options : permet de définir des paramètres avancés comme la latence ou le taux de perte de paquets. Ces paramètres sont utiles pour simuler des connexions Internet limitées ou de mauvaises qualités (ou pour faire une mauvaise blague à un collègue...). Nous ne l'utiliserons pas dans notre cas, mais le nom de chaque champ parle de lui-même

Exemple de résultat obtenu :

Configuration limiter root pfSense


Nous pensons bien-sûr à cliquer sur le bouton "Save" pour sauvegarder notre configuration.

À ce stade, nous avons un limiter root qui va nous permettre de limiter notre trafic à une bande-passante maximale de 1 Mbps.
L'étape suivante est de créer une queue rattachée à ce limiter root et préciser que cette queue sera applicable par utilisateur. C'est-à-dire par adresse IP source avec un masque à /32.
C'est comme si virtuellement, autant de queues étaient dynamiquement créées pour chaque utilisateur, avec les mêmes caractéristiques (le même poids) et qu'elles allaient se répartir la bande-passante du limiter root auquel elles sont rattachées (1 Mbps).

En bas de la page du limiter que nous venons de créer, nous cliquons sur le bouton "+ Add new Queue".

Les éléments à configurer sont les suivants :

  • Enable : nous cochons cette case pour activer la queue que nous sommes en train de créer
  • Name : le nom de notre queue. Dans notre cas, nous l'appellerons "LAN_Upload"
  • Mask : le maque à appliquer, fonctionnant sur le même principe que pour le limiter root. Dans notre cas, nous choisissons "Source addresses" afin d'appliquer une limite sur le trafic en upload, donc quittant notre réseau local avec une adresse IP source locale. Nous souhaitons que cette limitation s'applique pour chaque utilisateur, c'est-à-dire par adresse IP ; nous choisissons donc "32" comme taille du masque.
  • Description : champ de description, purement informatif
  • Weight : le poids de la queue allant de 1 (priorité la plus faible) à 100 (priorité la plus forte). Pour une répartition équitable de la bande-passante du limiter root, on peut laisser ce champ vide. Si l'on souhaite donner davantage de bande-passante à certains utilisateurs qu'à d'autres, alors il faut jouer sur cette valeur. Dans notre cas, nous laissons le champ vide (la répartition sera équitable).
  • Advanced Options : les autres options permettent de simuler des connexions limitées ou de mauvaises qualités. Nous laissons ces champs vides.

Exemple de résultat obtenu :

Limiter queue configuration pfSense


Nous pensons bien-sûr à cliquer sur le bouton "Save" pour sauvegarder notre configuration. Puis sur "Apply Changes" pour que la nouvelle configuration soit prise en compte par pfSense.

Nos limiters (limiter root et queue) sont prêts pour le trafic sortant (upload). Il nous reste à faire la même configuration pour le trafic entrant (download).



2. Création du limiter pour le download

Nous cliquons sur le bouton "+ New Limiter". La configuration est la même que pour l'upload. Il faut simplement penser à choisir le bon débit (dans notre cas, 20 Mbps) et à changer son nom (dans notre cas, nous l'appellerons "Download").

Exemple de résultat obtenu :

Limiter root download configuration pfSense


Nous pensons bien-sûr à cliquer sur le bouton "Save" pour sauvegarder notre configuration.
Comme pour la partie upload, nous allons créer une queue, pour cela, nous cliquons sur le bouton "+ Add new Queue".

La configuration est presque la même que pour la queue d'upload. La différence réside dans le choix "Destination addresses" pour l'option "Mask".
En effet, nous souhaitons ici que virtuellement des queues soient créées dynamiquement pour le trafic entrant (download) à destination d'adresses IP locales.

Exemple de résultat obtenu :

Limiter queue configuration download pfSense


Nous pensons bien-sûr à cliquer sur le bouton "Save" pour sauvegarder notre configuration. Puis sur "Apply Changes" pour que la nouvelle configuration soit prise en compte par pfSense.

Nos limiters sont créés :

liste limiters pfSense


Il ne nous reste plus qu'à adapter nos règles de filtrage pour les mettre en application.



3. Création des règles d'application

La dernière étape consiste à configurer le firewall pour lui indiquer quel trafic va passer par quel limiter.

Cette configuration se fait depuis le menu Firewall > Rules.

Firewall > Rules pfSense


Choisir l'onglet LAN et éditer les règles de filtrage.
Sur chaque règle, se rendre dans les options avancées (bouton "Display Advanced") :

Display Advanced pfSense


En bas de page, pour l'option "In / Out pipe", choisir "LAN_Upload" pour la première liste déroulante et "LAN_Download" pour la seconde :

Configuration limiters firewall pfSense


Attention : il est nécessaire de faire cette manipulation sur toutes les règles de filtrage de votre interface LAN (ou de vos interfaces locales d'une façon générale) pour l'accès à Internet.

Pour être sûr d'affecter le bon limiter au bon champ In ou Out, il faut avoir en tête que ces champs représentent la vue depuis le firewall. C'est-à-dire que le champ IN correspond au trafic qui entre (incoming) sur cette interface, soit dans notre cas au trafic qui provient d'un utilisateur du LAN et va vers Internet ou un autre réseau.
C'est donc le limiter d'upload qu'il faut assigner à ce champ.

A contrario, le champ Out correspond au trafic qui sort (outgoing) par cette interface, soit dans notre cas le trafic qui provient d'Internet ou d'un autre réseau et qui est à destination d'un ordinateur du LAN.
C'est donc le limiter de download qu'il faut assigner à ce champ.


La limitation de trafic par utilisateur est en place !



4. Vérifier le bon fonctionnement

Pour vérifier que les limiters fonctionnent correctement, il faut se rendre dans Diagnostics > Limiter Info.
Chaque root limiter et ses queues sont présentés au format texte avec leurs paramètres et leurs valeurs.



Pour aller plus loin

[pfSense] Comprendre la priorisation de trafic
[pfSense] Configurer la priorisation de trafic avec CBQ


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

Découvrez nos firewall Gbps full-SSD pour pfSense 2.4+

           

store.provya.fr

icon Tags de l'article :

[pfSense] Configurer un dual-WAN (plusieurs connexions Internet)

icon 24/11/2017 - 30 commentaires

Nous allons voir dans cet article comment configurer pfSense pour disposer de deux connexions Internet (ou plus encore) utilisables en loadbalancing ou en fail-over.

Ces configurations permettent d'accroître le débit disponible pour l'accès Internet ou d'assurer une continuité de service en cas de panne du lien principal, par exemple.



Avant de commencer, les questions à se poser...

Combien peut-on avoir de connexions Internet en simultané ?
Il n'y a pas de limites théoriques.
Nous avons de très nombreux exemples d'installations disposant de 2, 3 ou 4 connexions Internet.
Le déploiement le plus important que nous avons rencontré est de 12 connexions Internet simultanées.

Une haute-disponibilité peut-elle être assurée via deux connexions Internet du même type chez le même opérateur
Généralement, la réponse est plutôt non. Il faut privilégier des connexions Internet chez des opérateurs différents. En effet, lorsqu'un opérateurs rencontre une panne (sur son DSLAM, par exemple), la panne est présente sur tous ses liens arrivant au même endroit.
Disposer de plusieurs connexions chez le même opérateur peut être une bonne approche si l'objectif recherché est d'accroître son débit.

Vaut-il mieux une connexion Internet disposant d'un bon débit ou de plusieurs connexions Internet disposant d'un débit moindre
La réponse va dépendre du prix et de la garantie de temps de rétablissement dont vous disposez sur chaque lien. Ce sont les deux principaux critères de décision.



Principe de fonctionnement

Dans notre article nous prendrons l'exemple suivant : une entreprise disposant de 2 connexions ADSL de débit similaire, sur lesquels nous souhaitons mettre en place de la répartition de charge (load-balancing).
Le schéma réseau serait le suivant :

schéma réseau dual-wan


La configuration de la haute-disponibilité ou du failover des liens Internet se fait au niveau de la gestion des passerelles et des groupes de passerelles.
Nous allons donc configurer pfSense pour qu'il utilise telle ou telle passerelle (et donc telle ou telle connexion Internet) en fonction de priorité que nous définirons.
Pour cela, nous créerons un groupe de passerelles dans lequel nous définirons quelles connexions Internet utiliser, avec quelles priorités et le cas échéant selon quelles règles de bascule de l'une à l'autre.

Il faut avoir en tête que la configuration du routage sur pfSense se fait de 3 façons, de la priorité la plus forte à la moins forte :
  1. Forcer la gateway dans les règles de firewall : permet de forcer le routage pour une règle de firewall précise (cela se configure dans les options avancées des règles de firewall) - dans cette configuration, on peut choisir une passerelle ou un groupe de passerelles.
  2. Définir une route : permet de forcer le routage pour une adresse IP ou une plage d'adresses IP destination (cela se configure dans le menu System > Routing) - dans cette configuration, on peut choisir une passerelle, mais pas un groupe de passerelles.
  3. Définir une passerelle par défaut : par défaut, tous les flux sortants utiliseront cette passerelle (plus exactement, tous les flux à destination d'un réseau inconnu de pfSense) - dans cette configuration, on peut choisir une passerelle, mais pas un groupe de passerelles.



Les pré-requis [1/2] : disposer d'interfaces WAN fonctionnelles

Dans notre exemple, le premier lien Internet est connecté sur l'interface "WAN", le second lien Internet est connecté sur l'interface "WAN2".
Exemple de configuration obtenue :

Interfaces WAN et WAN2 pfSense


La configuration des interfaces WAN et WAN2 n'entrent pas dans le périmètre de cet article. Que ces interfaces soient configurées en adresses IP statiques ou dynamiques (DHCP) n'a pas d'importance.
Ce qui est important est que vous disposiez de 2 interfaces configurées pour vos connexions Internet.



Les pré-requis [2/2] : disposer d'un serveur DNS sur chaque passerelle WAN

En cas de perte d'un des liens Internet, il est important que les requêtes DNS continuent de fonctionner. Pour cela, il faut définir au moins un serveur DNS par gateway WAN.
Cette configuration se fait dans System > General Setup.

pfSense > System > General Setup


La configuration se fait dans la partie "DNS Server Settings". Par exemple, en utilisant les DNS de Google :

configuration DNS servers pfSense


Nous utilisons les serveurs DNS de Google à titre d'exemple. Il est à noter que si vous ne souhaitez pas utiliser les serveurs DNS de votre fournisseur d'accès, alors il est préférable d'utiliser d'autres serveurs DNS que ceux de Google, comme ceux de French Data Network (80.67.169.12 et 80.67.169.40) ou de Quad9 (9.9.9.9).

Les pré-requis étant levés, passons maintenant à la configuration.



1. Créer un groupe de passerelles

Nous allons créer un groupe de passerelles comprenant la passerelle de l'interface WAN et la passerelle de l'interface WAN2.

La création s'effectue depuis le menu System > Routing.

création d'un groupe de gateway


Se rendre dans l'onglet Gateway Groups.
Puis cliquer sur le bouton "+ Add".

Les éléments à configurer sont les suivants :

  • Group Name : le nom du groupe de passerelles. Dans notre exemple, nous choisissons "Groupe_Gateway" (attention, pas d'espace, tiret ou de caractères spéciaux dans le nom).
  • Gateway Priority : pour chaque passerelle, nous donnons une priorité d'utilisation. La priorité la plus faible l'emporte toujours. C'est-à-dire que si pour la passerelle de l'interface WAN, vous choisissez une priorité 1 et pour la passerelle de l'interface WAN2 une priorité 2, alors le trafic s'écoulera exclusivement par la passerelle de l'interface WAN. Le trafic s'écoulera via la passerelle de l'interface WAN2 si et seulement si la passerelle de l'interface WAN est hors-service.
Ainsi, si vous souhaitez faire de la répartition de bande-passante entre vos 2 connexions Internet, il faut choisir le même niveau de priorité.
Si vous souhaitez configurer une connexion Internet en secours d'une principale, alors il faut jouer sur le niveau de priorité.
pfSense gère jusqu'à 5 niveaux de priorités allant de "Tier 1" (priorité la plus forte) à "Tier 5" (priorité la plus faible).
Dans notre cas, nous souhaitons faire de la répartition de charge, nous choisissons donc "Tier 1" pour le WAN et pour le WAN2.
  • Virtual IP : sur chaque interface, vous pouvez choisir l'adresse IP avec laquelle pfSense va émettre ses paquets. Soit c'est l'adresse IP de l'interface, soit c'est une adresse IP virtuelle précédemment créée. Ce peut être utile si vous avez 2 pfSense redondants, par exemple (cf. notre article [pfSense] Configurer un cluster de 2 pfSense redondants (failover)).
  • Trigger Level : permet de définir le déclencheur qui permettra à pfSense de choisir quand basculer vers un lien disposant d'une priorité plus faible. Il existe 4 valeurs possibles :
  1. Member down : lorsqu'une passerelle est considérée comme non-joignable (c'est-à-dire lorsque l'adresse IP de monitoring associée n'est plus joignable par un ping)
  2. Packet Loss : lorsque le taux de perte de paquets maximum configuré pour cette passerelle est atteint
  3. High Latency : lorsque la latence maximale définie pour cette passerelle est atteinte
  4. Packet Loss or High Latency : lorsque le taux de perte de paquets maximum ou la latence maximale est atteint
Ces paramètres (taux de perte de paquets maximum, latence maximale, etc.) se définissent dans la configuration de la passerelle.
Dans notre cas, nous choisissons "Member down".
  • Description : champ optionnel purement cosmétique

Exemple de résultat obtenu :

exemple configuration multi-WAN Provya


Nous sauvegardons et cliquons ensuite sur "Apply changes" pour appliquer la configuration.
À ce stade, nous avons créé un groupe de passerelles qui permet de répartir équitablement le trafic Internet sur nos deux connexions. Il nous reste à indiquer à pfSense quel trafic doit utiliser ce groupe de passerelles.



2. Mettre en service le dual-WAN

La (presque) dernière étape consiste à configurer le firewall pour lui indiquer par quelle passerelle (ou plutôt quel groupe de passerelles dans notre cas) faire passer le trafic. Comme vu en début d'article, sans précision de notre part, le firewall utilisera la passerelle par défaut. Il est évidemment possible de définir soi-même quelle est la passerelle par défaut. En revanche, il n'est pas possible de définir qu'il faut utiliser un groupe de passerelles par défaut.

Il nous faut donc préciser dans chacune des règles du firewall que le trafic doit s'écouler par notre passerelle par défaut.

Cette configuration se fait depuis le menu Firewall > Rules.
Firewall > Rules pfSense


Choisir l'onglet LAN et éditer les règles de filtrage.
Sur chaque règle, se rendre dans les options avancées (bouton "Display Advanced") :

Display Advanced pfSense


En bas de page, préciser le groupe de passerelles dans le champ Gateway :

préciser gateway règles pfSense


Attention : il est nécessaire de faire cette manipulation sur toutes les règles de filtrage de votre interface LAN (ou de vos interfaces locales d'une façon générale) pour l'accès à Internet.

Exemple de résultat obtenu :

configuration gateway firewall pfSense


Félicitations, votre dual-wan est en place !



3. Configuration des services spécifiques


Configuration du service OpenVPN server

Si un serveur OpenVPN est configuré sur le pfSense, il est nécessaire de modifier l'interface d'écoute du service (normalement "WAN") pour la remplacer par le groupe de passerelle (Groupe_Gateway).
Cette modification s'opère dans "OpenVPN" > "Servers".

Davantage d'informations sur la configuration du service OpenVPN : [pfSense] Monter un accès OpenVPN site-à-site.


Configuration du service VPN IPsec

Si un tunnel IPsec est configuré sur le pfSense, il est nécessaire de modifier l'interface d'écoute du VPN IPsec (normalement "WAN") pour la remplacer par le groupe de passerelles (Groupe_Gateway).
Cette modification s'opère dans "VPN" > "IPsec". La modification s'effectue sur la phase 1.



4. Load-balancing avancé

Il est possible de définir des poids, ou des priorités, à chaque passerelle de sorte que le load-balancing ne soit pas fait obligatoirement suivant un ratio équitable (de type 50%-50% pour du dual-wan ou 33%-33%-33% dans le cas de trois connexions Internet).

Ces poids se définissent de 1 à 30. Par défaut, le poids de chaque passerelle est de 1.
Le mode de fonctionnement des poids est le suivant :
  • s'il y a 2 passerelles et qu'elles disposent chacune d'un poids de 1, alors la répartition de bande passante sera de 1/2 pour chacune, soit 50%.
  • si l'une dispose d'un poids de 1 et la seconde d'un poids de 2, alors la première prendra 1/(1+2) = 33% du trafic et la seconde 2/(1+2) = 67% du trafic.
  • si l'une dispose d'un poids de 5 et l'autre d'un poids de 12, alors la première prendre 5/(5+12) = 30% du trafic et la seconde 12/(5+12) = 70% du trafic.

Il est ainsi donc possible de définir des rapports de répartition du trafic sortant jusqu'à un rapport de 1 à 30.

Cette personnalisation s'opère dans la configuration de la passerelle depuis le menu System > Routing.
Il faut modifier la passerelle (icône en forme de crayon) et se rendre dans les options avancées (Display Advanced), puis modifier le champ "Weight".

Cette fonctionnalité est très pratique si l'on veut coupler 2 connexions ne disposant du même débit (une connexion ADSL et une connexions SDSL, par exemple).



5. Vérifier le bon fonctionnement

Une manière simple de vérifier que le trafic passe bien maintenant par les 2 connexions Internet est de se rendre dans Status > Traffic Graph.
En sélectionnant les interfaces WAN et WAN2, vous devriez voir le trafic s'écouler via les 2 liens.

Ensuite, pour tester le bon fonctionnement de la haute-disponibilité de vos liens, plusieurs tests peuvent être réalisés. En voici quelques exemples :
  • débrancher et rebrancher successivement le câble réseau de l'interface WAN puis WAN2
  • télécharger un fichier ou lancer des requêtes ping lorsque que vous ferez la manipulation précédente afin de constater la bonne bascule du trafic sur un lien Internet puis l'autre

À ce stade, pensez à faire une sauvegarde de la configuration de votre pfSense ("Diagnostics" > "Backup & Restore") ;-)



Pour aller plus loin

[pfSense] Configurer un cluster de 2 pfSense redondants (failover)
[pfSense] Monter un accès OpenVPN site-à-site
[pfSense] Configurer ses VLAN


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

Découvrez nos firewall Gbps full-SSD pour pfSense 2.4+

           

store.provya.fr

icon Tags de l'article :

[pfSense] Configurer un cluster de 2 pfSense redondants (failover)

icon 02/10/2016 - 42 commentaires

Dans cet article, nous allons voir comment configurer deux serveurs pfSense en mode cluster afin d'assurer un service en haute-disponibilité.

Il est à noter que pfSense est l'une des rares solutions open-source offrant des techniques de haute-disponibilité permettant de garantir que le firewall ne puisse pas être un point individuel de défaillance (SPOF).

Dans cet article, nous nous baserons sur l'architecture suivante pour réaliser nos configurations :


pfSenseA - WAN : 172.25.46.101
pfSenseB - WAN : 172.25.46.102
@IP virtuelle - WAN : 172.25.46.100

pfSenseA - LAN : 192.168.0.11
pfSenseB - LAN : 192.168.0.12
@IP virtuelle LAN : 192.168.0.10



Principe de fonctionnement

pfSense communique sur les réseaux LAN & WAN avec ses adresses IP virtuelles ; il n'utilise jamais l'adresse IP assignée à son interface.
En cas de défaillance de pfSenseA (pfSense primaire), pfSenseB (pfSense secondaire) prend le relais sans aucune interruption de service. La bascule de pfSenseA vers pfSenseB est totalement transparente.

Afin d'assurer la réplication du serveur pfSenseA vers le serveur pfSenseB, 3 éléments doivent être configurés : CARP, pfsync et XML-RPC.


CARP

CARP (Common Address Redundancy Protocol) est un protocole permettant à plusieurs hôtes présents sur un même réseau de partager une adresse IP.

Ici, nous utilisons CARP afin de partager une adresse IP WAN et une adresse IP LAN sur nos serveurs pfSense.
C'est cette adresse IP virtuelle que pfSense va utiliser pour sa communication sur le réseau. Ainsi, en cas de défaillance du pfSense primaire (pfSenseA), le pfSense secondaire (pfSenseB) prendra le relais de manière transparente au niveau réseau (reprise de l'adresse IP virtuelle).


pfsync

pfsync est un protocole permettant de synchroniser entre deux serveurs pfSense l'état des connexions en cours (et de manière plus large entre deux serveurs exécutant le firewall Packet Filter). Ainsi, en cas de défaillance du serveur primaire, l'état des connexions en cours est maintenu sur le serveur secondaire. Il n'y a donc pas de coupure liée à la bascule des services du pfSenseA vers le pfSenseB.

Il est recommandé d'effectuer cette synchronisation sur un lien dédié entre les deux serveurs pfSense. À défaut, le lien LAN peut être utilisé.
La réplication peut se faire d'un serveur primaire vers un ou plusieurs autres serveur(s).


XML-RPC

XML-RPC est un protocole permettant la réplication de données d'un serveur vers un autre. Il est utilisé dans pfSense afin de répliquer la configuration du serveur primaire vers le serveur secondaire.
Pour garantir son bon fonctionnement, il est important qu'il utilise la même interface que celle utilisée par le protocole pfsync.



1. Configurer les adresses IP virtuelles

Afin de fonctionner, chaque serveur pfSense doit disposer d'une adresse IP sur son interface, ainsi qu'une adresse IP virtuelle qui sera partagée entre les deux serveurs pfSense. De ce fait, nous utilisons 3 adresses IP par réseau.

Pour configurer l'adresse IP virtuelle, se rendre dans "Firewall" > "Virtual IPs" :



Cliquer sur l'icône "+ Add" pour ajouter une adresse IP virtuelle.
Les éléments à configurer sont les suivants :
  • Type : ici, nous avons quatre possibilités :
  1. IP Alias
  2. CARP
  3. Proxy ARP
  4. Other
Nous choisissons "CARP". Nous ne rentrons pas ici dans le détail de l'usage de chaque option. Pour plus d'informations, nous vous invitons à lire l'article What are Virtual IP Addresses - EN.
  • Interface : l'interface sur laquelle la VIP doit être configurée. Nous configurons la première sur l'interface WAN, puis la seconde sur l'interface LAN.
  • Address(es)  : l'adresse VIP et le masque du subnet de l'interface. Dans notre exemple : 172.25.46.100 et /24
  • Virtual IP Password : mot de passe permettant de sécuriser les échanges au sein du groupe d'hôtes se partageant la VIP. Ce mot de passe devra être re-saisi sur le pfSense secondaire.
  • VHID Group : Virtual Host Identifier. Un serveur peut faire parti de plusieurs groupes de VIP. Afin d'identifier chaque groupe, un ID unique lui est assigné. Nous laissons la valeur par défaut.
  • Advertising Frequency : la valeur du champ "Skew" à 0 désigne le master (pfSense primaire). Une valeur plus élevée désignera l'esclave (pfSense de secours). La valeur de "Base" correspond au timeout en seconde au bout duquel l'hôte sera considéré comme inaccessible. Nous recommandons de laisser la valeur par défaut : 1.

Exemple de résultat obtenu :



Nous procédons à la même configuration sur l'interface LAN.
Enfin, nous réalisons les mêmes configurations sur les interfaces WAN et LAN du serveur de secours (pfSenseB), en pensant bien à passer la valeur du champ "Skew" à 1.

Nous pouvons vérifier l'état de nos adresses IP virtuelles depuis le menu "Status"> "CARP (failover)" :




Dans le cas présent, les deux adresses VIP créées ont bien le statut "master" sur le pfSenseA :





2. Forcer l'utilisation des adresses IP virtuelles


Les adresses VIP sont déclarées, mais non-utilisées. Il reste à configurer pfSense pour qu'il utilise les adresses VIP plutôt que les adresses IP attribuées à ses interfaces logiques.
Pour cela, nous devons configurer pfSense pour qu'il utilise l'adresse VIP WAN sur le trafic sortant, l'adresse VIP LAN pour le trafic entrant et configurer les différents services pour qu'ils travaillent avec l'adresse VIP LAN comme adresse par défaut (pour les configuration OpenVPN ou DHCP, par exemple).


Configuration du NAT

Nous allons dans le menu Firewall > NAT. Dans l'onglet Outbound, nous cochons la case "Hybrid Outbound NAT rule generation. (Automatic Outbound NAT + rules below)".
Nous modifions les règles ou en ajoutons une afin que le trafic sortant utilise l'adresse VIP. Les champs à configurer sont les suivants :
  1. Disabled : cocher cette case pour désactiver la règle sans devoir la supprimer.
  2. Do not NAT : cocher cette case permet de désactiver le NAT pour le trafic correspondant à cette règle. Il est très rare de devoir cocher cette case.
  3. Interface : l'interface logique sur laquelle nous souhaitons définir notre règle de NAT. Dans notre cas, nous choisissons "WAN".
  4. Protocol : les protocoles concernés par cette règle de NAT. Nous choisissons "any"
  5. Source : le réseau source. Dans notre cas, il s'agit du réseau local, nous saisissons donc "192.168.0.0" et "/24" pour le masque.
  6. Destination : le réseau de destination. Dans notre cas, nous choisissons "any".
  7. Address : l'adresse à utiliser lors du NAT. Nous choisissons l'adresse VIP créée précédemment, soit "172.25.46.100 (VIP WAN)".
  8. Port : nous laissons ce champ vide.
  9. No XMLRPC Sync : cocher cette case pour ne pas copier la règle sur le pfSense secondaire. Nous laissons cette case non-cochée.
  10. Description : un champ informatif

Exemple de résultat obtenu :



Cette configuration n'est à faire que sur le pfSense primaire. La configuration sera dupliquée automatiquement sur le pfSense secondaire.


Configuration du service DHCP

Si pfSense fait office de serveur DHCP, nous allons dans le menu "Services" > "DHCP Server". Nous modifions le champ "Gateway" pour y préciser l'adresse VIP (192.168.0.10). Autrement, le serveur DHCP de pfSense va continuer à indiquer aux clients du service DHCP l'adresse IP de l'interface LAN du pfSense.
Nous pouvons également compléter le champ "Failover peer IP" en renseignant l'adresse IP de l'interface LAN du pfSense secondaire (192.168.0.12). Cette configuration optionnelle permet de partager les leases DHCP entre le pfSense primaire et le pfSense secondaire.
Attention, si ce champ est renseigner, il est nécessaire de modifier la valeur du "skew" du pfSense secondaire pour le passer à un nombre supérieur à 20.

Davantage d'informations sur la configuration du service DHCP : [pfSense] Configurer son serveur DHCP.


Configuration du service OpenVPN server

Si un serveur OpenVPN est configuré sur le pfSense, il est nécessaire de modifier l'interface d'écoute du service (normalement "WAN") pour la remplacer par l'adresse VIP (172.25.46.100).
Cette modification s'opère dans "VPN" > "Servers".

Davantage d'informations sur la configuration du service OpenVPN : [pfSense] Monter un accès OpenVPN site-à-site.


Configuration du service VPN IPsec

Si un tunnel IPsec est configuré sur le pfSense, il est nécessaire de modifier l'interface d'écoute du VPN IPsec (normalement "WAN") pour la remplacer par l'adresse VIP (172.25.46.100).
Cette modification s'opère dans "VPN" > "IPsec". La modification s'effectue sur la phase 1.



3. Configurer la haute-disponibilité

Il nous reste à configurer la haute-disponibilité. Pour cela, se rendre dans "System" > "High Avail. Sync" :



Depuis cette page, il y a 2 éléments à configurer : la partie pfsync (pour la synchronisation d'état) et XMLRPC Sync (pour la synchronisation de la configuration).


State Synchronization Settings (pfsync)

Les éléments à configurer sont les suivants :
  • Synchronize States : cocher cette case pour activer pfsync
  • Synchronize Interface : l'interface de synchronisation. Si nous disposons d'une interface dédiée à la synchronisation, nous la choisissons ; autrement, nous choisissons "LAN".
  • pfsync Synchronize Peer IP : saisir l'adresse IP du serveur pfSense de secours. Si pour le choix de l'interface (ci-dessus) nous avons choisi "LAN", nous indiquons l'adresse IP de l'interface LAN du pfSense secondaire ; si nous avons choisi une interface dédiée alors nous indiquons l'adresse IP de l'interface dédiée du pfSense secondaire. Par défaut, si aucune adresse IP n'est saisie, pfSense diffusera en multicast sur l'interface choisie préalablement.


Configuration Synchronization Settings (XMLRPC Sync)

  • Synchronize Config to IP : sur le serveur pfSense primaire, saisir l'adresse IP du serveur pfSense secondaire (comme précédemment, il faut saisir l'adresse IP de l'interface choisie). Ce doit être la même adresse IP que celle renseignée dans le champ "pfsync Synchronize Peer IP". Ce champ doit être laissé vide sur le serveur pfSense secondaire.
  • Remote System Username : sur le serveur pfSense primaire, saisir le nom d'utilisateur utilisé pour se connecter sur le WebGUI du pfSense de secours ("admin" par défaut). Ce champ doit être laissé vide sur le serveur pfSense de secours.
  • Remote System Password : sur le serveur pfSense primaire, saisir le mot de passe du compte utilisateur saisi ci-dessus. Ce champ doit être laissé vide sur le serveur pfSense de secours.

Puis, nous choisissons les services que nous souhaitons synchroniser en cochant les cases appropriées. Par défaut, nous recommandons de tout cocher (Toggle All).

Exemple de résultat obtenu :




Autoriser les flux de réplication au niveau des règles du firewall

Il nous reste à autoriser les flux de réplications sur les firewall. La configuration se passe dans "Firewall" > "Rules".
Si la réplication se fait via l'interface LAN, les règles de firewall sont à appliquer sur cette interface ; si nous utilisons une interface dédiée, les règles seront à appliquer sur celle-ci.

Il y a deux flux réseau à autoriser :
  • le flux pour la synchronisation XML-RPC qui s'effectue via le port 443
  • le flux pour la synchronisation du protocole pfsync

Sur le firewall primaire, nous créons donc une première règle de firewall (en cliquant sur le bouton "Add") avec les paramètres suivants :
  • Action : nous choisissons "Pass"
  • Interface : nous choisissons l'interface dédiée à la réplication si le pfSense en possède une. Autrement, nous choisissons "LAN"
  • Address Family : nous laissons "IPv4"
  • Protocol : nous choisissons "TCP"
  • Source : nous indiquons un alias qui contiendra les adresses IP des interfaces de synchronisation de chaque pfSense (dans notre cas, cet alias contiendra les adresses IP "192.168.0.11" et "192.168.0.12"). Si cette notion d'alias n'est pas claire pour vous, vous pouvez choisir l'ensemble du réseau rattaché à l'interface de synchronisation (dans notre cas, ce serait "LAN net")
  • Destination : nous choisissons "This firewall (self)"
  • Destination port range : choisir "HTTPS (443)"

Exemple de résultat obtenu :



Sur le firewall primaire toujours, nous créons une seconde règle de firewall avec les paramètres suivants :
  • Action : nous choisissons "Pass"
  • Interface : nous choisissons l'interface dédiée à la réplication si le pfSense en possède une. Autrement, nous choisissons "LAN"
  • Address Family : nous laissons "IPv4"
  • Protocol : nous choisissons "PFSYNC"
  • Source : nous indiquons un alias qui contiendra les adresses IP des interfaces de synchronisation de chaque pfSense (dans notre cas, cet alias contiendra les adresses IP "192.168.0.11" et "192.168.0.12"). Si cette notion d'alias n'est pas claire pour vous, vous pouvez choisir l'ensemble du réseau rattaché à l'interface de synchronisation (dans notre cas, ce serait "LAN net")
  • Destination : nous choisissons "This firewall (self)"

Exemple de résultat obtenu :



Ces deux règles de firewall ont été répliquées automatiquement sur le pfSense secondaire.



4. Vérifier le bon fonctionnement de la haute-disponibilité

L'ensemble doit, à ce stade, être opérationnel. Vérifions !


Vérifier le statut du CARP (adresse VIP)

Nous pouvons vérifier l'état de nos adresses IP virtuelles depuis le menu "Status"> "CARP (failover)" :



Les adresses VIP doivent avoir le statut "MASTER" sur le pfSense primaire et "BACKUP" sur le pfSense secondaire.


Vérifier la réplication

Nous pouvons naviguer dans le menu "Firewall" > "Rules" et "Firewall" > "NAT" et vérifier que les règles créées sur le pfSense primaire sont bien présentes également sur le pfSense secondaire.


Faire des tests !

Avant toute chose, à ce stade, il est important de faire une sauvegarde de vos serveurs pfSense ("Diagnostics" > "Backup & Restore").

Ensuite, pour tester le bon fonctionnement de la haute-disponibilité, plusieurs tests peuvent être réalisés. En voici quelques exemples :
  • arrêter le pfSense primaire
  • débrancher le câble réseau de l'interface LAN ou WAN du pfSense primaire
  • désactiver le service CARP sur le pfSense primaire ("Status" > "CARP (failover)")
  • télécharger un fichier ou lancer des requêtes ping lors de la bascule du primaire vers le secondaire



Pour aller plus loin

[pfSense] Comprendre la gestion des interfaces réseaux
[pfSense] Configurer son serveur DHCP
[pfSense] Mettre à jour son serveur pfSense
[pfSense] Monter un accès OpenVPN site-à-site
[pfSense] Configurer un dual-WAN (plusieurs connexions Internet)


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

Découvrez nos firewall Gbps full-SSD pour pfSense 2.4+

           

store.provya.fr

icon Tags de l'article :