Site perso d'un administrateur d'infrastructures sécurisées

Catégorie : Maintenir et sécuriser les accès à Internet et les interconnexions des réseaux

Qu’est-ce que DNSSEC ?

DNSSEC, qui signifie « Domain Name System Security Extensions« , est une suite d’extensions de sécurité pour le DNS (Domain Name System).

Le DNS est le système qui traduit les noms de domaine faciles à retenir, comme www.example.com, en adresses IP numériques nécessaires pour localiser et identifier les services et les appareils sur Internet.

DNSSEC ajoute une couche de sécurité supplémentaire au DNS en introduisant la cryptographie pour assurer l’authenticité et l’intégrité des données DNS. Voici quelques points clés sur le fonctionnement et l’importance de DNSSEC :

Authentification de la source: DNSSEC permet de vérifier que les informations DNS proviennent effectivement de la zone DNS autorisée et non d’un attaquant ou d’une source non fiable.

Intégrité des données: Il garantit que les données n’ont pas été modifiées en transit. Cela empêche les attaques de type « man-in-the-middle », où un attaquant pourrait intercepter et modifier les requêtes DNS pour rediriger les utilisateurs vers des sites malveillants.

Clés cryptographiques: DNSSEC utilise des paires de clés publiques et privées pour signer numériquement les enregistrements DNS. Les clés publiques sont distribuées via le DNS pour permettre la vérification des signatures.

Chaîne de confiance: Il existe une « chaîne de confiance » allant de la racine DNS aux domaines de premier niveau (comme .com, .net) et aux domaines de second niveau (comme example.com). Cette chaîne assure que les signatures sont valides à chaque niveau.

Pas de confidentialité: Il est important de noter que DNSSEC ne crypte pas les données; il assure seulement leur intégrité et leur authenticité. La confidentialité des requêtes DNS n’est donc pas fournie par DNSSEC.

DNSSEC est essentiel pour renforcer la confiance dans Internet en s’assurant que les utilisateurs atteignent le site Web légitime qu’ils tentent de visiter, sans interception ni redirection malveillante.

Cependant, son déploiement est complexe et nécessite une gestion minutieuse des clés et des signatures, ce qui a ralenti son adoption généralisée.

Comment déployer et utiliser DNSSEC ?

Déployer DNSSEC implique plusieurs étapes techniques, qui nécessitent une bonne compréhension du DNS et de la gestion des clés cryptographiques. Voici un guide général sur comment utiliser et déployer DNSSEC :

  1. Planification :
    • Évaluer les besoins : Déterminez si votre infrastructure DNS peut supporter DNSSEC. Cela peut nécessiter une mise à niveau de votre logiciel de serveur DNS.
    • Plan de déploiement : Planifiez comment vous allez générer, stocker et gérer les clés cryptographiques.
  2. Mise à jour du serveur DNS :
    • Logiciel compatible DNSSEC : Assurez-vous que votre serveur DNS est compatible avec DNSSEC. Des serveurs comme BIND, Unbound, et NSD supportent DNSSEC.
    • Configurer le serveur : Configurez votre serveur DNS pour qu’il puisse signer les zones avec DNSSEC.
  3. Génération de clés :
    • Créer une paire de clés : Générez une paire de clés pour votre zone DNS. Cela inclut généralement une clé de signature de zone (ZSK) pour signer fréquemment les enregistrements DNS et une clé de signature de clé (KSK) pour signer la ZSK.
  4. Signature de la zone DNS :
    • Signer les enregistrements : Utilisez la ZSK pour signer les enregistrements DNS de votre zone. Cela inclut des enregistrements comme A, AAAA, MX, etc.
  5. Publication des clés et des enregistrements :
    • Publier la KSK : Publiez la clé publique de la KSK dans votre zone parente (par exemple, pour example.com, la zone parente serait .com).
    • Publier les enregistrements DNSSEC : Publiez les enregistrements DNSSEC signés, y compris les enregistrements de type DS (Delegation Signer) et RRSIG (Resource Record Signature) dans votre zone DNS.
  6. Mise à jour régulière :
    • Rollover de clé : Planifiez et exécutez régulièrement des rollovers de clé pour la ZSK et éventuellement pour la KSK. Cela signifie générer de nouvelles clés et re-signer la zone.
  7. Validation :
    • Testez la configuration : Utilisez des outils de test DNSSEC pour vous assurer que votre zone est correctement signée et que les enregistrements peuvent être validés.
  8. Maintenance continue :
    • Surveillance : Surveillez régulièrement la performance et la sécurité de votre infrastructure DNSSEC.
    • Mises à jour : Restez informé des dernières mises à jour de logiciels et des meilleures pratiques en matière de DNSSEC.

