(modifié le 24 juin 2023 à 0:02)

L'installation d'un pare-feu sous pfSense est rapide, c'est ensuite que je perdais du temps.

pfsense-blogmotion-boot

Mais ça c'était avant !

Voilà une astuce pour reprendre la main sur l'interface web de gestion depuis n'importe quelle patte (interface) du firewall, et en bypassant toutes les règles (rules).

Mais pourquoi ?

Dans cet exemple nous utilisons un pare-feu pfSense pour déclarer un sous-réseau dans un réseau existant. Appelez cela une DMZ, réseau, sous-réseau peu importe. Comprenez juste que la patte WAN sera connecté au LAN de l'entreprise et que l'interface LAN abritera ce sous-réseau :

pfsense-schema

Oui, je n'avais pas Visio d'installé donc j'ai utilisé ASCIIFlow... ça se voit non ?

Vous venez d'installer un pfSense tout beau tout neuf, il a même chanté au boot et tous vos collègues d'open space se sont retournés. Le bip est heureusement assez court pour que l'on ne vous soupçonne pas, continuons.

Vous allez maintenant configurer la bête from scratch ou importer votre fichier XML maison comportant un socle de configuration. Mais comment atteindre l'interface web ? Sur l'écran vous avez un beau 192.168.1.1 (/24) qui apparaît. Si c'est le même réseau que celui que vous utilisez alors bravo ce tutoriel ne vous servira pas, sauf si l'IP est déjà attribuée !

Dans le cas contraire, voilà la problématique :

  • interface WAN : même si vous la mettez en DHCP l'interface web n'est pas accessible puis qu’aucune règle ne l'autorise, aucune règle n'existe d'ailleurs pour le WAN.
  • interface LAN : impossible de la configurer en DHCP depuis le menu (VGA / serial), cette option n'existe pas. Dommage non ?

En effet l'ip par défaut 192.168.1.1 implique l'utilisation d'un ordinateur dans le même réseau, avec une IP fixe définie à la mano (192.168.1.2 par exemple). Sans parler du fait qu'il faut trouver un câble croisé pour se brancher en direct, ou un switch volant (oui certains volent) car vous n'allez pas vous brancher sur le LAN de la boite.

Et c'est seulement à ce moment là l'accès à l'interface web est possible. Un peu long, trop long.

Désactiver packet filter

Sur pfSense ce n'est pas iptables mais Packet Filter qui est en charge de la circulation des paquets, ou PF pour les intimes. C'est lui qui nous empêche d'accéder à l'interface web, car tout ce qui n'est pas explicitement autorisé est interdit.

Désactivons PF :

pfctl-disable

  1. Connectez-vous sur le port VGA (ou série) pour avoir le menu
  2. Faire le choix "8) Shell"
  3. Saisir : pfctl -d
    (d=disable, le tiret en qwerty est sur la touche")" en azerty)
  4. Faire ENTREE
  5. Le message suivant apparaît : "pfctl: pf not enabled"
  6. Entrez l'une des IP dans votre navigateur web pour accéder à l'interface elles sont affichées en haut de l'écran :

pfsense-ipaddr-list

Une fois ceci fait vous pouvez enfin ajouter des règles permettant le management, voici les miennes :

  • Firewall > Rules
  • Cliquer sur WAN, puis sur l'icône d'ajout d'une règle "+"
  • interface : WAN
  • protocol : TCP
  • source : l'IP ou le réseau de management (le réseau LAN dans notre cas)
  • destination : WAN address
  • destination port range : 22, 80, 443
  • description : gestion admin

Vous devrez ajouter une règle pour chaque port, ou définir un alias de port pour n'avoir qu'une seule règle. Une fois que tout est OK faites "Apply changes", ce qui réactivera PF au passage. Si vos règles sont bonnes alors l'accès à l'interface web fonctionnera.

Attention : PF sera réactivé automatiquement si vous validez un formulaire dans l'interface web, à n'importe quel endroit. Enfin, pour réactiver PF à la main : pfctl -e (pour enable), sinon faites un reboot.

J'utilise beaucoup cette astuce quand je fais tourner un pfSense virtualisé sur mon pc, car n'ayant qu'une seule carte ethernet c'est la seule solution que j'ai trouvé. A part bien sûr configurer les deux cartes réseaux WAN et LAN comme étant membre du même réseau, mais ça ne règle pas le problème car il faudra définir une IP fixe sur la carte LAN de toutes façons.

Je ne sais pas si j'ai été clair, c'est un peu long pour une seule ligne de commande, mais autant que vous sachiez à quel point elle peut être utile. J'aurai aimé la découvrir avant, moi aussi !

En complément :

Si sshguard vous a bloqué, voici comment vider les restrictions :

pfctl -T flush -t sshguard

Et si vous êtes encore dans la panade consultez cette page chez provya.

Auteur : Mr Xhark

Fondateur du blog et passionné par les nouvelles techno, suivez-moi sur twitter