Да претпоставиме дека домаќинот на портата е компромитиран додека неговиот сертификат е сè уште валиден. Секое правило што уредуваше кои страници посетителот може да ги побара останува на сила, и ниту едно од тие правила не ја ограничува врската што напаѓачот сега ја отвора од тој домаќин кон подмрежата на базата на податоци. Токму овој јаз е причината зошто влезната точка само за веб не е истото тврдење како сегментирана мрежа. Двете тврдења бараат одделни прегледи, од различни почетни точки, пред било кое од нив да може чесно да се изнесе.

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

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

Второто тврдење е за компонента: се претпоставува дека портата, или апликацискиот процес зад неа, е под контрола на некој друг. Од таа претпоставка прашањето се менува од тоа кои 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 упатствата за периметарот бараат влезниот и излезниот пристап да се ограничат на оправдани порти и протоколи, вклучувајќи го сообраќајот меѓу внатрешните мрежи, што е насоката иницирана од задниот дел што повеќето дијаграми ја испуштаат.

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

Поврзани статии