Il est important de noter que la gestion de DNSSEC peut être complexe, notamment en ce qui concerne la gestion des clés. De plus, les erreurs dans la configuration de DNSSEC peuvent rendre votre site inaccessible pour ceux qui utilisent des résolveurs DNS effectuant la validation DNSSEC. Il est donc recommandé de procéder avec prudence et, si nécessaire, de demander l’assistance de professionnels expérimentés en DNS et DNSSEC.

Qu’est-ce que DoH ? (DNS Over HTTPS)

DNS over HTTPS (DoH) est une méthode pour effectuer des requêtes DNS (Domain Name System) à travers le protocole HTTPS, ce qui assure un chiffrement et une confidentialité accrus. En utilisant DoH, les requêtes DNS sont envoyées comme du trafic HTTPS chiffré, ce qui les rend indiscernables du trafic internet normal pour les observateurs extérieurs.

Voici un exemple concret d’utilisation de DoH:

Imaginons que vous souhaitiez visiter le site web www.exemple.com. Normalement, votre ordinateur envoie une requête DNS en clair pour demander l’adresse IP correspondant à www.exemple.com. Cette requête peut être interceptée ou modifiée par des tiers, comme votre fournisseur d’accès Internet ou des attaquants.

Avec DoH, au lieu d’envoyer cette requête DNS directement, votre navigateur ou application envoie la requête DNS à un serveur DoH via une connexion HTTPS. Cette connexion est chiffrée, de sorte que personne entre vous et le serveur DoH ne peut voir ou modifier la requête. Le serveur DoH reçoit votre requête, trouve l’adresse IP correspondante et vous la renvoie, également de manière chiffrée.

Le résultat est que vous pouvez accéder à www.exemple.com sans que votre requête DNS soit visible ou manipulable par des tiers. Cela améliore la confidentialité et la sécurité de votre navigation sur Internet.

Comment le mettre en place et l’utiliser

Pour mettre en place et utiliser DNS over HTTPS (DoH), vous pouvez suivre ces étapes :

Configuration sur un Navigateur Web

La plupart des navigateurs modernes, comme Google Chrome, Mozilla Firefox, et Microsoft Edge, supportent DoH et permettent de l’activer facilement dans leurs paramètres. Voici comment procéder généralement :

  1. Ouvrir les Paramètres du Navigateur: Accédez aux paramètres de votre navigateur.
  2. Trouver les Paramètres de Réseau ou de DNS: Recherchez une section liée aux paramètres de connexion ou de DNS.
  3. Activer DoH: Vous devriez trouver une option pour activer DoH. Souvent, vous pouvez choisir un fournisseur de services DNS qui supporte DoH.
  4. Sauvegarder les Modifications: Enregistrez vos paramètres et redémarrez le navigateur si nécessaire.

Configuration sur un Système d’Exploitation

Pour une configuration au niveau du système d’exploitation, les étapes varient selon le système. Voici un exemple général :

  1. Accéder aux Paramètres Réseau: Allez dans les paramètres réseau de votre système d’exploitation.
  2. Modifier les Paramètres DNS: Trouvez l’option pour modifier les paramètres DNS.
  3. Saisir l’Adresse d’un Serveur DoH: Entrez l’adresse du serveur DNS qui supporte DoH. Par exemple, https://dns.google/dns-query pour Google DNS ou https://mozilla.cloudflare-dns.com/dns-query pour Cloudflare.
  4. Appliquer les Modifications: Sauvegardez vos modifications et redémarrez votre connexion réseau.

Utilisation de Logiciels Tiers

Des logiciels tiers, comme DNSCrypt, peuvent également être utilisés pour activer DoH. Ces logiciels agissent comme un intermédiaire entre votre système et les serveurs DNS, chiffrant vos requêtes DNS.

Vérification

