Saan pa maaaring marating ng isang kompromisong web gateway?
Nililimitahan ng web gateway ang binubuksan ng bisita, hindi ang nararating ng kompromisong host. Dalawang pagsusuri, isang talahanayan ng awtoridad at mga utos sa pagsukat ng abot.
Ipagpalagay na ang host ng gateway ay nakompromiso habang valid pa ang sertipiko nito. Bawat tuntuning nagtatakda kung aling mga pahina ang maaaring hilingin ng bisita ay nananatiling may bisa, at wala sa mga tuntuning ito ang naglilimita sa koneksiyong binubuksan ng umaatake ngayon mula sa host na iyon patungo sa subnet ng database. Ang agwat na ito ang dahilan kung bakit ang web-only na pasukan ay hindi kaparehong pahayag ng isang segmentadong network. Ang dalawang pahayag ay nangangailangan ng magkahiwalay na pagsusuri, mula sa magkaibang panimulang punto, bago ang alinman sa mga ito ay maisasabi nang tapat.
Dalawang pahayag, at isa lamang ang nagsisimula sa bisita
Ang unang pahayag ay tungkol sa isang tao: ang bisitang may browser at valid na sesyon ay makakapagbukas ng isang aplikasyon at wala nang iba. Ang web-only na pasukan ay mahusay na sumasagot sa pahayag na iyon, dahil ang bisita ay tumatanggap ng pahina sa halip na ruta. Ang sagot na iyon ay sulit na itago, at ito rin ang tanging pahayag na itinatala ng karamihan ng diagram.
Ang ikalawang pahayag ay tungkol sa isang bahagi: ipinapalagay na ang gateway, o ang proseso ng aplikasyon sa likod nito, ay nasa ilalim ng kontrol ng ibang tao. Mula sa palagay na iyon, nagbabago ang tanong mula sa aling URL ang pinapayagan patungo sa aling mga destinasyon at pagkakakilanlan ang naaabot pa ng proseso.
Ang dalawang pahayag ay may magkaibang may-ari, gumagawa ng magkaibang ebidensiya, at nabibigo nang hiwalay. Maaaring ipakita ng koponan ng pagkakakilanlan ang una sa pamamagitan ng pagsubok sa sesyon; ang pangalawa ay nangangailangan ng patakaran sa network, pagsusuri ng service account, at mga kontrol ng host. Ang disenyong nagtatala lamang ng kalahati ng bisita ay mukhang kumpleto sa slide ng pagsusuri at manipis sa panahon ng insidente, dahil ang mga kontrol na mahalaga pagkatapos ng kompromiso ay hindi kailanman nasa saklaw. Pangalanan kung aling pahayag ang sinusuportahan ng bawat kontrol, o ang isang tuntunin ng gateway ay maiuukol sa dalawa.
Isang ginawang halimbawa ng serbisyo ng gastos, at ang dalawang paraan ng pagkatalo nito
Kumuha ng serbisyo ng gastos: ang pampublikong gateway sa 10.60.4.10 ay nagpapatunay sa mga kawani at nagpapasa ng mga aprubadong kahilingan sa tagapakinig ng aplikasyon sa port 8443, at naaabot ng aplikasyong iyon ang isang tagapakinig ng PostgreSQL sa 10.60.4.20:5432 bilang role na expenses_app. Hindi dapat makatanggap ng pangkalahatang panloob na access ang mga empleyado. Sa normal na operasyon, tunay na nagbibigay ang disenyo ng pasukang partikular sa aplikasyon nang hindi ipinapahayag ang tagapakinig ng database kahit saan. Mahalaga ang mga address, dahil binabanggit ng bawat susunod na pagsusuri sa artikulong ito ang mga ito.
Ngayon alisin ang gateway sa pinagkakatiwalaang set. Aling mga destinasyon ang maaabot ng 10.60.4.10 kapag ang proseso nito ay pag-aari ng umaatake? Ang filter ng URL na naglimita sa mga bisita ay walang sinasabi tungkol sa koneksiyong binubuksan ng host ng gateway patungo sa subnet ng database.
Alisin sa halip ang proseso ng aplikasyon, at nagbabago ng hugis ang awtoridad: ang role na expenses_app, ang mga serbisyong naaabot ng server na iyon, at ang mga file na mababasa ng account na iyon. Sa dalawang kaso, ang harapang pinto ay maaaring manatiling web lamang habang wala ang hangganan ng backend. Kaya ang label sa harapang pinto ay hindi sagot sa alinman sa dalawang tanong.
I-map ang awtoridad na aktwal na hawak ng bawat panig
Ang kontratang isinulat bilang nilalayong pahintulot ay may tendensiyang ulitin ang disenyo sa iyo. Isulat ito bilang hawak na awtoridad, ang pagsusuring nagpapabula sa labis, at ang may-ari ng pagsusuring iyon, at nagiging masusubok ang bawat hilera. Ang talahanayang ito ay isang mungkahi para sa halimbawa sa itaas, hindi isang pahayag ng produkto:
| 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 |
Sinusundan ng pagmamay-ari ang awtoridad. Pag-aari ng koponan ng pagkakakilanlan ang mga assertion, ng koponan ng network platform ang mga ruta, ng koponan ng aplikasyon ang role ng database, ng administrador ng database ang tagapakinig at ang mga tuntunin nitong nakabatay sa host, at ng may-ari ng platform ang management plane. Ang pagtanggi na walang may-ari ay isang pangungusap sa dokumento, hindi kontrol.
Pinipigilan din ng paghahati ang dobleng pagbilang. Hindi maipapahayag ng paghihigpit sa port ang pribilehiyo ng talahanayan, at hindi mapipigilan ng role ng database ang isang host na magbukas ng socket patungo sa walang kaugnayang subnet.
Bilangin kung saan maaaring marating ng gateway sa halip na igiit ito
Ang pahayag ng hangganan ay kasinghalaga lamang ng bilang sa likod nito. Sa host ng gateway, tatlong utos ang sumasaklaw sa pagpili ng ruta, live na pagsubok, at patakaran sa labas:
ip route get 10.60.4.20
nc -zv 10.60.4.20 5432
sudo nft list chain inet filter outputBasahin ang output sa ganoong pagkakasunod-sunod. Sinasabi ng ruta kung 10.60.4.20 ay pinipili mula sa host na iyon; sinasabi ng pagsubok kung sumasagot ang tagapakinig; ipinapakita ng listahan ng tuntunin kung hinihinto ng patakaran ang packet o wala kailanman sa landas nito.
Ulitin ang pagbilang mula sa host ng aplikasyon. Mula roon, ang panig ng database ay isang query na pinapatakbo bilang role ng aplikasyon:
psql -h 10.60.4.20 -U expenses_app -d expenses -c 'select rolname, rolsuper, rolcreatedb from pg_roles'Ang matagumpay na koneksiyon sa ilalim ng role na hindi makabasa ng ibang schema ay ibang resulta kaysa matagumpay na koneksiyon sa ilalim ng role ng may-ari. Ang pangalawa lamang ang isang natuklasan.
Itala ang mga pagtanggi, pagkatapos lagyan ng petsa ang pagsusuri
Ang pagtanggap ay isinusulat bilang mga resulta at hindi bilang mga layunin: hindi maaabot ng sesyon ng empleyado ang tagapakinig, hindi maaabot ng host ng gateway ang walang kaugnayang subnet, at hindi makakagawa ng database ang role ng aplikasyon. Bawat isa ay hiwalay na pagsusuri na may pinangalanang may-ari at petsa.
Panatilihing naaabot ang pagmamanman, pag-patch, at pagbawi sa pamamagitan ng landas ng pamamahala na inilaan para sa kanila. Ang hangganang humaharang din sa may-ari nito ay nagiging pagkaantala, at ang karaniwang unang tugon sa pagkaantalang iyon ay palawakin muli ang tuntunin. Ang gabay sa perimeter ng CISA ay humihiling na limitahan ang papasok at palabas na access sa mga makatwirang port at protocol, kabilang ang trapiko sa pagitan ng mga panloob na network, na siyang direksiyong pinasimulan ng backend na iniiwan ng karamihan ng diagram.
Lagyan ng petsa ang pagsusuri at pangalanan ang may-ari nito. Patakbuhin muli ang pagbilang at ang query sa pribilehiyo pagkatapos ng anumang pagbabago sa imahe ng gateway, talahanayan ng ruta, o role ng aplikasyon.