Configurez l’accès Web et SSH dans pfSense avec une sécurité maximale
pfSense est l’un des systèmes d’exploitation orientés routeur et pare-feu les plus complets disponibles aujourd’hui. Grâce au grand nombre d’options de configuration avancées, pfSense convient à une utilisation à la fois à un niveau domestique avancé, ainsi que dans les petites et moyennes entreprises. Aujourd’hui, dans RedesZone, nous allons expliquer comment configurer l’accès à pfSense via le Web en utilisant le protocole sécurisé HTTPS, et aussi comment configurer le serveur SSH avec la meilleure sécurité possible, afin que l’authentification dans le système d’exploitation s’effectue de manière manière cryptée et sécurisée.
Les deux principaux accès que nous avons à l’administration du système d’exploitation pfSense sont via le web et via SSH. Dans le premier cas, pfSense est configuré par défaut pour utiliser le protocole HTTPS sur le port 443, mais il est conseillé d’apporter quelques modifications pour le protéger au mieux. Il en va de même avec le serveur SSH intégré au système d’exploitation, il est conseillé d’apporter quelques modifications à la configuration pour avoir la meilleure sécurité possible, car via SSH, nous pouvons configurer n’importe quel aspect interne du système d’exploitation, et nous devons protéger ces deux accès contre les intrusions extérieures .
Configuration de la gestion Web avec HTTPS
Pour configurer le protocole HTTPS, nous devons aller dans le menu » Système / Avancé «, et dans ce menu nous verrons le » Accès Admin «. Nous pouvons choisir entre le protocole HTTP et HTTPS, il est conseillé de toujours utiliser le protocole HTTPS pour assurer nos communications ainsi que leur intégrité. Lorsque nous activons le protocole HTTPS, nous devons choisir un certificat SSL / TLS, qui est déjà créé par défaut avec le système d’exploitation, cependant, nous pouvons en créer un nouveau sans problème et même le renouveler.
Dans ce menu on peut aussi choisir le port TCP à utiliser, si on ne met rien, le port par défaut du protocole HTTPS est toujours 443. On peut aussi choisir le nombre maximum d’utilisateurs simultanés gérant pfSense, par défaut c’est 2 mais nous pouvons le télécharger si nous avons plusieurs administrateurs. Le reste des options de configuration doit être avec les valeurs que nous mettons ci-dessous, toutes sont les paramètres par défaut et elles le sont parfaitement.
Dans la section » System / Certificate Manager «, nous pouvons voir le certificat SSL / TLS utilisé par le serveur Web HTTPS, nous pouvons le renouveler à tout moment, le supprimer, exporter la clé publique ainsi que la clé privée. En principe, nous ne devrions pas y toucher, mais si nous le faisons, nous pouvons le renouveler ou modifier le nom du certificat lui-même.
Si nous saisissons «Informations sur la page» avec n’importe quel navigateur, nous pouvons voir que la connexion est cryptée avec TLS 1.3, le dernier protocole disponible qui nous offre la meilleure sécurité et les meilleures performances en matière de connexions sécurisées.
En ce qui concerne les données du certificat, pfSense crée un certificat basé sur RSA 2048 bits, ce qui est typique dans les cas où nous avons un serveur Web avec HTTPS. Si nous voulons changer cette sécurité, nous devons créer une CA (Certification Authority) et plus tard un certificat de serveur qui pend de ladite CA, de cette façon, nous pouvons utiliser des RSA plus longs et même des courbes elliptiques (ECDSA), enfin , nous peut configurer l’algorithme de hachage à utiliser.
Dans le cas du renouvellement du certificat numérique correspondant au serveur web, il suffit de se rendre dans la rubrique « System / Certificate Manager », cliquer sur renouveler le certificat du configurateur web et cliquer sur le bouton « Renew or Reissue » pour le générer à nouveau.
Comme vous l’avez vu, la configuration du HTTPS est vraiment facile et simple, cela nous permettra de nous authentifier via le web en toute sécurité.
Configuration de l’administration via la console avec SSH
Le protocole SSH sécurisé va nous permettre d’entrer à distance dans l’administration du système d’exploitation pfSense via la console. Nous aurons différents types d’authentification :
- Clé publique SSH
- Mot de passe ou clé publique (l’un ou l’autre)
- Mot de passe et clé publique (les deux)
Nous aurons également la possibilité d’activer le transfert sur le serveur SSH, pour effectuer le SSH Tunneling, par exemple. Enfin, on peut modifier le port d’écoute du serveur SSH, dans le cas de ce protocole c’est 22 TCP, mais on peut le changer, en effet, pour des raisons de sécurité il est conseillé de changer le port par défaut du serveur SSH.
Une fois que nous aurons configuré l’authentification, nous devrons configurer les utilisateurs pouvant s’authentifier sur le serveur SSH, ainsi que les clés SSH dont ces utilisateurs disposent. Si nous cliquons sur le lien hypertexte où il est écrit «utilisateur», cela nous mènera directement à «Système / Gestionnaire d’utilisateurs», et ici nous pouvons ajouter un nouvel utilisateur avec des autorisations différentes. Dans notre cas, nous avons ajouté un nouvel utilisateur qui appartient au groupe «admins».
Si nous créons un nouvel utilisateur ou le modifions, nous pouvons configurer différents paramètres. Dans notre cas, nous l’avons ajouté au groupe admins, comme vous pouvez le voir dans l’image suivante :
Afin de se connecter à pfSense via SSH, nous devons lui donner l’autorisation correspondante dans la section « Privilèges effectifs », de toute la liste des autorisations qu’un utilisateur peut avoir, il doit avoir les éléments suivants :
- Utilisateur – Système : accès au compte shell
Une fois que vous avez cette autorisation, nous pouvons nous connecter au système d’exploitation avec votre nom d’utilisateur. En fonction de ce que nous avons choisi lors de l’authentification de l’utilisateur, nous devrons effectuer une action supplémentaire :
- Clé publique SSH : il faut la créer
- Mot de passe ou clé publique (l’un ou l’autre) : nous pouvons utiliser la clé configurée, ou la clé publique SSH si nous la créons.
- Mot de passe et clé publique (les deux) : nous utiliserons la clé configurée plus la clé publique SSH, il est nécessaire de la créer.
Comme la chose la plus sûre pour l’authentification est «Clé publique SSH» ou «Mot de passe et clé publique (les deux)», nous devons créer des clés SSH.
Créer des clés SSH avec Puttygen
Nous utilisons actuellement un système d’exploitation Windows 10, le moyen le plus simple de créer des clés SSH est d’utiliser le programme » Putty Key Generator » que vous pouvez télécharger gratuitement. Aucune installation n’est nécessaire, lors du téléchargement du programme, nous l’exécuterons et nous verrons le menu suivant :
Ici, nous pouvons configurer différents types de clés SSH, RSA et DSA sont les plus courantes et les plus connues, mais il est conseillé d’utiliser des clés telles que ECDSA et également Ed25519 qui utilisent des courbes elliptiques. Dans notre cas, nous avons utilisé Ed25519, nous le sélectionnons et cliquons sur « Générer ».
Une fois que nous avons cliqué sur générer, nous devons déplacer la souris pour créer de l’aléatoire et que les clés soient générées correctement. On voit maintenant en partie haute la clé publique qu’il va falloir coller dans l’utilisateur pfSense créé précédemment. On peut configurer un commentaire dans la clé, et aussi un mot de passe pour déchiffrer la clé privée lors de la connexion, cela augmente la sécurité. Si quelqu’un est capable de voler notre clé privée, il ne pourra pas l’utiliser à moins d’avoir le mot de passe de la clé privée générée.
Une fois la clé générée, nous cliquons sur «Enregistrer la clé publique» et également sur «Enregistrer la clé privée» pour avoir la paire de clés toujours à portée de main. Nous devons nous rappeler que la clé publique est celle que nous devons copier à l’utilisateur, comme vous pouvez le voir :
Une fois le serveur SSH entièrement configuré dans pfSense, nous allons vous montrer comment vous connecter avec le programme populaire Putty.
Connectez-vous à pfSense avec Putty et la clé SSH
Nous ouvrons le programme Putty et allons dans la section «Connexion / SSH / Auth» et allons dans la section «Fichier de clé privée pour l’authentification», et cliquez sur «Parcourir» pour charger la clé privée que nous avons précédemment enregistrée.
Maintenant on va dans la section «Session», on met l’adresse IP et le port du serveur SSH dans pfSense, une fois renseigné, on clique sur «Ouvrir».
Maintenant, il nous dira que la connexion n’est pas mise en cache, c’est donc la première fois que nous nous connectons. Il faut cliquer sur «Oui» pour se connecter.
Il nous demandera le nom d’utilisateur du login, nous mettons le nom d’utilisateur associé à cette clé SSH créée :
Et dès que nous entrerons le nom d’utilisateur, cela indiquera que l’authentification est correcte et nous pourrons commencer à exécuter des commandes via SSH dans le système d’exploitation pfSense. Dans cet exemple nous n’avons utilisé que la clé publique, nous n’avons pas utilisé la combinaison mot de passe et clé publique SSH, mais vous pouvez également l’utiliser sans problème, la seule chose qui nous demandera le mot de passe lors de la connexion.
Maintenant que nous avons correctement configuré le serveur SSH, nous allons voir quelques configurations supplémentaires.
Options de protection de connexion et de gestion de la console
Dans la section » Système / Avancé «, nous pouvons configurer la protection de la connexion, en principe, la configuration fournie par défaut est très bonne pour bloquer les attaquants qui tentent en permanence de se connecter au serveur SSH. Si nous dépassons la valeur de 10 dans un temps de 1800 secondes, les tentatives d’accès seront bloquées pendant 120 secondes.
En bas, là où nous avons la « Liste de passe », nous pouvons mettre des adresses IP publiques que nous autorisons à passer ces protections, cela est nécessaire pour des services comme UptimeRobot qui essaie de temps en temps de vérifier que le SSH ou le serveur Web est opérationnel.
D’autres configurations que nous devrions faire sont la section «Menu de la console», il est recommandé de la protéger avec un mot de passe d’accès. Non seulement nous aurons besoin d’avoir un accès physique à l’équipe pfSense, mais elle demandera également une authentification par mot de passe pour root.
Avant de terminer, nous aimerions discuter de mesures de protection supplémentaires.
Règles sur le pare-feu et utilisation IDS/IPS
pfSense est un système d’exploitation très puissant et avancé orienté pare-feu, grâce aux différentes règles que nous pouvons configurer dans les différentes interfaces, nous aurons la possibilité d’autoriser ou de refuser l’accès au serveur Web et au serveur SSH. Une bonne pratique de sécurité consiste à ne pas autoriser l’accès via le Web ou SSH sur Internet, si nous devons gérer pfSense à distance, une bonne pratique consiste à se connecter via VPN à l’un des multiples serveurs VPN autorisés par pfSense (OpenVPN, WireGuard, IPsec . ..), puis entrez via le Web ou SSH, mais n’exposez pas les deux services à Internet, même si nous les avons correctement protégés.
Dans le cas où vous n’auriez pas d’autre choix que d’exposer les deux services (pour une raison quelconque), nous vous recommandons d’installer et de configurer un système de détection et de prévention des intrusions, tel que Snort ou Suricata. De cette façon, vous aurez plus de contrôle sur les connexions qui sont établies, et bloquerez automatiquement d’éventuelles attaques par force brute, déni de service, etc.
La même chose se produit si nous voulons autoriser ou refuser l’accès dans les différents VLAN que nous pouvons créer, le plus normal est qu’un réseau défini comme «Invités» n’a jamais accès au panneau d’administration de pfSense, que ce soit via le Web ou SSH. Cela doit être fait via la section «Pare-feu / Règles», en définissant des règles pour les adresses ou les réseaux d’origine et de destination dans pfSense lui-même, comme cela se fait habituellement.
Nous espérons qu’avec ces recommandations, vous serez en mesure de protéger correctement l’accès Web et SSH à pfSense.