Après la configuration, il est important de vérifier si DoH fonctionne correctement :

  • Utilisez des outils en ligne qui vérifient si vos requêtes DNS sont chiffrées. Par exemple : https://www.cloudflare.com/ssl/encrypted-sni/
  • Certains fournisseurs de services DNS offrent des pages de test pour vérifier si DoH est activé.

Points à Considérer

  • La disponibilité et le support de DoH peuvent varier selon les régions et les fournisseurs d’accès à Internet.
  • Assurez-vous que le fournisseur DNS choisi est fiable et respecte votre vie privée.
  • Comprendre que DoH chiffre seulement les requêtes DNS, et non l’ensemble du trafic Internet. Pour une sécurité complète, considérez d’autres mesures, telles que l’utilisation d’un VPN.

En suivant ces étapes, vous pouvez mettre en place et utiliser DNS over HTTPS pour améliorer la confidentialité et la sécurité de vos requêtes DNS.

Configurer PFsense : n’autoriser que les connexions web (pour surfer et pis c’est tout !)

Pour des raisons de sécurité il peut parfois être nécessaire de bloquer tout ou partie du trafic sortant d’un réseau. Par exemple, si vous voulez ne laisser aux utilisateurs de votre réseau que la possibilité de surfer sur le web, il peut être utile de configurer son pare-feu de manière à empêcher l’accès à l’ensemble des ports autres que ceux requis par le web, c’est à dire les ports HTTP/HTTPS et DNS.

Voici les règles à mettre en place sur PFSense :

1. Empêcher tout le trafic

  • Action : Block
  • Interface : LAN
  • Adress Family : IPv4 + IPv6
  • Protocol : Any
  • Source : Any
  • Destination : Any
  • Log (à cocher ou non, moi j’aime bien cocher ce genre de case 😉 )
  • Description : blocage général

2. Autoriser HTTP et HTTPS

  • Action : Pass
  • Interface : LAN
  • Adress Family : IPv4 + IPv6
  • Protocol : TCP
  • Source : any
  • Destination : any
  • Destination port range : HTTP(80) to HTTPS(443)
  • Description : autorisation HTTP et HTTPS

3. Autoriser DNS

  • Action : Pass
  • Interface : LAN
  • Adress Family : IPv4 + IPv6
  • Protocol : TCP
  • Source : any
  • Destination : any
  • Destination port range : DNS(53)
  • Description : autorisation DNS

En synthèse ça donnerait ça :

Cas pratique / Révisions : VLAN et ACL

Voici un petit cas pratique pour se souvenir des différentes étapes & commandes qui permettent de mettre en place un petit réseau simple en utilisant des VLAN et ACL. Il n’y pas vraiment de logique dans l’organisation du réseau, le but est ici de bien comprendre la démarche de création de VLAN’s et d’une ACL et de pratiquer les commandes.

Voici le schéma réseau :

Consignes

  1. Configurez deux VLANs sur le switch Cisco avec les noms suivants : SUBNET-A (VLAN 10) et SUBNET-B (VLAN 20).
  2. Assurez-vous que les ports du switch sont correctement attribués aux VLANs comme indiqué dans le schéma de topologie fourni.
  3. Configurez le trunking sur le port connectant le switch au routeur pour transporter les deux VLANs.
  4. Mettez en place la communication inter-VLAN sur le routeur en utilisant le protocole 802.1Q pour le trunking.
  5. Créez et appliquez une Access Control List (ACL) pour empêcher le PC0 (VLAN 20) d’accéder au PC3 (VLAN 10), tout en autorisant tous les autres trafics inter-VLANs.

Topologie de Réseau:

  • Le Switch1 est connecté au Router0 via le port GigabitEthernet0/0.
  • Les PC0 et PC1 appartiennent au VLAN 20 (SUBNET-B).
  • Les PC2 et PC3 appartiennent au VLAN 10 (SUBNET-A).

Adresses IP et Interfaces:

  • PC0: 192.168.0.2
  • PC1: 192.168.0.3
  • PC2: 192.168.2.2
  • PC3: 192.168.2.3
  • Router0 (Interface vers VLAN 20): 192.168.0.1
  • Router0 (Interface vers VLAN 10): 192.168.2.1

