IPsec ESP: ինչ է այն կրում և ինչպես ապացուցել, որ հոսում է
ESP-ն թունելային ռեժիմում փաթաթում է ներքին IP փաթեթը և SPI-ով նույնականացնում իր ասոցիացիան։ Կարդացեք վիճակը, ապա տեսեք, թե ինչպես է մեկ հոսքը շարժում հաշվիչները։
ESP-ն կրում է երթևեկությունը IPsec VPN-ում, և դրա runbook-ը սկսվում է մեկ կանոնով՝ կարդացեք անվտանգության ասոցիացիան, նախքան քաղաքականություն փոխելը։ ESP-ի անբացատրելի վարքագծի մեծ մասը վերաբերում է սելեկտորին, որը չէր համապատասխանում, ռեժիմին, որը ենթադրվել է փոխարենը կարդալու, կամ հաշվիչին, որը ոչ ոք չէր ստուգել, մինչ ուղարկվում էր մեկ հոսք։ Ստորև ներկայացված երեք քայլերը հաստատում են, թե ինչն ինչ է կրում, ապացուցում են, որ մեկ հոսքը օգտագործում է այն, և թողնում են հետադարձ, որը կախված չէ հիշողությունից։ Յուրաքանչյուր քայլ տալիս է մեկ դիտարկում, որն արժե գրի առնել։
Իմացեք դաշտերը, նախքան դրանք կարդալը
ESP-ն վերնագիր է դնում պաշտպանված տվյալների առաջ և վերջավորություն՝ դրանցից հետո։ Վերնագիրը կրում է անվտանգության պարամետրերի ինդեքս, որը որոշում է, թե ստացողը որ ասոցիացիան պետք է օգտագործի, հաջորդականության համար՝ կրկնությունը հայտնաբերելու համար, և վերջավորության մեջ լցոն, որը պահում է բեռը հավասարեցված գաղտնագրի համար։ Վերջավորության հաջորդ վերնագրի դաշտը ասում է, թե ինչ է պաշտպանված բովանդակությունը, և այդպես ստացողը գիտի, թե ինչ է ապակապսուլավորել։
Ռեժիմը փոխում է այն, ինչ գտնվում է այդ պաշտպանության ներսում։ Թունելային ռեժիմում պաշտպանված նյութը ամբողջական ներքին IP փաթեթ է, և նոր արտաքին վերնագիրն այն տանում է ծայրակետերի միջև։ Տրանսպորտային ռեժիմում պաշտպանությունը փաթաթում է գոյություն ունեցող փաթեթի վերին շերտի բեռը, ուստի երկրորդ IP վերնագիր բացելու կարիք չկա։ Որ ռեժիմն է օգտագործվում, կոնֆիգուրացիայի փաստ է, ոչ թե մեկնաբանության հարց։ Կարդացեք այն վիճակի գրառումից՝ փոխարենը սխեմայից ենթադրելու։
Ոչ մի ռեժիմ չի թաքցնում արտաքին հասցեավորումը, որը պետք է հասցնի փաթեթը։ Դա դիզայնի հատկություն է, ոչ թե թերություն, և դրա համար միջանկյալ դիտորդը դեռ կարող է տեսնել, թե որ երկու հասցեներն են խոսում, նույնիսկ երբ բեռը անթափանց է։
Առաջին քայլ՝ կարդացեք վիճակը, ապա քաղաքականությունը
Վիճակի գրառումները պահում են բանալիներն ու հաշվիչները, իսկ քաղաքականության գրառումները՝ սելեկտորները, որոնք որոշում են, թե ով կարող է օգտագործել դրանք։ Linux-ում երկուսն էլ երևում են առանց փաթեթների որսի, և այդ հերթականությամբ կարդալը երկու հարցերը առանձին է պահում։
ip xfrm state
ip xfrm policy
Վիճակի արտածման մեջ ստուգեք ասոցիացիայի աղբյուրն ու նպատակակետը, ռեժիմը, և արդյոք կապսուլավորումը ցույց է տալիս UDP պորտեր։ Այդ պորտերը նշանակում են, որ օգտագործվում է NAT-ի անցում, ինչը փոխում է, թե ինչ պետք է թույլատրի միջանկյալ հրապարակախցիկը, բայց ոչ այն, թե որ սելեկտորները կամ բանալիներն են գործում ծայրերում։
Ապա կարդացեք քաղաքականության սելեկտորները։ Այն սելեկտորը, որը նշում է ավելի նեղ նախածանց, քան ձեր փորձարկվող երթևեկությունը, ամենահաճախ հանդիպող պատճառն է, թե ինչու աշխատող թունելը կարծես անտեսում է հոսքը, և սխալ արձանագրության սելեկտորը նույն լռությունն է տալիս։
| Field | Where it appears | What it decides |
|---|---|---|
| Security parameter index | ESP header, and the receiving state entry | Which association and keys the receiver applies |
| Sequence number | ESP header | Replay detection for that association |
| Next header | ESP trailer | What the decapsulated payload contains |
| Inner IP header | Inside tunnel-mode payload only | The original source and destination the endpoints act on |
| Traffic selectors | Policy, not the packet | Which local traffic is allowed to use the association |
Արտադրողների գործիքները նույն տեղեկությունը տպում են ավելի հարմար ձևով։ ipsec statusall strongSwan-ում այն թվարկում է դուստր ասոցիացիաները, նրանց սելեկտորները և բայթային հաշվիչները, ինչը հաճախ ավելի արագ է, քան հում xfrm արտածումը կարդալը, երբ արդեն գիտես, թե որ դուստրին նայել։
Երկրորդ քայլ՝ ապացուցեք, որ մեկ հոսքը շարժում է հաշվիչները
Հաշվիչները իմաստ ունեն միայն, եթե գիտես, թե ինչը պետք է շարժեր դրանք, ուստի ընտրիր աղբյուր և նպատակակետ, որոնք սելեկտորը հաստատ ծածկում է, և ուղարկիր մեկ անվնաս հարցում։ Ապա նորից կարդա նույն գրառումը և համեմատիր։
ip -s xfrm state
tcpdump -ni any esp
Երկու ընթերցում տարբեր պատմություններ են պատմում։ Այն փաթեթները, որոնք աճում են ելքային կողմում, բայց երբեք մուտքային կողմում, մատնանշում են փոխանցման կամ վերադարձի ուղու խնդիր, այլ ոչ թե բանալու խնդիր, քանի որ փաթեթը կապսուլավորվել է և գնացել։ Եթե ոչ մի հաշվիչ չի շարժվում, երթևեկությունը երբեք չի համապատասխանել քաղաքականությանը, և սելեկտորն այն տեղն է, որտեղ պետք է նայել։
Նույն քայլի որսը հաստատում է կապսուլավորումը լարի վրա, ներառյալ այն, թե արդյոք արտաքին փաթեթները ESP են, թե UDP-ով կապսուլավորված ESP։ Այն նաև ցույց է տալիս այն հասցեները, որոնք իրականում կրել են հոսքը, և դրանք երբեմն տարբերվում են կոնֆիգուրացիայում եղածներից, որը կարդում էիր։
Երրորդ քայլ՝ փոխեք մեկ բան և պահպանեք հետադարձը
Նախքան որևէ բան խմբագրելը գրի առեք ասոցիացիայի աղբյուրը, նպատակակետը, ռեժիմը, սելեկտորները և հաշվիչները։ Եթե փոփոխությունը վատացնում է վիճակը, այդ գրառումն է, որ թույլ է տալիս վերականգնել նախորդ վիճակը՝ փոխարենը գուշակությունից աշխատող կոնֆիգուրացիա նորից կառուցելու։ Այդ գրառումը մեկ րոպե է տևում և խնայում է մեկ ժամ հետո։ Այն նաև միակ արտեֆակտն է, որ գոյատևում է փոփոխությունը կատարած մարդուց հետո։
Փոխեք մեկ սելեկտոր կամ մեկ պարամետր, նորից բեռնեք այն և կրկնեք երկրորդ քայլը նույն հոսքի վրա։ Ասոցիացիան ջնջելը քանդում է այն օգտագործող յուրաքանչյուր հոսք, ուստի նպատակային խմբագրումը և դուստրի վերաբեռնումը գրեթե միշտ ավելի լավն են, քան վիճակը դատարկելը՝ տեսնելու, թե ինչ կլինի։
Սելեկտորի խմբագրման հետադարձը նախորդ քաղաքականության վերականգնումն ու վերաբեռնումն է, այն պայմանով, որ գործընկերը կարող է համապատասխան փոփոխության կարիք ունենալ, եթե սելեկտորը բանակցվում է, այլ ոչ թե տեղական է։ Գրի առեք այդ կախվածությունը, քանի դեռ այն թարմ է, որովհետև կիսով չափ վերականգնված զույգը ավելի դժվար է մտածել, քան երկու վերջնական վիճակներից որևէ մեկը։
Վերջում, պահեք շրջանակը ազնիվ։ Հոսող ESP ասոցիացիան ապացուցում է, որ երկու դարպասները պաշտպանում և հասցնում են սեգմենտը, և ոչինչ չի ասում այն մասին, թե արդյոք վերևի հավելվածը նույնականացնում է իր օգտատերերին կամ գաղտնագրում է այն, ինչ պահում է։ Դրանք առանձին կառավարումներ են՝ առանձին ապացույցներով, և runbook-ը ավարտված է միայն այն ժամանակ, երբ հաջորդ մարդը կարող է կրկնել այն գրառումներից։