Ploča se podiže sa zajedničke slike, dobiva DHCP zakup i skripta za pripremu se pokreće prije nego što je itko dodirnuo uređaj. Negdje u toj skripti mora dobiti WireGuard identitet koji pripada ovoj ploči i nijednoj drugoj, dati taj identitet na autorizaciju i napisati profil koji će gateway prihvatiti. Slika može nositi klijentski softver, pregledan predložak i javni ključ gatewaya. Ono što nikada ne smije nositi jest jedan privatni ključ koji dijeli cijela flota, jer to jednu ukradenu ploču pretvara u incident za cijelu flotu. Redoslijed ispod drži identitet lokalnim, a autorizaciju eksplicitnom.

Što slika nosi, a što ne

Pošaljite paket, predložak s rezerviranim mjestima, javni ključ gatewaya i klijenta za registraciju. Predložak je oblik, ne tajna: treba biti čitljiv korisniku za pripremu i ne smije sadržavati nikakav ključni materijal.

Privatni ključ se generira na uređaju pri prvom podizanju i nikada ga ne napušta. Putuje samo javna polovina, unutar zahtjeva za registraciju koji se autorizira nečim drugim osim vlastite tvrdnje uređaja o tome tko je. Upravo ta razlika sprječava da ukradena ploča postane problem za cijelu flotu. To je i dio koji većina skripti za prvo podizanje pogriješi.

Korak 1: generirati ključ lokalno

Pokrenite generiranje u zaštićenom direktoriju nakon što je osnovna mrežna veza odobrena i radi. Podljuska drži promjenu umask lokalnom za ovu operaciju, a set -C odbija prepisati postojeću datoteku:

(
    umask 077
    set -C
    wg genkey > /etc/wireguard/device.key &&
        wg pubkey < /etc/wireguard/device.key > /etc/wireguard/device.pub
)

WireGuard brzi početak dokumentira odnos generiranja ključeva na koji se oslanjaju ove dvije naredbe. Ako se generiranje prekine, ostavite uređaj neregistriranim i neka tok rada uskladi datoteke. Ne brišite postojeći identitet samo zato da bi skripta čisto prošla od početka.

Sačuvajte ključ na čekanju kroz ponovne pokušaje. Ponovno generiranje identiteta nakon svakog privremenog mrežnog kvara je način na koji flota ostaje sa siročadi peerovima koje nitko ne može povezati s uređajem.

Korak 2: autorizirati zapis uređaja

Pretpostavite da inventar ovu ploču naziva device-042 i dodjeljuje joj 10.90.0.42/32. Servis za registraciju mora provjeriti da ovaj podnositelj zahtjeva ima pravo na taj zapis. Serijski broj otkucan u obrazac nije dokaz, jer su serijski brojevi otisnuti na vanjskoj strani kutije.

Bootstrap akreditiv po uređaju, odobrenje operatera ili atestacija potpomognuta hardverom mogu uspostaviti tvrdnju. Zaštitite integritet zahtjeva i autentičnost odgovora, i ne zamjenjujte jednu zajedničku VPN tajnu jednim zajedničkim tvorničkim akreditivom.

Registrirani zapis veže uređaj, njegov javni ključ, dodijeljenu adresu i dozvoljenu upravljačku ulogu. WireGuard sam ne definira nikakav API za registraciju, pa je taj servis nešto što svjesno gradite i vodite.

Korak 3: napisati dvije usklađene konfiguracije

Uređaju treba profil koji usmjerava upravljačke prefikse u tunel, a gatewayu treba peer zapis koji dozvoljava samo vlastitu izvornu adresu ovog uređaja. Uz gateway na 10.90.0.1 i upravljačku mrežu 10.60.0.0/16, strana uređaja izgleda ovako:

[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

Vrijednosti u zagradama su rezervirana mjesta, ne ključevi. Keepalive je važan kada ploča stoji iza NAT-a i mora ostati dostupna; nije potreban svugdje, a dodavanje iz navike drži radio budnim bez razloga.

Na gatewayu je peer zapis namjerno uzak:

[Peer]
PublicKey = <device-042 public key>
AllowedIPs = 10.90.0.42/32

Ne kopirajte listu odredišta uređaja na gateway peer. Na uređaju ta lista kaže što usmjeriti u tunel; na gatewayu kaže koje izvorne adrese ovaj peer smije koristiti, a to su različite tvrdnje.

Prosljeđivanje, firewall pravila i povratni put do upravljačke mreže i dalje moraju dozvoljavati odobreni pristup. Registrirani peer nije dozvola za svaku aplikaciju iza njega.

Korak 4: potvrditi registraciju kao stanje životnog ciklusa

Primijenite gateway zapis i profil uređaja preko onoga koji posjeduje odgovarajuću konfiguraciju, pa označite registraciju završenom tek kada su predviđeni identitet i adresa prihvaćeni. Ponovni pokušaji trebaju uskladiti taj isti zapis umjesto da dodijele drugi peer ili drugu adresu.

Držite put oporavka za prekinutu pripremu, uključujući slučaj kada je gateway prihvatio ključ, a uređaj nikada nije napisao svoj profil.

Kada se ploča zamijeni ili povuče iz upotrebe, uklonite njen javni ključ i njenu autorizaciju zajedno. Novi ključ je svjesna ponovna registracija, a ne nuspojava ponovnog snimanja slike. Redoslijed rada: generirati lokalno, autorizirati prema inventaru, napisati obje strane, potvrditi stanje, pa testirati jedan upravljački zahtjev kroz tunel.

Povezani članci