Օգտագործելով QubesOS Windows 7-ի հետ աշխատելու համար

Habré-ում շատ հոդվածներ չկան, որոնք նվիրված են Qubes օպերացիոն համակարգին, և նրանք, որոնք ես տեսել եմ, չեն նկարագրում դրա օգտագործման փորձը: Կտրվածքի տակ հուսով եմ դա շտկել՝ օգտագործելով Qubes-ը որպես Windows միջավայրի պաշտպանության (դեմ) միջոց օգտագործելու օրինակը և, միևնույն ժամանակ, գնահատել համակարգի ռուսալեզու օգտագործողների թիվը:

Օգտագործելով QubesOS Windows 7-ի հետ աշխատելու համար

Ինչու՞ Քուբես:

Windows 7-ի տեխնիկական աջակցության ավարտի և օգտատերերի աճող անհանգստության պատմությունը հանգեցրեց այս ՕՀ-ի աշխատանքը կազմակերպելու անհրաժեշտությանը՝ հաշվի առնելով հետևյալ պահանջները.

  • ապահովել լիովին ակտիվացված Windows 7-ի օգտագործումը՝ օգտագործողի համար թարմացումներ և տարբեր հավելվածներ (այդ թվում՝ ինտերնետի միջոցով) տեղադրելու ունակությամբ.
  • իրականացնել պայմանների հիման վրա ցանցային փոխազդեցությունների ամբողջական կամ ընտրովի բացառում (ինքնավար շահագործում և երթևեկության զտման ռեժիմներ).
  • ապահովել շարժական կրիչներ և սարքեր ընտրողաբար միացնելու հնարավորություն:

Սահմանափակումների այս շարքը ենթադրում է հստակ պատրաստված օգտվող, քանի որ թույլատրվում է անկախ կառավարում, և սահմանափակումները կապված չեն նրա հնարավոր գործողությունների արգելափակման հետ, այլ հնարավոր սխալների կամ կործանարար ծրագրային էֆեկտների բացառման հետ: Նրանք. Մոդելի մեջ ներքին իրավախախտ չկա։

Լուծում փնտրելիս մենք արագ հրաժարվեցինք ներկառուցված կամ լրացուցիչ Windows գործիքների միջոցով սահմանափակումներ կիրառելու գաղափարից, քանի որ բավականին դժվար է արդյունավետորեն սահմանափակել ադմինիստրատորի իրավունքներով օգտվողին, թողնելով նրան հավելվածներ տեղադրելու հնարավորությունը:

Հաջորդ լուծումը վիրտուալացման միջոցով մեկուսացումն էր: Սեղանի վիրտուալացման հայտնի գործիքները (օրինակ՝ վիրտուալ տուփը) վատ են պիտանի անվտանգության խնդիրների լուծման համար, և նշված սահմանափակումները պետք է կատարվեն օգտագործողի կողմից՝ անընդհատ փոխելով կամ կարգավորելով հյուր վիրտուալ մեքենայի հատկությունները (այսուհետ՝ որպես VM), ինչը մեծացնում է սխալների վտանգը:

Միևնույն ժամանակ, մենք Qubes-ը որպես օգտագործողի աշխատասեղանի համակարգ օգտագործելու փորձ ունեինք, բայց կասկածներ ունեինք հյուր Windows-ի հետ աշխատելու կայունության վերաբերյալ: Որոշվեց ստուգել Qubes-ի ներկայիս տարբերակը, քանի որ նշված սահմանափակումները շատ լավ տեղավորվում են այս համակարգի պարադիգմում, հատկապես վիրտուալ մեքենաների կաղապարների ներդրումը և տեսողական ինտեգրումը: Հաջորդիվ կփորձեմ համառոտ խոսել Qubes-ի գաղափարների ու գործիքների մասին՝ օգտագործելով խնդրի լուծման օրինակը։

Xen-ի վիրտուալացման տեսակները

