Երկու հարց որոշում են, թե որտեղ է պատկանում VPN-ի մասնավոր բանալին՝ կարելի՞ է բանալու նյութը պատճենել հոսթից, և կարո՞ղ է պրոցեսն այն օգտագործել առանց ստեղնաշարի մոտ մարդու։ Պահոցի մարքեթինգային պիտակը չի պատասխանում ոչ մեկին։ Թունելի դեմոնը, որը պետք է վերադառնա վերագործարկումից հետո, պահանջում է հսկողությունից դուրս օգտագործում, ինչը բացառում է ամեն ինչ, ինչը կապված է մարդու մուտքագրած PIN-ին։

Ընտրեք պատճենման և օգտագործման միջև

Պատճենումը և օգտագործումը տարբեր կերպ են ձախողվում, ուստի դրանք դիտարկեք որպես երկու պահանջ, ոչ թե մեկ։ Հարձակվողը, որը կարող է կարդալ բանալու բայթերը, ինքնությունը տեղափոխում է այլ հոսթ, և սկզբնական մեքենան դա չի նկատում։ Հարձակվողը, որը չի կարող կարդալ բայթերը, բայց հասնում է ստորագրման պրոցեսին, շարունակում է նույնականացվել, քանի դեռ այդ հասանելիությունը տևում է։

Ֆայլում եղած բանալին տրիվիալ պատճենվող է, դրա համար էլ այն ամենահեշտն է պահուստավորել և վերականգնել։ Ծրագրային բանալիների պահոցը փոխում է API-ն, ոչ թե սահմանը. մատակարարը մերժում է իր իսկ արտահանման կանչերը, բայց նույն ադմինիստրատորի կոնտեքստը, որը տեղադրել է բանալին, սովորաբար նյութին հասնելու այլ ուղիներ ունի։ Ծրագրային մատակարարում չարտահանվող լինելը հայտարարություն է աջակցվող գործողությունների մասին, ոչ թե ապարատային պատի ապացույց։ Դիտարկեք այն որպես արգելակ պատահական պատճենման դեմ, ոչ թե պաշտպանություն նրանից, ով արդեն ունի ձեր սեսիան։

TPM-ը կամ սմարթ քարտը ստորագրման գործողությունը կատարում է ապարատի ներսում և վերադարձնում է միայն արդյունքը։ Սա փակում է պատճենման ուղին և օգտագործման ուղին բաց է թողնում ամեն ինչի համար, ինչը կարող է ստորագրություն պահանջել։

Համապատասխանեցրեք պահոցը թունելի դեմոնին

Դեմոնը սա ավելի շատ է սահմանափակում, քան անվտանգության քաղաքականությունը։ WireGuard-ը վերցնում է base64 մասնավոր բանալի ֆայլից կամ wg set-ի մուտքից և վկայագրերի պահոց տանող ուղի չունի, ուստի TPM-ով աջակցվող ինտերֆեյսի բանալին խոսքից դուրս է։ OpenSSL 3-ի դեմ կառուցված OpenVPN-ը կարող է բանալին բեռնել մատակարարի URI-ով, իսկ strongSwan-ը PKCS#11 աջակցության կողքին TPM հավելված է մատակարարում, բայց երկուսն էլ կախված են նրանից, թե ինչպես է կոմպիլացվել ձեր փաթեթը։

Դեմոնը, որը չի հասնում ընտրված պահոցին, ապարատային սահմանը դեկորացիա է դարձնում։ Ինչ-որ մեկը մեկ անգամ արտահանում է բանալին, թողնում է ֆայլում, և նախագծի մնացած մասը հանգիստ աշխատում է այդ պատճենի վրա։

Թարմացումը համապատասխանեցման մյուս կեսն է, և հենց այնտեղ է փլուզվում նախագծերի մեծ մասը։ Պահոցը, որն աշխատում է առաջին գրանցման ժամանակ, բայց յուրաքանչյուր վերաթողարկման համար պահանջում է կոնսոլ մուտք, շրջանցվում է առաջին անգամ, երբ վկայագիրը լրանում է անհարմար ժամին։ Փորձարկեք վերաթողարկման ուղին, քանի դեռ ընթացիկ բանալին դեռ ամիսներ ունի։

Գույքագրեք բանալին տեղափոխելուց առաջ

Գրանցեք, թե ինչ է բանալին, նախքան կփոխեք, թե որտեղ է այն ապրում, որովհետև 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 պրոֆիլը նկարագրում է, թե ինչպես է այն վավերացվում. այդ վավերացումից ոչինչ չի պաշտպանում ռոտացիայից առաջ պատճենված մասնավոր բանալին։

Գրեք որոշումը մեկ տեղում՝ որ պահոցն է պահում բանալին, որ պրոցեսը կարող է օգտագործել այն, ով կարող է վերաթողարկել այն և որն է վերադարձը։ Այդ պարբերությունն այն է, ինչ հարցնում են աուդիտորները, և այն, ինչ գոյատևում է անձնակազմի փոփոխությունից։

Առնչվող հոդվածներ