Tâches:

  1. Configuration des VLANs:
    • Créez et nommez les VLANs sur le switch.
    • Attribuez les ports aux VLANs correspondants.
  2. Configuration du Trunking:
    • Configurez le port de trunk sur le switch.
    • Configurez les sous-interfaces sur le routeur pour le VLAN tagging.
  3. Configuration de la Communication Inter-VLAN:
    • Assignez les adresses IP aux sous-interfaces sur le routeur.
    • Vérifiez la connectivité entre les VLANs.
  4. Mise en Place des Restrictions d’Accès:
    • Créez une ACL standard pour bloquer le trafic de PC0 à PC3.
    • Appliquez l’ACL sur l’interface du routeur correspondant au VLAN de PC0.

Vérification:

Testez la connectivité entre les hôtes pour vous assurer que :

  • Tous les PC peuvent pinger leur passerelle par défaut.
  • Les PC des différents VLANs peuvent se pinger entre eux, à l’exception de PC0 qui ne doit pas pouvoir joindre PC3.

Déroulé de l’exercice

Étape 1 : Configuration des VLAN sur le Switch

D’abord, définissons les VLAN et assignons les ports appropriés :

Switch> enable
Switch# configure terminal
Switch(config)# vlan 10
Switch(config-vlan)# name SUBNET-A
Switch(config-vlan)# exit
Switch(config)# vlan 20
Switch(config-vlan)# name SUBNET-B
Switch(config-vlan)# exit
Switch(config)# interface FastEthernet0/2
Switch(config-if)# switchport mode access
Switch(config-if)# switchport access vlan 10
Switch(config-if)# exit
Switch(config)# interface FastEthernet0/3
Switch(config-if)# switchport mode access
Switch(config-if)# switchport access vlan 10
Switch(config-if)# exit
Switch(config)# interface FastEthernet0/4
Switch(config-if)# switchport mode access
Switch(config-if)# switchport access vlan 20
Switch(config-if)# exit
Switch(config)# interface FastEthernet0/5
Switch(config-if)# switchport mode access
Switch(config-if)# switchport access vlan 20
Switch(config-if)# exit

Étape 2 : Configuration du Trunking sur le Switch

Configurez le port reliant le switch au routeur pour qu’il transporte les deux VLAN.

Switch(config)# interface FastEthernet0/1
Switch(config-if)# switchport mode trunk
Switch(config-if)# switchport trunk allowed vlan 10,20
Switch(config-if)# exit

Étape 3 : Configuration des sous-interfaces sur le Routeur

Créez des sous-interfaces sur le routeur pour chaque VLAN pour permettre la communication inter-VLAN (Router-on-a-stick).

Router> enable
Router# configure terminal
Router(config)# interface GigabitEthernet0/0.10
Router(config-subif)# encapsulation dot1Q 10
Router(config-subif)# ip address 192.168.2.1 255.255.255.0
Router(config-subif)# exit
Router(config)# interface GigabitEthernet0/0.20
Router(config-subif)# encapsulation dot1Q 20
Router(config-subif)# ip address 192.168.0.1 255.255.255.0
Router(config-subif)# exit
Router(config)# exit

Étape 4 : Création d’une ACL pour bloquer le trafic de PC0 vers PC3

Définissons une ACL pour empêcher PC0 d’accéder à PC3 tout en autorisant les autres communications.

Router(config)# access-list 101 deny ip host 192.168.0.2 host 192.168.2.3
Router(config)# access-list 101 permit ip any any

Étape 5 : Application de l’ACL sur l’interface appropriée

Appliquez l’ACL sur l’interface du routeur correspondant au VLAN de PC0, qui est VLAN 20 dans ce cas.

Router(config)# interface GigabitEthernet0/0.20
Router(config-subif)# ip access-group 101 in
Router(config-subif)# exit

Avec ces configurations :

  • Les VLAN sont définis et les ports sont correctement assignés.
  • Le trunking est activé sur le port qui connecte le switch au routeur.
  • Les sous-interfaces sur le routeur sont configurées pour la communication inter-VLAN.
  • Une ACL est mise en place pour empêcher PC0 d’accéder à PC3 tout en autorisant le reste du trafic.

Assurez-vous que les adresses IP des PC sont configurées correctement dans leurs configurations TCP/IP respectives et que les masques de sous-réseau correspondent à ceux configurés sur les sous-interfaces du routeur.

Les commandes usuelles du routage sur appareils Cisco

