Provya

Expertise pfSense

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

[pfSense] La puissance de ZFS pour des mises à jour et des retours arrière en toute sérénité

icon 08/02/2022 - 3 commentaires

Dans cet article nous présentons l'intérêt de l'utilisation du système de fichiers ZFS et de ses instantanés lors des mises à jour de pfSense.
Il s'agit d'une solution très efficace pour gérer ses mises à jour et ses possibilités de retour arrière vers des points de restauration très facilement.



ZFS, c'est quoi ? Quel intérêt ?


ZFS est un système de fichiers et un gestionnaire de volume open source.

ZFS offre de très nombreuses fonctionnalités. Nous ne les détaillerons pas dans cet article, nous proposons la consultation de la page Wikipédia qui lui est dédiée : ZFS.

Pour des firewall tournant sous pfSense, ZFS présente deux gros intérêts : la facilité d'installation de deux disques en haute-disponibilité (Raid) et la possibilité de réaliser des instantanés (snapshot).

Dans cet article, nous nous intéressons particulièrement à l'intérêt des snapshot ZFS lors des mises à jour de pfSense.

En effet, il peut arriver qu'une nouvelle version de pfSense comporte des bugs et que ceux-ci ne soient pas corriger immédiatement (ex : les versions 2.5.0 et 2.5.1 qui étaient catastrophiques) ; ou qu'il y ait une incompatibilité matérielle suite à une mise à jour (aucun risque si vous prenez votre matériel chez Provya ;-) ).

Dans ce cas, il peut être pratique de disposer d'un point de restauration pour pouvoir faire un retour-arrière rapide vers la version précédente de pfSense (ex : 2.4.5-p1).

Dans cet article, nous présentons comment créer un point de restauration grâce aux instantanés. Comment procéder à une restauration si besoin. Et comment supprimer le point de restauration si la mise à jour s'est bien passée.

Cette stratégie est applicable aussi bien à pfSense qu'à OPNsense.



Instantané, snapshot, qu'est-ce que c'est ?


Un instantané est une copie en lecture seule d'un système de fichiers ou d'un volume.

La création d'un instantané est quasiment immédiate.

Initialement, un instantané ne consomme pas d'espace disque supplémentaire. Toutefois, à mesure que les données contenues dans le jeu de données actif changent, l'instantané consomme de l'espace disque en continuant à faire référence aux anciennes données et empêche donc de libérer de l'espace disque.

Snapshot est le terme anglais pour instantané. Les termes "instantané" et "snapshot" désignent donc la même chose.



Pré-requis


1/2. Disposer d'un accès au firewall


