OPNSense
Système de routeur/firewall adaptable avec des modules supplémentaires.
Il s'agit d'un Fork de PFSense
OPNsense - Installation
|
Difficulté : Intermédiaire Notions : FreeBSD, firewall, opnsense, réseau. |
I. Introduction
| Prérequis Matériels | |
| core | GUI |
|
|
Attention : Certaines options comme le Qemu agent peuvent poser des problèmes avec les protocoles utilisés par OPNsense. Notament pour la HA et l'accès à l'interface WEB.
Cette documentation à pour but de réaliser l'installation de base d'une appliance de sécurité OPNsense à partir d'un média Iso ou d'une clé bootable.
OPNsense est un fork de PFsense qui a pris le parti de rester entièrement libre et opensource. Il a également fait le choix d'apporter une certaine modernité à son interface graphique.
Pour cette seconde méthode, voir Rufus - Création d'un média d'installation
Télécharger OPNsense : Download - OPNsense
II. Installation
Démarrer la machine et booter sur l'iso ou la clé USB.
Attendre la fin du chargement du système live.
A la fin du démarrage, une invite de connexion s'affiche. Utiliser les identifiants : 'installer' avec le mot de passe 'opnsense'.
Attention : Par défaut le layout est en qwerty.
L'installation se lance.
Choisir le Layout FR, se positionner sur 'Continue with fr.kdb keymap' et appuyer sur 'Entrée'.
Pour le format de fichier, Choisir 'Install (ZFS)' puis faire 'Entrée'.
Attendre la fin de la détection.
Choisir le type de RAID à appliquer (par défaut 'stripe' si un seul disque).
Information : Plus d'information sur le raid ici Hardware - Le RAID
Sélectionner le disque avec 'Espace' puis faire 'Entrée'.
Sélectionner 'YES' puis valider.
Attendre la fin de l'installation.
A la fin de l'installation, il est demandé si l'utilisateur souhaite changer le mot de passe ROOT ou terminer l'installation.
Choisir 'Complete Install' puis confirmer avec 'Entrée'.
Choisir 'Reboot now' et retirer le média d'installation.
II. Configuration initiale (CLI)
Se connecter à la console.
Login et mot de passe par défaut : 'root / opnsense'
Lors de la connexion, l'assistant de configuration se lance.
Il faut commencer par Assigner les interfaces (WAN et LAN (admin)) pour pouvoir ensuite se connecter à la webUI.
Faire '1'.
Optionnel - Configurer un LAGG
Info : Plus d'information sur le lagg Réseau - L'agrégation de liens (LAGG)
Pour choisir de configurer les LAGG, faire 'Y' puis valider.
Entrer le nom des interfaces qui vont participer au LAGG
Choisir le protocole à utiliser.
- none ( pas de LAGG )
- lacp ( mode LACP, nécessite un switch configuré en conséquence )
- failover ( principal actif, secondaire passif. Actif si le principal tombe )
- fec ( Sorte de LACP statique )
- loadbalance ( répartition de charge )
- roundrobin ( première interface disponible )
Laisser le MTU en automatique
Le LAGG est configuré et l'assistant passe à l'étape suivante.
Si pas de LAGG, faire 'N' puis valider.
Optionnel - Configurer les VLAN
Info : Plus d'informations sur les vlan <ToDo>
Pour configurer les VLAN, faire 'Y' puis valider.
Choisir l'interface physique sur laquelle lier l'interface de VLAN.
Entrer le TAG du vlan.
Poursuivre pour les autres VLAN, ou laisser vide si pas d'autres VLAN.
Si pas de VLAN, faire 'N' puis valider.
L'assistant continue l'installation avec le choix des interfaces, à commencer par la WAN.
Puis l'interface LAN.
Les interfaces optionnelles peuvent être paramétrées immédiatement ou plus tard via l'interface web.
Privilégier cette seconde option. Laisser vide et valider.
Le récapitulatif s'affiche, valider en entrant 'Y' et 'entrée'.
Attendre la fin de la reconfiguration.
Si des DHCP sont activés, les adresses sont distribuées. Sinon, il faut les attribuer à la main.
Utiliser l'option '2'.
Choisir l'interface 'LAN'.
Ne pas paramétrer en DHCP. Choirsir 'N'.
Entrer la nouvelle IP, valider, puis entrer la longueur du masque.
Si interface LAN, Laisser la Gateway vide. Laisser vide et faire 'Entrée'.
Si nécessaire, paramétrer IPv6. Sinon choisir 'N' aux deux prochaine questions et laisser l'adresse vide puis faire 'Entrée'.
Ne pas activer le serveur DHCP IPv6.
Laisser la GUI en HTTPS.
Ne pas renouveler le certificat auto-signé (celui-ci sera changé ultérieurement).
Ne pas restaurer les paramètre GUI par défaut.
Laisser la configuration recharger.
Il est désormais possible de se connecter à l'interface web avec l'adresse mentionnée afin de procéder à la configuration initiale.
info : Le reste de la configuration de base se fera via l'interface web.
Info : Pour la suite de la configuration, voir OPNsense - Configuration de base
OPNsense - Configuration OpenVPN
DISCLAIMER : Cette page est en cours de rédaction et son contenu peut être faux ou inexact. Merci de lire cette page avec toutes les précautions nécessaires.
|
Difficulté : Intermédiaire Notions : pare-feu, OPNsense, VPN, OpenVPN |
I. Introduction
Dans le contexte du télétravail ou du travail des utilisateurs nomades, il est nécessaire de pouvoir assurer la confidentialité des échanges entre les utilisateurs et l'entreprise.
Pour cela, il faut mettre en place un VPN point-à-point.
C'est l'une des fonctionnalité d'OpenVPN. Celui-ci est présent par défaut dans les OPNsense.
OpenVPN peut être configuré de deux façons :
- Point à point (pour les clients)
- Site à site (pour relier les différents sites de l'entreprise entre eux)
Cette procédure traitera de la mise en oeuvre d'OpenVPN pour le poit-à-point.
II. Prérequis
Dans le cadre d'une démonstration sur le réseau local.
Si il s'agit d'une installation de démonstration de principe, l'interface WAN est dans un réseau Local et le client sur ce même réseau.
Il faut donc désactiver les deux options suivantes dans les paramètres de l'interface WAN :
2.1 Initialisation de la CA
Pour plus de sécurité, il est préférable que le serveur et les clients puissent s'authentifier entre eux afin de garantir l'identité du pair.
Il faut pour cela initialiser une autorité de certification.
Aller dans 'System --> Trust --> Authorities'
Cliquer sur le '+' pour créer une nouvelle CA.
Laisser la méthode par défaut 'Create an internal Certificate Authority'.
Fournir une description parlante.
Passer le 'Key type' à 'RSA-4096'
Passer le 'Digest Algorithm' à 'SHA512'.
Laisser l'issuer à 'Self Signed' si pas d'autorité au dessus pour signer la CA.
Choisir la durée de vie du certificat. Par défaut, elle est de 825 jours (soit 2 ans et 3 mois)
Remplir les détails du certificat.
Laisser le reste vide, puis faire 'Save'.
La CA est désormais créée.
Info : La CRL (Certificate Revocation List) a été créée en même temps que la CA. Pas besoin de la créer manuellement.
2.2 Générer le certificat du serveur
Afin que les clients puissent authentifier le serveur, il faut lui générer son certificat.
Pour cela, aller dans 'Trust --> Certificates'.
Puis faire '+' pour créer un certificat.
Laisser la méthode 'Create an internal certificate'.
Entrer la description.
Choisir le type 'Server Certificate'.
Laisser par défaut pour la 'Private Key Location' : 'Save on this firewall'.
Laisser ou modifier le 'Key type' et le 'Digest Algorithm' selon la convenance.
Changer 'Issuer' pour le faire correspondre à la CA créée plus tôt.
Ajuster la 'Lifetime' à la convenance ( par défaut 397 jours soit 1an et 3 mois ).
Les données du certificat sont pré-remplies avec celles de la CA. Il suffit d'ajouter le FQDN du serveur VPN.
Attention : Il s'agit ici de l'adresse externe du VPN tel que les clients qui se situeront en dehors du parc la résoudront. Ce qui signifie qu'il faudra que cette adresse soit effectivement résolvable.
Il est également possible de renseigner des noms alternatifs ou des IP si besoin.
Laisser le reste vide et faire 'Save'.
III. Configurer l'instance OpenVPN
3.1 Création de l'instance
Sur les versions récentes d'OPNsense, OpenVPN n'est plus installé en tant que 'serveur'. Il est désormais initialisé en tant que 'Socket' ou instance.
Ce qui rends possible l'hébergement de plusieurs instances pour un même serveur physique. Permettant ainsi de pouvoir cloisonner les instances selon les niveaux de privilèges / réseaux accessibles.
Pour créer l'instance, aller dans 'VPN --> OpenVPN --> Instances'
Puis utiliser '+' pour créer une instance.
Choisir le rôle 'Server'.
Entrer une description parlante.
Laisser la case 'Enabled' cochée.
Choisir le protocole à utiliser (ici 'UDP').
- 'UDP' --> Plus rapide, mais pas de contrôle d'intégrité donc perte de paquet si connexion pas stable.
- 'TCP' --> Plus lent mais plus stable.
Choisir le port. Par convention, le port historique est : 1194
Définir la 'Bind address'. C'est l'adresse sur laquelle l'instance sera en écoute. En l'occurence, 'l'IP publique'.
Choisir le type de montage (ici 'TUN').
- 'TUN' --> L3. Le tunnel est monté en tant que réseau d'interconnexion avec son adressage IP et son routage.
- 'TAP' --> L2 over L3. Le tunnel est monté en tant qu'adaptateur réseau et un NAT est mis en place.
Entrer le réseau interne du VPN (ici 10.10.10.0/24).
Le serveur prendra automatiquement la première IP disponible sur la plage et affectera les suivantes séquentiellement aux clients.
Ne pas toucher aux autres options de cette catégorie.
Pour les 'Trusts', choisir le certificat de serveur généré plus tôt.
Cocher la case 'Verify Remote Certificate'.
Laisser la CRL à 'none' et la vérification du certificat client à 'Require'.
Passer la 'Certificate Depth' à 'One (Client+Server)'.
Par défaut, pas d'authentification. Celle-ci sera vue ci-après.
Laisser les autres options par défaut ou vides et passer directement à la partie 'Routing'.
Pour le routage, ajouter les réseaux locaux qui seront accessibles aux client à travers le VPN dans 'Local Networks'.
Laisser 'Remote network' vide car il s'agit d'un VPN point à point et non site-to-site.
Afin que le client puisse résoudre les noms d'hôtes des services internes à l'entreprise, il faudra pousser les DNS internes et les domaines de recherche sur les clients.
Utiliser 'Push Options' et cocher dans la liste 'register-dns'.
Cocher la case 'Register DNS'.
Ajouter les domaines et l'adresse des serveurs DNS dans les champs correspondants.
Sauvegarder et appliquer.
Le serveur VPN est désormais créé et à l'écoute.
2.3 Ajouter les règles de firewall
Par défaut, OPNsense bloque tout le trafic entrant. Il faut donc ajouter la règle suivante
IV. Création des clients
3.1 Générer le certificat du client
Pour ajouter un client, il faut tout d'abord créer son compte utilisateur. Aller dans 'System --> Users' et créer le nouvel utilisateur pour le VPN avec '+'.
Entrer simplement un 'username' et cocher la case 'Scrambled password'.
Cela permettra de créer un utilisateur sans droits d'accès à l'OPNsense.
Puis, lui générer un certificat. Pour cela :
Ou
Aller dans 'System --> Trust --> Certificates' puis faire '+'
Choisir 'Create an internal certificate' et entrer en description le nom du client.
Choisir en 'Issuer' la CA openVPN.
En CNAME, entrer le nom exact de l'utilisateur.
Si pas d'authentification en plus, pas de champs supplémentaires requis.
Sauvegarder.
3.2 Exporter la configuration
Pour exporter la configuration afin de la passer au client, il faut aller dans 'VPN --> OpenVPN --> Client Export'
Choisir l'export en mode 'File Only'.
Entrer en 'Hostname' le FQDN du serveur (externe).
Cocher la case 'Validate server subject' afin de forcer le client a vérifier l'identité du serveur.
Cliquer sur le symbole à côté du nom du client, pour télécharger son fichier de configuration.
3.3 Côté client
Prérequis : Afin que les clients puissent authentifier le certificat du serveur, ils devront avoir le certificat de la CA dans leurs magasin 'Trusted root certification authorities'.
Le client devra télécharger et installer le client VPN : OpenVPN Connect for Windows
Puis importer son profil depuis le fichier avec : OpenVPN Connect - Importer un profil
Le client peut désormais se connecter.
Conseil : Afin de diagnostiquer d’éventuels problèmes de connexion, il est possibles de consulter les logs dans %APPDATA%\OpenVPN Client\Logs.
V. Authentification avec Active directory
5.1 Mise en place du lien LDAP(s)
Prérequis : Un compte LDAP doit avoir préalablement été créé pour le bind.
Aller dans 'System --> Access --> Servers'.
Utiliser '+' Pour ajouter un nouveau serveur d'authentification.
Entrer une Description parlante.
Choisir le type de connexion ( 'LDAP' ou 'LDAPS' ).
Entrer le port.
Laisser le protocole en 'TCP'.
Laisser la version en '3'.
Entrer le 'User DN' et son mot de passe.
Choisir en 'Search scope' : 'Entire Subtree'
Puis entrer le 'Base DN'. Il s'agit de la racine à partir de laquelle l'OPNsense ira chercher les utilisateurs et groupes.
Cliquer ensuite sur 'Select' pour sélectionner ensuite les OU à ajouter (celles ou se trouvent les utilisateurs).
Attention : Si un message d'erreur s'affiche à la place de la fenêtre ci-dessus, consulter : KB-OPNsense - Bind LDAP Active directory 2025
Ajouter dans le champ 'Extended Query' : 'objectClass=Person' afin de ne remonter que les utilisateurs et ignorer les autres types d'objets.
Choisir le Template 'Microsoft AD' et le 'User naming attribute' qui sera utilisé comme login.
Par défaut, il s'agit du sAMAccountName, mais cela peut également être 'mail' ou autre.
Cocher la case 'Read properties' afin de pouvoir utiliser les autres champs et également pouvoir lire le 'memberOf' qui permet de faire le lien entre l'utilisateur et les groupes duquel il est membre.
Puis cocher la case 'Synchronize groups'.
Utiliser l'attribut par défaut 'memberOf''.
Afin de préserver l'appartenance aux groupes d'origine sur AD, laisser 'Default groups', 'constraint groups' et 'Limit groups' vide.
Cocher 'Automatic user creation' afin de permettre la création des utilisateurs automatiquement lors de la connexion.
Une fois cette configuration terminée, Sauvegarder et quitter. Le serveur a été ajouté.
Il faudra ensuite créer le miroir des groupes présents dans Active directory, afin que l'affectation automatique au groupes fonctionne.
Créer le(s) groupe(s) nécessaires en allant dans 'System --> Access --> Groups'.
Attention : Il faut que les groupes aient le même nom que dans Active Directory, sinon la synchronisation des groupes ne se fera pas.
Les utilisateurs peuvent maintenant être ajoutés.
Pour les ajouter, le plus rapide est d'utiliser l'outil 'System --> Access --> Tester'
Si tout est bien configuré, le client se connecte :
et son compte est automatiquement créé.
Info : Il faudra ensuite créer son certificat selon la méthode évoquée plus haut.
Conseil : L'OPN sense dispose d'une api, aussi ces opérations de création / modification pourront être automatisées lors de la création de l'utilisateur.
5.2 Affectation des instances aux groupes
OpenVPN permet la création de plusieurs instances. Chacune liée sur un port spécifique, et chacune représentant un réseau à part entière.
Ces instances peuvent forcer l'appartenance à un groupe. Appliquant de facto les règles de pare-feu associées à ce groupe.
Cela permet de fournir des accès séparés par exemple pour les utilisateurs et les administrateurs.
Cette appartenance se définit dans les propriétés de l'instance, sur l'attribut 'Enforce Local Group'.
5.3 Création des règles de pare-feu par groupe
5.3.1 Création de l'alias
Pour créer des règles de pare-feu pour le VPN basés sur l'appartenance au groupe, il faut tout d'abord créer un alias à ce groupe.
Pour cela, aller dans 'Firewall --> Aliases' et créer un alias avec '+'.
Cocher la case 'Enabled'. Choisir un nom parlant.
Choisir le type 'OpenVPN Group'.
Définir des catégories si nécessaire.
En 'Content', sélectionner le(s) groupe(s) à ajouter dans l'alias.
Le reste est à la convenance.
Après validation de l'ajout, ne pas oublier d'appliquer les changements.
5.3.2 Création des règles
Les règles peuvent être créées à partir de 'Firewall --> Rules'
Ouvrir la liste déroulante et sélectionner :
Puis utiliser '+' pour créer la règle.
La création de la règle suit le processus classique. Pour l'appliquer au groupe OpenVN, il faudra choisir en source :
Info : Chaque règle ainsi
OPNsense - Configuration de base
|
Difficulté : Intermédiaire Notions : FreeBSD, firewall, opnsense, réseau. |
I. Introduction
Cette procédure vise à couvrir l'ensemble du paramétrage de base afin que le pare feu OPNsense soit fonctionnel.
Elle décrira l'ensemble des étapes nécessaires ainsi que les points à vérifier pour garantir un bon fonctionnement de l'installation.
II. Configuration système
2.1 Connexion à l'interface web.
Pour se connecter à l'interface web, utiliser l'URL fournie à l'étape précédente.
Lors de la première connexion, une alerte de certificat apparaît. Poursuivre la connexion.
Les informations de connexion par défaut sont :
- login : root
- password : opnsense
L'assistant d'installation se lance.
Ignorer cette étape en cliquant sur 'Abort'.
2.2 Configuration système
La première étape est de faire la configuration du système. Pour cela aller dans 'System --> Settings --> General'.
Les premiers points sont :
- Le nom du système
- Le domaine
- La timezone
- La langue (facultatif)
Il est également possible d'ajouter une image qui permettra ensuite de faire le Branding du système.
Il va ensuite falloir configurer les DNS externes à utiliser. Si une passerelle particulière est à utiliser, il faut également la préciser.
Sinon, si rien n'est précisé, il utilisera celle par défaut.
Valider les changements en cliquant sur 'Save'.
2.3 Sécurisation WebUI
L'étape suivante est de sécuriser l'accès à la webUI. Aller dans 'System --> Settings --> Administration'.
- Protocole : HTTPS
- SSL Certificate : Web GUI TLS certificate ( le changer par un certificat signé dès que la CA d'entreprise aura été montée )
- HTTP Redirect : Cocher cette case pour désactiver la redirection HTTP vers HTTPS ( cela va couper l'écoute sur le port 80 )
- Session Timeout : Diminuer à 2 minutes.
- Listen Interface : Limiter l'accès à l'interface web uniquement depuis l'interface ADMIN.
Bonne pratique : Changer le port d'écoute du HTTPS pour un port non standard (ex : 9443 ou 4432)
Plus bas dans la page, paramétrer également le SSH.
Attention : Il est recommandé de ne pas cocher les cases 'Root login' et permit 'password login'. Mais cela signifie qu'il faudra créer un compte de connexion SSH et lui créer une clé de connexion.
Info : l'authentification via un serveur tiers sera mis en place dans un second temps.
Sauvegarder le contenu et quitter en cliquant sur 'Save'.
Suite aux modifications, le service web redémarre.
III. Sauvegardes et mises à jour
3.1 Sauvegardes automatiques
Aller dans 'System --> Configuration --> Backups'.
Définir un nombre de sauvegardes à garder en mémoire.
A chaque fois qu'une modification sera faite sur le système, celui-ci créera un point de sauvegarde. Il s'agit du nombre de points à garder (Conseillé : entre 3 et 5).
3.2 mises à jour
Pour mettre à jour le système, aller dans 'System --> Firmware --> status'.
Attendre l'actualisation, puis cliquer sur 'Check for updates'.
IV. Configuration des interfaces réseaux
4.1 (optionnel) Interface WAN statique
Configurer interfaces WAN + gateways et outgoing NAT
4.1.1 Configuration IP
Aller dans 'Interfaces --> WAN'.
Changer 'IPv4 Configuration Type' en 'Static IPv4'
Définir l'adresse :
Info : La gateway sera ajoutée dans un second temps après sa création.
Valider et appliquer les changements.
4.1.2 Configuration Gateway
Aller dans 'System --> Gateways --> Configuration'
Cliquer sur 'Add'.
Entrer un nom de gateway reconnaissable.
Sélectionner l'interface WAN.
Entrer l'IP de la passerelle.
Cocher la case "Upstream gateway" car il s'agira de la passerelle par défaut.
Désactiver la passerelle IPv6 si non nécessaire, puis appliquer les changements avec 'Apply'.
Retourner dans la configuration de l'interface 'WAN' pour assigner la passerelle.
Puis sauvegarder et appliquer les changements.
4.1.3 Configuration OUTGOING NAT
Info : Par défaut, OPNsense créée les règles pour le NAT sortant automatiquement. Il peut cependant être intéressant des les désactiver afin d'utiliser des jeux de règles personnalisées.
Aller dans 'Firewall --> NAT --> Source NAT'.
Changer le mode de 'Automatic Source NAT rule generation' à 'Manual Source NAT rule generation'.
Appliquer les changements.
Les règles existantes sont supprimées.
Créer les nouvelles règles avec
Choisir un nom de règle parlant.
Choisir l'interface 'WAN'. c'est sur cette adresse que le trafic sortira.
Choisir les réseaux sources. Ici 'LAN network'.
Conseil : Créer un alias 'GRP_NET_ALLInternals' et y ajouter l'ensemble des réseaux internes, puis l'ajouter en source dans la règle de NAT sortant. Cette manipulation permettra de rendre la règle "Scalable" sans avoir à y retoucher en cas d'ajout ou de retrait de réseau.
Sélectionner 'WAN adress' pour l'option 'Translate Source IP'
Puis Sauvegarder et appliquer les changements.
4.1 (optionnel) Renommer les interfaces réseaux
En cas de multiples interfaces, il peut également être intéressant de les renommer afin d'avoir une meilleur visibilité.
Pour cela, aller dans 'Interfaces' puis sélectionner l'interface à renommer.
Entrer le nouveau nom en description de l'interface et sauvegarder / Appliquer les changements.
L'interface substituera alors la description au nom "système" de l'interface.
4.3 (optionnel) Affecter des interfaces supplémentaires
Aller dans 'Interfaces --> Assignment'
Entrer la description de la nouvelle interface (cela deviendra son nom affiché), puis, dans la liste déroulante, sélectionner l'interface physique qui sera utilisée.
Valider et appliquer les changements.
La nouvelle interface apparaît donc dans la liste.
Et peut être paramétrée à son tour dans le menu 'Interfaces'.
Pour cela, aller dans le menu ' Interfaces --> <nom de l'interface>'
Cocher la case 'Enable interface'
Définir le type de configuration IPv4 et IPv6 de l'interface :
Définir l'IP.
Sauvegarder et appliquer les changements.