Le routage sur les appareils Cisco IOS (Internetwork Operating System) implique un ensemble de commandes utilisées pour configurer les itinéraires que les paquets de données utiliseront à travers un réseau.

Voici quelques-unes des commandes de routage les plus couramment utilisées sur les appareils Cisco (avec la version raccourcie derrière #) :

Mode de Configuration Globale

Pour activer le mode commande

enable
# en 

Pour entrer en mode de configuration :

configure terminal# conf t

Configuration d’une Interface

Pour entrer dans la configuration d’une interface spécifique, comme interface GigabitEthernet0/0

interface GigabitEthernet0/0
# int gig0/0

Pour définir l’adresse IP et le masque de sous-réseau sur une interface :

ip address [adresse IP] [masque de sous-réseau]# ip add 192.168.1.2 255.255.255.0

Pour activer l’interface

no shutdown
# no sh

Configuration de Routage Statique

Pour créer un itinéraire statique :

ip route [destination] [masque de sous-réseau] [interface de sortie | prochaine adresse IP de saut]

Protocoles de Routage Dynamique

Pour entrer dans le mode de configuration de routage, par exemple router ospf ou router eigrp

router [protocole]

Pour OSPF, définir les réseaux à annoncer :

network [adresse] [wildcard mask] area [numéro]

Pour EIGRP, annoncer les réseaux :

network [adresse]

Pour éviter l’envoi de mises à jour de routage via une interface spécifique :

passive-interface [interface]

ACL (Access Control Lists) pour le Contrôle du Trafic

Pour configurer une ACL standard :

access-list [numéro] [permit|deny] [source] [wildcard mask]

Pour entrer en mode de configuration d’une ACL étendue :

ip access-list extended [nom]

Vérification et Dépannage

Pour afficher la table de routage :

show ip route

Pour afficher les protocoles de routage configurés sur le routeur :

show ip protocols

Pour afficher la configuration actuelle :

show running config

Pour vérifier l’état des interfaces :

show interface [type] [numéro]

Pour avoir un résumé de toutes les interfaces, leurs adresses IP, et leur état (up/down) :

show ip interface brief

Pour afficher des informations détaillées sur une interface spécifique, y compris les statistiques d’erreur, ce qui est utile pour détecter les problèmes physiques ou de niveau :

show interfaces

Pour afficher la table de routage actuelle, permettant de vérifier les itinéraires directs et appris par les protocoles de routage :

show ip route

Pour voir les listes de contrôle d’accès configurées et leurs statistiques, ce qui est utile pour dépanner les problèmes de filtrage de trafic :

show access-lists

Autres Commandes Utiles

Pour sauvegarder la configuration actuelle dans la configuration de démarrage :

copy running-config startup-config

Pour supprimer un itinéraire statique spécifique :

no ip route [...]

Pour définir manuellement un identifiant de routeur pour les protocoles de routage comme OSPF :

router-id [adresse IP]

Créer un tunnel « Client to site » avec PFsense et OpenVPN

Un VPN « client to site » (ou « remote access VPN ») est une méthode qui permet à un utilisateur distant de se connecter à un réseau privé via Internet, comme s’il était physiquement présent sur le réseau. Cela permet aux utilisateurs de travailler à distance tout en ayant accès aux ressources et services du réseau privé, comme si elles étaient sur place. Les communications entre le client et le site sont cryptées, ce qui protège les données échangées des regards indiscrets.

Voici un résumé de la configuration à mettre en place sur PFsense et sur la machine cliente

Infrastructure de base

  • Utilisation de Virtualbox pour le lab
  • Une VM qui héberge PFSense avec un WAN dans un réseau NAT customisé en 10.0.2.0/24 et un LAN interne connecté au serveur sur lequel le client voudra se connecter via le VPN
  • Une VM sous Ubuntu qui simulera le poste client (connecté au réseau NAT « NATVPN-Nomade ». Son adresse IP sera attribuée par DHCP.
  • Une VM qui héberge un serveur web qui sera accessible depuis le VPN de la machine « cliente ». Il se situera dans le réseau LanWebServer

Configuration des interfaces de PFSense

Voici la fenêtre de configuration de PFSense avec ses interfaces :

Pour gérer la configuration de PFSense on va devoir se connecter à son interface web depuis son adresse LAN sur le serveur Web.

Suivre les différentes étapes de la première configuration, puis modifier le mot de passe administrateur (cf tuto précédent sur la configuration d’un VPN site to site)

Création des certificats serveur

Ensuite rdv dans VPN -> Open VPN -> Wizards

Cliquer sur « Next »
Remplir les infos du certificat

Puis remplir les différentes infos de façon à avoir ces paramètres :

Dans les grandes lignes :

  • On commence par configurer les options d’encryption
  • Ensuite on définit les paramètres du tunnel en choisissant la plage d’adresse IP que le VPN crééra (exemple 172.31.10.0/24) et en indiquant le réseau qui sera accessible depuis ce tunnel (ici 192.168.1.0/24)

A l’étape suivante on peut demander la création automatique des règles de firewall qui s’appliqueront au tunnel :

Au final le résumé du serveur OpenVPN devrait ressembler à ça :

Pour voir les certificats du serveur, rdv dans System -> Certificates

Et les règles appliquées automatiquement au pare-feu :

En gros ici tous les utilisateurs peuvent accéder au port 1194 défini précédemment.

Idem, dans l’onglet « Firewall » -> « OpenVPN » on voit une règle créée dédiée au VPN en lui même qui autorise les accès à tout le monde :

Création des certificats utilisateurs

Maintenant il faut passer à la création des certificats utilisateurs qui seront installés sur les machines nomades. Aller dans « System » -> « User Manager » et cocher « Click to create a user certificate » (et ne pas oublier de lui attribuer un mot de passe !)

Puis créer le certificat

Ensuite, il va falloir exporter les certificats.

Mais par défaut PFsense ne le permet pas, il faut installer un package via « System » -> « Package Manager » et chercher « OpenVPN Client Export » puis l’installer :

Ensuite rdv dans « VPN » -> « Open VPN » -> « Client Export »

Un peu plus bas on va pouvoir récupérer le certificat « nomad-user » :

Pour l’installer sous Ubuntu il suffit de choisir « Most Clients »

Récupérer le certificat

Pour se connecter au PFsense depuis la machine « nomade » on va créer une règle temporaire dans le firewall :

Dans « Rules » onglet « WAN » on ajoute une règle qui permet aux machines d’accéder à Pfense via le protocole HTTPS:

Ensuite sur la machine Ubuntu nomade on va pouvoir aller dans « VPN » -> « OpenVPN » -> « Client Export » et récupérer le certificat :

Le fichier arrive dans le dossier téléchargements :

On lance un terminal depuis ce dossier téléchargement avec la commande

sudo openvpn pfSense-UDP4-1194-nomad-user-config.ovpn

Et on s’authentifie avec le login et pass de l’utilisateur créé sur PFsense :

Ensuite pour vérifier la bonne connexion on peut ouvrir une autre fenêtre de terminal et faire un ip a pour constater la bonne attribution de l’IP du VPN :

Désormais on peut communiquer avec le réseau local sur lequel se trouve le serveur web :

Ne pas oublier de fermer l’accès extérieur à PFSense en supprimant la règle WAN créé pour récupérer le certificat

Avec Windows

Sous Windows la procédure est plus simple :

  • Il suffit d’installer de récupérer le fichier du certificat dédié à Windows
  • Double-cliquer sur le certificat dans Windows pour installer la configuration
  • Enfin, via l’icône d’OpenVPN, faire un clic droit « se connecter » et utiliser les identifiants de l’utilisateur pour se connecter au tunnel

Un message indique qu’on est bien connectés :

Et on peut donc se rendre sur le serveur web :

Un petit ipconfig /all permet de vérifier la bonne attribution de l’adresse du VPN :

Et voilà, désormais on peut se connecter au serveur via un VPN depuis n’importe quel réseau extérieur !

Créer un tunnel VPN site à site avec PFSense avec IPSec

Un VPN site à site est une connexion sécurisée et cryptée qui permet de relier deux réseaux locaux distincts à travers Internet, comme si ils étaient sur le même réseau local. Cette connexion permet à des machines situées sur des réseaux différents de communiquer entre elles de manière sécurisée.

Exemple simple :

  1. Vous avez deux machines Ubuntu, Ubuntu 1 et Ubuntu 2, situées sur deux réseaux locaux différents.
  2. Chaque réseau local est protégé par une machine PFsense qui sert de routeur et de pare-feu.
  3. Vous souhaitez que Ubuntu 1 et Ubuntu 2 puissent communiquer entre elles de manière sécurisée, comme si elles étaient sur le même réseau local.

Pour cela, vous allez configurer un VPN site à site entre les deux machines PFsense en utilisant la fonctionnalité IPSec.

IPSec va permettre de chiffrer et sécuriser les données qui transitent entre les deux réseaux locaux à travers Internet. Une fois la connexion VPN établie, Ubuntu 1 pourra communiquer avec Ubuntu 2 de manière sécurisée, comme si elles étaient sur le même réseau local.

IPSeco ? Kézaco ?

IPSec, qui signifie « Internet Protocol Security« , est un ensemble de protocoles utilisés pour sécuriser les communications Internet en authentifiant et en chiffrant chaque paquet d’une session de communication. IPSec peut être utilisé pour protéger des flux de données entre un couple d’hôtes (mode transport), entre un couple de réseaux (mode tunnel), ou entre un hôte et un réseau.

IPSec utilise les méthodes suivantes pour sécuriser les communications :

  1. Authentification : Elle garantit que les données ont bien été envoyées par la source revendiquée, et qu’elles n’ont pas été altérées pendant le transfert. IPSec utilise des algorithmes de hachage (comme SHA-1, SHA-256) pour réaliser l’authentification.
  2. Confidentialité : Elle assure que les données ne peuvent pas être lues par des tiers non autorisés. Pour cela, IPSec utilise des algorithmes de chiffrement (comme AES, 3DES) pour rendre les données illisibles sans la clé de déchiffrement appropriée.
  3. Intégrité : Elle assure que les données n’ont pas été modifiées pendant leur transfert. IPSec utilise également des algorithmes de hachage pour vérifier l’intégrité des données.
  4. Anti-rejeu : Cette fonctionnalité empêche les attaques de type « replay » où un attaquant intercepte et retransmet des paquets pour tenter de tromper le destinataire.

Le fonctionnement d’IPSec implique l’établissement de SAs (Security Associations) qui sont des ensembles de paramètres de sécurité partagés utilisés pour sécuriser les communications.

Installation / mise en place du lab de test

  • Une machine sur Ubuntu (Ubuntu 1) qui sera connectée au Lan1 avec l’adresse IP 192.168.1.100
  • Une machine sous PFsense (PFsense 1) dont le WAN sera connecté à un réseau NAT custom (SiteToSiteVPN) en 10.0.2.4 (en gardant le DHCP actif sous virtualbox cette adresse peut varier) et le LAN au réseau Lan1 avec l’IP 192.168.1.1
  • Une machine sur Ubuntu (Ubuntu 2) qui sera connectée au Lan2 avec l’adresse IP 172.16.1.100
  • Une machine sous Pfsense (PFsense 2) dont l’interface WAN sera connectée au réseau NAT custom (SiteToSiteVPN) en 10.0.2.5 et son interface LAN au réseau Lan2 avec l’adresse IP 172.16.1.0

Etape 1 : Installation de PFsense & Ubuntu sur les différentes VM

Pas besoin d’entrer dans les détails : PFsense s’installe assez facilement en suivant le mode guidé, et Ubuntu… Ben c’est Ubuntu quoi ! :-))

