tls-crypt-v2 profila ielīmēšana biļetē šķiet nekaitīga, līdz saskaitāt, kas ir failā. Klienta vadības kanāla atslēga atrodas blakus tās pašas atslēgas šifrētai kopijai, un trešais objekts, iesaiņošanas atslēga, nekad nepamet pieņēmēju serveri. Šie trīs atbild uz dažādiem jautājumiem par glabāšanu, koplietošanu un izņemšanu. To atdalīšana atrisina lielāko daļu politikas strīdu pirms to sākuma.

Ko profils patiešām satur

tls-crypt-v2 klienta puse ir atslēga un tās ietītā kopija. Klients izmanto vienkāršo atslēgu vadības kanāla aizsardzībai un iestatīšanas laikā nodod ietīto kopiju serverim, tāpēc serveris atgūst to pašu atslēgu, neuzglabājot atklāta teksta kopiju katram klientam. Iesaiņošanas atslēga padara šo atgūšanu iespējamu un pieder tikai pieņēmējai pusei. Viss turpmāk izriet no tā, kur dzīvo šie trīs objekti.

ObjectWhere it livesWhat can open itWhat a leak costs
Server wrapping keyaccepting servers onlythe unwrap step inside the serverevery wrapped copy issued to that group becomes readable
Wrapped client keyinside the client profilethe server wrapping keyit names a client and exposes its metadata, but not the key inside
Client control keyinside the client profile, usable as-isthe client that owns itsomeone can open handshakes as that client until the server refuses the key

Lasiet tabulu pēc glabāšanas, nevis pēc nosaukuma, un sekas izkritīs pašas. Iesaiņošanas atslēgas zaudēšana ir dārgais notikums, jo nekas profilā nevar to atjaunot, un godīgā atgūšana ir grupas atkārtota izdošana. Noplūdis profils ir lētāks, bet daudz izplatītāks, jo cilvēki ielīmē profilus biļetēs, ticot, ka ietītā kopija padara failu drošu koplietošanai. Diviem bojājumiem vajadzīgas dažādas atbildes, tāpēc objekti tiek turēti atsevišķi.

Kāpēc ietītā kopija nav viss stāsts

Profils nes lietojamo klienta materiālu kopā ar tā ietīto līdzinieku, tāpēc kopijas aizsardzība serverim neko neizsaka par faila aizsardzību. Blob ir drošs pārsūtīšanai un nedrošs publicēšanai. Tā iekšienē esošie metadati ir redzami ikvienam, kas saņem blob, tostarp ikvienam, kas vēlāk lasīs biļeti, kurā tas tika ielīmēts.

Uztveriet profilu kā akreditācijas datus, nevis kā konfigurācijas paraugu. Noplūdis fails dod tā turētājam strādājošu klienta identitāti, līdz serveris pārstāj pieņemt šo identitāti, un iesaiņošana neko nedara attiecībā uz šo logu. Izsniedziet vienu profilu katram klientam, lai atsaukšana paliktu viena faila lēmums, un dublējiet iesaiņošanas atslēgu atsevišķi no tās iespējotās servera konfigurācijas. Neviens ieradums nelabo kompromitētu profilu, bet abi nosaka, cik ātri tiks ierobežots nākamais.

Kur verifikācijas āķis atrodas rokasspiedienā

Verifikācijas āķis darbojas pirms TLS slāņa atvēršanas, un tā uzdevums ir pārbaudīt metadatus, kas nes ietītajā blobā. Tas saņem šos metadatus plus mazu, dokumentētu vidi, un tam ir mazāk ar ko strādāt nekā autentifikācijas āķim. Pieņēmums, ka tas redz lietotājvārdus, sesijas stāvokli vai spraudņu mainīgos, ir ierastais veids, kā šis āķis tiek slikti uzrakstīts. Lasiet paša āķa rokasgrāmatas sadaļu, nevis aizņemieties gaidas no cita āķa.

Tā izejas statuss ir lēmums: rezultāts, kas nav nulle, noraida klientu, un nulles rezultāts ļauj rokasspiedienam turpināties. Tāpēc politikai jāsaka, kas notiek, ja metadati trūkst, tos nevar parsēt vai tie ir negaidīti. Vispirms uzrakstiet noraidīšanas ceļu, tad izlemiet, kuras vērtības ir pieņemamas.

tls-crypt-v2 /etc/openvpn/server/tcv2-server.key
tls-crypt-v2-verify /etc/openvpn/server/verify-client-metadata.sh

Šīs divas rindas ir politikas virsma serverī: viena nosauc iesaiņošanas atslēgu, otra nosauc programmu, kas vērtē katru klientu. Viss interesantais dzīvo skriptā, kas pelnījis versiju kontroli un tādu pašu pārskatīšanu kā jebkurš cits piekļuves noteikums.

Konts, sertifikāts un vadības atslēga iziet atsevišķi

Agrīna vadības kanāla pieņemšana nav autentifikācija, jo tā notiek pirms TLS identitātes pārbaudes un pirms jebkuras konta autorizācijas. Konta atspējošana, sertifikāta atsaukšana un klienta vadības atslēgas noraidīšana ir trīs darbības ar trim mehānismiem. Izvietojumā, kas veic tikai vienu no tām, ir plaisa, nevis politika. Apzināti saskaņojiet trīs un pierakstiet, kurš solis kādu pilnvaru īsteno.

Laiks ir otrā atšķirība. Mainītais pieņemšanas saraksts attiecas uz jauniem rokasspiedieniem, bet jau izveidotās sesijas turpina darboties, līdz kaut kas tās pārtrauc. Jaunā saraksta ierakstu skaitīšana kā pierādījums, ka vecās sesijas ir beigušās, ir veids, kā noņemts klients paliek pieslēgts stundām ilgi.

Nesaskaņotas pilnvaras atstāj divus caurumus, ko praksē ir viegli atrast. Konts var būt atspējots, kamēr tā vadības atslēga joprojām atver rokasspiedienu, un sertifikāts var būt atsaukts, kamēr metadatu politika joprojām pieņem to pašu klientu. Abi ir tā pati kļūda dažādās vietās, jo operators vienu sarakstu uzskatīja par visu pilnvaru. Novietojiet trīs sarakstus blakus noņemšanas brīdī, un kļūda kļūst redzama.

Profila izsniegšana un atsaukšana

Izsniegšana ir vieglākā puse: izveidojiet klienta atslēgu pieņēmējā pusē, nododiet profilu tieši vienam īpašniekam, turiet iesaiņošanas materiālu ierobežotu un palaidiet to pašu verifikācijas programmu katrā pieņēmējā serverī. Lēta uzņemšana ir visas grupas īpašība, nevis jaunākā resursdatora. Otrs serveris ar vecāku vai vaļīgāku skriptu klusi kļūst par vājāko ceļu izvietojumā.

Atsaukšanai vajadzīgi trīs soļi apzinātā secībā. Noraidiet klientu verifikācijas āķī, lai jauni rokasspiedieni neizdotos, atsauciet tā sertifikātu, ja tiek izmantota PKI, un atspējojiet kontu, lai vēlākai autorizācijai nebūtu ko autorizēt. Pēc tam pārtrauciet sesijas, ko pieļāva vecā pieņemšana, jo tās nepamanīs nevienu no trim. Vingrinieties secību ar klientu, kuru varat atļauties salauzt.

Metadati profilā ir šīs politikas ievade, nevis pierādījums, ka piekļuves kontrole jau pastāv. OpenVPN 2.6 projektēšanas dokuments apraksta objektus un to vilkto robežu, bet to izpilde paliek operatoram.

Saistītie raksti