Ką dar gali pasiekti pažeistas interneto tarpininkas?
Interneto tarpininkas riboja, ką atidaro lankytojas, o ne ką gali pasiekti pažeistas mazgas. Dvi peržiūros, įgaliojimų lentelė ir pasiekiamumo patikros komandos.
Tarkime, tarpininko mazgas pažeistas, kol jo sertifikatas dar galioja. Kiekviena taisyklė, reglamentavusi, kuriuos puslapius lankytojas gali prašyti, lieka galioti, ir nė viena iš tų taisyklių neriboja ryšio, kurį užpuolėjas dabar atidaro iš to mazgo duomenų bazės potinklio link. Būtent šis trūkumas yra priežastis, kodėl vien tik žiniatinklio įėjimo taškas nėra tas pats teiginys kaip segmentuotas tinklas. Abiem teiginiams reikia atskirų peržiūrų, iš skirtingų pradžios taškų, kol nė vieno jų negalima sąžiningai pateikti.
Du teiginiai, ir tik vienas jų prasideda nuo lankytojo
Pirmasis teiginys apie žmogų: lankytojas su naršykle ir galiojančia sesija gali atidaryti vieną programą ir nieko daugiau. Vien tik žiniatinklio įėjimo taškas gerai atsako į šį teiginį, nes lankytojas gauna puslapį, o ne maršrutą. Šis atsakymas vertas turėti, ir jis taip pat yra vienintelis teiginys, kurį fiksuoja dauguma diagramų.
Antrasis teiginys apie komponentą: daroma prielaida, kad tarpininkas arba už jo esantis programos procesas yra kito žmogaus kontrolėje. Iš šios prielaidos klausimas keičiasi iš to, kurie URL leidžiami, į tai, kuriuos tikslus ir tapatybes procesas dar gali pasiekti.
Du teiginiai turi skirtingus savininkus, pateikia skirtingus įrodymus ir žlunga nepriklausomai. Tapatybės komanda pirmąjį gali parodyti sesijos testu; antrajam reikia tinklo politikos, paslaugos paskyros peržiūros ir mazgo kontrolės. Dizainas, fiksuojantis tik lankytojo pusę, atrodo išsamus peržiūros skaidrėje ir plonas incidento metu, nes kontrolės, kurios svarbios po pažeidimo, niekada nebuvo aprėptyje. Įvardykite, kurį teiginį palaiko kiekviena kontrolė, kitaip viena tarpininko taisyklė bus įskaityta abiem.
Išnagrinėta išlaidų paslauga ir du būdai, kaip ji pralaimi
Imkime išlaidų paslaugą: viešas tarpininkas adresu 10.60.4.10 autentifikuoja darbuotojus ir perduoda patvirtintas užklausas programos klausytojui prievade 8443, o ta programa pasiekia vieną PostgreSQL klausytoją adresu 10.60.4.20:5432 kaip vaidmenį expenses_app. Darbuotojai neturėtų gauti bendros vidinės prieigos. Įprasto veikimo metu dizainas tikrai suteikia programai būdingą įėjimą niekur neskelbdamas duomenų bazės klausytojo. Adresai svarbūs, nes kiekviena vėlesnė patikra šiame straipsnyje juos įvardija.
Dabar pašalinkite tarpininką iš patikimos aibės. Kuriuos tikslus gali pasiekti 10.60.4.10, kai jo procesas priklauso užpuolėjui? URL filtras, kuris ribojo lankytojus, nieko nesako apie ryšį, kurį tarpininko mazgas atidaro duomenų bazės potinklio link.
Pašalinkite vietoj to programos procesą, ir įgaliojimai keičia formą: vaidmuo expenses_app, paslaugos, kurias tas serveris gali pasiekti, ir failai, kuriuos ta paskyra gali skaityti. Abiem atvejais priekinės durys gali likti vien tik žiniatinklio, kol užpakalinės dalies riba neegzistuoja. Todėl etiketė ant priekinių durų nėra atsakymas į nė vieną iš dviejų klausimų.
Suskaičiuokite, kokius įgaliojimus kiekviena šalis iš tikrųjų turi
Sutartis, parašyta kaip numatomi leidimai, linkusi kartoti dizainą jums. Parašykite ją kaip turimus įgaliojimus, patikrą, kuri paneigia perteklių, ir tos patikros savininką, ir kiekviena eilutė taps tikrinama. Ši lentelė yra pasiūlymas aukščiau pateiktam pavyzdžiui, o ne produkto teiginys:
| 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 |
Nuosavybė seka įgaliojimus. Tapatybės komanda valdo teiginius, tinklo platformos komanda – maršrutus, programos komanda – duomenų bazės vaidmenį, duomenų bazės administratorius – klausytoją ir jo mazgu pagrįstas taisykles, o platformos savininkas – valdymo plokštumą. Atsisakymas be savininko yra sakinys dokumente, o ne kontrolė.
Atskyrimas taip pat apsaugo nuo dvigubo skaičiavimo. Prievado apribojimas negali išreikšti lentelės privilegijos, o duomenų bazės vaidmuo negali sutrukdyti mazgui atidaryti lizdą į nesusijusį potinklį.
Išvardykite, ką tarpininkas gali pasiekti, užuot tai teigę
Ribos teiginys yra tik toks geras, kokia yra už jo esanti išvardijimas. Tarpininko mazge trys komandos apima maršruto parinkimą, tiesioginį zondą ir išėjimo politiką:
ip route get 10.60.4.20
nc -zv 10.60.4.20 5432
sudo nft list chain inet filter outputSkaitykite išvestį ta tvarka. Maršrutas sako, ar 10.60.4.20 apskritai parenkamas iš to mazgo; zondas sako, ar klausytojas atsako; taisyklių sąrašas rodo, ar politika sustabdo paketą, ar jo kelyje niekada nieko nebuvo.
Pakartokite išvardijimą iš programos mazgo. Iš ten duomenų bazės pusė yra viena užklausa, vykdoma kaip programos vaidmuo:
psql -h 10.60.4.20 -U expenses_app -d expenses -c 'select rolname, rolsuper, rolcreatedb from pg_roles'Sėkmingas ryšys pagal vaidmenį, kuris negali skaityti kitos schemos, yra kitoks rezultatas nei sėkmingas ryšys pagal savininko vaidmenį. Tik antrasis yra radinys.
Užrašykite atsisakymus, tada datuokite peržiūrą
Priėmimas rašomas kaip rezultatai, o ne ketinimai: darbuotojo sesija negali pasiekti klausytojo, tarpininko mazgas negali pasiekti nesusijusio potinklio, o programos vaidmuo negali sukurti duomenų bazės. Kiekviena yra atskira patikra su įvardytu savininku ir data.
Išlaikykite stebėjimą, pleistrų diegimą ir atkūrimą pasiekiamus per jiems skirtą valdymo kelią. Riba, kuri blokuoja ir savo savininką, tampa sutrikimu, o įprasta pirmoji reakcija į tą sutrikimą yra vėl išplėsti taisyklę. CISA perimetro gairės reikalauja apriboti įeinančią ir išeinančią prieigą pagrįstais prievadais ir protokolais, įskaitant srautą tarp vidinių tinklų, tai yra užpakalinės dalies inicijuota kryptis, kurią dauguma diagramų praleidžia.
Datuokite peržiūrą ir įvardykite jos savininką. Iš naujo paleiskite išvardijimą ir privilegijų užklausą po bet kokio tarpininko atvaizdo, maršrutizavimo lentelės ar programos vaidmens pakeitimo.