Qubes-ը հիմնված է Xen հիպերվիզորի վրա, որը նվազագույնի է հասցնում պրոցեսորային ռեսուրսների, հիշողության և վիրտուալ մեքենաների կառավարման գործառույթները: Սարքերի հետ մնացած բոլոր աշխատանքները կենտրոնացված են dom0-ում՝ հիմնված Linux միջուկի վրա (Qubes-ը dom0-ի համար օգտագործում է Fedora բաշխումը):

Օգտագործելով QubesOS Windows 7-ի հետ աշխատելու համար

Xen-ն աջակցում է վիրտուալացման մի քանի տեսակների (ես օրինակներ կտամ Intel ճարտարապետության համար, թեև Xen-ն աջակցում է մյուսներին).

  • paravirtualization (PV) - վիրտուալացման ռեժիմ առանց ապարատային աջակցության օգտագործման, որը հիշեցնում է կոնտեյների վիրտուալացում, կարող է օգտագործվել հարմարեցված միջուկով համակարգերի համար (dom0-ն գործում է այս ռեժիմում);
  • ամբողջական վիրտուալացում (HVM) - այս ռեժիմում ապարատային աջակցությունն օգտագործվում է պրոցեսորի ռեսուրսների համար, իսկ մնացած բոլոր սարքավորումները նմանակվում են QEMU-ի միջոցով: Սա տարբեր օպերացիոն համակարգեր գործարկելու ամենաունիվերսալ միջոցն է.
  • Սարքավորումների պարավիրտուալացում (PVH - ParaVirtualized Hardware) - վիրտուալացման ռեժիմ, որն օգտագործում է ապարատային աջակցություն, երբ սարքաշարի հետ աշխատելու համար հյուր համակարգի միջուկը օգտագործում է հիպերվիզորի հնարավորություններին հարմարեցված դրայվերներ (օրինակ՝ ընդհանուր հիշողություն)՝ վերացնելով QEMU էմուլյացիայի անհրաժեշտությունը: և I/O կատարողականի բարձրացում: 4.11-ից սկսած Linux միջուկը կարող է աշխատել այս ռեժիմով։

Օգտագործելով QubesOS Windows 7-ի հետ աշխատելու համար

Սկսած Qubes 4.0-ից, անվտանգության նկատառումներից ելնելով, պարավիրտուալացման ռեժիմի օգտագործումը լքված է (ներառյալ Intel-ի ճարտարապետության հայտնի խոցելիության պատճառով, որոնք մասամբ մեղմվում են ամբողջական վիրտուալացման միջոցով); PVH ռեժիմն օգտագործվում է լռելյայն:

Էմուլյացիա (HVM ռեժիմ) օգտագործելիս QEMU-ն գործարկվում է մեկուսացված VM-ում, որը կոչվում է stubdomain, դրանով իսկ նվազեցնելով իրականացման մեջ հնարավոր սխալների օգտագործման ռիսկերը (QEMU նախագիծը պարունակում է շատ կոդ, այդ թվում՝ համատեղելիության համար):
Մեր դեպքում այս ռեժիմը պետք է օգտագործվի Windows-ի համար:

Վիրտուալ մեքենաների սպասարկում

Qubes անվտանգության ճարտարապետության մեջ հիպերվիզորի առանցքային հնարավորություններից մեկը PCI սարքերի տեղափոխումն է հյուրի միջավայր: Սարքավորումների բացառումը թույլ է տալիս մեկուսացնել համակարգի հյուրընկալող մասը արտաքին հարձակումներից: Xen-ն աջակցում է սա PV և HVM ռեժիմների համար, երկրորդ դեպքում այն ​​պահանջում է աջակցություն IOMMU (Intel VT-d) - ապարատային հիշողության կառավարում վիրտուալացված սարքերի համար:

Սա ստեղծում է մի քանի համակարգային վիրտուալ մեքենաներ.

  • sys-net, որին փոխանցվում են ցանցային սարքերը և որն օգտագործվում է որպես կամուրջ այլ VM-ների համար, օրինակ՝ նրանք, որոնք իրականացնում են firewall-ի կամ VPN հաճախորդի գործառույթները.
  • sys-usb, որին փոխանցվում են USB և այլ ծայրամասային սարքերի կարգավորիչներ.
  • sys-firewall-ը, որը չի օգտագործում սարքեր, բայց աշխատում է որպես միացված VM-ների համար նախատեսված firewall:

