HTTPS Basic Auth vs IPsec: čo každý z nich chráni
Prejdite jednou požiadavkou od prehliadača k aplikácii: TLS skok, odpoveď 401 a tunel chránia rôzne vzťahy a zlyhávajú s rôznymi dôkazmi.
Otvorte nástroje pre vývojárov, načítajte internú aplikáciu a sledujte, ako jedna požiadavka prejde štyrmi kontrolnými bodmi, kým sa stránka vykreslí. Najprv sa preloží meno, potom sa otvorí TCP spojenie, potom TLS handshake určí, kto je server, a až potom sa aplikácia spýtá, kto ste. Berte ich ako oddelené udalosti, pretože každá zlyháva s iným dôkazom a každá patrí inému tímu. Väčšina zmätku v incidentoch vzniká čítaním 401 ako problému tunela alebo problému tunela ako nesprávneho hesla.
Kontrolný bod prvý: je to ten server, s ktorým ste chceli hovoriť
TLS handshake odpovie na tú otázku skôr, než sa odošle akýkoľvek údaj o prihlásení. Váš klient overí reťazec certifikátov voči úložisku dôvery a skontroluje, či meno v certifikáte zodpovedá hostiteľovi, ktorého ste zadali. Ak to zlyhá, prehliadač zobrazí chybu certifikátu a hlavičku Authorization vôbec neodošle. Výzva na heslo teda nie je dôkazom, že server je pravý; je dôkazom, že aplikácia odpovedala.
Tu sa objavuje prvá hranica. TLS chráni spojenie po bod jeho ukončenia. Ak load balancer ukončí TLS a do aplikácie posiela obyčajné HTTP, šifrovaný úsek končí na balancri a prihlasovacie údaje sú chránené len na prvom skoku.
Kontrolný bod druhý: čo skutočne putuje pri výmene 401
HTTP Basic posiela identifikátor používateľa a heslo v hlavičke, zakódované v Base64, ako je opísané v RFC 7617. Authorization: Basic dXNlcjpwYXNz je tvar; kódovanie je reverzibilné pre kohokoľvek, kto dokáže prečítať požiadavku, takže všetko utajenie pochádza z transportu pod tým. curl -v ukazuje výzvu WWW-Authenticate: Basic aj hlavičku, ktorú posielate späť.
Tá hlavička hovorí aplikácii, kto sa pýtá. Nehovorí sieti, kto sa smie pripojiť, a sama o sebe nič nešifruje. Aplikácia stále musí overiť údaj o prihlásení voči úložisku a rozhodnúť, čo tento účet smie, čo je autorizácia a deje sa po autentifikácii.
Kde sa v tejto ceste nachádza tunel IPsec
Teraz choďte od prehliadača smerom von. Tunel IPsec medzi bránami chráni vybranú prevádzku medzi dvoma bezpečnostnými bránami, nie medzi vaším notebookom a procesom aplikácie. ESP v tunelovom režime zabalí pôvodný paket, brány ho zašifrujú a autentifikujú a vnútorné adresy prežijú, aby druhá strana mohla požiadavku smerovať do aplikácie.
Výber je časť, na ktorej ľudia padajú. Tunely založené na politike používajú selektory prevádzky, často vyjadrené ako zoznamy riadenia prístupu, na rozhodnutie, ktoré pakety vstúpia do tunela. Tunely založené na trasách používajú namiesto toho virtuálne rozhranie a smerovaciu tabuľku. V Linuxe ip xfrm policy zobrazuje selektory a ip xfrm state zavedené bezpečnostné asociácie; na firewallovom zariadení je ekvivalentom tabuľka SA tunela plus sledovač paketov.
Dôsledok stojí za to povedať priamo. Paket môže sedieť v dokonale zdravom tuneli a napriek tomu niesť HTTPS požiadavku, ktorú aplikácia odmietne, a platné prihlasovacie údaje môžu prísť cestou bez akéhokoľvek tunela, ak to smerovanie dovolí.
Čitajte zlyhanie na vrstve, ktorá ho nahlásila
401 znamená, že aplikácia neprijala prihlasovací údaj. 403 znamená, že prijala identitu a odmietla operáciu. Chyba TLS znamená, že klient neprijal server. Žiadna trasa alebo nezhoda politiky znamená, že paket nikdy nedorazil k vzdialenej bráne. Štyri rôzne zlyhania, štyria rôzni vlastníci, a žiadne z nich sa nedá diagnostikovať hľadením na prihlasovací formulár.
Použite dôkazy, ktoré produkuje každá vrstva: sieťový panel prehliadača pre stav a hlavičky, openssl s_client -connect host:443 pre reťazec certifikátov, počítadlá SA a protokoly brány pre tunelovú prevádzku a protokol aplikácie pre rozhodnutie o účte. Keď dve vrstvy hlásia chyby naraz, opravte najprv tú nižšiu, pretože mŕtvy tunel ľahko zamaskuje zlyhanie autentifikácie a naopak.
Zmapujte jednu službu od konca po koniec
Napíšte päť riadkov pre službu, ktorú diagnostikujete: ktoré uzly tunel spája, ktoré podsiete a porty selektory povoľujú, kde sa ukončuje TLS a akú identitu certifikát tvrdí, ktorý účet aplikácie a rola sa používajú a kde ktorá vrstva loguje. Držte ich na jednej strane, pretože zmyslom mapy je ukázať, kde sa končí zodpovednosť jednej vrstvy a začína ďalšej.
Potom otestujte jeden negatívny prípad na vrstvu. Použite nesprávne heslo a potvrďte, že dostanete 401, nie časový limit. Pripojte sa z podsiete mimo selektorov a potvrďte, že paket nejde tunelom. Predložte certifikát na nesprávne meno a potvrďte, že klient odmietne skôr, než odošle prihlasovacie údaje. Tie tri výsledky o dizajne povedia viac než akákoľvek schéma krábic.
Na záver sa vedome rozhodnite, akú ochranu každý vzťah potrebuje. Basic autentifikácia cez TLS sa rozumne hodí pre malý interný nástroj za bránou; nenahrádza autorizáciu na používateľa ani ochranu prevádzky za koncovým bodom TLS. Tunel chráni cestu, certifikát chráni skok a 401 chráni účet, a len ten posledný vie, kto ste.