Ko vēl var sasniegt apdraudēta tīmekļa vārteja?
Tīmekļa vārteja ierobežo to, ko atver apmeklētājs, nevis to, ko var sasniegt apdraudēts saimnieks. Divas pārbaudes, pilnvaru tabula un sasniedzamības mērīšanas komandas.
Pieņemsim, ka vārtejas saimnieks ir apdraudēts, kamēr tā sertifikāts joprojām ir derīgs. Katrs noteikums, kas regulēja, kuras lapas apmeklētājs drīkst pieprasīt, paliek spēkā, un neviens no šiem noteikumiem neierobežo savienojumu, ko uzbrucējs tagad atver no šī saimnieka uz datubāzes apakštīklu. Tieši šī plaisa ir iemesls, kāpēc tikai tīmekļa ieejas punkts nav tas pats apgalvojums kā segmentēts tīkls. Abiem apgalvojumiem nepieciešamas atsevišķas pārbaudes, no dažādiem sākumpunktiem, pirms jebkuru no tiem var godīgi izteikt.
Divi apgalvojumi, un tikai viens no tiem sākas pie apmeklētāja
Pirmais apgalvojums ir par cilvēku: apmeklētājs ar pārlūku un derīgu sesiju var atvērt vienu lietojumprogrammu un neko citu. Tikai tīmekļa ieejas punkts uz šo apgalvojumu atbild labi, jo apmeklētājs saņem lapu, nevis maršrutu. Šī atbilde ir tā vērta, un tā ir arī vienīgais apgalvojums, ko fiksē lielākā daļa diagrammu.
Otrais apgalvojums ir par komponentu: tiek pieņemts, ka vārteja vai aiz tās esošais lietojumprogrammas process ir kāda cita kontrolē. No šī pieņēmuma jautājums mainās no tā, kuri URL ir atļauti, uz to, kurus galamērķus un identitātes process vēl var sasniegt.
Abiem apgalvojumiem ir dažādi īpašnieki, tie sniedz dažādus pierādījumus un neizdodas neatkarīgi. Identitātes komanda pirmo var parādīt ar sesijas testu; otrajam nepieciešama tīkla politika, servisa konta pārbaude un saimnieka kontroles. Dizains, kas fiksē tikai apmeklētāja pusi, izskatās pilnīgs pārbaudes slaidā un plāns incidenta laikā, jo kontroles, kas svarīgas pēc apdraudējuma, nekad nav bijušas tvērumā. Nosauciet, kuru apgalvojumu atbalsta katra kontrole, citādi viena vārtejas kārtula tiks ieskaitīta abiem.
Izstrādāts izdevumu pakalpojums un divi veidi, kā tas zaudē
Ņemsim izdevumu pakalpojumu: publiska vārteja 10.60.4.10 autentificē darbiniekus un pārsūta apstiprinātos pieprasījumus lietojumprogrammas klausītājam 8443 portā, un šī lietojumprogramma sasniedz vienu PostgreSQL klausītāju 10.60.4.20:5432 kā lomu expenses_app. Darbiniekiem nav paredzēts saņemt vispārēju iekšēju piekļuvi. Normālā darbībā dizains patiešām nodrošina lietojumprogrammai raksturīgu ieeju, nekur nepublicējot datubāzes klausītāju. Adreses ir svarīgas, jo katra vēlākā pārbaude šajā rakstā tās nosauc.
Tagad izņemiet vārteju no uzticamās kopas. Kurus galamērķus var sasniegt 10.60.4.10, kad tā process pieder uzbrucējam? URL filtrs, kas ierobežoja apmeklētājus, neko nesaka par savienojumu, ko vārtejas saimnieks atver uz datubāzes apakštīklu.
Tā vietā izņemiet lietojumprogrammas procesu, un pilnvaras maina formu: loma expenses_app, pakalpojumi, kurus šis serveris var sasniegt, un faili, kurus šis konts var lasīt. Abos gadījumos priekšējās durvis var palikt tikai tīmekļa, kamēr aizmugures robeža nav. Tāpēc etiķete uz priekšējām durvīm nav atbilde uz nevienu no diviem jautājumiem.
Kartējiet pilnvaras, kas katrai pusei faktiski ir
Līgums, kas rakstīts kā paredzētās atļaujas, mēdz atkārtot dizainu jums. Rakstiet to kā turētas pilnvaras, pārbaudi, kas atspēko pārpalikumu, un šīs pārbaudes īpašnieku, un katra rinda kļūst pārbaudāma. Šī tabula ir ierosinājums iepriekš minētajam piemēram, nevis produkta apgalvojums:
| 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 |
Īpašumtiesības seko pilnvarām. Identitātes komanda pārvalda apgalvojumus, tīkla platformas komanda – maršrutus, lietojumprogrammu komanda – datubāzes lomu, datubāzes administrators – klausītāju un tā uz saimnieku balstītos noteikumus, bet platformas īpašnieks – pārvaldības plakni. Atteikums bez īpašnieka ir teikums dokumentā, nevis kontrole.
Sadalījums arī novērš dubultu uzskaiti. Porta ierobežojums nevar izteikt tabulas privilēģiju, un datubāzes loma nevar liegt saimniekam atvērt ligzdu uz nesaistītu apakštīklu.
Uzskaitiet, ko vārteja var sasniegt, tā vietā lai to apgalvotu
Robežas apgalvojums ir tik labs, cik laba ir aiz tā esošā uzskaite. Uz vārtejas saimnieka trīs komandas aptver maršruta izvēli, tiešraides zondi un izejas politiku:
ip route get 10.60.4.20
nc -zv 10.60.4.20 5432
sudo nft list chain inet filter outputLasiet izvadi šajā secībā. Maršruts saka, vai 10.60.4.20 vispār tiek izvēlēts no šī saimnieka; zonde saka, vai klausītājs atbild; noteikumu saraksts parāda, vai politika aptur pakešu, vai tās ceļā nekad nekas nav bijis.
Atkārtojiet uzskaiti no lietojumprogrammas saimnieka. No turienes datubāzes puse ir viens vaicājums, kas izpildīts kā lietojumprogrammas loma:
psql -h 10.60.4.20 -U expenses_app -d expenses -c 'select rolname, rolsuper, rolcreatedb from pg_roles'Veiksmīgs savienojums lomā, kas nevar lasīt citu shēmu, ir atšķirīgs rezultāts nekā veiksmīgs savienojums īpašnieka lomā. Tikai otrais ir atradums.
Reģistrējiet atteikumus, pēc tam datējiet pārbaudi
Pieņemšana tiek rakstīta kā rezultāti, nevis nodomi: darbinieka sesija nevar sasniegt klausītāju, vārtejas saimnieks nevar sasniegt nesaistītu apakštīklu, un lietojumprogrammas loma nevar izveidot datubāzi. Katra ir atsevišķa pārbaude ar nosauktu īpašnieku un datumu.
Saglabājiet uzraudzību, ielāpu uzstādīšanu un atjaunošanu pieejamu pa tiem paredzēto pārvaldības ceļu. Robeža, kas bloķē arī savu īpašnieku, kļūst par pārtraukumu, un ierastā pirmā reakcija uz šo pārtraukumu ir atkal paplašināt noteikumu. CISA perimetra vadlīnijas prasa ierobežot ienākošo un izejošo piekļuvi ar pamatotiem portiem un protokoliem, tostarp trafiku starp iekšējiem tīkliem, kas ir aizmugures sistēmas uzsāktais virziens, ko lielākā daļa diagrammu izlaiž.
Datējiet pārbaudi un nosauciet tās īpašnieku. Atkārtoti palaidiet uzskaiti un privilēģiju vaicājumu pēc jebkādām izmaiņām vārtejas attēlā, maršrutēšanas tabulā vai lietojumprogrammas lomā.