První spuštění: registrace flotily zařízení WireGuard
Jeden obraz, jeden klíč na desku a autorizační krok, který nevěří vlastnímu tvrzení zařízení. Čtyři fáze od spuštění k potvrzenému peeru.
Deska se spustí ze společného obrazu, získá DHCP lease a předtím, než se kdokoli dotkne zařízení, se spustí zřizovací skript. Někde v tom skriptu musí získat identitu WireGuard, která patří této desce a žádné jiné, nechat tu identitu autorizovat a zapsat profil, který brána přijme. Obraz může nést klientský software, zkontrolovanou šablonu a veřejný klíč brány. Co nést nikdy nesmí, je jeden soukromý klíč sdílený celou flotilou, protože to z jedné ukradené desky dělá incident pro celou flotilu. Pořadí níže drží identitu lokální a autorizaci explicitní.
Co obraz nese a co ne
Dodávejte balíček, šablonu se zástupnými symboly, veřejný klíč brány a klienta pro registraci. Šablona je tvar, ne tajemství: má být čitelná pro zřizovacího uživatele a nesmí obsahovat žádný klíčový materiál.
Soukromý klíč se generuje na zařízení při prvním spuštění a nikdy ho neopustí. Putuje jen veřejná polovina, uvnitř žádosti o registraci, kterou autorizuje něco jiného než vlastní tvrzení zařízení o tom, kdo je. Právě tento rozdíl brání tomu, aby se ukradená deska stala problémem pro celou flotilu. A je to také část, kterou většina skriptů pro první spuštění dělá špatně.
Krok 1: vygenerovat klíč lokálně
Spusťte generování v chráněném adresáři poté, co je podkladové síťové spojení schváleno a funguje. Podskořápka drží změnu umask lokální pro tuto operaci a set -C odmítá přepsat existující soubor:
(
umask 077
set -C
wg genkey > /etc/wireguard/device.key &&
wg pubkey < /etc/wireguard/device.key > /etc/wireguard/device.pub
)
Rychlý start WireGuard dokumentuje vztah generování klíčů, na který se tyto dva příkazy spoléhají. Pokud je generování přerušeno, nechte zařízení neregistrované a nechte pracovní postup ztotožnit soubory. Nemažte existující identitu jen proto, aby skript běžel čistě od začátku.
Zachovejte čekající klíč napříč opakovanými pokusy. Nové generování identity po každém dočasném síťovém selhání je způsob, jakým flotila skončí s osiřelými peery, které nikdo nedokáže přiřadit zařízení.
Krok 2: autorizovat záznam zařízení
Předpokládejme, že inventář tuto desku nazývá device-042 a přiděluje jí 10.90.0.42/32. Registrační služba musí ověřit, že tento žadatel má na ten záznam nárok. Sériové číslo napsané do formuláře není důkaz, protože sériová čísla jsou vytištěna na vnější straně krabice.
Bootstrapový údaj pro každé zařízení, schválení operátorem nebo atestace podpořená hardwarem mohou tvrzení doložit. Chraňte integritu žádosti a pravost odpovědi a nenahrazujte jedno sdílené tajemství VPN jedním sdíleným továrním údajem.
Registrovaný záznam váže zařízení, jeho veřejný klíč, přidělenou adresu a povolenou roli správy. WireGuard sám nedefinuje žádné registrační API, takže tato služba je něco, co vědomě stavíte a provozujete.
Krok 3: zapsat dvě odpovídající konfigurace
Zařízení potřebuje profil, který směruje prefixy správy do tunelu, a brána potřebuje záznam peeru, který povoluje jen vlastní zdrojovou adresu tohoto zařízení. S bránou na 10.90.0.1 a sítí správy 10.60.0.0/16 vypadá strana zařízení takto:
[Interface]
PrivateKey = <device-042 private key>
Address = 10.90.0.42/32
[Peer]
PublicKey = <trusted gateway public key>
Endpoint = vpn.example.com:51820
AllowedIPs = 10.90.0.1/32, 10.60.0.0/16
PersistentKeepalive = 25
Hodnoty v hranatých závorkách jsou zástupné symboly, ne klíče. Keepalive je důležitý, když deska sedí za NAT a musí zůstat dostupná; není potřeba všude a jeho přidání ze zvyku drží rádio bdělé bez důvodu.
Na bráně je záznam peeru záměrně úzký:
[Peer]
PublicKey = <device-042 public key>
AllowedIPs = 10.90.0.42/32
Nekopírujte seznam cílů zařízení do peeru na bráně. Na zařízení tento seznam říká, co směrovat do tunelu; na bráně říká, které zdrojové adresy tento peer smí použít, a to jsou různá tvrzení.
Přeposílání, pravidla firewallu a zpětná cesta k síti správy stále musí schválený přístup povolovat. Registrovaný peer není povolením pro každou aplikaci za ním.
Krok 4: potvrdit registraci jako stav životního cyklu
Aplikujte záznam brány a profil zařízení prostřednictvím toho, kdo vlastní příslušnou konfiguraci, a teprve pak označte registraci za dokončenou, když jsou zamýšlená identita a adresa přijaty. Opakované pokusy mají ztotožnit stejný záznam, místo aby přidělily druhý peer nebo druhou adresu.
Udržujte cestu obnovy pro přerušené zřizování, včetně případu, kdy brána klíč přijala a zařízení svůj profil nikdy nezapsalo.
Když je deska vyměněna nebo vyřazena, odstraňte její veřejný klíč a její autorizaci společně. Nový klíč je záměrná opakovaná registrace, ne vedlejší účinek nového obrazu. Pořadí práce: generovat lokálně, autorizovat proti inventáři, zapsat obě strany, potvrdit stav a potom otestovat jeden požadavek správy přes tunel.