OPNsense : Déploiement d’une instance sur OVHcloud [Partie 2/2]

modifié le : 17 novembre 2022,
par Julien Louis
 

Cet article fait suite à mon précédent OPNsense : Déploiement d'une instance sur OVHcloud [Partie 1/2] afin d'avoir un routeur opensource exploitable.

Configuration IP

1er démarrage

Lors du 1er démarrage de l'instance OPNsense, un écran similaire à celui-ci est affiché :

image-20221116152115304

L'adressage IP des différentes interfaces réseaux est à paramétrer.

Attention à la dénomination de LAN et de WAN. A ce stade, l'attribution du LAN et du WAN fait par l'installateur est incorrect. En réalite :

  • vtnet0 = Adresse IP publique soit le WAN pour l'instance
  • vtnet1 = Adresse IP du vRack soit le LAN pour l'instance

Se connecter

Pour réaliser la configuration IP nécessaire, il faut tout d'abord se connecter dans la console.

  • Login : root
  • Password : opnsense

Le menu d'administration de la console est maintenant disponible :

image-20221116153145030

Assignation des interfaces

Comme évoqué précédemment, l'attribution des interfaces faites par l'installeur est erronée. Il faut donc refaire l'assignation des 2 interfaces.

  • Faire le choix 1 : Assign interfaces
    • Do you want to configure LAGGS now ? : N
    • Do you want to configure VLANs now ? : N
    • Enter the WAN interface name : vtnet0
    • Enter the LAN interface name : vtnet1
    • Enter the Optional interface 1 name : Press Enter

Le récapitulatif suivant doit être affiché :

The interfaces will be assigned as follows :
WAN -> vtnet0
LAN -> vtnet1
  • Appliquer les modifications
    • Do you want to proceed ? : Y

A présent, les interfaces sont correctement assignées. L'adresse IP publique est récupérée par le DHCP d'OVH sur l'interface WAN.

image-20221116161807533

Paramétrage IP

Avant d'aller plus loin, il va falloir récupérer quelques informations sur l'instance :

  • L'adresse IP publique et sa passerelle : Ces informations sont disponibles dans le tableau de bord de l'instance.
  • L'adresse IP sur le vRack : Cette information est disponible dans la liste des instances (colonne IP privée).

Attention au masque de sous-réseau :

  • IP publique = Masque de sous-réseau en 32 bits
  • IP privée vRack = Masque de sous-réseau en 16 bits

Puis passer au paramétrage des adresses IP sur OPNsense dans la console VNC :

  • Faire le choix 2 : Set interface IP address