Configuration de PFsense :

Voici une capture d’écran de la config du PFsense 1 comme indiqué plus haut :

Et PFsense 2 :

Ubuntu 1 :

Et Ubuntu 2 :

Paramétrage du tunnel et du Firewall sous PFsense 1

Dans « VPN -> IPSec »

Voilà la config détaillée de la phase 1 (en indiquant l’interface qui se trouve de l’autre côté du tunnel ^^) :

Attention à bien définir une clé sécurisée dans le champ « Pre-shared Key » qui devra être la même sur PFSense 2

Voici la config détaillée de la phase 2 (qui indique vers quel réseau local on va se diriger) :

Configuration du Firewall pour laisser passer un test de ping (on va tout mettre en open bar pour le test, mais penser à créer des restrictions par la suite)

Rdv dans « Firewall » -> « Rules » -> « IPSec »

Paramétrage du tunnel et du Firewall sous PFsense 2

On fait les mêmes manips mais en renseignant les adresses de PFsense 1 et du réseau local qui lui est lié

Ne pas oublier de mettre la même clé dans « Pre-Shared Key » qu’auparavant !!

Idem pour les règles de Firewall :

Activation du Tunnel

Aller dans « Status » -> « IP Sec » et cliquer sur « Connect P1 et P2 ». La connexion devrait se faire sur les 2 interfaces directement :

