Претпоставимо да је домаћин гејтвеја компромитован док је његов сертификат још важећи. Свако правило које је уређивало које странице посетилац може да затражи остаје на снази, и ниједно од тих правила не ограничава везу коју нападач сада отвара са тог домаћина према подмрежи базе података. Управо тај јаз је разлог зашто веб улазна тачка није иста тврдња као сегментирана мрежа. Две тврдње захтевају одвојене прегледе, са различитих полазних тачака, пре него што се било која од њих може искрено изнети.

Две тврдње, а само једна почиње код посетиоца

Прва тврдња тиче се особе: посетилац са прегледачем и важећом сесијом може да отвори једну апликацију и ништа друго. Веб улазна тачка добро одговара на ту тврдњу, јер посетилац добија страницу, а не руту. Тај одговор вреди имати, и то је уједно једина тврдња коју бележи већина дијаграма.

Друга тврдња тиче се компоненте: претпоставља се да је гејтвеј, или апликацијски процес иза њега, под туђом контролом. Из те претпоставке питање се мења од тога који су URL-ови дозвољени на то којим одредиштима и идентитетима процес још може да стигне.

Две тврдње имају различите власнике, дају различите доказе и независно падају. Идентитетски тим може прву да покаже тестом сесије; друга тражи мрежну политику, преглед сервисног налога и контроле домаћина. Дизајн који бележи само половину посетиоца изгледа потпун на слајду прегледа и танак током инцидента, јер контроле које су важне после компромитације никада нису биле у обухвату. Именујте коју тврдњу свака контрола подржава, иначе ће једно правило гејтвеја бити приписано обема.

Разрађена услуга трошкова и два начина на која губи

Узмимо услугу трошкова: јавни гејтвеј на 10.60.4.10 аутентификује особље и прослеђује одобрене захтеве слушаоцу апликације на порту 8443, а та апликација достиже један PostgreSQL слушалац на 10.60.4.20:5432 као улога expenses_app. Запослени не треба да добију општи интерни приступ. У нормалном раду дизајн заиста пружа улаз специфичан за апликацију без објављивања слушаоца базе података било где. Адресе су важне, јер их свака каснија провера у овом чланку именује.

Сада уклоните гејтвеј из поузданог скупа. Којим одредиштима 10.60.4.10 може да стигне када његов процес припада нападачу? URL филтер који је ограничавао посетиоце не говори ништа о вези коју домаћин гејтвеја отвара према подмрежи базе података.

Уклоните уместо тога апликацијски процес, и овлашћења мењају облик: улога expenses_app, услуге до којих тај сервер може да стигне и датотеке које тај налог може да чита. У оба случаја предња врата могу да остану само веб, док граница бекенда изостаје. Зато ознака на предњим вратима није одговор ни на једно од два питања.

Мапирајте овлашћења која свака страна заиста има

Уговор написан као намераване дозволе има обичај да вам понови дизајн. Напишите га као поседована овлашћења, проверу која оповргава вишак и власника те провере, и сваки ред постаје проверљив. Ова табела је предлог за горњи пример, а не тврдња о производу:

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

Власништво прати овлашћења. Идентитетски тим поседује тврдње, тим мрежне платформе поседује руте, апликацијски тим поседује улогу базе података, администратор базе података поседује слушаоца и његова правила заснована на домаћину, а власник платформе поседује управљачку раван. Одбијање без власника је реченица у документу, а не контрола.

Подела такође спречава двоструко бројање. Ограничење порта не може да изрази привилегију табеле, а улога базе података не може да спречи домаћина да отвори сокет према неповезаној подмрежи.

Набројте до чега гејтвеј може да стигне уместо да то тврдите

Тврдња о граници је само онолико добра колико је добро набрајање иза ње. На домаћину гејтвеја три команде покривају избор руте, живи тест и политику излаза:

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 за периметар траже да улазни и излазни приступ буде ограничен на оправдане портове и протоколе, укључујући саобраћај између интерних мрежа, што је смер који иницира бекенд и који већина дијаграма изоставља.

Датирајте преглед и именујте његовог власника. Поново покрените набрајање и упит о привилегијама после сваке промене слике гејтвеја, табеле рутирања или апликацијске улоге.

Повезани чланци