USB սարքերի հետ աշխատելու համար օգտագործվում են պրոքսի ծառայություններ, որոնք, ի թիվս այլ բաների, ապահովում են.

  • HID (մարդու ինտերֆեյսի սարք) սարքի դասի համար՝ հրամաններ ուղարկելով dom0;
  • շարժական կրիչների համար՝ սարքի ծավալների վերահղում դեպի այլ VM-ներ (բացառությամբ dom0-ի);
  • ուղղակիորեն վերահղում դեպի USB սարք (օգտագործելով USBIP և ինտեգրման գործիքներ):

Նման կոնֆիգուրացիայի դեպքում հաջող հարձակումը ցանցի կույտի կամ միացված սարքերի միջոցով կարող է հանգեցնել միայն գործող VM ծառայության փոխզիջմանը, այլ ոչ թե ամբողջ համակարգի: Իսկ VM ծառայությունը վերագործարկելուց հետո այն կբեռնվի իր սկզբնական վիճակում։

VM ինտեգրման գործիքներ

Վիրտուալ մեքենայի աշխատասեղանի հետ փոխազդելու մի քանի եղանակ կա՝ հավելվածների տեղադրում հյուրի համակարգում կամ տեսանյութի նմանակում՝ վիրտուալացման գործիքների միջոցով: Հյուրերի հավելվածները կարող են լինել տարբեր ունիվերսալ հեռահար մուտքի գործիքներ (RDP, VNC, Spice և այլն) կամ հարմարեցված հատուկ հիպերվիզորին (այդպիսի գործիքները սովորաբար կոչվում են հյուրի կոմունալ ծառայություններ): Խառը տարբերակ կարող է օգտագործվել նաև, երբ հիպերվիզորը ընդօրինակում է I/O հյուրի համակարգի համար, և արտաքինից հնարավորություն է տալիս օգտագործելու I/O պրոտոկոլը, որը համատեղում է I/O, օրինակ, Spice-ի նման: Միևնույն ժամանակ, հեռահար մուտքի գործիքները սովորաբար օպտիմիզացնում են պատկերը, քանի որ դրանք ենթադրում են աշխատել ցանցի միջոցով, ինչը դրական ազդեցություն չի ունենում պատկերի որակի վրա:

Qubes-ն ապահովում է VM ինտեգրման իր գործիքները: Նախ, սա գրաֆիկական ենթահամակարգ է. տարբեր վիրտուալ մեքենաների պատուհանները ցուցադրվում են մեկ աշխատասեղանի վրա՝ իրենց գունային շրջանակով: Ընդհանուր առմամբ, ինտեգրման գործիքները հիմնված են հիպերվիզորի հնարավորությունների վրա՝ համօգտագործվող հիշողություն (Xen դրամաշնորհային աղյուսակ), ծանուցման գործիքներ (Xen իրադարձությունների ալիք), համօգտագործվող պահեստային xenstore և vchan կապի արձանագրություն: Նրանց օգնությամբ իրականացվում են qrexec և qubes-rpc հիմնական բաղադրիչները և հավելվածների ծառայությունները՝ աուդիո կամ USB վերահղում, ֆայլերի կամ clipboard-ի բովանդակության փոխանցում, հրամանների կատարում և հավելվածների գործարկում: Հնարավոր է սահմանել քաղաքականություն, որը թույլ է տալիս սահմանափակել VM-ում հասանելի ծառայությունները: Ստորև բերված նկարը երկու VM-ների փոխազդեցության սկզբնավորման ընթացակարգի օրինակ է:

Օգտագործելով QubesOS Windows 7-ի հետ աշխատելու համար

