Swali mara chache ni kama kuficha kitu kati ya mashine mbili za wingu; swali ni kiolesura kipi unachificha na nani anathibitisha utambulisho wa nani. Naanza mazungumzo haya kwa huduma badala ya mchoro wa mtandao, kwa sababu huduma tayari inajua inachohitaji. Mipaka mitatu inafunika hali nyingi: TLS ya programu yenyewe, bandari moja ya TCP inayoelekezwa kupitia SSH, na tabaka la juu lenye njia linalompa kila mshiriki anwani. Hazipangwi kwa nguvu, bali kwa kiasi cha tatizo wanachofunika.

Anza na huduma, sio mtandao

Toka nje kutoka kwenye mchakato. Inazungumza itifaki gani, mteja atathibitisha jina gani, na nani anaruhusiwa kufungua muunganisho kabisa? Majibu hayo matatu huondoa chaguzi haraka kuliko jedwali lolote la kulinganisha, na usanidi wa huduma yenyewe kwa kawaida huyajibu ndani ya dakika chache.

Chukua API ndogo ya ndani ambayo tayari inatoa HTTPS kwenye bandari 8443 na cheti cha api.internal.example. ss -ltnp kwenye mwenyeji huonyesha inashikilia nini, na openssl s_client -connect 127.0.0.1:8443 -verify_hostname api.internal.example huonyesha kama cheti ni halali kwa jina ambalo mteja atatumia kweli. Ikiwa zote zina afya, huduma inaweza kulinda mtiririko wake yenyewe na inabaki kufikika tu. Hilo ni tatizo dogo zaidi kuliko kujenga mtandao.

Hatua 1: je, huduma inajilinda yenyewe?

Hili ni chaguo la kuchukua linapofaa, na linafaa mara nyingi zaidi kuliko timu zinavyodhani. Usimbaji fiche wa huduma unafunika njia yote kati ya mteja na seva, ikiwa ni pamoja na kila hatua katikati, ambayo hakuna handaki lolote kuzunguka katikati linaiboresha. Weka jina linalotarajiwa na uaminifu kwa uwazi badala ya kutegemea kile ambacho hifadhi chaguo-msingi ya mteja ina kwa bahati.

Usimbaji fiche na ufikikaji hubaki vidhibiti tofauti, na kuviunganisha ndiko kunakofanya chaguo hili likosee. Huduma ya TLS kwenye msikilizaji wa umma asiye na kikomo bado inakubali majaribio ya muunganisho kutoka kwa mtu yeyote, kwa hivyo msikilizaji na sheria za mtandao lazima ziamuliwe bila kujali ukweli kwamba mzigo umelindwa. Kisha angalia tegemezi, kwa sababu API juu ya TLS haisemi chochote kuhusu sehemu ya ugunduzi, bandari ya msimamizi au chaneli ya uhamishaji mkubwa kando yake. Kila moja inahitaji jibu lake, na ndugu mmoja asiyelindwa anatosha kuufanya mpaka wote kuwa hadithi.

Hatua 2: je, bandari moja ya TCP ni hitaji lote?

Wakati hitaji ni bandari moja ya TCP kweli, uelekezaji ni kitu kidogo kinachofanya kazi. Uelekezaji wa ndani wa SSH hubeba bandari hiyo kupitia muunganisho uliothibitishwa tayari uliopo.

Umbo ni ssh -N -L 8443:127.0.0.1:8443 [email protected], na maelezo muhimu ni anwani lengwa: 127.0.0.1 hutatuliwa upande wa mbali, kwa hivyo muunganisho wa huduma hufunguliwa kutoka bastion badala ya kompyuta yako mpito. Funga msikilizaji wa ndani kwa ubanaji kama -L 127.0.0.1:8443:... ili usichapishe huduma kwenye mtandao wako wa ndani kwa bahati mbaya. Kwenye upande wa seva, punguza kile ambacho akaunti inaweza kuelekeza badala ya kuamini tabia nzuri ya mteja. PermitOpen, AllowTcpForwarding local na GatewayPorts no chaguo-msingi ni mipangilio mitatu inayobadilisha relay ya jumla kuwa chaneli maalum.

Mkataba ni mwembamba pande zote mbili. SSH hulinda chaneli yake mwenyewe, na hatua zaidi kutoka bastion hadi programu nyingine inahitaji ulinzi wake. Huduma inayosikiliza tu kwenye loopback ya bastion ina mfiduo tofauti kabisa na ile inayofikiwa kupitia mtandao mwingine, na uelekezaji haubadilishi hilo. Weka uthibitishaji na ukaguzi wa TLS wa programu badala ya kuchukua handaki kama mbadala wao.

Hii inafanya kazi vizuri kwa muunganisho mmoja na mmiliki mmoja. Kwa kiwango kikubwa inakuwa mfumo: migongano ya bandari za ndani, usimamizi, mzunguko wa funguo na swali la nani anaanzisha upya uelekezaji baada ya kuwasha upya.

Hatua 3: je, uelekezaji ndio hitaji halisi?

Orodha hiyo ni gharama ya uaminifu ya chaguo dogo zaidi, na ndiyo sababu timu hatimaye hubadilisha amri chache za nyuma zilizosahaulika na kitu kinachosimamiwa. Mbadala si VPN kiotomatiki. Ikiwa hitaji bado ni bandari moja ya TCP, uelekezaji unaosimamiwa na mmiliki aliyeandikwa ni wa bei nafuu kuendesha kuliko tabaka la juu na hushindwa kwa njia unazoweza kuona. Pima umiliki wa kiutendaji kabla ya kupima umaridadi.

Uelekezaji huwa jibu sahihi wakati uelekezaji ni hitaji. Programu kadhaa zinazohitaji muunganisho wa kawaida wa IP, itifaki ambazo uelekezaji wa TCP hauwezi kubeba, au huduma zinazohama kati ya wenyeji — zote zinaelekeza upande mmoja.

Tabaka la juu huwapa washiriki anwani na njia, kisha kazi halisi huanza: safu zisizogiliana, umiliki wa njia, DNS, usajili, ubatilishaji na kile kinachotokea mshirika anapotoweka. Hakuna hata kimoja cha haya kinachokuja na anwani. Mshirika aliyekubaliwa kwenye tabaka pia haidhinishwi kiotomatiki kwa kila operesheni kwenye lengo, kwa hivyo uthibitishaji wa kiwango cha huduma hubaki.

Unachomiliki baadaye

Mambo mawili ni mali ya rekodi unayoacha. La kwanza ni utambulisho ambao mteja anatarajiwa kuthibitisha, kwa sababu kila moja ya mipaka hii huzorota kimyakimya mara tu ukaguzi wa jina unapolegezwa ili kitu kifanye kazi. La pili ni hatua ya kuondoa: ufunguo gani, sheria gani au njia gani hutoweka ufikikaji unapoisha, na nani anafanya hivyo.

Safari hii huisha mahali ilipoanzia, kwenye huduma. Chagua mpaka unaofunika trafiki halisi na kuthibitisha washirika uliokusudia kuthibitisha, kisha andika jinsi ufikikaji unavyosasishwa, kufuatiliwa na kuondolewa. Marejeleo ya OpenSSH ni mahali pa kuthibitisha chaguo za uelekezaji kabla ya kuahidi mkataba mwembamba. Ikiwa hauwezi kueleza hatua ya kuondoa kwa sentensi moja, mpaka ni mkubwa kuliko tatizo.

Makala zinazohusiana