Available interfaces :
1 - LAN (vtnet1 - static, track6)
2 - WAN (vtnet0 - dhcp, dhcp6)
  • Paramétrer d'abord l'interface WAN
    • Enter the number of the interface to configure : 2
    • Configure IPv4 address WAN interface via DHCP ? : N
    • Enter the new WAN IPv4 address : Adresse IP publique relevée précédement
    • Enter the new WAN IPv4 subnet bit count : 32
    • Enter the new WAN IPv4 upstream gateway address : Adresse passerelle / gateway relevé précédement
    • Do you want to use the gateway as the IPv4 name server, too ? : N
    • Enter the IPv4 name server : 213.186.33.99 (DNS OVH)
    • Configure IPv6 address WAN interface via DHCP6 ? : N
    • Enter the new WAN IPv6 address : Press Enter
    • Do you want to change the web GUI protocol from HTTPS to HTTP ? : N (Un certificat SSL Let's Encrypt sera appliqué plus bas)
    • Do you want to generate a new self-signed web GUI certificate ? : N
    • Restore web GUI access defaults ? : N

L'interface WAN est paramétrée.

Maintenant, passer au paramétrage de l'interface LAN:

  • Refaire le choix 2 : Set interface IP address
    • Enter the number of the interface to configure : 1
    • Configure IPv4 address LAN interface via DHCP ? : N
    • Enter the new LAN IPv4 address : Adresse IP privée du vRack relevée précédement
    • Enter the new LAN IPv4 subnet bit count : 16
    • Enter the new LAN IPv4 upstream gateway address : Press Enter
    • Configure IPv6 address LAN interface via DHCP6 ? : N
    • Enter the new LAN IPv6 address : Press Enter
    • Do you want to enable the DHCP server on LAN ? : N
    • Do you want to change the web GUI protocol from HTTPS to HTTP ? : N
    • Do you want to generate a new self-signed web GUI certificate ? : N
    • Restore web GUI access defaults ? : N

L'interface LAN est paramétrée.

Interface web

1ère connexion

Par défaut, pour se connecter à l'interface web d'administration de la solution OPNsense, il faut s'y connecter à travers l'interface LAN.

Dans le cas présent, il n'y a pas d'autre machine présente sur ce contexte réseau. Il faut donc s'y connecter à travers l'interface WAN.

Pour se faire, dans la console VNC de l'instance :

  • Faire le choix 8 : Shell
    • Désactiver le pare-feu :
pfctl -d

Attention, à chaque rechargement de la configuration d'OPNsense, le pare-feu sera réactivé. Une règle autorisant l'administration à distance par le WAN sera définie plus bas.

Il est maintenant possible de se connecter à l'interface web d'administration d'OPNsense à travers l'interface WAN.

  • Se rendre sur l'adresse https://IP_PUBLIC
  • Accepter le certificat auto-signé
  • Renseigner les credentials
    • Username : root
    • Password : opnsense

Un assistant de configuration est proposé lors de la 1ère connexion, celui-ci peut être by-passé en cliquant sur le logo OPNsense en haut à gauche.

Filtrage

Pour accéder à la page d'administration d'OPNsense, le pare-feu a été désactivé pour effectuer la 1ère connexion.

Rappel : A chaque rechargement de configuration, le pare-feu sera réactivé automatiquement.

Idéalement, il faut définir une seule adresse IP (ou plusieurs) qui sera autorisée à y accéder.

Tout d'abord, créer un alias afin de mieux identifier l'hôte qui sera autorisé à se connecter à l'interface web d'administration.

  • Se rendre dans Firewall (1), Aliases (2)
  • Ajouter un nouvel alias (3)

image-20221117094409367

  • Voici un exemple d'alias pour une adresse IP donnée. Bien penser à valider le Content en appuyant sur Enter, puis Save en bas à droite :

image-20221117095214277

Ne pas valider tout de suite les modifications avec le bouton Apply figurant en bas sur la page des Aliases. Sinon, le pare-feu se réactivera et la connexion sera perdue. Si cela se produit, revenir dans la console VNC de l'instance et refaire la commande pfcl -d.

Ensuite, ajouter une règle sur l'interface WAN du pare-feu.

  • Se rendre dans Firewall (1), Rules (2), WAN (3)
  • Ajouter une nouvelle règle (4)

image-20221117095952062

  • La partie Source de la règle :

image-20221117100419056

  • La partie Destination de la règle :

image-20221117100630410

  • Enregistrer avec le bouton Save
  • Valider toutes les modifications de configuration en cliquant sur Apply changes en haut à droite de la page

L'alias créé ainsi que la règle ajoutée dans l'interface WAN du pare-feu vont être appliqué. Le pare-feu sera également réactivé automatiquement.

Pour être sûr et certain que le pare-feu soit bien actif :

  • Se rendre dans la console VNC de l'instance et exécuter la commande :
pfctl -e

Le shell doit renvoyer :

pfctl: pf already enabled

Mot de passe root

Maintenant que l'accès externe à l'interface web d'administration est filtré, il est important de changer le mot de passe root.

  • Se rendre dans Lobby (1), Password (2)

image-20221117102407840

La modification de ce mot passe entraine également la modification du mot de passe dans la console VNC et/ou par SSH si cet accès est activé.

Hostname, Timezone...

Il peut être intéressant de modifier le nom d'hôte, le domaine, ou bien la timezone d'OPNsense.

  • Se rendre dans System (1), Settings (2), General (3)

image-20221117110546934

Sécurité

Sujet très vaste !

Je vais m'attarder sur 2 points principaux :

  • La mise à jour d'OPNsense
  • La mise en place d'un certificat SSL avec Let's Encrypt

Mise à jour

Il est important de mettre régulièrement à jour la solution.

  • Se rendre dans System (1), Firmware (2), Status (3)
  • Puis Check for updates (4)

image-20221117111519117

Si des mises à jour sont disponibles, la liste des packages concernés sera affichée dans l'onglet Updates.

En bas de cette page, un bouton Update sera disponible. Il sera également indiqué si un redémarrage d'OPNsense est requis.

Certificat SSL Let's Encrypt

Installation du client

La 1ère étape à réaliser est l'installation du client acme.

  • Se rendre dans System (1), Firmware (2), Plugins (3)
  • Installer le client acme (4)

image-20221117113041918

Activation du plugin

Une fois ce plugin installé, forcer un rafraichissement de l'interface web (CTRL+SHiFT+R) pour avoir le service ACME Client de disponible.

  • Se rendre dans Services (1), ACME Client (2), Settings (3)
  • Activer le plugin (4)

image-20221117114033923

  • Valider avec le bouton Apply

Une tâche cron est générée afin de renouveler automatiquement le certificat. Celle-ci est définie dans l'onglet Update Schedule.

Création du compte Let's Encrypt

Ensuite, un compte doit être créé et enregistré pour la génération du certificat chez Let's Encrypt.

  • Se rendre dans Accounts (1)
  • Créer un compte (2)

image-20221117114800382

  • Compléter les champs requis

image-20221117115032672

  • Valider avec le bouton Save
  • Enregistrer le compte

image-20221117115229266

Le status du compte passe en OK (registred).

Enregistrement DNS

Avant de passer à la suite, il est impératif de créer un enregistrement de type A dans la zone DNS publique adéquate pointant vers l'adresse IP publique d'OPNsense.

Par exemple :

opnsense-demo.example.com. IN A xxx.xxx.xxx.237

xxx.xxx.xxx.237 = IP publique de l'interface WAN d'OPNsense

Bien vérifier que cet enregistrement a été répercuté sur les serveurs DNS de Google (Let's Encrypt s'appuie dessus).

Dans votre terminal GNU/Linux :

dig opnsense-demo.example.com @8.8.8.8

Il est également est possible de vérifier l'enregistrement à cette adresse : https://dns.google

Paramétrage du challenge

Une fois cet enregistrement fait et vérifié, paramétrer un type de challenge :

  • Se rendre dans Challenge Types (1)
  • Créer un nouveau type de challenge (2)

image-20221117120932240

  • Choisir un challenge de type HTTP-01

image-20221117131431018

Dans le champ IP Addresses bien valider l'adresse IP publique de l'interface WAN en appuyant sur Enter

  • Valider avec le bouton Save

Automatisation

Avant de passer à la génération du certificat, il est recommandé d'ajouter une tâche d'automatisation. Celle-ci sera effectuée à chaque fois que le certificat sera renouvelé.

  • Se rendre dans Automations (1)
  • Créer une tâche d'automatisation (2)

image-20221117132141537

  • Sélectionner la tâche de redémarrage de la Web UI d'OPNsense

image-20221117132445945

Cette partie d'automatisation est optionelle mais recommandée.

Génération du certificat

Maintenant, un certificat peut être généré :

  • Se rendre dans Certificates (1)
  • Créer un nouveau certificat (2)

image-20221117131804782

  • Dans le champ Common Name, bien renseigner l'URL d'accès qui permettra d'accéder à l'interface web d'administration d'OPNsense en correspondance avec l'enregistrement de type A faites dans la zone DNS au préalable.

image-20221117133011468

Bien spécifier la tâche d'automatisation dans le champ Automations.

  • Valider avec le bouton Save
  • Générer le certificat avec le bouton Issue/Renew All Certificates

Vérification

  • Vérifier l'ajout de l'autorité de certification :
    • Se rendre dans System (1), Trust (2), Authorities (3)
    • L'authorité de certification Let's Encrypt doit être présente

image-20221117134012138

  • Vérifier la présence du certificat préalablement généré :
    • Se rendre dans Certificates (1)
    • Le certificat préalablement généré doit être présent

image-20221117134232914

Application du certificat

A ce stade, ce nouveau certificat Let's Encrypt peut être appliqué pour la connexion à l'interface d'administration d'OPNsense (en lieu et place du certificat auto-signé).

  • Se rendre dans System (1), Settings (2), Administration (3)

image-20221117134906644

Je recommande de modifier le port d'administration HTTPS et d'adapter la règle de filtrage (vu dans le chapitre Interface web / Filtrage de cet article).

  • Valider avec le bouton Save

Et voilà !

Il est désormais possible d'accéder de façon sécurisée à l'admimistration d'un OPNsense hébergé chez OVHcloud avec un certificat SSL reconnu.

En suivant l'exemple donné ici, l'accès se fera sur l'URL : https://opnsense-demo.example.com (Adresse fictive pour l'article !).