Pretpostavimo da je host gatewaya kompromitovan dok mu je certifikat još valjan. Svako pravilo koje je uređivalo koje stranice posjetilac može zatražiti ostaje na snazi, a nijedno od tih pravila ne ograničava vezu koju napadač sada otvara s tog hosta prema podmreži baze podataka. Taj jaz je razlog zašto web ulazna točka nije ista tvrdnja kao segmentirana mreža. Dvije tvrdnje traže odvojene preglede, s različitih polaznih točaka, prije nego se bilo koja od njih može pošteno iznijeti.

Dvije tvrdnje, a samo jedna počinje kod posjetioca

Prva tvrdnja tiče se osobe: posjetilac s preglednikom i valjanom sesijom može otvoriti jednu aplikaciju i ništa drugo. Web ulazna točka dobro odgovara na tu tvrdnju, jer posjetilac dobija stranicu, a ne rutu. Taj odgovor vrijedi imati, i to je ujedno jedina tvrdnja koju većina dijagrama bilježi.

Druga tvrdnja tiče se komponente: pretpostavlja se da je gateway, ili aplikacijski proces iza njega, pod tuđom kontrolom. Iz te pretpostavke pitanje se mijenja od toga koji su URL-ovi dozvoljeni na to kojim odredištima i identitetima proces još može dosegnuti.

Dvije tvrdnje imaju različite vlasnike, daju različite dokaze i nezavisno padaju. Identitetski tim može prvu pokazati sesijskim testom; druga traži mrežnu politiku, pregled servisnog računa i kontrole hosta. Dizajn koji bilježi samo polovinu posjetioca izgleda potpun na slajdu pregleda i tanak tokom incidenta, jer kontrole koje su važne nakon kompromitacije nikada nisu bile u obuhvatu. Imenujte koju tvrdnju svaka kontrola podržava, inače će se jedno gateway pravilo pripisati objema.

Razrađena usluga troškova i dva načina na koja gubi

Uzmimo uslugu troškova: javni gateway na 10.60.4.10 autentificira osoblje i prosljeđuje odobrene zahtjeve aplikacijskom slušaocu na portu 8443, a ta aplikacija doseže jedan PostgreSQL slušalac na 10.60.4.20:5432 kao uloga expenses_app. Zaposleni ne treba da dobiju opći interni pristup. U normalnom radu dizajn zaista pruža ulaz specifičan za aplikaciju bez objavljivanja slušaoca baze podataka bilo gdje. Adrese su važne, jer ih svaka provjera kasnije u ovom članku imenuje.

Sada uklonite gateway iz pouzdanog skupa. Kojim odredištima 10.60.4.10 može dosegnuti kada njegov proces pripada napadaču? URL filter koji je ograničavao posjetioce ne govori ništa o vezi koju host gatewaya otvara prema podmreži baze podataka.

Uklonite umjesto toga aplikacijski proces, i ovlaštenja mijenjaju oblik: uloga expenses_app, usluge do kojih taj server može doći i datoteke koje taj račun može čitati. U oba slučaja prednja vrata mogu ostati samo web dok stražnja granica izostaje. Zato oznaka na prednjim vratima nije odgovor ni na jedno od dva pitanja.

Mapirajte ovlaštenja koja svaka strana zapravo ima

Ugovor napisan kao namjeravane dozvole običava vam ponoviti dizajn. Napišite ga kao posjedovana ovlaštenja, provjeru koja opovrgava višak i vlasnika te provjere, i svaki red postaje provjerljiv. Ova tabela je prijedlog za gornji primjer, a ne tvrdnja o proizvodu:

ComponentAuthority it actually holdsCheck that proves the denialOwner of the check
Identity providerIssues assertions and session cookies, and holds no network path of its ownA request to the application URL without a session is redirected to the login pageIdentity team
Public gateway hostTCP reachability to whatever its routing table and egress rules permitAn egress rule drops 10.60.4.20:5432 and the probe reports the port filteredNetwork platform team
Application roleSQL privileges granted to expenses_app inside the expenses databaseA privilege query shows no ownership or create right on any other schemaApplication team
Database listenerAccepts connections only from the source ranges named in its host-based rulesA connection from an unlisted address is refused before authenticationDatabase administrator
Management pathAdministrative access reserved for patching, monitoring and recoveryA staff workstation cannot reach the administrative port or jump through itPlatform owner

Vlasništvo slijedi ovlaštenja. Identitetski tim posjeduje tvrdnje, tim mrežne platforme posjeduje putanje, aplikacijski tim posjeduje ulogu baze podataka, administrator baze podataka posjeduje slušaoca i njegova pravila zasnovana na hostu, a vlasnik platforme posjeduje upravljačku ravan. Uskraćivanje bez vlasnika je rečenica u dokumentu, a ne kontrola.

Podjela također sprječava dvostruko brojanje. Ograničenje porta ne može izraziti privilegiju tabele, a uloga baze podataka ne može spriječiti host da otvori socket prema nepovezanoj podmreži.

Nabrojte šta gateway može dosegnuti umjesto da to tvrdite

Tvrdnja o granici vrijedi onoliko koliko vrijedi nabrajanje iza nje. Na hostu gatewaya tri komande pokrivaju odabir rute, provjeru uživo i izlaznu politiku:

ip route get 10.60.4.20
nc -zv 10.60.4.20 5432
sudo nft list chain inet filter output

Čitajte izlaz tim redom. Ruta kaže bira li se 10.60.4.20 uopće s tog hosta; provjera kaže odgovara li slušalac; popis pravila pokazuje zaustavlja li politika paket ili u njegovoj putanji nikada ničega nije bilo.

Ponovite nabrajanje s hosta aplikacije. Odatle je strana baze podataka jedan upit pokrenut kao aplikacijska uloga:

psql -h 10.60.4.20 -U expenses_app -d expenses -c 'select rolname, rolsuper, rolcreatedb from pg_roles'

Uspješna veza pod ulogom koja ne može čitati drugu shemu drugačiji je rezultat od uspješne veze pod ulogom vlasnika. Samo je druga nalaz.

Zabilježite uskraćivanja, zatim datirajte pregled

Prihvaćanje se piše kao ishodi, a ne namjere: sesija zaposlenog ne može dosegnuti slušaoca, host gatewaya ne može dosegnuti nepovezanu podmrežu, a aplikacijska uloga ne može stvoriti bazu podataka. Svaka je odvojena provjera s imenovanim vlasnikom i datumom.

Držite nadzor, zakrpe i oporavak dostupnima kroz upravljačku putanju namijenjenu njima. Granica koja blokira i svog vlasnika postaje prekid rada, a uobičajena prva reakcija na taj prekid jest da se pravilo ponovo proširi. CISA smjernice za perimetar traže da ulazni i izlazni pristup bude ograničen na opravdane portove i protokole, uključujući saobraćaj između internih mreža, što je smjer koji inicira stražnji sistem i koji većina dijagrama izostavlja.

Datirajte pregled i imenujte njegovog vlasnika. Ponovno pokrenite nabrajanje i upit privilegija nakon svake promjene slike gatewaya, tabele ruta ili aplikacijske uloge.

Povezani članci