Contrôle / Ping de test

Sur la machine Ubuntu 1 (qui est en 192.168.1.0) on peut faire un ping vers la machine Ubuntu 2 (en 172.16.1.0).

Et voilà, vous avez paramétré un VPN « Site à site » entre 2 réseaux qui ne sont pas directement reliés, grâce à PFsense et sa fonction de tunneling via IPSec.

En conclusion, IPSec est un ensemble robuste de protocoles qui permet de sécuriser les communications Internet en authentifiant, chiffrant, et en assurant l’intégrité et l’anti-rejeu des données.

analytics, information, innovation

Créer et utiliser des clefs RSA

Explications

L’utilisation des clés RSA est une méthode courante pour sécuriser les communications sur Internet.

L’algorithme RSA, nommé d’après ses créateurs Rivest, Shamir et Adleman, est un système de cryptage asymétrique qui utilise une paire de clés, une publique et une privée, pour chiffrer et décrypter les données.

La création de clés RSA peut être réalisée à l’aide de l’outil open source OpenSSL, qui est inclus sur toutes les principales plates-formes et offre une interface de ligne de commande simple pour générer des clés.

La commande openssl genrsa -out private_key.pem 1024 permet de créer une paire de clés RSA, où « private_key.pem » est le nom du fichier de clé et « 1024 » est la taille de la clé en bits.

Une fois les clés créées, il est possible de visualiser le contenu du fichier de clé privée avec la commande cat private_key.pem.

Pour visualiser les clés RSA, on utilise la commande openssl rsa -in private_key.pem -text -noout.

Il est également possible de crypter un fichier de clés privées RSA avec la commande openssl rsa -in encrypted_private_key.pem -des3 -out encrypted_private_key.pem, où « -des3 » spécifie l’algorithme de cryptage symétrique à utiliser.

L’exportation d’une clé publique se fait avec la commande openssl rsa -in encrypted_private_key.pem -pubout -out public_key.pem, et la vérification de l’exportation peut être réalisée avec la commande openssl rsa -in public_key.pem -pubin.

La cryptographie asymétrique, en intégrant une deuxième clé dans le processus de cryptage/décryptage, offre un bon niveau de sécurité. La clé privée est conservée par chacun des interlocuteurs, tandis que la clé publique de chacun sert à décrypter les données reçues. Attention à bien respecter les étapes de cryptage et de partage des clés et de ne pas oublier la passphrase qui les protège.

Procédure d’utilisation détaillée

Création de la paire de clés RSA

Ouvrez votre terminal.

Entrez la commande suivante pour créer une paire de clés RSA :

openssl genrsa -out private_key.pem 1024

Cette commande générera une paire de clés RSA, où « private_key.pem » est le nom du fichier de clé privée et « 1024 » est la taille de la clé en bits.

Affichage du fichier de la clé privée RSA

Entrez la commande suivante pour visualiser le contenu du fichier de clé privée :

cat private_key.pem

Visualisation des clés RSA

Entrez la commande suivante pour visualiser les clés RSA :

openssl rsa -in private_key.pem -text -noout

Cryptage d’un fichier de clés privées RSA

Entrez la commande suivante pour crypter un fichier de clés privées RSA :

openssl rsa -in private_key.pem -des3 -out encrypted_private_key.pem

Vous serez invité à entrer une passphrase pour protéger l’accès à la clé.

Exportation d’une clé publique

Entrez la commande suivante pour exporter une clé publique :

openssl rsa -in encrypted_private_key.pem -pubout -out public_key.pem

Vous devrez entrer votre passphrase pour confirmer l’exportation de la clé.

Vérification de l’exportation de la clé publique

  • Entrez la commande suivante pour vérifier l’exportation de la clé publique :
openssl rsa -in public_key.pem -pubin

Ces étapes vous permettront de créer et de gérer des clés RSA avec OpenSSL. Assurez-vous de suivre chaque étape attentivement et de ne pas oublier votre passphrase.

Fièrement propulsé par WordPress & Thème par Anders Norén