Il peut parfois arriver que l'on se bloque l'accès au firewall pfSense.
Il peut y avoir plusieurs raisons à cela : une mauvaise manipulation, la saisie d'un trop grand nombre de mots de passe erronés, un firewall qui tourne depuis des années et dont on a égaré les codes d'accès, etc.
L'objectif de cet article est de traiter ces différents cas où l'on n'a plus accès à l'interface du firewall, et les solutions associées.
Dans le pire des cas, si l'on dispose d'un accès physique au firewall, alors il sera toujours possible de reprendre la main dessus.
Il est d'ailleurs important de noter qu'une personne qui dispose d'un accès physique au firewall pourra contourner la totalité des mesures de sécurité.
Mot de passe admin oublié ou perdu
Si le mot de passe a été perdu ou oublié, la solution la plus efficace est de se connecter en console (ou de brancher un clavier et un écran) afin de lancer la réinitialisation du mot de passe admin.
Il faudra choisir l'option 3 :
Cette option permet également de réinitialiser le compte admin s'il est désactivé ou a expiré.
Le mot de passe admin sera réinitialisé à sa valeur par défaut, c'est-à-dire pfsense.
Mot de passe oublié avec l'accès console verrouillé
L'accès à la console peut être protégé par un mot de passe.
Ce n'est pas le mode par défaut pour pfSense, mais cela peut être activé depuis le menu System > Advanced en cochant la case "Password protect the console menu" :
Dans ce cas, un identifiant et un mot de passe sont demandés lors de la connexion en console ou lorsque l'on branche un clavier et un écran au firewall :
Heureusement, tout n'est pas perdu !
La procédure pour réinitialiser le mot de passe est la suivante :
- se brancher sur le firewall (en console ou avec un clavier et un écran)
- redémarrer le firewall et choisir Boot Single User option (2) à partir du menu de chargement avec le logo ASCII
Si on trouve que le menu se déroule trop vite, on peut appuyer sur la touche "espace" pour l'arrêter.
- appuyer sur Entrée lorsque l'on est invité à choisir le shell /bin/sh :
- Il faut ensuite remonter les partitions. La procédure est différente en fonction du système de fichier (filesystem) : UFS ou ZFS.
Pour les systèmes de fichier UFS, la commande à saisir sera la suivante :
# /sbin/mount -a -t ufs
Pour les systèmes de fichier ZFS, les commandes à saisir seront les suivantes :
# /sbin/mount -u /
Si cela retourne une erreur, on peut essayer :
# /sbin/zfs set readonly=off pfSense/ROOT/default
Et enfin :
# /sbin/zfs mount -a
Une fois que le système de fichier est monté, saisir la commande suivante et se laisser guider :
/etc/rc.initial.password
Enfin, il faudra redémarrer le firewall en saisissant la commande suivante :
/sbin/reboot
L'interface web de pfSense ne répond plus...
Il peut y avoir plusieurs raisons à cela.
Une erreur classique est de se tromper de protocole entre HTTP et HTTPS. Si l'un ne fonctionne pas, on peut essayer l'autre.
Si l'interface graphique n'a pas été configurée correctement, il est tout à fait possible que le firewall fasse tourner l'interface web sur une combinaison inattendue de port et de protocole, par exemple :
https://<hostname>:80
http://<hostname>:443
Pour réinitialiser la configuration, on peut se connecter en console (ou brancher un écran et un clavier), faire le choix 2 permettant de reconfigurer l'adresse IP de pfSense sur son interface LAN et de réinitialiser le protocole d'écoute de l'interface web de pfSense.
Une autre possibilité est que l'interface web de pfSense soit plantée. C'est extrêmement rare, mais ça peut toujours arriver. Si l'on souhaite forcer un redémarrage de l'interface web, on peut se connecter en console (ou avec un clavier et un écran) et faire le choix 11 "Restart webConfigurator" :
Une nouvelle règle de filtrage bloque l'accès au firewall
Si un administrateur distant perd l'accès à l'interface graphique en raison d'une modification des règles du pare-feu, l'accès peut toujours être obtenu du côté du LAN.
Par défaut, il n'est pas possible de se couper l'accès à l'interface web de pfSense depuis le LAN, sauf si la règle "anti-lockout" a été désactivée.
Sinon, il est toujours possible de se connecter en console (ou clavier et écran) et supprimer la dernière règle de filtrage qui vient d'être créée.
Il s'agit d'une fonctionnalité très pratique de pfSense : à chaque modification, une sauvegarde locale est effectuée sur le firewall. Ainsi, il est aisé de revenir en arrière.
Dans notre cas, sur la console, on choisira l'option 15 "Restore recent configuration" et on choisira la dernière configuration à restaurer :
Je suis bloqué car j'ai saisi trop de mots de passe erronés
Si l'on tente de se connecter à l'interface web ou en SSH et qu'on échoue à plusieurs reprises, notre adresse IP de connexion sera ajoutée à la liste de blocage.
Pour se débloquer l'accès, il faudra changer l'adresse IP de notre machine pour se connecter à pfSense, puis se rendre dans le menu Diagnostics > Tables et sélectionner sshguard dans la liste des alias disponibles pour supprimer l'adresse IP bloquée.
Il est également possible de faire la même chose en ligne de commande (videra complètement la table "sshguard") :
pfctl -T flush -t sshguard
Activer l'accès à l'interface web sur le WAN depuis une console
Le moyen le plus simple (et le plus propre), si l'on connaît son adresse IP publique est d'utiliser le script shell easyrule pour ajouter une nouvelle règle de filtrage.
Dans l'exemple suivant, le script easyrule autorisera l'accès sur l'interface WAN, de 1.2.3.4 (l'adresse IP du client) à 6.7.8.9 (vraisemblablement l'adresse IP WAN) sur le port TCP 443 :
easyrule pass wan tcp 1.2.3.4 6.7.8.9 443
Dès que la commande aura été saisie, le client (1.2.3.4) pourra se connecter au firewall (6.7.8.9).
Si l'on ne connaît pas son adresse IP publique, il est techniquement possible de créer une règle de type "allow all" sur le firewall. Pour cela, la commande à saisir en console sera la suivante :
pfSsh.php playback enableallowallwan
Une fois que l'administrateur a retrouvé l'accès et corrigé le problème initial qui l'empêchait d'accéder à l'interface web de pfSense, il faut impérativement supprimer la règle "allow all" du WAN.
Je ne m'en sors pas, comment désactiver le firewall ?
Il s'agit là d'une solution très dangereuse, mais qui peut s'avérer pratique dans des cas désespérés (bon dans ces cas-là, il vaut mieux nous appeler plutôt que de prendre de trop gros risques avec la sécurité de votre réseau ;-)
En mode console, on fera le choix 8 (Shell) et on saisira la commande suivante :
pfctl -d
Le firewall pourra ensuite être réactivé avec la commande :
pfctl -e
Le firewall sera aussi réactivé dès que l'on aura créé ou modifié une règle de filtrage et cliqué sur le bouton "Apply changes".
Le proxy Squid me bloque l'accès au firewall !
Cela peut arriver si l'on configure un peu trop vite squid et qu'on lui attribue le port d'écoute de l'interface web de pfSense par exemple.
La solution sera toujours la même : se connecter en console (ou avec un écran et un clavier) afin de reprendre la main.
On fera le choix 8 (Shell) et on saisira la commande suivante :
/usr/local/etc/rc.d/squid.sh stop
Si ça ne fonctionne pas, on pourra plutôt saisir l'une des deux commandes ci-dessous :
killall -9 squid
squid -k shutdown
Une fois que squid est arrêté, il faudra redémarrer l'interface web de pfSense en revenant au menu (saisir "exit" depuis le shell) et en faisant le choix 11 :
Il est à noter qu'il faut ensuite agir sans traîner : squid risque de redémarrer rapidement automatiquement grâce à ses scripts de supervision propres.
Le serveur d'authentification est H.S. - comment faire ?
Si vous vous connectez sur l'interface web de pfSense avec un compte LDAP ou Radius et que le serveur d'authentification est injoignable, pas de soucis : en secours, il est toujours possible de s'identifier avec un utilisateur local (avec le compte admin, par exemple).
Si tous les utilisateurs locaux ont été désactivés ou que les mots de passe ont été perdus, il faudra se connecter en console et faire le choix 3 pour réactiver et remettre à sa valeur par défaut le mot de passe admin.
Les identifiants seront alors :
- utilisateur : admin
- mot de passe : pfsense
Nous avons fait le tour des principaux problèmes d'accès qui peuvent exister !
Ce qu'il faut retenir, c'est qu'il est toujours possible de reprendre la main sur un firewall à partir du moment où l'on dispose d'un accès physique à la machine.
Pour aller plus loin
[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é ou vous souhaitez approfondir vos connaissances sur pfSense / OPNsense ? Alors contactez-nous.
Retrouvez nos services et firewall pour pfSense
store.provya.fr
Tags de l'article : pfSense
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.
OPNsense : depuis OPNsense 24.7, la gestion des points de restauration ZFS est directement intégrée au tableau de bord. Il n'est plus nécessaire de suivre les informations indiquées dans cet article.
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 :
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 :
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).
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 :
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 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é.
Pour OPNsense, la configuration s'opère depuis le menu Système > Paramètres > Administration :
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 :
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.
Retrouvez nos services et firewall pour pfSense
store.provya.fr
Tags de l'article : mise à jourmise à jour pfSenseOPNsensepfSense