Nebula 1.5, un projet proposant des outils pour la création de réseaux superposés sécurisés, est désormais disponible. Ce réseau peut connecter de quelques-uns à plusieurs dizaines de milliers d'hôtes géographiquement dispersés, hébergés par différents fournisseurs, formant ainsi un réseau distinct et isolé au-dessus du réseau mondial. Le projet est écrit en Go et distribué sous licence MIT. Il a été fondé par Slack, l'entreprise à l'origine de l'application de messagerie professionnelle du même nom. Il prend en charge Linux, FreeBSD, macOS, Windows, iOS et Android.
Les nœuds du réseau Nebula interagissent directement entre eux en mode P2P ; lorsque le besoin de transférer des données entre nœuds se fait sentir, des connexions directes sont créées dynamiquement. VPNLes connexions sont sécurisées. L'identité de chaque hôte du réseau est confirmée par un certificat numérique, et la connexion au réseau requiert une authentification : chaque utilisateur reçoit un certificat confirmant son adresse IP sur le réseau Nebula, son nom et son appartenance à un groupe d'hôtes. Les certificats sont signés par une autorité de certification interne, déployée sur site par le fournisseur de réseau et utilisée pour vérifier l'autorisation des hôtes à se connecter au réseau superposé.
Pour créer un canal de communication authentifié et sécurisé, Nebula utilise un protocole de tunnelage propriétaire basé sur le protocole d'échange de clés Diffie-Hellman et le chiffrement AES-256-GCM. L'implémentation de ce protocole repose sur des primitives prêtes à l'emploi et testées fournies par le framework Noise, également utilisé dans des projets tels que… WireGuard, Lightning et I2P. Le projet aurait passé avec succès un audit de sécurité indépendant.
Pour découvrir d'autres nœuds et coordonner les connexions au réseau, des nœuds « phares » spéciaux sont créés. Leurs adresses IP globales sont fixes et connues des participants au réseau. Les nœuds participants ne sont liés à aucun serveur externe. adresse IPIls sont identifiés par des certificats. Les propriétaires d'hôtes ne peuvent pas modifier indépendamment les certificats signés et, contrairement aux réseaux IP traditionnels, ne peuvent pas usurper l'identité d'un autre hôte en changeant simplement son adresse IP. Lors de l'établissement d'un tunnel, l'identité de l'hôte est confirmée par sa clé privée unique.
Le réseau créé se voit attribuer une certaine plage d'adresses intranet (par exemple, 192.168.10.0/24) et les adresses internes sont associées à des certificats hôtes. Des groupes peuvent être formés à partir de participants au réseau superposé, par exemple, vers des serveurs et des postes de travail distincts, auxquels des règles de filtrage de trafic distinctes sont appliquées. Divers mécanismes sont fournis pour contourner les traducteurs d'adresses (NAT) et les pare-feu. Il est possible d'organiser le routage via le réseau superposé du trafic provenant d'hôtes tiers ne faisant pas partie du réseau Nebula (itinéraire dangereux).
Il prend en charge la création de pare-feu pour séparer l'accès et filtrer le trafic entre les nœuds du réseau superposé Nebula. Les ACL avec liaison de balise sont utilisées pour le filtrage. Chaque hôte du réseau peut définir ses propres règles de filtrage basées sur les hôtes, les groupes, les protocoles et les ports réseau. Dans ce cas, les hôtes ne sont pas filtrés par adresses IP, mais par identifiants d'hôte signés numériquement, qui ne peuvent être falsifiés sans compromettre le centre de certification coordonnant le réseau.
Dans la nouvelle version :
- Ajout d'un indicateur "-raw" à la commande print-cert pour imprimer la représentation PEM du certificat.
- Ajout de la prise en charge de la nouvelle architecture Linux riscv64.
- Ajout d'un paramètre expérimental remote_allow_ranges pour lier les listes d'hôtes autorisés à des sous-réseaux spécifiques.
- Ajout de l'option pki.disconnect_invalid pour réinitialiser les tunnels après l'expiration de la fin de la confiance ou de la durée de vie du certificat.
- Ajout de l'option unsafe_routes. .metric pour attribuer un poids à un itinéraire externe spécifique.
Source: opennet.ru
