SSH minn relè tal-fluss NGINX mingħajr ma tkissru
Intestatura PROXY hija messaġġ għal riċevitur li jistenna, u rekord DNS bil-proxy mhuwiex relè TCP. Sebħ it-tarf u l-upstream separatament.
SSH pubbliku minn relè jfalli f'żewġ fruntieri mhux marbuta, u t-tiswija ta' waħda normalment tikxef l-oħra. Jew it-tarf jirritorna risposta HTTP minflok ma jġorr fluss, jew ir-relè jdaħħal intestatura li l-backend qatt ma aċċetta li taqra. Tliet kundizzjonijiet jiddeċiedu liema qed tara: fejn ir-rekord pubbliku fil-fatt jipponta, x'jibgħat il-blokk tal-fluss upstream, u liema isem jivverifika l-klijent SSH. Ħadimhom f'dan l-ordni.
Żewġ fruntieri, żewġ sintomi
Falliment fit-tarf jidher bħal paġna tal-istat HTTP li tasal fejn għandu jkun hemm banner SSH. Il-konnessjoni titlesta fil-livell TCP u l-ewwel bajts huma test li jappartjeni lil server web. Dik hija nuqqas ta' qbil fil-protokoll, mhux pakkett mitluf. Tgħidlek ukoll li t-tarf qed jaqdi b'mod deliberat xi ħaġa oħra għal dak l-isem.
Falliment fl-upstream jidher b'mod differenti. Il-konnessjoni tilħaq sshd, sshd jaqra bajts li mhumiex l-iskambju ta' identifikazzjoni li jistenna, u s-sessjoni tmut jew tiddendel mingħajr ma qatt toffri ċavetta.
It-tnejn huma faċli li jiġu konfużi għax it-tnejn jipproduċu klijent li jgħaqqad u mbagħad ifalli. L-ewwel risposta tal-protokoll li tirċievi hija dik li tiddistingwihom, u għalhekk tappartjeni lit-tikketta.
L-intestatura PROXY hija messaġġ, mhux swiċċ
Fil-modulu tal-fluss, proxy_protocol on tordna lil NGINX jikteb intestatura tal-protokoll PROXY lejn l-upstream qabel it-tagħbija. Ma tattivax il-proxy TCP, u m'għandha x'taqsam xejn mal-kriptaġġ SSH. Hija nota indirizzata lir-riċevitur. Jekk ir-riċevitur ma jistax jaqraha, issir skart fil-bidu tal-fluss.
Is-servizz riċevitur irid jikkonsma dik l-intestatura b'mod deliberat. sshd normali jistenna l-iskambju ta' identifikazzjoni SSH bħala l-ewwel bajts tal-konnessjoni, għalhekk preambolu mhux mistenni jkisser il-ħsieb b'mod li jidher qisu server korrott.
stream {
server {
listen 2222;
proxy_pass 10.77.0.20:22;
}
}
Dak il-framment huwa r-relè sħiħ li jaħdem għal backend li jintlaħaq permezz tal-VPN. Ebda direttiva PROXY ma tidher għax ir-riċevitur ma jitkellimx b'dak il-protokoll, u dik l-assenza hija deċiżjoni, mhux tħalla barra.
Aqsam ukoll iż-żewġ direzzjonijiet. L-issettjar ta' proxy_protocol fuq il-linja listen ifisser li NGINX jistenna li l-klijent tiegħu stess jibgħat l-intestatura l-ewwel; li tattivaha għal klijent SSH ordinarju tipproduċi eżattament l-oppost tal-problema li n-nies normalment jippruvaw isolvu.
X'jilħaq tassew l-isem tal-host pubbliku
Paġna HTTP 400 f'sessjoni SSH hija evidenza dwar it-tarf. Xi ħaġa fit-triq titkellem HTTP, u l-ebda xogħol fuq iċ-ċavetta jew il-kont fil-backend mhu se jbiddel dan. Ieqaf tbiddel il-backend sakemm it-tarf ikun solvut.
Ir-rekord bil-proxy ordinarju ta' Cloudflare iġorr it-traffiku HTTP u HTTPS tiegħu appoġġat fuq portijiet definiti. L-attivazzjoni tal-proxy għal isem tal-host ma toħloqx relè TCP ġenerali, u l-moviment ta' SSH għall-port 443 ma jagħmilhiex HTTPS.
Jeżistu żewġ direzzjonijiet prattiċi. Rekord DNS biss jista' jipponta lejn ir-relè TCP tiegħek stess, li jpoġġi d-deċiżjoni dwar l-espożizzjoni f'idejk. Alternattivament, uża prodott li jiddokumenta b'mod espliċitu l-ġarr tal-SSH, bil-konfigurazzjoni tiegħu stess tal-oriġini, il-klijent u l-aċċess.
Liema wieħed li tagħżel, ir-relè xorta jeħtieġ rotta VPN lejn il-backend, konnessjoni permessa u triq lura. Ir-rotta mhijiex fakultattiva għax in-naħa pubblika taħdem.
Żomm l-identità SSH stabbli permezz ta' alias
L-utenti normalment iridu jkomplu jiktbu l-isem tal-host eżistenti tagħhom. Alias fil-konfigurazzjoni SSH jista' jagħmel dan mingħajr ma jbiddel xejn fir-relè, u jżomm il-bidla fuq in-naħa tal-klijent fejn tappartjeni.
Host git.example.com
HostName ssh-entry.example.net
Port 2222
User git
HostKeyAlias git.example.com
Mingħajr HostKeyAlias, OpenSSH ifittex iċ-ċavetta tal-host taħt l-isem li miegħu jgħaqqad, għalhekk id-daħla tiċċaqlaq u kull utent jara avviż ta' ċavetta mibdula fl-ewwel użu. L-issettjar tal-alias iżomm id-daħliet known-hosts stabbli waqt li l-konnessjoni xorta tmur lejn ir-relè.
Dan l-alias japplika biss għal repositorji remoto bbażati fuq SSH. URL Git HTTPS ma jikkonsultahx, u l-URL remota tipika trid taqbel mat-trasport li fil-fatt ippreparajt.
Dak li m'għandekx tagħmel huwa li tiddiżattiva l-verifika taċ-ċavetta tal-host biex l-avviż jisparixxa. Dan ineħħi protezzjoni li t-tiswija tal-ġarr qatt ma talbet biex tmissha, u jibdel fastidju kożmetiku fi skopertura reali.
Ivverifika kull qabża separatament
Ittestja s-semmiegħ pubbliku waħdu, imbagħad il-konnessjoni mir-relè sal-backend mill-host tar-relè, u biss wara l-klijent minn tarf sa tarf. Kull waħda minn dawk it-tliet testijiet teskludi saff differenti. Li taqbeż waħda jfisser li ż-żewġ riżultati li jifdal ma jistgħux jiġu interpretati. Tliet osservazzjonijiet, tliet postijiet fejn falliment jista' jgħix.
Żomm l-indirizz tad-destinazzjoni, il-port u l-ewwel bajts tal-protokoll ma' kull riżultat. Dak it-tliet jiddistingwi żball tat-tarf minn problema ta' routing VPN u minn falliment ta' awtentikazzjoni SSH, u din hija d-differenza bejn tiswija u konġettura.
Fl-aħħar, iddokumenta l-espożizzjoni maħsuba. Relè TCP li jġorr SSH lejn backend privat hija ftuħa deliberata fil-perimetru pubbliku, u jistħoqqlu l-istess reviżjoni bħal kull servizz dieħel ieħor.