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

Ներմուծման երկխոսությունից մինչև հրահանգ

Պրոֆիլը հրահանգներով տեքստային ֆայլ է, և հաճախորդը կարդում է դրանք նախքան որևէ թունելի գոյությունը։ up, down կամ tls-verify-ի նման հրահանգը անվանում է արտաքին ծրագիր, որը OpenVPN-ը պետք է գործարկի որոշակի պահին։ Արդյոք OpenVPN-ը պատրաստ է գործարկել այն, առանձին կարգավորում է՝ script-security անունով, և պրոֆիլը սովորաբար սահմանում է նաև այն։

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

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

Ինչ է իրականում բացում յուրաքանչյուր մակարդակ

Մակարդակ 0-ը ամբողջությամբ արգելում է արտաքին ծրագրերի կանչերը, ինչը հետևողական է այն հաճախորդի համար, որը առանց օգնության ինքն է կարգավորում իր ինտերֆեյսը, և անհետևողական՝ նրա համար, որը դիմում է օպերացիոն համակարգին։ Մակարդակ 1-ը՝ լռելյայնը, թույլատրում է ներկառուցված գործարկվող ֆայլերը, որոնք անհրաժեշտ են ինտերֆեյսի և երթուղու կարգավորմանը։ Ոչ մի մակարդակ չի գործարկում օգտագործողի տված որևէ բան։

LevelWhat OpenVPN may executeWhat it exposes
0No external programs at allInterface and route setup must not depend on helpers
1 (default)Built-in helpers such as ip, ifconfig, route or netshPrivileged commands the platform already ships
2Built-in helpers plus user-defined scriptsWhatever the named script does with the client's privileges
3Everything above, plus passwords in environment variablesCredentials visible to child processes and their logs

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

Այս թվերից ոչ մեկը ուժի կարգավորում չէ։ Մակարդակ 3-ի պրոֆիլը ավելի լավ գաղտնագրում չունի, քան մակարդակ 1-ինը՝ այն պարզապես ունի ավելի մեծ գործարկման մակերես, և թունելը նույնն է։

Որոշեք, թե ինչի է արժանի պրոֆիլը

Նախ հարցրեք, թե ինչի համար է սկրիպտը, հետո՝ թե որ մակարդակն է նրան պետք։ Կեռ, որը մղում է DNS կարգավորումները կամ միացումից հետո վերանորոգում է երթուղին ինչ-որ բան գործարկելու օրինական պատճառ է։ Կեռ, որը ժամանակավոր պանակում կանչում է անծանոթ բինար ֆայլ, կանգ առնելու պատճառ է։

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

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

grep -nE 'script-security|^up |^down |tls-verify' client.ovpn

Փոխեք մեկ բան, ապա հետևեք նաև ապամոնտաժմանը

Եթե պրոֆիլն իսկապես սկրիպտի կարիք ունի, փոխեք միայն մակարդակը և միայն այդ պրոֆիլի համար։ Գործարկեք հաճախորդը առաջին պլանում մանրամասն ելքով, որպեսզի սկրիպտի սեփական սխալները տեսանելի լինեն՝ ծառայության կառավարիչը դրանք չկուլ տա։

openvpn --config client.ovpn --script-security 2 --verb 3
ip route show default

Փորձարկեք ամբողջ կյանքի ցիկլը, ոչ միայն միացումը։ Ձախողվող անջատման կեռը երթուղիները թողնում է մատնացույց անելու մեռած թունելին, ինչը ստեղծում է մեքենա, որը միացված է երևում և ոչ մի տեղ չի հասնում։ Նախքան փոփոխությունը ավարտված հայտարարելը մեկ անգամ նորից միացեք և մեկ անգամ անջատվեք, և յուրաքանչյուրից հետո ստուգեք երթուղավորման աղյուսակը։

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

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

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