Udgaven af Nebula 1.9-projektet tilbyder værktøjer til opbygning af sikre overlay-netværk, der gør det muligt at forbinde geografisk adskilte værter i et separat isoleret netværk, der kører oven på det globale netværk. Projektet er designet til at skabe egne overlay-netværk til forskellige behov, såsom at forbinde virksomhedens computere i forskellige kontorer, servere i forskellige datacentre eller virtuelle miljøer hos forskellige cloud-udbydere. Koden er skrevet i Go og distribueres under MIT-licensen. Projektet er baseret på virksomheden Slack, som udvikler den tilsvarende virksomhedsmessenger. Det understøtter drift på Linux, FreeBSD, macOS, Windows, iOS og Android.
Noderne i Nebula-netværket interagerer direkte med hinanden i P2P-tilstand — efterhånden som der opstår behov for datatransmission mellem noderne, oprettes der dynamisk direkte VPN-forbindelser. Identiteten af hver vært i netværket bekræftes med et digitalt certifikat, og tilslutning til netværket kræver autentificering — hver bruger modtager et certifikat, der bekræfter IP-adressen i Nebula-netværket, navnet og medlemskabet i værtgrupper. Certifikaterne signeres af et internt certifikationsorgan, der implementeres af skaberen af hvert enkelt netværk på sine faciliteter og anvendes til at bekræfte legitimiteten af værter, der har ret til at forbinde til et specifikt overlay-netværk knyttet til certifikationsorganet.
For at oprette en autentificeret sikker kommunikationskanal i Nebula anvendes et eget tunnelprotokol baseret på Diffie-Hellman-nøgleudvekslingsprotokollen og AES-256-GCM-krypteringen. Implementeringen af protokollen er baseret på færdige og gennemprøvede primitive funktioner, som tilbydes af Noise-rammeværket, der også anvendes i projekter som WireGuard, Lightning og I2P. Det hævdes, at projektet har bestået en uafhængig sikkerhedsrevision.
For at opdage andre noder og koordinere forbindelser til netværket oprettes der specielle «lighthouse»-noder, hvis globale IP-adresser er faste og kendte for netværkets deltagere. Deltagernoderne har ikke binding til eksterne IP-adressen, de identificeres via certifikater. Ejerne af værter kan ikke selv ændre de underskrevne certifikater, og i modsætning til traditionelle IP-netværk kan de ikke lade som om, de er en anden vært blot ved at ændre IP-adressen. Ved oprettelse af en tunnel bekræftes værtens identitet ved hjælp af en individuel privat nøgle.
Det oprettede netværk tildeles et specifikt interval af intranet-adresser (f.eks. 192.168.10.0/24), og der oprettes en binding mellem interne adresser og værtens certifikater. Der gives forskellige mekanismer til at omgå netværksadresseringsoversættere (NAT) og firewalls. Ruteorganisering gennem overlay-netværk af tredjeparts værter, der ikke tilhører Nebula-netværket (unsafe route), er mulig. Deltagere i overlay-netværket kan dannes i grupper, f.eks. til at adskille servere og arbejdsstationer, som der anvendes separate trafikfiltreringsregler for.
Der understøttes oprettelse af firewalls til adskillelse af adgang og trafikfiltrering mellem noder i Nebula-overlay-netværket. Filtreringen anvender ACL med tagbindinger. Hver vært i netværket kan definere sine egne filtreringsregler baseret på værter, grupper, protokoller og netværksporte. Værter filtreres ikke efter IP-adresser, men efter certifikatunderskrevne vært-ID'er, som ikke kan forfalskes uden at kompromittere det certificerende anlægsarbejde, der koordinerer netværket.
I den nye version:
- Der er tilføjet en ny indstilling default_local_cidr_any, som ændrer adfærden ved behandling af subnet ‘local_ip’ i firewall-regler for at forhindre uberettiget tilladelse af trafik til værter, der er nævnt i blokken unsafe_routes. I version 1.9 er indstillingen sat til ‘true’, men i næste version 1.10 vil den blive ændret til ‘false’, hvilket fører til, at lokale subnetter tages i betragtning ved anvendelse af firewall-regler til værter, der er tilgængelige via usikre ruter (for at åbne adgang til sådanne værter kræves det obligatoriske angivelse af local_cidr).
- Der er givet et officielt billede til Docker-systemet, hvilket muliggør hurtig opsætning af et overlay-netværk baseret på Nebula eller en node til det.
- Der er tilføjet eksperimentelle builds til Loong64-arkitekturen.
- Der er implementeret et service-script til init-systemet OpenRC.
- SSH-baggrundsprocessen har fået tilføjet støtte for autentificering med certifikater, der er underskrevet af et certifikatmyndighed (sshd.trusted_cas). Muligheden for at indlejre værtsnøgler i sshd.host_key konfigurationsblokken er blevet implementeret.
- Støtte for genindlæsning af indstillingerne "tun.unsafe_routes" er blevet sikret.
- Støtte til den forældede indstilling local_range er blevet fjernet; i stedet bør preferred_ranges anvendes.
- Byggesættet kræver nu Go 1.22. De mindste krav til Windows-versioner er hævet til Windows 10 og Windows Server 2016.
Kilde: opennet.ru
