Oletetaan, että yhdyskäytävän isäntä on kompromettoitu, kun sen varmenne on vielä voimassa. Jokainen sääntö, joka määräsi, mitä sivuja vierailija voi pyytää, pysyy voimassa, eikä mikään näistä säännöistä rajoita yhteyttä, jonka hyökkääjä nyt avaa tältä isännältä kohti tietokannan aliverkkoa. Juuri tämä aukko on syy siihen, että pelkkä verkkopohjainen sisääntulopiste ei ole sama väite kuin segmentoitu verkko. Molemmat väitteet vaativat erilliset katselmukset, eri lähtökohdista, ennen kuin kumpaakaan voi esittää rehellisesti.

Kaksi väitettä, ja vain toinen niistä alkaa vierailijasta

Ensimmäinen väite koskee henkilöä: vierailija, jolla on selain ja voimassa oleva istunto, voi avata yhden sovelluksen eikä mitään muuta. Pelkkä verkkopohjainen sisääntulopiste vastaa tähän väitteeseen hyvin, koska vierailija saa sivun eikä reittiä. Se vastaus kannattaa, ja se on myös ainoa väite, jonka useimmat kaaviot tallentavat.

Toinen väite koskee komponenttia: oletetaan, että yhdyskäytävä tai sen takana oleva sovellusprosessi on jonkun muun hallinnassa. Tästä oletuksesta kysymys muuttuu siitä, mitkä URL-osoitteet ovat sallittuja, siihen, mihin kohteisiin ja identiteetteihin prosessi voi vielä päästä.

Kahdella väitteellä on eri omistajat, ne tuottavat eri todisteita ja epäonnistuvat toisistaan riippumatta. Identiteettitiimi voi osoittaa ensimmäisen istuntotestillä; toinen tarvitsee verkkokäytännön, palvelutilin katselmuksen ja isännän hallinnat. Suunnittelu, joka tallentaa vain vierailijan puolikkaan, näyttää täydelliseltä katselmusdialla ja ohuelta tapahtuman aikana, koska kompromettoinnin jälkeen tärkeät hallinnat eivät koskaan olleet laajuudessa. Nimeä, mitä väitettä kukin hallinta tukee, tai yksi yhdyskäytäväsääntö hyvitetään molemmille.

Läpikäyty kulupalvelu ja kaksi tapaa, joilla se häviää

Otetaan kulupalvelu: julkinen yhdyskäytävä osoitteessa 10.60.4.10 todentaa henkilöstön ja välittää hyväksytyt pyynnöt sovelluksen kuuntelijalle portissa 8443, ja kyseinen sovellus tavoittaa yhden PostgreSQL-kuuntelijan osoitteessa 10.60.4.20:5432 roolina expenses_app. Työntekijöiden ei ole tarkoitus saada yleistä sisäistä pääsyä. Normaalissa toiminnassa suunnittelu todella tarjoaa sovelluskohtaisen sisäänkäynnin julkaisematta tietokannan kuuntelijaa missään. Osoitteet ovat merkityksellisiä, koska jokainen myöhempi tarkistus tässä artikkelissa nimeää ne.

Poista nyt yhdyskäytävä luotetusta joukosta. Mihin kohteisiin 10.60.4.10 voi päästä, kun sen prosessi kuuluu hyökkääjälle? URL-suodatin, joka rajoitti vierailijoita, ei kerro mitään yhteydestä, jonka yhdyskäytävän isäntä avaa kohti tietokannan aliverkkoa.

Poista sen sijaan sovellusprosessi, ja valtuudet muuttavat muotoaan: rooli expenses_app, palvelut, joihin kyseinen palvelin voi päästä, ja tiedostot, joita kyseinen tili voi lukea. Molemmissa tapauksissa etuovi voi pysyä pelkkänä verkkona, kun taustan raja puuttuu. Siksi etuoven merkintä ei ole vastaus kumpaankaan kysymykseen.

Kartoita valtuudet, jotka kullakin osapuolella todella on

Aiotuiksi käyttöoikeuksiksi kirjoitettu sopimus tapaa toistaa suunnittelun sinulle takaisin. Kirjoita se hallussapidettynä valtuutena, ylimäärän kumoavana tarkistuksena ja sen tarkistuksen omistajana, niin jokaisesta rivistä tulee testattava. Tämä taulukko on ehdotus yllä olevaan esimerkkiin, ei tuoteväite:

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

Omistus seuraa valtuuksia. Identiteettitiimi omistaa väitteet, verkkoulusta-tiimi omistaa reitit, sovellustiimi omistaa tietokantaroolin, tietokannan ylläpitäjä omistaa kuuntelijan ja sen isäntäpohjaiset säännöt, ja alustan omistaja omistaa hallintatason. Kielto ilman omistajaa on lause asiakirjassa, ei hallinta.

Jakaminen estää myös kaksoislaskennan. Porttirajoitus ei voi ilmaista taulukko-oikeutta, eikä tietokantarooli voi estää isäntää avaamasta pistoketta asiaankuulumattomaan aliverkkoon.

Luettele, mihin yhdyskäytävä voi päästä, sen sijaan että väittäisit sitä

Rajaväite on vain niin hyvä kuin sen takana oleva luettelo. Yhdyskäytävän isännällä kolme komentoa kattavat reitin valinnan, live-koetuksen ja lähtevän liikenteen käytännön:

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

Lue tuloste siinä järjestyksessä. Reitti kertoo, valitaanko 10.60.4.20 ylipäätään kyseiseltä isännältä; koetus kertoo, vastaako kuuntelija; sääntöluettelo näyttää, pysäyttääkö käytäntö paketin vai eikö sen reitillä ollut koskaan mitään.

Toista luettelo sovelluksen isännältä. Sieltä tietokannan puoli on yksi kysely, joka suoritetaan sovellusroolina:

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

Onnistunut yhteys roolissa, joka ei voi lukea toista skeemaa, on eri tulos kuin onnistunut yhteys omistajaroolissa. Vain jälkimmäinen on löydös.

Kirjaa kiellot ja päivää sitten katselmus

Hyväksyntä kirjoitetaan tuloksina eikä aikomuksina: työntekijän istunto ei pääse kuuntelijaan, yhdyskäytävän isäntä ei pääse asiaankuulumattomaan aliverkkoon, eikä sovellusrooli voi luoda tietokantaa. Jokainen on erillinen tarkistus, jolla on nimetty omistaja ja päivämäärä.

Pidä valvonta, paikkaus ja palautus saavutettavina niille suunnitellun hallintareitin kautta. Rajasta, joka estää myös omistajansa, tulee käyttökatko, ja tavallinen ensimmäinen vastaus siihen katkoon on säännön laajentaminen uudelleen. CISAn perimetriohje vaatii rajoittamaan saapuvan ja lähtevän pääsyn perusteltuihin portteihin ja protokolliin, mukaan lukien sisäisten verkkojen välinen liikenne, joka on taustajärjestelmän aloittama suunta, jonka useimmat kaaviot jättävät pois.

Päivää katselmus ja nimeä sen omistaja. Suorita luettelo ja oikeuskysely uudelleen jokaisen yhdyskäytävän kuvan, reititystaulukon tai sovellusroolin muutoksen jälkeen.

Aiheeseen liittyvät artikkelit