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é :
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 leWAN
pour l'instancevtnet1
= Adresse IP du vRack soit leLAN
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 :
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.
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)
- 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 :
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)
- La partie Source de la règle :
- La partie Destination de la règle :
- 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)
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)
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)
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)
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)
- 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)
- Compléter les champs requis
- Valider avec le bouton Save
- Enregistrer le compte
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)
- Choisir un challenge de type HTTP-01
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)
- Sélectionner la tâche de redémarrage de la Web UI d'OPNsense
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)
- 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.
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
- 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
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)
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 !).