Ինչի՞ կարող է դեռ հասնել վարակված վեբ դարպասը:
Վեբ դարպասը սահմանափակում է, թե այցելուն ինչ է բացում, ոչ թե ինչի կարող է միանալ վարակված հոսթը: Երկու վերանայում, լիազորությունների աղյուսակ և հասանելիության չափման հրամաններ:
Ենթադրենք՝ դարպասի հոսթը վարակվել է, մինչ դրա վկայականը դեռ վավեր է: Յուրաքանչյուր կանոն, որը սահմանում էր, թե այցելուը որ էջերը կարող է պահանջել, ուժի մեջ է մնում, և այդ կանոններից ոչ մեկը չի սահմանափակում այն կապը, որը հարձակվողը հիմա բացում է այդ հոսթից դեպի տվյալների բազայի ենթացանցը: Հենց այդ բացն է պատճառը, որ միայն վեբ մուտքի կետը նույն պնդումը չէ, ինչ սեգմենտավորված ցանցը: Երկու պնդումներն էլ պահանջում են առանձին վերանայումներ՝ տարբեր մեկնարկային կետերից, նախքան դրանցից որևէ մեկը ազնվորեն անելը:
Երկու պնդում, և դրանցից միայն մեկն է սկսվում այցելուից
Առաջին պնդումը մարդու մասին է. բրաուզեր և վավեր սեսիա ունեցող այցելուը կարող է բացել մեկ հավելված և ուրիշ ոչինչ: Միայն վեբ մուտքի կետը լավ է պատասխանում այդ պնդմանը, քանի որ այցելուը ստանում է էջ, ոչ թե երթուղի: Այդ պատասխանն արժե ունենալ, և այն նաև միակ պնդումն է, որը գրանցում են դիագրամների մեծ մասը:
Երկրորդ պնդումը բաղադրիչի մասին է. ենթադրվում է, որ դարպասը կամ դրա հետևում գտնվող հավելվածի գործընթացը գտնվում է ուրիշի վերահսկողության տակ: Այդ ենթադրությունից հարցը փոխվում է՝ թե որ URL-ներն են թույլատրված, դեպի այն, թե գործընթացը դեռ ինչ նպատակակետերի և ինքնությունների կարող է հասնել:
Երկու պնդումներն ունեն տարբեր սեփականատերեր, տալիս են տարբեր ապացույցներ և ձախողվում են անկախ: Ինքնության թիմը կարող է ցույց տալ առաջինը սեսիայի թեստով. երկրորդը պահանջում է ցանցային քաղաքականություն, սպասարկման հաշվի ստուգում և հոսթի վերահսկիչներ: Նախագիծը, որը գրանցում է միայն այցելուի կեսը, ամբողջական է թվում վերանայման սլայդում և բարակ՝ միջադեպի ժամանակ, որովհետև վարակումից հետո կարևոր վերահսկիչները երբեք չեն եղել շրջանակում: Անվանեք, թե որ պնդմանն է աջակցում յուրաքանչյուր վերահսկիչ, այլապես մեկ դարպասի կանոն կհաշվարկվի երկուսին:
Մշակված ծախսերի ծառայություն և դրա պարտության երկու ուղիները
Վերցնենք ծախսերի ծառայություն. 10.60.4.10 հասցեում հանրային դարպասը նույնականացնում է աշխատակիցներին և հաստատված հարցումները փոխանցում 8443 պորտի հավելվածի լսողին, և այդ հավելվածը հասնում է մեկ PostgreSQL լսողի 10.60.4.20:5432 հասցեում expenses_app դերով: Աշխատակիցները չպետք է ստանան ընդհանուր ներքին հասանելիություն: Սովորական աշխատանքում նախագիծն իսկապես տալիս է հավելվածին հատուկ մուտք՝ առանց տվյալների բազայի լսողը որևէ տեղ հրապարակելու: Հասցեները կարևոր են, որովհետև այս հոդվածի յուրաքանչյուր հետագա ստուգում անվանում է դրանք:
Այժմ հանեք դարպասը վստահելի բազմությունից: Ինչ նպատակակետերի կարող է հասնել 10.60.4.10-ը, երբ դրա գործընթացը պատկանում է հարձակվողին: URL զտիչը, որը սահմանափակում էր այցելուներին, ոչինչ չի ասում այն կապի մասին, որը դարպասի հոսթը բացում է դեպի տվյալների բազայի ենթացանցը:
Փոխարենը հանեք հավելվածի գործընթացը, և լիազորությունը փոխում է ձևը՝ expenses_app դերը, այն ծառայությունները, որոնց այդ սերվերը կարող է հասնել, և այն ֆայլերը, որոնք այդ հաշիվը կարող է կարդալ: Երկու դեպքում էլ առջևի դուռը կարող է մնալ միայն վեբ, մինչ բեքենդի սահմանը բացակայում է: Ուստի առջևի դռան պիտակը երկու հարցերից ոչ մեկի պատասխանը չէ:
Քարտեզագրեք, թե յուրաքանչյուր կողմն իրականում ինչ լիազորություն ունի
Նախատեսված թույլտվություններով գրված պայմանագիրը հակված է ձեզ հետ կրկնելու նախագիծը: Գրեք այն որպես պահվող լիազորություն, ավելցուկը հերքող ստուգում և այդ ստուգման սեփականատեր, և ամեն տող դառնում է ստուգելի: Այս աղյուսակը վերևի օրինակի առաջարկն է, ոչ թե ապրանքի պնդում:
| Component | Authority it actually holds | Check that proves the denial | Owner of the check |
|---|---|---|---|
| Identity provider | Issues assertions and session cookies, and holds no network path of its own | A request to the application URL without a session is redirected to the login page | Identity team |
| Public gateway host | TCP reachability to whatever its routing table and egress rules permit | An egress rule drops 10.60.4.20:5432 and the probe reports the port filtered | Network platform team |
| Application role | SQL privileges granted to expenses_app inside the expenses database | A privilege query shows no ownership or create right on any other schema | Application team |
| Database listener | Accepts connections only from the source ranges named in its host-based rules | A connection from an unlisted address is refused before authentication | Database administrator |
| Management path | Administrative access reserved for patching, monitoring and recovery | A staff workstation cannot reach the administrative port or jump through it | Platform owner |
Սեփականությունը հետևում է լիազորությանը: Ինքնության թիմը տիրապետում է պնդումներին, ցանցային հարթակի թիմը՝ երթուղիներին, հավելվածի թիմը՝ տվյալների բազայի դերին, տվյալների բազայի ադմինիստրատորը՝ լսողին և նրա հոսթային կանոններին, իսկ հարթակի սեփականատերը՝ կառավարման հարթությանը: Առանց սեփականատիրոջ մերժումը փաստաթղթի նախադասություն է, ոչ թե վերահսկիչ:
Բաժանումը նաև կանխում է կրկնակի հաշվարկը: Պորտի սահմանափակումը չի կարող արտահայտել աղյուսակի արտոնություն, և տվյալների բազայի դերը չի կարող խանգարել հոսթին վարդակ բացել չկապված ենթացանցի ուղղությամբ:
Թվարկեք, թե ինչի կարող է հասնել դարպասը՝ փոխարենը պնդելու
Սահմանի պնդումը նույնքան լավն է, որքան դրա հետևում գտնվող թվարկումը: Դարպասի հոսթում երեք հրաման ծածկում են երթուղու ընտրությունը, կենդանի փորձարկումը և ելքի քաղաքականությունը:
ip route get 10.60.4.20
nc -zv 10.60.4.20 5432
sudo nft list chain inet filter outputԿարդացեք ելքը այդ հերթականությամբ: Երթուղին ասում է՝ արդյոք 10.60.4.20-ը ընդհանրապես ընտրվում է այդ հոսթից. փորձարկումը՝ արդյոք լսողը պատասխանում է. կանոնների ցանկը ցույց է տալիս՝ քաղաքականությունը կանգնեցնում է փաթեթը, թե դրա ուղու վրա երբեք ոչինչ չի եղել:
Կրկնեք թվարկումը հավելվածի հոսթից: Այնտեղից տվյալների բազայի կողմը մեկ հարցում է, որը կատարվում է հավելվածի դերով:
psql -h 10.60.4.20 -U expenses_app -d expenses -c 'select rolname, rolsuper, rolcreatedb from pg_roles'Հաջող կապը դերի ներքո, որը չի կարող կարդալ այլ սխեմա, տարբեր արդյունք է, քան հաջող կապը սեփականատիրոջ դերի ներքո: Միայն երկրորդն է հայտնաբերում:
Գրանցեք մերժումները, ապա թվագրեք վերանայումը
Ընդունումը գրվում է որպես արդյունքներ, ոչ թե մտադրություններ. աշխատակցի սեսիան չի կարող հասնել լսողին, դարպասի հոսթը չի կարող հասնել չկապված ենթացանցին, և հավելվածի դերը չի կարող ստեղծել տվյալների բազա: Յուրաքանչյուրը առանձին ստուգում է՝ անվանված սեփականատիրոջ և ամսաթվի հետ:
Պահեք մոնիտորինգը, կարկատումը և վերականգնումը հասանելի իրենց համար նախատեսված կառավարման ուղով: Սահմանը, որը արգելափակում է նաև իր սեփականատիրոջը, դառնում է ընդհատում, և այդ ընդհատման սովորական առաջին արձագանքը կանոնը կրկին լայնացնելն է: CISA-ի պարագծի ուղեցույցը պահանջում է սահմանափակել ներգնա և ելքային հասանելիությունը արդարացված պորտերով և արձանագրություններով, ներառյալ ներքին ցանցերի միջև երթևեկությունը, ինչը բեքենդից սկսվող ուղղությունն է, որը բաց թողնում են դիագրամների մեծ մասը:
Թվագրեք վերանայումը և անվանեք դրա սեփականատիրոջը: Կրկին գործարկեք թվարկումը և արտոնությունների հարցումը դարպասի պատկերի, երթուղային աղյուսակի կամ հավելվածի դերի ցանկացած փոփոխությունից հետո: