Ձեր գրառումներում կա common name և հասցե, և երեք հրաման, որոնք բոլորն էլ կարծես հեռացնում են հաճախորդին։ Միայն մեկն է անում այն, ինչ ուզում եք, և ընտրությունը կախված է նրանից՝ պետք է ավարտեք հիմա ընթացող սեսիան, մերժեք հաջորդ մուտքը, թե ընդհանրապես վերցնեք միանալու իրավունքը։ Նախքան որևէ բանի դիպչելը կարդացեք այն ինքնությունը, որն իրականում ունեք, որովհետև OpenVPN-ի լողավազանը հետագայում նույն թունելի հասցեն տալիս է այլ սեսիայի։

Իրականում որ ինքնությունն ունեք

Տարբերակ 3-ի կարգավիճակի ֆայլը սովորական մեկնարկն է։ CLIENT_LIST բաժինը կրում է common name-ը, իրական հասցեն, բայթերի հաշվիչները և միանալու ժամանակը; ROUTING TABLE բաժինը վիրտուալ հասցեն կապում է common name-ի հետ վերջին հղման ժամանակադրոշմով։ common name-ը կայուն ինքնությունն է։ Վիրտուալ հասցեն բաշխում է, և NAT-ի հետևում գտնվող իրական հասցեն կարող է փոխվել սեսիաների միջև՝ առանց սերվերի վրա որևէ բան փոխելու։

Կառավարման ինտերֆեյսը նման տեսք է ցույց տալիս իր status հրամանով և յուրաքանչյուր սեսիայի համար ավելացնում է հաճախորդի ID։ client-kill-ը հենց այդ ID-ին է սպասում, և դա թունելի հասցեն չէ։ Եթե պետք է իմանաք, թե որ common name-ը միանալու պահին որ հասցեն ստացավ, client-connect սկրիպտի միջավայրում երկուսն էլ կան՝ վստահելի արտաքին հասցեի հետ միասին, բայց այդ սկրիպտը գործում է որպես OpenVPN օգտատեր և պահանջում է գրելի մատյանային ուղի։

What you holdWhere it came fromWhat it can act on
Common nameCLIENT_LIST, or the auth hookkill, and credential revocation
Client IDstatus on the management socketclient-kill, that one session
Tunnel addressROUTING TABLE, client-connect environmentNothing durable, the address is recycled

Սպանել հիմա, մերժել մուտքի պահին, չեղարկել ընդմիշտ

Կառավարման ինտերֆեյսում երկու հեռացման հրամաններն էլ սեսիայի գործողություններ են։ kill-ը վերցնում է common name կամ իրական հասցե և պորտ; client-kill-ը վերցնում է հաճախորդի ID-ն և անմիջապես ավարտում այդ օրինակը։ Ոչ մեկը արգելափակում չէ․ հեռացված հաճախորդը վավեր սերտիֆիկատով և գաղտնաբառով վայրկյանների ընթացքում նորից միանում է, ինչը լավ է թեստային peer-ը վերաօգտագործելիս և անօգուտ է, երբ նոթբուքը գողացվել է։

client-deny-ը այլ տեսակի որոշում է։ Սովորաբար այն թողարկվում է authentication կամ client-connect կեռիկից և մերժում է սեսիան պատճառով, այնպես որ հարմար է քաղաքականությանը, որը մերժում է մուտքը, և ոչ այն քաղաքականությանը, որը ընդհատում է կապը։ Փաստաթղթերը նաև զգուշացնում են, որ TLS-ի վերաբանակցման ընթացքում տրված մերժումը անվավեր է դարձնում վերաբանակցված բանալին, մինչդեռ գոյություն ունեցող սեսիան կարող է շարունակվել մինչև անցումային պատուհանի փակվելը։ Եթե պահանջն այն է, որ հաճախորդը հիմա գնացած լինի, փաստաթղթավորված պատասխանը client-kill-ն է։

Երկարաժամկետ հեռացումը այս ամենի տակ է։ Չեղարկեք սերտիֆիկատը և համոզվեք, որ crl-verify-ը ցույց է տալիս ցանկ, որը սերվերը իսկապես վերաբեռնում է, անջատեք հաճախորդին հատուկ կոնֆիգուրացիայի ֆայլը ccd պանակում, կամ անջատեք հաշիվը այն backend-ում, որը հարցնում է authentication կեռիկը։ Չեղարկումը նույնպես ակնթարթային չէ․ լռելյայն reneg-sec կարգավորումներով հաստատված սեսիան կարող է շարունակվել մինչև վերաբանակցումը, ուստի սեսիայի գործողությունը և հավատարմագրերի գործողությունը լրացնում են միմյանց, այլ ոչ թե փոխարինում։

Արդյոք ազատ է կառավարման սոկետը։

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

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

Հերթականությունը, որը կատարում եմ կենդանի սերվերի վրա

Միացեք, կարդացեք ընթացիկ վիճակը, գործեք հենց նոր կարդացած ID-ով, ապա նորից կարդացեք այն։ Փաստաթղթից պատճենված արժեքները սխալ մարդուն սպանելու ամենատարածված ձևն են։

status                     # note the client ID and common name
client-kill 3              # end that session now
kill Test-Client           # alternative: by common name
status                     # confirm the session is gone

Վերևի անունը և թիվը տեղապահեր են, և ID-ները կրկին օգտագործվում են այլ հաճախորդների անջատվելուց հետո։ Նախքան ինչ-որ բան արված գրելը հաստատեք, որ տողը բացակայում է, և ստուգեք, որ միացած հաճախորդների թիվը մեկով է շարժվել, ոչ թե մի քանիսով։

Հաստատեք, որ նա դուրս մնաց

Գրանցեք common name-ը, թունելի հասցեն, արտաքին հասցեն և հեռացման րոպեն։ Եթե նույն common name-ը մեկ րոպե անց նորից հայտնվի, սեսիայի գործողությունը աշխատեց, իսկ հավատարմագրերի շերտը՝ ոչ, ինչը բոլորովին այլ վերանորոգում է, քան այն հրամանինը, որը երբեք ուժի մեջ չմտավ։

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

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