Ծառայությունը մեկնարկում է, հաճախորդը միանում է, և սերվերի կողմում երբեք երթուղի չի հայտնվում։ Կամ դեմոնը հրաժարվում է մեկնարկել և նշում է հրաման, որը չի կարողացել կատարել։ Երկու ելքերն էլ հետևում են նույն երեք տողերին, որոնք սովորաբար միասին պատճենվում են կարծրացման ուղեցույցից՝ անցում չարտոնված հաշվի, խմբից հրաժարում և ֆայլային համակարգի արմատի փոփոխություն։ Երեքից միայն մեկն է թաքցնում ֆայլեր, և միայն մեկն է վերցնում երթուղային աղյուսակը փոխելու իրավունքը։ Դրանք առանձնացնելը հենց այն ձևն է, որով իմանում ես, թե որ տողն ես իրականում ուզում։

Ինչ է վերցնում բանտը, ինչ դեմոնին դեռ պետք է

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

Չարտոնված հաշվի անցումը առանձին սահմանափակում է։ Գործընթացը, որը հրաժարվել է root-ից, կարող է չկարողանալ փոխել երթուղիները կամ բարձրացնել ինտերֆեյսը նույնիսկ այն ժամանակ, երբ երկուական ֆայլը հենց այնտեղ է, ուստի երկու խափանումները պետք է ախտորոշվեն առանձին։

Որ ուղղումն է պետք, դա որոշում են երեք պայման

Առաջին պայմանն այն է, թե ինչպես է ձեր կառուցումը տեղադրում երթուղիները։ Նոր OpenVPN թողարկումները կազմաձևում են ինտերֆեյսը և երթուղային աղյուսակը գործընթացի ներսում, մինչդեռ հին փաթեթներն ու սեփական կարգավորումները հենվում են արտաքին գործիքների կամ up և down սկրիպտների վրա։ Եթե մատյանը նշում է հրաման, ներգրավված է արտաքին գործիք, և բանտը թաքցնում է այն։ Եթե մատյանը փոխարենը ցույց է տալիս թույլտվության սխալ, խնդիրը հաշվի մեջ է։

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

Signal in the logOther side of the boundaryRepair direction
Command not found after startupBinary and its libraries absent inside the new rootPopulate the jail, or drop the chroot line
Operation not permittedAccount lost the privilege to edit routesKeep the account privileged, or pre-create routes elsewhere
No such deviceJail lacks the tun device nodeCreate the node inside, or open it before the root change

Ինչ պետք է պարունակի աշխատող բանտը

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

ldd /usr/sbin/ip
chroot /etc/openvpn/jail /sbin/ip route show
chroot /etc/openvpn/jail /sbin/ip link set tun0 up

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

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

Փոխարենը փոքրացրեք կարծրացումը

Եթե բանտը գոյություն ունի միայն այն պատճառով, որ ուղեցույցն այդպես է ասել, ապա այդ մեկ տողը հեռացնելը՝ հաշվի սահմանափակումները պահպանելով, պաշտպանելի արդյունք է։ Դեմոնը պահպանում է իր տեսքը ֆայլային համակարգի վրա և կորցնում է խնդիրը, իսկ արտոնությունների իջեցումը դեռ վերցնում է root-ը երկարատև գործընթացից։

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

Նախքան ընտրելը բաժանեք երեք տողերը

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

Երբ այն նորից երթուղավորում է, գործարկեք մեկ հաճախորդի սեսիա ավելի բարձր մանրամասնությամբ և կարդացեք այն տողը, որը նշում է հրամանը կամ ձախողված թույլտվությունը։ Այդ տողն արժե ավելի, քան ժամկետը, որը հաճախորդը վերջում հաղորդում է։

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