Il faut disposer d'un accès en mode console au firewall. Il existe trois possibilités : utiliser la console présente dans l'interface web de pfSense, activer le serveur SSH de pfSense ou activer le port console (si le firewall est équipé d'un port console).


Utiliser la console de l'interface web

Il s'agit de la solution la plus simple. pfSense dispose d'un accès console depuis l'interface web. Pour y accéder, se rendre dans le menu Diagnostics > Command Prompt :

Invite de commande depuis le webui de pfSense - Provya


Il sera possible de saisir les commandes indiquées et de cliquer sur le bouton "Execute" pour les exécuter. Le résultat de la commande sera affiché à l'écran.

OPNsense n'offre pas d'accès console depuis son interface web. Ceci pour des raisons de sécurité.


Activer le serveur SSH de pfSense

La deuxième possibilité est de se connecter au firewall via son serveur SSH.
Par défaut, le serveur SSH est désactivé.

Pour l'activer, se rendre dans le menu System > Advanced :

Menu System > Advanced - pfSense - Provya


Descendre au niveau de la section "Secure Shell" et cocher la case "Enable Secure Shell".
Il est également possible de paramétrer la méthode d'authentification (mot de passe ou certificat) et le port d'écoute (22 par défaut).

Activer le serveur SSH de pfSense - Provya


Il faudra aussi potentiellement créer une règle de filtrage côté LAN pour autoriser la connexion sur le port 22 (ou sur le port choisi à l'étape précédente, s'il a été personnalisé).

Exemple de règle :

Règle de firewall pour l'accès SSH - pfSense - Provya


Pour OPNsense, le principe est le même : il faut activer le serveur SSH du firewall. La configuration s'opère depuis le menu Système > Paramètres > Administration.

Au niveau de la section "Shell Sécurisé", cocher la case "Activer le Shell sécurisé", autoriser potentiellement le compte root à se connecter si l'on ne possède pas un autre compte administrateur, autoriser (ou non) l'authentification par mot de passe et choisir le port d'écoute.
Il est également possible de personnaliser un certain nombre de paramètres de sécurité.

Activer serveur SSH - OPNsense - Provya



Activer le port console de pfSense

La troisième et dernière possibilité est de se connecter au firewall par son port console (ou port série).
Le port console est désactivé par défaut.
Il faudra bien sûr que le firewall soit équipé d'un port console.

Se rendre dans le menu System > Advanced et descendre jusqu'à la section "Serial Communications".
Cocher la case "Enable serial port" et cocher la case "Password protect the console menu" afin de protéger la console par un mot de passe.

Par défaut, lorsque le port console est activé, n'importe qui peut se brancher directement sur le firewall et disposer d'un accès root. Ce qui représente un risque en terme de sécurité.

Activer port console - pfSense - Provya



Pour OPNsense, la configuration s'opère depuis le menu Système > Paramètres > Administration :

Activer port console - OPNsense - Provya




2/2. Disposer d'un système de fichiers ZFS



Dernier pré-requis, il faut bien sûr que notre firewall soit installé avec le système de fichiers ZFS.

Pour savoir si notre système de fichiers est ZFS, saisir la commande suivante :

zfs list

S'il s'agit d'un système de fichiers ZFS, nous devrions obtenir un résultat du type :

NAME                 USED  AVAIL  REFER  MOUNTPOINT
zroot                900M  12.2G    88K  /zroot
zroot/ROOT           886M  12.2G    88K  none
zroot/ROOT/default   886M  12.2G   886M  /
zroot/tmp            192K  12.2G   192K  /tmp
zroot/var           11.4M  12.2G  11.4M  /var

Autrement, nous obtenons un résultat du type :

no datasets available



Procédure


Dans cet article, nous prenons comme exemple la mise à jour de pfSense de la version 2.5.2 vers la version 2.6.0 (non, la version 2.6.0 n'est pas encore sortie, mais ce n'est plus qu'une question de jours / semaines ;-) )

Les étapes à suivre sont les suivantes.

1. Voir les environnements de démarrage actuels avec la commande bectl list.

Si nous n'avons jamais trifouillé ces options, nous devrions obtenir quelque chose comme ceci :

[2.5.2-RELEASE][root@pfSense.home.arpa]/root: bectl list
BE      Active Mountpoint Space Created
default NR     /          886M  2021-12-17 16:21

  • N signifie actif actuellement (Now)
  • R signifie actif au prochain redémarrage (Reboot)


2. Ajouter un nouvel environnement de démarrage que l'on appelle "pfsense-2.5.2" (ce sera notre point de restauration en cas de besoin) :

bectl create pfsense-2.5.2

3. Pour plus de lisibilité, renommer l'environnement de démarrage actuel (default) en "pfsense-2.6.0" :

bectl rename default pfsense-2.6.0

Une fois ces commande saisies, nous obtenons les environnements de démarrage suivants :

BE            Active Mountpoint Space Created
pfsense-2.5.2 -      -          8K    2022-02-07 17:56
pfsense-2.6.0 NR     /          886M  2021-12-17 16:21

On peut voir que notre nouvel environnement de démarrage ne prend que très peu d'espace disque à ce stade (8 Ko).

4. Réaliser un instantané des partitions /var et /tmp :

zfs snapshot zroot/var@pfsense-2.5.2
zfs snapshot zroot/tmp@pfsense-2.5.2

Les partitions /var et /tmp ne sont pas sur le même pool. Il faut donc les sauvegarder via un instantané. C'est ce que nous venons de faire.

Il est possible d'afficher la liste des instantanés ZFS avec la commande suivante :

zfs list -t snapshot

Le résultat ressemblera à ceci :

NAME                                             USED  AVAIL  REFER  MOUNTPOINT
zroot/ROOT/pfsense-2.6.0@2022-02-07-17:56:35-0      0      -   886M  -
zroot/tmp@pfsense-2.5.2                           64K      -   192K  -
zroot/var@pfsense-2.5.2                           88K      -  11.4M  -

Encore une fois, on voit que les instantanés ne consomment pratiquement pas d'espace disque supplémentaire au moment de leur création.

C'est tout !

Nous avons créé un deuxième environnement de démarrage (qui est une copie du premier à ce stade) et un instantané des partitions /var et /tmp.

À ce stade, nous pouvons lancer la mise à jour de pfSense (ou d'OPNsense) de manière tout à fait classique.

On peut aussi tester la branche de développement, installer des packages, tester des configurations, etc. En cas de pépin, nous pourrons très rapidement revenir à notre point de restauration.

Dans notre cas, et pour l'exemple, nous décidons de tester la version 2.6.0 de pfSense :

Tester pfSense 2.6.0 Release Candidate - Provya


Pour mettre à jour notre serveur, n'hésitons pas à nous appuyer sur notre article dédié : [pfSense] Mettre à jour son serveur pfSense



La mise à jour s'est bien passée, comment supprimer l'instantané ?



Si notre mise à jour s'est bien passée. Nous conseillons de ne toucher à rien durant les premiers jours / semaines, le temps de s'assurer qu'il n'y ait pas d'effets de bord et que tous les services fonctionnent tel qu'attendu.

Si c'est le cas, alors nous pouvons supprimer notre point de restauration et nos instantanés, ce qui permettra de libérer de l'espace sur le disque-dur.

En effet, là où notre point de restauration de notre environnement de démarrage ne prenait que 8 Ko à sa création, il en consomme maintenant bien plus :

[2.6.0-RELEASE][root@pfSense.home.arpa]/root: bectl list
BE            Active Mountpoint Space Created
pfsense-2.5.2 -      -          777M  2022-02-07 17:56
pfsense-2.6.0 NR     /          1.74G 2021-12-17 16:21

Notre point de restauration de notre environnement de démarrage consomme maintenant 777 Mo d'espace sur le disque-dur.

Idem pour les instantanés de /var et /tmp :

[2.6.0-RELEASE][root@pfSense.home.arpa]/root: zfs list -t snapshot
NAME                                             USED  AVAIL  REFER  MOUNTPOINT
zroot/ROOT/pfsense-2.6.0@2022-02-07-17:56:35-0   777M      -   886M  -
zroot/tmp@pfsense-2.5.2                          160K      -   192K  -
zroot/var@pfsense-2.5.2                         5.05M      -  11.4M  -


Pour supprimer le point de restauration et les instantanés, les trois commandes à saisir sont les suivantes :

bectl destroy pfsense-2.5.2
zfs destroy zroot/var@pfsense-2.5.2
zfs destroy zroot/tmp@pfsense-2.5.2

C'est tout.



Je souhaite faire un retour-arrière, comment faire ?



Si la mise à jour s'est mal passée ou si nous souhaitons revenir à l'état antérieur, il suffit de restaurer les instantanés ZFS et de modifier l'environnement de démarrage pour choisir notre point de restauration.

Pour activer notre point de restauration au prochain démarrage, la commande à saisir est la suivante :

bectl activate pfsense-2.5.2

Nous obtenons un message de confirmation. Il est également possible de vérifier la bonne prise en compte de la configuration via la commande bectl list :

BE            Active Mountpoint Space Created
pfsense-2.5.2 R      -          886M  2022-02-07 17:56
pfsense-2.6.0 N      /          893M  2021-12-17 16:21

Le marqueur R a bien basculé sur notre environnement de démarrage pfsense-2.5.2.

Et pour rétablir les instantanés, les commandes à saisir sont les suivantes :

zfs rollback -R zroot/var@pfsense-2.5.2
zfs rollback -R zroot/tmp@pfsense-2.5.2

Il reste à redémarrer le firewall pour que les changements soient totalement pris en compte.

Le redémarrage peut être lancé depuis l'interface web ou depuis la ligne de commande. La ligne de commande à saisir sera :

shutdown -r now


Une fois redémarré, on pourra supprimer les instantanés et l'environnement de démarrage qui ne sont plus utilisés, soit dans notre exemple :

bectl destroy pfsense-2.6.0
zfs destroy zroot/var@pfsense-2.5.2
zfs destroy zroot/tmp@pfsense-2.5.2

On peut vérifier que les commandes ont bien été prises en compte en listant les instantanés ZFS :

[2.5.2-RELEASE][root@pfSense.home.arpa]/root: zfs list -t snapshot
no datasets available

Les instantanés ont bien été supprimés.


Puis, en vérifiant les environnements de démarrage disponibles :

[2.5.2-RELEASE][root@pfSense.home.arpa]/root: bectl list
BE            Active Mountpoint Space Created
pfsense-2.5.2 NR     /          886M  2022-02-07 17:56


Enfin, pour se remettre totalement dans la situation d'origine, on pourrait renommer l'environnement de démarrage en "default" avec la commande suivante :

bectl rename pfsense-2.5.2 default

Voilà, nous avons fait le tour des éléments à connaître pour créer des points de restauration super facilement sur pfSense et OPNsense.
C'est une approche que nous recommandons fortement de suivre avant de lancer la mise à jour de nos firewall.



Pour aller plus loin


[pfSense] Mettre à jour son serveur pfSense
Tous nos articles classés par thème
Voir un article au hasard


Vous avez aimé cet article ? Vous cherchez du matériel de qualité ? Alors contactez-nous.

Découvrez nos services et firewall pour pfSense, assemblés en France, garantie 3 ans


Formation pfSense     Firewall pro-Middle     Firewall pro-Large     Liste de filtrage des IP malveillantes

store.provya.fr

icon Tags de l'article :

OPNsense 22.1 est disponible

icon 27/01/2022 - Aucun commentaire

Jeudi 27 janvier 2022 est sortie la dernière version d'OPNsense. La version 22.1.

Il s'agit d'une mise à jour importante, avec notamment la migration d'HardenedBSD vers FreeBSD 13.

Dans cet article, nous faisons le tour des éléments marquants de cette mise à jour.


logo OPNsense




OS : passage d'HardenedBSD à FreeBSD


Il s'agit là d'un changement important : OPNsense s'appuyait jusqu'à présent sur le système d'exploitation HardenedBSD. OPNsense 22.1 s'appuie dorénavant sur FreeBSD.

HardenedBSD est un fork de FreeBSD visant à améliorer la sécurité du système en implémentant des technologies d'atténuation et de durcissement contre l'exploitation de vulnérabilité informatique.

Beaucoup d'améliorations proposées par HardenedBSD ont été réintégrées à FreeBSD, notamment FreeBSD 13.

Enfin, lorsque certaines bugs spécifiques à HardenedBSD étaient rencontrés, ils étaient parfois difficiles à résoudre car la communauté HardenedBSD est beaucoup plus petite que la communauté FreeBSD.

Les équipes de développement d'OPNsense ont donc jugé qu'il était préférable de s'appuyer directement sur FreeBSD.

Autre point notable par rapport au système d'exploitation : il y a une amélioration de la gestion du système de fichiers ZFS.



Gestion des logs


La journalisation circulaire (circular log) a été retirée.

De manière simplifiée, la journalisation circulaire permet de définir une taille maximale par fichier de journalisation (ex : 100 Ko) et un nombre maximal de fichiers de journalisation à conserver (ex : 30 fichiers).

La journalisation se définit maintenant en nombre de jours de rétention : un fichier est conservé par jour et par type de services. On peut choisir la durée de conservation des fichiers de journalisation.

Le format de stockage des fichiers de journalisation est le suivant :
/var/log/<application>/<application>_[YYYYMMDD].log

Il était déjà possible de désactiver la journalisation circulaire depuis OPNsense 20.7. Elle est donc maintenant supprimée.


Nouveau fichier de journalisation "latest.log"

Le fichier latest.log contient les derniers logs toutes catégories confondues.

L'utilisation de ce fichier peut être très pratique pour gagner en efficacité lors de ses sessions de dépannage / troubleshooting, il évite d'avoir à passer d'un fichier de journalisation à l'autre pour chaque service.


Support de la RFC 5424

Les fichiers de journalisation sont maintenant tous compatibles avec le format syslog et offrent la possibilité de filtrer par gravité.



Gestion des interfaces


Plusieurs améliorations, dont :
  • Amélioration de la gestion des interfaces PPP en environnement haute-disponibilité : possibilité de désactiver l'interface PPP lorsque CARP passe en mode backup.
  • Meilleure granularité sur le choix de l'adresses MAC pour une interface donnée : le spoof d'adresse MAC s'applique maintenant uniquement sur l'interface sélectionnée et pas à ses parents ou enfants : avant, par exemple, le spoof s'apliquait sur l'interface parente et sur toutes les interfaces vlan configurées dessus, maintenant, la configuration se fait uniquement sur l'interface logique choisie.
  • Uniformisation et amélioration de la configuration des interfaces bridge (pont réseau) lorsqu'elles sont connectées au réseau.
  • Il est maintenant possible d'associer une adresse IP virtuelle (VIP) à une interface qui n'est pas configurée ; cette configuration peut s'avérer très utile dans certains environnements spécifiques comme par exemple la possibilité d'avoir un cluster de firewall OPNsense avec une interface WAN qui ne possède qu'une seule adresse IP.



Pare-feu / Alias


  • Suppression de l'option obsolète "kill states on gateway failure". Cette action est effectuée automatiquement pour les passerelles qui sont surveillées.
  • Ajout du support des alias d'hôtes IPv6 dynamiques.
  • Il est maintenant possible d'utiliser des alias dans la gestion des Router Advertisements pour IPv6.
  • Priorisation de trafic : ajout de l'option Gbit/s lors de la configuration des pipes (avant, pour 1 Gbit/s, il fallait saisir 1 000 Mbit/s).



IPsec


  • Lors de la création de nouvelles phases 1 et 2, certains paramètres de sécurité par défaut ont été remplacés par des paramètres plus modernes et sécurisés.
  • Suppression de certains algorithmes de chiffrement qui ne sont plus supportés par FreeBSD 13 (dans le détail : MD5, Blowfish, DES, 3DES et CAST128 ne sont plus pris en charge pour la phase 2).



Traductions


Amélioration de la traduction pour plusieurs langues dont le français (sont concernés dans le détail : français, allemand, italien, japonais, norvégien, espagnol et turc).

A contrario, l'italien a été rétrogradé au rang de "en cours de développement" à cause de son faible niveau de traduction.

Il est à noter que la traduction de l'interface d'OPNsense en français est vraiment très bonne (surtout si on compare à pfSense...).



Plugins


Plusieurs plugins ont été mis à jour dont ACME , bind, haproxy, zabbix, ...



Problèmes connus et points d'attention


  • OPNsense 22.1 contient une nouvelle version majeure du système d'exploitation. Les mises à jour doivent donc être effectuées avec prudence. Malgré tous les tests qui ont pu être effectués, il peut toujours subsister des anomalies ou des changements modifiant le comportement par défaut.
  • L'évolution du support des algorithmes de hachage ou de chiffrement sous FreeBSD 13 peut avoir des impacts sur les VPN IPsec déjà configurés. Si vous utilisez l'un des algorithmes de hachage obsolètes (MD5, Blowfish, DES, 3DES ou CAST128), il faut modifier la configuration de votre tunnel IPsec avant de lancer la mise à jour.
  • Si vous utilisez des cartes réseau Realtek (notamment avec des ports 2,5 Gbps), il est recommandé d'installer le plugin os-realtek-re avant de lancer la mise à jour. En effet, le pilote propriétaire Realtek n'est pas fourni par défaut sous FreeBSD 13, ce qui a pour conséquence que certaines cartes Realtek ne sont pas supportées par défaut.
  • L'usurpation (spoof) d'adresse MAC ne concerne maintenant que l'interface configurée et non les autres VLAN configurés sur la même interface ou l'interface parent. Il faut donc modifier la configuration de ses interfaces nécessitant une adresse MAC usurpée avant de faire la mise à jour.
  • Les valeurs par défaut du service NTPD ont été modifiées pour exclure l'option "iburst" par défaut. Le paramètre "limited" a été détaché de l'option "kod". Il faut donc vérifier ces points avant de mettre à jour si vous êtes concernés.
  • Le support GRE link1 a été supprimé et nécessite une route statique pour fonctionner.
  • La prise en charge de la journalisation circulaire a été supprimée. Aucune action n'est requise.



Processus de mise à jour


Cette nouvelle version est disponible pour les mises à jour et en téléchargement pour les nouvelles installations.

Pensez à faire une sauvegarde avant de lancer la mise à jour.

Si votre système de fichiers est ZFS, pensez également à créer un point de restauration.

Vous pouvez vous appuyer sur notre tuto écrit pour pfSense, mais facilement adaptable pour OPNsense : [pfSense] Mettre à jour son serveur pfSense.

Enfin, vous pouvez consulter la liste complète des changements en visitant la page suivante : OPNsense 22.1 released [EN]



Pour aller plus loin


[pfSense] La puissance de ZFS pour des mises à jour et des retours arrière en toute sérénité
[pfSense] Mettre à jour son serveur pfSense
Best practices / Recommandations pour la configuration de votre firewall
Tous nos articles classés par thème
Voir un article au hasard


Vous avez aimé cet article ? Vous cherchez du matériel de qualité ? Alors contactez-nous.

Découvrez nos services et firewall pour pfSense, assemblés en France, garantie 3 ans


Formation pfSense     Firewall pro-Middle     Firewall pro-Large     Liste de filtrage des IP malveillantes

store.provya.fr

icon Tags de l'article :