Vidinis ALB su viešu DNS vardu: ar tikrai jis atviras?
Viešas sprendiklis gali grąžinti privačius adresus vidiniam AWS apkrovos balansuotojui. Prieš vadindami jį atviru, patikrinkite schemą, kelius ir listenerį.
Paleiskite viešą DNS užklausą vidiniam apkrovos balansuotojui ir galite gauti privatų adresą, o tai atrodo kaip klaidinga konfigūracija, kol nepatikrinsite, kam įrašas skirtas. AWS dokumentuoja, kad vidinių balansuotojų vardai gali būti viešai išsprendžiami, nors jų mazgai turi tik privačius adresus. Sprendiklis atsakė, kur yra paslauga; jis nesukūrė maršruto, neatidarė saugos grupės ir nieko neautentifikavo. Ar tas atsakymas yra problema, priklauso nuo faktų, kuriuos galite patikrinti iš eilės.
Pirmas žingsnis: skaitykite schemą, ne IP
Schemos laukas – tai paties balansuotojo pareiškimas apie savo ribą. aws elbv2 describe-load-balancers --names app-internal grąžina Scheme su reikšme internal arba internet-facing, be to, adreso tipą IPv4 arba dvigubai krūvai. Į internetą nukreiptas balansuotojas vis tiek gali persiųsti į privačius taikinius, todėl privačių backend adresų matymas nieko neįrodo apie priekinę dalį.
Užsirašykite schemą prieš žiūrėdami į ką nors kita, nes kiekvienas vėlesnis vertinimas nuo jos priklauso. Ji taip pat nurodo, kokios kontrolės egzistuoja, nuo saugos grupių ir listenerio taisyklių iki to balansuotojo tipo funkcijų. Schema, nukopijuota iš seno konsolės ekrano kopijos, yra blogiau nei jokia pastaba. Perskaitykite ją dar kartą iš API ir įklijuokite reikšmę į bilietą.
Antras žingsnis: pažiūrėkite, į ką vardas išsprendžiamas
Užklauskite už VPC ribų su dig +short app-internal-1234567890.eu-west-1.elb.amazonaws.com ir pažymėkite, ar atsakymai yra 10.0.0.0/8, 172.16.0.0/12 ar 192.168.0.0/16. Privatus atsakymas iš viešo sprendiklio yra tikėtinas vidinio balansuotojo vardo elgesys; tai neįrodo, kad adresas yra maršrutizuojamas iš interneto.
Išspręskite tą patį vardą VPC viduje ir palyginkite. Jei du atsakymai skiriasi, matote split-horizon vardų suteikimą, ir tas skirtumas yra dizaino detalė, o ne nutekėjimas.
Trečias žingsnis: išvardykite kelius, kurie gali jį pasiekti
Privatus adresas pasiekiamas visur, kur yra maršrutas ir saugos taisyklė. Išvardykite juos sąmoningai: VPN tarp svetainių, kliento VPN, VPC peering, transit gateway prijungimai, Direct Connect ir bet koks proxy ar bastionas VPC viduje. Vienas jų yra numatytas kelias, o likusieji – tie, kurių ieškotų užpuolikas.
Tada patikrinkite kiekvieno kelio kontrolės priemones: saugos grupes balansuotojui, tinklo ACL potinkliams ir maršruto sudarymą užtikrinantį maršrutizavimą. Dauguma praneštų atviros vidinės paslaugos atvejų išsprendžiami čia: arba buvo nenumatyta peering, arba kelias buvo numatytas, o programa neturėjo autentifikacijos.
Ketvirtas žingsnis: išbandykite listenerį ir programą atskirai
Pabandykite prisijungti iš tinklo, kuris neturėtų pasiekti paslaugos, ir patvirtinkite, kad negalite. Tada pabandykite iš to, kuris turėtų, ir patvirtinkite, kad pasiekiate listenerį. Šie du rezultatai atskiria tinklo pasiekiamumą nuo programos elgesio, ir jie yra vieninteliai įrodymai, svarbūs atvirumo klausimui.
Pasiekiamas listeneris nėra tas pats kaip prieinama programa. Patikrinkite TLS sertifikatą ir protokolo politiką, tada pačios programos autentifikaciją ir autorizaciją. Vidinė priemonė, priimanti bet kurį skambintoją įmonės VPN, yra atvira kiekvienam tame VPN sukompromituotam nešiojamam kompiuteriui, o tai kitokia rizika nei nukreipta į internetą, bet vis tiek rizika.
Atminkite, kad kontrolės skiriasi pagal tipą. Programų lygmens ugniasienės jungiamos prie vienos balansuotojų šeimos, o ne prie kitos, todėl patvirtinkite, kas iš tikrųjų prieinama jūsų akivaizdoje esančiai schemai ir tipui, užuot darę prielaidą apie lygybę.
Penktas žingsnis: nuspręskite, ar pats vardas svarbus
Viešas išsprendžiamumas gali atskleisti paslaugos pavadinimą, regioną ir adresų diapazoną. Traktuokite tai kaip informacijos atskleidimo klausimą su politikos atsakymu, o ne kaip automatinį incidentą: laikykite jautrius verslo terminus už išteklių pavadinimų ribų ir pažymėkite atskleidimą rizikos žurnale, jei vardų suteikimo tvarka atskleidžia daugiau, nei norite.
Jei organizacija nori privataus vardų suteikimo patirties, privati hostinama zona gali teikti alias, kuris sprendžiamas tik susietose VPC. Tai pakeičia vardą, kurį mato naudotojai; tai nepadaro paslapties tiekėjo sugeneruoto vardo ir nepašalina jokio tinklo kelio.
Nemėginkite prisegti adresų, kad paslėptumėte atsakymą. Balansuotojo adresai keičiasi, prisegimas sugadina TLS tikrinimo įpročius, o kontrolė, kurios iš tikrųjų reikia, yra kas gali užmegzti ryšį ir ko programa iš jų reikalauja. Patikrinkite keturis faktus, užsirašykite juos, ir klausimas nustoja būti dviprasmiškas.