Durcir l'accès à OPNsense : DNS override avec Unbound et certificat Let's Encrypt
Après la migration du cluster vers OPNsense, deux petits détails traînaient encore dans un coin : l'interface d'administration présentait toujours le certificat auto-signé par défaut (l'habitude dangereuse de cliquer sur un avertissement de sécurité navigateur), et les services internes n'étaient joignables que par IP, faute de résolution DNS interne propre. Les deux se réglent avec des outils déjà intégrés à OPNsense : Unbound pour le DNS, et le plugin ACME pour Let's Encrypt.
1. Pourquoi un DNS override plutôt que des IP en dur
Sans résolution interne, chaque service auto-hébergé se retient par son IP (https://192.168.x.x:8080), ce qui devient vite pénible et fragile au moindre changement d'adresse. Un host override dans Unbound (le résolveur DNS intégré à OPNsense) permet d'associer un nom de domaine interne à l'IP LAN du service, sans dépendre d'un serveur DNS externe ni exposer quoi que ce soit publiquement.
/etc/hosts sur chaque appareil.2. Configurer les host overrides
Dans OPNsense : Services → Unbound DNS → Overrides, onglet Host Overrides. Pour chaque service :
- Host : le nom court du service (ex.
grafana). - Domain : un domaine interne dédié, distinct du domaine public (ex.
lan.exemple.local), pour ne jamais confondre une ressource interne avec une ressource publique. - IP : l'adresse IP LAN réelle du service.
Une fois enregistré, grafana.lan.exemple.local résout en interne vers l'IP du service pour tout appareil qui utilise le pare-feu comme DNS — généralement le cas par défaut via le DHCP d'OPNsense.
.local ou .lan), Unbound peut refuser de répondre à cause de la protection anti DNS rebinding, qui bloque par défaut les réponses DNS pointant vers des IP privées pour des noms de domaine publics. Il faut alors explicitement mettre le domaine concerné en liste blanche dans Unbound DNS → General → Domain Overrides / Private Domains, ou plus simplement partir sur un domaine interne dédié qui n'existe pas publiquement.3. Poser un certificat Let's Encrypt sur l'interface d'administration
Par défaut, l'interface web d'OPNsense (comme celle de la plupart des pare-feu) utilise un certificat auto-signé, source d'un avertissement navigateur permanent. Le plugin os-acme-client automatise l'obtention et le renouvellement d'un certificat Let's Encrypt réel :
- Installer le plugin : System → Firmware → Plugins, rechercher
os-acme-clientet l'installer. - Créer un compte ACME : Services → ACME Client → Accounts, générer une clé et enregistrer un compte auprès de Let's Encrypt.
- Choisir la méthode de validation : le challenge DNS-01 (via l'API du registrar/DNS) est recommandé pour un service qui n'est pas exposé sur le WAN — il valide la propriété du domaine sans exiger que le port 80 soit accessible depuis Internet. Le challenge HTTP-01 reste une option si l'interface est effectivement joignable publiquement sur le port 80 le temps de la validation.
- Créer le certificat : Services → ACME Client → Certificates, associer le compte et la méthode de validation au nom de domaine concerné (ex.
opnsense.exemple.com), puis lancer l'émission. - Assigner le certificat à l'interface d'administration : System → Settings → Administration, section SSL Certificate, sélectionner le certificat fraîchement émis, puis sauvegarder (redémarre le service web de l'interface).
# Vérifier le certificat effectivement présenté par l'interface
$ openssl s_client -connect opnsense.exemple.com:443 -servername opnsense.exemple.com </dev/null 2>/dev/null \
| openssl x509 -noout -issuer -dates
# La ligne "issuer" doit mentionner Let's Encrypt (ou son autorité
# intermédiaire R-quelque-chose), plus une date d'expiration à ~90 jours.
4. Automatiser le renouvellement
Les certificats Let's Encrypt expirent au bout de 90 jours. Le plugin ACME peut renouveler automatiquement via une tâche planifiée (Services → ACME Client → Automations, ou une tâche cron dédiée) qui relance l'émission avant expiration et recharge le service web sans intervention manuelle.
Un certificat qui expire silencieusement un dimanche soir, c'est le genre d'incident totalement évitable — automatiser le renouvellement dès la mise en place évite d'avoir à y repenser.
Conclusion
Ces deux réglages sont rapides à mettre en place mais changent concrètement le quotidien : des noms de domaine internes clairs plutôt que des IP à retenir, et une interface d'administration qui s'ouvre sans avertissement de sécurité — le genre de détail qui, cumulé, distingue une infra bricolée d'une infra soignée. Si vous voulez être accompagné sur le durcissement de votre pare-feu, n'hésitez pas à me contacter.