SaaS-i haldusala VPN-i taga: millist aadressi usaldada?
Päritolu näeb sinu VPN-lüüsi väljuvat aadressi, mitte sülearvuti tunneliaadressi. Usalda ainult konfigureeritud puhverserveri päist ja piira seejärel iga haldustoiming.
Avalikud SaaS-lehed võivad jääda kõigile avatuks, samal ajal kui nende taga olevad haldustoimingud keelduvad kõigist väljaspool VPN-i. Mehhanism, mis seda võimaldab, ei ole peidetud menüü ega eraldi sisselogimisleht; see on päringu toonud võrgutee kontroll. Kui aadressitõend on vale, lukustab kontroll välja tõelised administraatorid või lubab sisse igaühe, kes oskab päist kirjutada. Alusta sellest, mida päritolu tegelikult saab.
Mida päritolu pärast tunnelit tegelikult saab
Kui brauser jõuab avalikule saidile VPN-i kaudu, mis kannab ka internetiliiklust, tõlgib lüüs ühenduse enne selle lahkumist. SaaS näeb lüüsi avalikku väljuvat aadressi, tavaliselt ühte aadressi või väikest vahemikku, ja ei näe kunagi sülearvuti tunneliaadressi. Seepärast ebaõnnestub 10.90.0.42 lubatud loendisse lisamine ja seepärast ebaõnnestub kogu RFC 1918 lisamine veel valjemalt: teine lubab sisse iga privaatvõrgu, mis sind kätte saab. Ainus aadress, millele tasub tingimust seada, on see, mida sinu organisatsioon väljumiskohas tegelikult omab.
curl -s https://ifconfig.me
dig +short admin.example.com
Jagatud tunnelamine murrab selle eelduse vaikselt. Kui VPN kannab ainult privaatseid kontorimarsruute, lahkub päring avaliku haldushosti nimele kohaliku teenusepakkuja kaudu ja päritolu näeb elukohaaadressi. Ühendatud VPN-i ikoon ei tõesta selle konkreetse sihtkoha kohta midagi, seega testi sihtkohta, mitte tunnelit.
Peatu ja paranda marsruutimine enne mis tahes poliitika kirjutamist, kui väljuv aadress erineb kasutajati. Tingimus, mis vastab ainult osale administraatoritest, on hullem kui tingimuse puudumine, sest see peidab probleemi kuni juhtumini.
Usalda ainult puhverserverit, mis aadressi ümber kirjutab
Enamik avalikke saite seisab CDN-i või vastupuhverserveri taga, seega päritolu sokli aadress kuulub sellele esiosale, mitte külastajale. Esiosa edastab tavaliselt algse aadressi päises, ja seda päist kontrollib ründaja, kui päritolu ei võta seda vastu ainult teadaolevatelt puhverserveritelt. Konfigureeri usaldusväärsete allikate loend selgesõnaliselt ja muuda päritolu kõikjalt mujalt kättesaamatuks. Ilma selle teise poolleta möödub ründaja puhverserverist ja saadab päise otse.
set_real_ip_from 192.0.2.0/24;
real_ip_header X-Forwarded-For;
real_ip_recursive on;
curl -H 'X-Forwarded-For: 198.51.100.27' https://origin.example.com/admin
Sama loogika kehtib PROXY-protokolli kohta: see on usaldusväärne ainult siis, kui kuulaja on seotud liidesega, kuhu puhverserver pääseb ja keegi teine ei pääse. Puuduv aadressikontekst peab panema kaitstud kontrolli ebaõnnestuma, mitte langema vaikimisi lubamisse. Puuduv päis ei ole usaldusväärse tee tõend.
Seo tingimus iga kaitstud toiminguga
Pane kontroll autoriseerimispiirile, millest iga kaitstud toiming läbi läheb, mitte lehele, mis menüüd renderdab. Marsruudigrupid, vahetarkvara või poliitikakiht töötavad kõik; koopia iga käsitleja kohta mitte, sest käsitlejal, mille keegi järgmisel kvartalil lisab, seda ei ole.
user = requireAuthenticatedSession()
requirePermission(user, "admin")
requireVpnEgress(verifiedClientAddress(request))
performProtectedOperation(user, request)
Sama piir peab katma JSON API, ekspordid, allkirjastatud allalaadimise URL-id ja WebSocketi käepigistuse, kuna ükski neist ei vaja, et HTML-lehte esmalt küsitaks. Allalaadimislink, mis loodi VPN-i töötamise ajal, jääb hiljem kehtima, kui allalaadimise lõpp-punkt uuesti ei kontrolli. Pikaajalised sessioonid vajavad samuti ümberhindamisreeglit, muidu muutub üks autenditud päring alaliseks erandiks. Vaikimisi keeldumine on ainus seade, mis personali vahetumise üle elab.
Jagatud vahemälud on teine tee kontrollist mööda. Vahemälu, mis juba hoiab kaitstud vastust, saab seda serveerida ilma päritoluga ühendust võtmata, seega märgi haldusvastused privaatseks ja hoia need jagatud salvestusest eemal. Kui vahemälu peab neid serveerima, peab juurdepääsukontroll jooksma enne serveerimist, mis tavaliselt tähendab, et see ei saa üldse jagatud vahemälu olla.
Testi möödasõite, mille sa just sulgesid
Harjuta maatriksit, mitte õnnelikku teed: administraator läbi VPN-i, sama administraator ilma selleta, mitteadministraator selle kaudu ja võltsitud aadressipäis. Lisa päring otse päritolule ja päring vahemällu salvestatud vastusega, sest need kaks jätavad esiosa täielikult vahele.
curl -sI https://admin.example.com/export.csv
curl -s -H 'X-Forwarded-For: 198.51.100.27' https://origin.example.com/admin
curl -s https://admin.example.com/api/me -o /dev/null -w '%{http_code}\n'
Iga päring peaks tagastama oleku, mida poliitika lubab, ja logi peaks registreerima, millist aadressitõendit kasutati. Kata IPv6 eraldi, sest kahe virnaga päritolu võib näha teist allikaperekonda kui see, mida testisid. Hoia tavalised klienditoimingud väljaspool VPN-i töös, muidu võetakse muudatus tagasi esimesel korral, kui klient kurdab. Kirjuta iga rea oodatav tulemus enne käivitamist üles, et üllatav läbiminek oleks nähtav.
Väljuv aadress tõestab lubatud võrguteed, mitte inimest ja mitte hallatavat seadet. Hoia seda ühe tingimusena autentimise ja loa kõrval ning haldusala jääb kitsaks, muutmata kogu toodet ainult VPN-i teenuseks. See eraldus on disain, mitte selle piirang.