Այսպիսով, VM-ում աշխատանքն իրականացվում է առանց ցանցի օգտագործման, ինչը թույլ է տալիս լիարժեք օգտագործել ինքնավար VM-ները՝ խուսափելու տեղեկատվության արտահոսքից: Օրինակ, այսպես է իրականացվում գաղտնագրման գործողությունների տարանջատումը (PGP/SSH), երբ մասնավոր բանալիներն օգտագործվում են մեկուսացված VM-ներում և չեն անցնում դրանց սահմանները։

Կաղապարներ, հավելվածներ և մեկանգամյա VM-ներ

Qubes-ում օգտատերերի ամբողջ աշխատանքը կատարվում է վիրտուալ մեքենաներում: Հիմնական հյուրընկալող համակարգը օգտագործվում է դրանք վերահսկելու և պատկերացնելու համար: ՕՀ-ն տեղադրվում է կաղապարների վրա հիմնված վիրտուալ մեքենաների (TemplateVM) հիմնական հավաքածուի հետ միասին: Այս ձևանմուշը Linux VM է, որը հիմնված է Fedora-ի կամ Debian-ի բաշխման վրա՝ տեղադրված և կազմաձևված ինտեգրացիոն գործիքներով, ինչպես նաև հատուկ համակարգի և օգտագործողի բաժանմունքներով: Ծրագրաշարի տեղադրումն ու թարմացումը իրականացվում է ստանդարտ փաթեթների կառավարչի (dnf կամ apt) կողմից կազմաձևված պահեստներից՝ պարտադիր թվային ստորագրության ստուգմամբ (GnuPG): Նման VM-ների նպատակն է վստահություն ապահովել դրանց հիման վրա գործարկված կիրառական VM-ների նկատմամբ:

Գործարկման ժամանակ VM հավելվածը (AppVM) օգտագործում է համապատասխան VM ձևանմուշի համակարգի բաժանման նկարը և ավարտվելուն պես ջնջում է այս նկարը՝ առանց փոփոխությունները պահելու: Օգտագործողի կողմից պահանջվող տվյալները պահվում են VM-ի յուրաքանչյուր հավելվածի համար եզակի օգտագործողի բաժանման մեջ, որը տեղադրված է հիմնական գրացուցակում:

Օգտագործելով QubesOS Windows 7-ի հետ աշխատելու համար

Միանգամյա օգտագործման VM-ների օգտագործումը (միանգամյա VM) կարող է օգտակար լինել անվտանգության տեսանկյունից: Նման VM-ն ստեղծվում է գործարկման պահին ձևանմուշի հիման վրա և գործարկվում է մեկ նպատակով՝ մեկ հավելված իրականացնելու, փակվելուց հետո աշխատանքը ավարտելու համար: Միանգամյա օգտագործման VM-ները կարող են օգտագործվել կասկածելի ֆայլեր բացելու համար, որոնց բովանդակությունը կարող է հանգեցնել հատուկ հավելվածների խոցելիության շահագործման: Միանգամյա VM գործարկելու հնարավորությունը ինտեգրված է ֆայլերի կառավարիչին (Nautilus) և էլփոստի հաճախորդին (Thunderbird):

Windows VM-ը կարող է օգտագործվել նաև ձևանմուշ և մեկանգամյա VM ստեղծելու համար՝ օգտատիրոջ պրոֆիլը տեղափոխելով առանձին բաժին: Մեր տարբերակում նման ձևանմուշը օգտագործողի կողմից կօգտագործվի կառավարման առաջադրանքների և հավելվածների տեղադրման համար: Կաղապարի հիման վրա կստեղծվեն մի քանի կիրառական վիրտուալ մեքենաներ՝ սահմանափակ մուտքով դեպի ցանց (ստանդարտ sys-firewall հնարավորություններ) և ընդհանրապես առանց ցանցի մուտքի (վիրտուալ ցանցային սարք չի ստեղծվել): Կաղապարում տեղադրված բոլոր փոփոխություններն ու հավելվածները հասանելի կլինեն այս VM-ներում աշխատելու համար, և եթե նույնիսկ էջանիշերի ծրագրերը ներդրվեն, դրանք փոխզիջման համար ցանցային հասանելիություն չեն ունենա:

Պայքար Windows-ի համար

