Прво подизање: регистрација флоте WireGuard уређаја
Једна слика, један кључ по плочи и корак ауторизације који не верује сопственој тврдњи уређаја. Четири фазе од подизања до потврђеног peer-а.
Плоча се подиже са заједничке слике, добија DHCP закуп и скрипта за припрему се извршава пре него што је ико додирнуо уређај. Негде у тој скрипти она мора да добије WireGuard идентитет који припада овој плочи и ниједној другој, да тај идентитет ауторизује и да напише профил који ће мрежни пролаз прихватити. Слика може да носи клијентски софтвер, прегледан шаблон и јавни кључ пролаза. Оно што никада не сме да носи јесте један приватни кључ који дели цела флота, јер то једну украдену плочу претвара у инцидент за целу флоту. Редослед испод држи идентитет локалним, а ауторизацију експлицитном.
Шта слика носи, а шта не
Пошаљите пакет, шаблон са заменским местима, јавни кључ пролаза и клијента за регистрацију. Шаблон је форма, не тајна: треба да буде читљив кориснику за припрему и да не садржи никакав кључни материјал.
Приватни кључ се генерише на уређају при првом подизању и никада га не напушта. Путује само јавна половина, унутар захтева за регистрацију који се ауторизује нечим другим осим сопствене тврдње уређаја о томе ко је. Управо та разлика спречава да украдена плоча постане проблем за целу флоту. И то је део који већина скрипти за прво подизање ради погрешно.
Корак 1: генерисати кључ локално
Извршите генерисање у заштићеном директоријуму након што је основна мрежна веза одобрена и ради. Подљуска држи промену umask локалном за ову операцију, а set -C одбија да препише постојећу датотеку:
(
umask 077
set -C
wg genkey > /etc/wireguard/device.key &&
wg pubkey < /etc/wireguard/device.key > /etc/wireguard/device.pub
)
Брзи почетак WireGuard-а документује однос генерисања кључева на који се ослањају ове две команде. Ако се генерисање прекине, оставите уређај нерегистрованим и нека радни ток усагласи датотеке. Не бришите постојећи идентитет само зато што скрипта треба чисто да прође од почетка.
Сачувајте кључ на чекању кроз поновне покушаје. Поновно генерисање идентитета после сваког привременог мрежног квара је начин на који флота остаје са сирочићима peer-овима које нико не може да повеже са уређајем.
Корак 2: ауторизовати запис уређаја
Претпоставимо да инвентар ову плочу назива device-042 и додељује јој 10.90.0.42/32. Служба за регистрацију мора да провери да овај подносилац захтева има право на тај запис. Серијски број откуцан у образац није доказ, јер се серијски бројеви штампају са спољне стране кутије.
Почетни акредитив по уређају, одобрење оператера или атестација потпомогнута хардвером могу да утврде тврдњу. Заштитите интегритет захтева и аутентичност одговора и не замењујте једну заједничку VPN тајну једним заједничким фабричким акредитивом.
Регистровани запис повезује уређај, његов јавни кључ, додељену адресу и дозвољену улогу управљања. Сам WireGuard не дефинише никакав API за регистрацију, па је та служба нешто што свесно градите и њоме управљате.
Корак 3: написати две усклађене конфигурације
Уређају је потребан профил који усмерава префиксе управљања у тунел, а пролазу је потребан peer запис који дозвољава само сопствену изворну адресу овог уређаја. Са пролазом на 10.90.0.1 и мрежом управљања 10.60.0.0/16, страна уређаја изгледа овако:
[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
Вредности у угластим заградама су заменска места, не кључеви. Keepalive је важан када плоча стоји иза NAT-а и мора да остане доступна; није потребан свуда, а додавање из навике држи радио будан без разлога.
На пролазу је peer запис намерно узан:
[Peer]
PublicKey = <device-042 public key>
AllowedIPs = 10.90.0.42/32
Не копирајте листу одредишта уређаја у peer запис на пролазу. На уређају та листа каже шта усмерити у тунел; на пролазу каже које изворне адресе овај peer сме да користи, а то су различите тврдње.
Прослеђивање, правила заштитног зида и повратни пут ка мрежи управљања и даље морају да дозвољавају одобрен приступ. Регистрован peer није дозвола за сваку апликацију иза њега.
Корак 4: утврдити регистрацију као стање животног циклуса
Примените запис пролаза и профил уређаја преко онога који поседује одговарајућу конфигурацију, па означите регистрацију завршеном тек када предвиђени идентитет и адреса буду прихваћени. Поновни покушаји треба да усагласе тај исти запис уместо да доделе други peer или другу адресу.
Држите пут опоравка за прекинуту припрему, укључујући случај када је пролаз прихватио кључ, а уређај никада није написао свој профил.
Када се плоча замени или повуче из употребе, уклоните њен јавни кључ и њену ауторизацију заједно. Нови кључ је свестан догађај поновне регистрације, а не нежељени ефекат поновног сликања. Редослед рада: генерисати локално, ауторизовати према инвентару, написати обе стране, утврдити стање, затим тестирати један захтев управљања кроз тунел.