HTTPS Basic authentication kumpara sa IPsec: ano ang pinoprotektahan ng bawat isa
Sundan ang isang kahilingan mula browser hanggang app: ang bahagi ng TLS, ang 401, at ang tunnel ay nagpoprotekta ng magkakaibang relasyon at nabibigo sa magkakaibang ebidensya.
Buksan ang mga tool ng developer, i-load ang panloob na app, at panoorin ang isang kahilingan na dumaan sa apat na checkpoint bago i-render ang pahina. Una, nare-resolve ang pangalan, pagkatapos ay bumubukas ang koneksyon ng TCP, pagkatapos ay itinatag ng TLS handshake kung sino ang server, at pagkatapos lang nagtatanong ang app kung sino ka. Ituring ang mga ito na magkakahiwalay na pangyayari, dahil bawat isa ay nabibigo sa ibang ebidensya at bawat isa ay pag-aari ng ibang koponan. Karamihan ng kalituhan sa mga insidente ay nagmumula sa pagbasa ng 401 bilang problema ng tunnel, o problema ng tunnel bilang masamang password.
Unang checkpoint: ito ba ang server na balak mong kausapin
Sinasagot ng TLS handshake ang tanong na iyon bago maipadala ang anumang kredensyal. Binibigyang-katwiran ng iyong client ang chain ng sertipiko laban sa isang trust store at tinitingnan kung tugma ang pangalan sa sertipiko sa host na naipasok mo. Kung mabigo iyon, nagpapakita ang browser ng error sa sertipiko at hindi kailanman ipinapadala ang Authorization header. Kaya ang paghingi ng password ay hindi ebidensya na tunay ang server; ebidensya ito na sumagot ang app.
Dito lumilitaw ang unang hangganan. Pinoprotektahan ng TLS ang koneksyon hanggang sa puntong tinatapos ito. Kung tatapusin ng load balancer ang TLS at magpapasa ng simpleng HTTP sa app, nagtatapos ang naka-encrypt na bahagi sa balancer, at ang mga kredensyal ay protektado lamang sa unang bahaging iyon.
Ikalawang checkpoint: ano ang aktwal na bumibiyahe sa palitan ng 401
Ang HTTP Basic authentication ay nagpapadala ng identifier ng user at password sa isang header, naka-encode gamit ang Base64 ayon sa inilarawan sa RFC 7617. Authorization: Basic dXNlcjpwYXNz ang hugis nito; maibabalik ng kahit sino na makakabasa ng kahilingan ang encoding, kaya lahat ng pagiging lihim ay nagmumula sa transport sa ilalim. Ipinapakita ng curl -v ang hamon na WWW-Authenticate: Basic at ang header na ipinapadala mo pabalik.
Sinasabi ng header na iyon sa app kung sino ang nagtatanong. Hindi nito sinasabi sa network kung sino ang maaaring kumonekta, at wala itong ini-encrypt sa sarili nito. Kailangan pa ring suriin ng app ang kredensyal laban sa isang store at magpasya kung ano ang maaaring gawin ng account na iyon, at iyon ang awtorisasyon at nangyayari pagkatapos ng authentication.
Saan nakalagay ang IPsec tunnel sa landas na iyon
Ngayon lumakad palabas mula sa browser. Pinoprotektahan ng IPsec tunnel sa pagitan ng mga gateway ang piling trapiko sa pagitan ng dalawang gateway ng seguridad, hindi sa pagitan ng iyong laptop at ng proseso ng app. Binabalot ng ESP sa tunnel mode ang orihinal na packet, ini-encrypt at pinapatunayan ito ng mga gateway, at nananatili ang mga panloob na address upang ma-route ng kabilang panig ang kahilingan sa app.
Ang pagpili ang bahaging ikinakadapa ng mga tao. Gumagamit ang mga tunnel na nakabatay sa patakaran ng mga traffic selector, kadalasang isinusulat bilang access control list, upang magpasya kung aling mga packet ang pumapasok sa tunnel. Gumagamit naman ang mga tunnel na nakabatay sa ruta ng virtual interface at routing table. Sa Linux, ipinapakita ng ip xfrm policy ang mga selector at ipinapakita ng ip xfrm state ang mga naitatag na security association; sa isang firewall appliance, ang katumbas ay ang SA table ng tunnel at isang packet tracer.
Nararapat sabihin nang tuwiran ang kahihinatnan. Maaaring nasa loob ng ganap na malusog na tunnel ang isang packet at nagdadala pa rin ng HTTPS na kahilingan na tinatanggihan ng app, at ang mga wastong kredensyal ay maaaring dumating sa landas na walang tunnel kung papayagan ito ng routing.
Basahin ang kabiguan sa layer na nag-ulat nito
Ang 401 ay nangangahulugang hindi tinanggap ng app ang kredensyal. Ang 403 ay nangangahulugang tinanggap nito ang pagkakakilanlan at tinanggihan ang operasyon. Ang error ng TLS ay nangangahulugang hindi tinanggap ng client ang server. Walang ruta o hindi tugmang patakaran ay nangangahulugang hindi kailanman narating ng packet ang malayong gateway. Apat na magkakaibang kabiguan, apat na magkakaibang may-ari, at wala sa mga ito ang masusuri sa pamamagitan ng pagtitig sa form ng pag-login.
Gamitin ang ebidensyang ginagawa ng bawat layer: ang network panel ng browser para sa status at mga header, openssl s_client -connect host:443 para sa chain ng sertipiko, ang mga SA counter at log ng gateway para sa trapiko ng tunnel, at ang log ng app para sa desisyon sa account. Kapag dalawang layer ang nag-ulat ng error nang sabay, ayusin muna ang mas mababa, dahil madaling maitatago ng patay na tunnel ang kabiguan sa authentication at gayon din ang kabaligtaran.
I-mapa ang isang serbisyo mula simula hanggang dulo
Sumulat ng limang linya para sa serbisyong inaayos mo: aling mga panig ang ikinokonekta ng tunnel, aling mga subnet at port ang pinapayagan ng mga selector, saan nagtatapos ang TLS at anong pagkakakilanlan ang pinapatunayan ng sertipiko, aling account at role ng app ang ginagamit, at saan nagla-log ang bawat layer. Panatilihin ang mga ito sa isang pahina, dahil ang layunin ng mapa ay ipakita kung saan nagtatapos ang responsibilidad ng isang layer at saan nagsisimula ang susunod.
Pagkatapos, subukan ang isang negatibong kaso sa bawat layer. Gumamit ng maling password at tiyakin na nakakakuha ka ng 401, hindi timeout. Kumonekta mula sa subnet sa labas ng mga selector at tiyakin na hindi dumadaan sa tunnel ang packet. Magpakita ng sertipiko para sa maling pangalan at tiyakin na tumatanggi ang client bago magpadala ng kredensyal. Ang tatlong resultang iyon ay nagsasabi sa iyo ng higit tungkol sa disenyo kaysa sa anumang diagram ng mga kahon.
Sa huli, sadyang magpasya kung anong proteksyon ang kailangan ng bawat relasyon. Ang Basic authentication sa TLS ay makatwirang angkop para sa maliit na panloob na tool sa likod ng gateway; hindi ito kapalit ng awtorisasyon kada user o ng pagprotekta sa trapikong lampas sa TLS endpoint. Pinoprotektahan ng tunnel ang landas, pinoprotektahan ng sertipiko ang bahagi, at pinoprotektahan ng 401 ang account, at ang huli lang sa mga iyon ang nakakaalam kung sino ka.