Վերը նկարագրված հատկանիշները Qubes-ի հիմքն են և բավականին կայուն են աշխատում, դժվարությունները սկսվում են Windows-ից: Windows-ը ինտեգրելու համար դուք պետք է օգտագործեք հյուրի գործիքների մի շարք Qubes Windows Tools (QWT), որը ներառում է Xen-ի հետ աշխատելու վարորդներ, qvideo դրայվեր և տեղեկատվության փոխանակման կոմունալ ծառայությունների մի շարք (ֆայլերի փոխանցում, clipboard): Տեղադրման և կազմաձևման գործընթացը մանրամասնորեն փաստաթղթավորված է նախագծի կայքում, այնպես որ մենք կկիսվենք մեր կիրառման փորձով:

Հիմնական դժվարությունը, ըստ էության, մշակված գործիքների աջակցության բացակայությունն է: Հիմնական մշակողները (QWT) կարծես անհասանելի են, և Windows-ի ինտեգրման նախագիծը սպասում է առաջատար մշակողին: Ուստի առաջին հերթին անհրաժեշտ էր գնահատել դրա կատարումը և պատկերացում կազմել անհրաժեշտության դեպքում ինքնուրույն աջակցելու հնարավորության մասին։ Ամենադժվարը մշակելը և վրիպազերծելը գրաֆիկական դրայվերն է, որը նմանակում է վիդեո ադապտերին և էկրանին՝ ընդհանուր հիշողության մեջ պատկեր ստեղծելու համար, ինչը թույլ է տալիս ցուցադրել ամբողջ աշխատասեղանը կամ հավելվածի պատուհանը անմիջապես հյուրընկալող համակարգի պատուհանում: Վարորդի աշխատանքի վերլուծության ժամանակ մենք հարմարեցրինք Linux միջավայրում հավաքման կոդը և մշակեցինք վրիպազերծման սխեման երկու Windows հյուր համակարգերի միջև: Crossbuild-ի փուլում մենք մի քանի փոփոխություն կատարեցինք, որոնք մեզ համար պարզեցրեցին ամեն ինչ, հիմնականում կոմունալ ծառայությունների «լուռ» տեղադրման առումով, ինչպես նաև վերացրեց կատարողականի տհաճ դեգրադացումը VM-ում երկար ժամանակ աշխատելիս: Աշխատանքի արդյունքները ներկայացրել ենք առանձին պահոցներ, հետևաբար ոչ երկար ժամանակ ոգեշնչող Առաջատար Qubes ծրագրավորող.

Հյուրերի համակարգի կայունության առումով ամենակրիտիկական փուլը Windows-ի գործարկումն է, այստեղ դուք կարող եք տեսնել ծանոթ կապույտ էկրանը (կամ նույնիսկ չտեսնել այն): Հայտնաբերված սխալների մեծ մասի համար կային տարբեր լուծումներ՝ վերացնելով Xen բլոկ սարքի դրայվերները, անջատել VM-ի հիշողության հավասարակշռումը, ամրագրել ցանցի կարգավորումները և նվազագույնի հասցնել միջուկների քանակը: Մեր հյուրերի գործիքները տեղադրում և աշխատում են ամբողջությամբ թարմացված Windows 7-ի և Windows 10-ի վրա (բացառությամբ qvideo-ի):

Իրական միջավայրից վիրտուալ միջավայր տեղափոխվելիս խնդիր է առաջանում Windows-ի ակտիվացման հետ կապված, եթե օգտագործվում են նախապես տեղադրված OEM տարբերակները: Նման համակարգերն օգտագործում են ակտիվացում՝ հիմնված սարքի UEFI-ում նշված լիցենզիաների վրա: Ակտիվացումը ճիշտ մշակելու համար անհրաժեշտ է հյուրընկալող համակարգի (SLIC աղյուսակ) ամբողջ ACPI բաժիններից մեկը թարգմանել հյուրի համակարգ և մի փոքր խմբագրել մյուսները՝ գրանցելով արտադրողին: Xen-ը թույլ է տալիս հարմարեցնել լրացուցիչ աղյուսակների ACPI բովանդակությունը, բայց առանց հիմնականը փոփոխելու: Նմանատիպ OpenXT նախագծի մի կարկատել, որը հարմարեցված էր Qubes-ի համար, օգնեց լուծմանը: Ուղղումները օգտակար են թվացել ոչ միայն մեզ, և դրանք թարգմանվել են Qubes-ի հիմնական պահոցում և Libvirt գրադարանում:

Windows-ի ինտեգրման գործիքների ակնհայտ թերությունները ներառում են աուդիո, USB սարքերի աջակցության բացակայությունը և լրատվամիջոցների հետ աշխատելու բարդությունը, քանի որ GPU-ի համար ապարատային աջակցություն չկա: Բայց վերը նշվածը չի խոչընդոտում VM-ի օգտագործումը գրասենյակային փաստաթղթերի հետ աշխատելու համար, ինչպես նաև չի խանգարում կոնկրետ կորպորատիվ հավելվածների գործարկմանը:

Windows VM ձևանմուշ ստեղծելուց հետո առանց ցանցի կամ սահմանափակ ցանցի գործառնական ռեժիմին անցնելու պահանջը կատարվել է կիրառական VM-ների համապատասխան կոնֆիգուրացիաների ստեղծմամբ, իսկ շարժական մեդիան ընտրովի միացնելու հնարավորությունը լուծվել է նաև ստանդարտ ՕՀ գործիքներով. , դրանք հասանելի են VM sys-usb համակարգում, որտեղից կարելի է «փոխանցել» պահանջվող VM-ին։ Օգտագործողի աշխատասեղանն այսպիսի տեսք ունի.

Օգտագործելով QubesOS Windows 7-ի հետ աշխատելու համար

Համակարգի վերջնական տարբերակը դրականորեն (որքան թույլ է տալիս նման համապարփակ լուծումը) ընդունվել է օգտատերերի կողմից, և համակարգի ստանդարտ գործիքները հնարավորություն են տվել ընդլայնել հավելվածը դեպի օգտվողի շարժական կայան՝ VPN-ի միջոցով հասանելիությամբ:

Փոխարենը մի եզրակացության

Վիրտուալիզացիան, ընդհանուր առմամբ, թույլ է տալիս նվազեցնել առանց աջակցության մնացած Windows համակարգերի օգտագործման ռիսկերը. այն չի ստիպում համատեղելիություն նոր սարքավորման հետ, թույլ է տալիս բացառել կամ վերահսկել մուտքը համակարգ ցանցի կամ միացված սարքերի միջոցով, և թույլ է տալիս. իրականացնել մեկանգամյա գործարկման միջավայր:

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

Ներկայումս զարգացման հիմնական շեշտը դրված է Linux միջավայրերի ֆունկցիոնալության ընդլայնման վրա: Թողարկման է պատրաստվում 4.1 տարբերակը, որը հիմնված կլինի Fedora 31-ի վրա և կներառի Xen և Libvirt հիմնական բաղադրիչների ընթացիկ տարբերակները։ Հարկ է նշել, որ Qubes-ը ստեղծվել է տեղեկատվական անվտանգության մասնագետների կողմից, ովքեր միշտ անհապաղ թողարկում են թարմացումներ, եթե հայտնաբերվեն նոր սպառնալիքներ կամ սխալներ:

Հետո

Փորձարարական հնարավորություններից մեկը, որը մենք մշակում ենք, թույլ է տալիս մեզ ստեղծել VM-ներ՝ GPU-ին հյուրի մուտքի աջակցությամբ Intel GVT-g տեխնոլոգիայի հիման վրա, ինչը թույլ է տալիս օգտագործել գրաֆիկական ադապտերի հնարավորությունները և զգալիորեն ընդլայնել համակարգի շրջանակը: Գրելու պահին այս ֆունկցիոնալությունն աշխատում է Qubes 4.1-ի թեստային կառուցվածքների համար և հասանելի է GitHub.

Source: www.habr.com

Добавить комментарий