Каде треба да живее приватен клуч за VPN: датотека, CNG или TPM?
Изберете помеѓу датотека со клуч, неизвозливо софтверско складиште и TPM за идентитет на VPN, потоа докажете го изборот со команди и план за враќање.
Две прашања одлучуваат каде припаѓа приватен клуч за VPN: дали материјалот на клучот може да се копира од домаќинот и дали процесот може да го користи без никого на тастатурата. Маркетинг етикетата на складиште не одговара ни на едното. Демонот на тунел што мора да се врати по рестарт бара употреба без надзор, што исклучува сѐ што е врзано за PIN што го внесува човек.
Изберете помеѓу копирање и користење
Копирањето и користењето откажуваат на различен начин, затоа третирајте ги како два барања, а не едно. Напаѓач што може да ги чита бајтовите на клучот го носи идентитетот на друг домаќин, а оригиналната машина тоа не го забележува. Напаѓач што не може да ги чита бајтовите, но може да стигне до процесот на потпишување, сѐ уште се автентификува додека трае тој пристап.
Клуч во датотека е тривијално копирлив, затоа е и најлесен за архивирање и враќање. Софтверско складиште за клучеви го менува API-то, а не границата: добавувачот ги одбива сопствените повици за извоз, но истиот администраторски контекст што го инсталирал клучот обично има други патишта до материјалот. Неизвозливо кај софтверски добавувач е изјава за поддржани операции, а не доказ за хардверски ѕид. Третирајте го како забавувач против случајно копирање, не како заштита од некого што веќе ја има вашата сесија.
TPM или паметна картичка ја извршува операцијата за потпишување во хардверот и враќа само резултат. Тоа го затвора патот за копирање, а патот за користење го остава отворен за сѐ што може да побара потпис.
Усогласете го складиштето со демонот на тунелот
Демонот го ограничува ова повеќе од безбедносната политика. WireGuard зема приватен клуч во base64 од датотека или од влезот на wg set и нема пат до складиште за сертификати, па клуч на интерфејс со TPM поддршка не доаѓа во предвид. OpenVPN компајлиран против OpenSSL 3 може да вчита клуч преку URI на добавувач, а strongSwan испорачува TPM додаток покрај PKCS#11 поддршка, но двете зависат од тоа како е компајлиран вашиот пакет.
Демон што не може да стигне до избраното складиште ја претвора хардверската граница во декорација. Некој еднаш го извезува клучот, го остава во датотека, и остатокот од проектот тивко работи на таа копија.
Обновата е другата половина од усогласувањето, и тука се распаѓаат повеќето проекти. Складиште што работи при првата регистрација, но бара најава на конзола за секое повторно издавање, се заобиколува првиот пат кога сертификатот истекува во незгоден час. Тестирајте го патот за повторно издавање додека тековниот клуч сѐ уште има месеци.
Инвентаризирајте го клучот пред преместување
Забележете што е клучот пред да го промените каде живее, бидејќи миграција што ги губи subject alternative names го крши тунелот на начин што се чита како грешка во рутирањето. Извезете го сертификатот, потврдете дека приватниот клуч е читлив таму каде што демонот го очекува и проверете дека парот навистина се совпаѓа.
openssl x509 -in vpn.crt -noout -subject -ext subjectAltName
openssl pkey -in vpn.key -check -noout
openssl x509 -in vpn.crt -noout -pubkey | openssl sha256
openssl pkey -in vpn.key -pubout | openssl sha256
Последните два диџеста мора да бидат идентични. Ако не се, демонот го завршува поставувањето и потоа не успева при секој обид со грешка за сертификат или потпис што не укажува никаде близу до вистинската причина. Еквивалентот за WireGuard е пократок, бидејќи јавниот клуч се изведува директно од приватниот: wg pubkey < /etc/wireguard/wg0.key мора да го испише клучот на партнерот што вашиот сервер веќе го чува.
Дозволите припаѓаат на истиот инвентар. stat -c '%a %U:%G' /etc/wireguard/wg0.key треба да врати 600 root:root, а сѐ што е читливо за групата или светот значи дека клучот веќе бил достапен за процеси што не сте ги предвиделе.
Проверете го складиштето и патот за користење
Проверката има три дела, а третиот се прескокнува. Потврдете дека клучот постои во избраното складиште, потврдете дека демонот го вчитал тој клуч, а не преостаната копија, и потоа потврдете дека сѐ уште се стартува кога артефактот од извозот го нема.
certutil -store -user My
certutil -csp "Microsoft Platform Crypto Provider" -key -user
certutil -verifykeys -user My
ipsec listcerts
На Windows првата команда го наведува личното складиште и го печати добавувачот на клучот до секој запис, и таму се појавува сертификат што изгледа хардверски заштитен, но седи во софтверскиот добавувач. Втората наведува клучеви што ги држи платформскиот криптодобавувач, па идентитет на VPN што таму недостасува при присутен сертификат значи дека приватната половина живее на друго место. На Linux порта ipsec listcerts известува што вчитал strongSwan, вклучително клучеви од TPM додатокот. Споредете отпечатоци или хешови на јавни клучеви со инвентарот наместо да верувате на бројот на записи.
Негативниот тест е оној што го докажува проектот. Преместете го извезениот клуч надвор од конфигурацискиот директориум на демонот, рестартирајте ја услугата и прочитајте во дневникот кој идентитет го претставува. Тунел што сепак се подига го користи складиштето; неуспешно стартување значи дека проектот навистина работел на копија.
Запишете обновување и враќање
Враќањето значително се разликува меѓу двете фамилии, и таа разлика припаѓа на проектната белешка, а не на повик за инцидент. Клуч во датотека може да се архивира шифриран и врати, па неуспешната миграција е повратна. Неизвозлив клуч не може воопшто да се архивира, што повторното издавање и повторната регистрација ги прави единствен пат за опоравување кога уредот умира.
Проверете го истекот пред да стане прекин: openssl x509 -in vpn.crt -noout -checkend 2592000 завршува со ненула код кога сертификатот истекува во рок од триесет дена, па директно се вклопува во проверка за надзор. Неделно извршување на тој ред го фаќа обновувањето што никој не го испланирал.
Отстранувањето се случува на серверот: избришете го партнерот или отповикајте го серискиот број, потоа потврдете дека тунелот откажува, бидејќи клиент со кеширана сесија може извесно време да скрие наполовина завршено отповикување. Отповикувањето мора да стигне и до CRL или OCSP патот на концентраторот, не само до базата на CA. Сертификатот е јавен документ, а профилот RFC 5280 опишува како се валидира; ништо во таа валидација не штити приватен клуч копиран пред ротацијата.
Запишете ја одлуката на едно место: кое складиште го држи клучот, кој процес смее да го користи, кој може повторно да го издаде и какво е враќањето. Тој пасус е она што го бараат ревизорите и она што преживува промена на персоналот.