Hokker app-ferkear draacht in SSH-foarútstjoering eins?
In skulp, in lokale foarútstjoering, SOCKS en tunnelapparaatmodus biede ferskillende ynterfaces. Neam dyjinge dy’t jo app brûke kin foardat jo dy mei in rûtearre VPN ferlykje.
De terminal ferbynt, de prompt ferskynt, en elkenien is it iens dat de SSH-tagong wurket. Dan kin in databankkliïnt op ’e laptop noch hieltyd de partikuliere host net berikke, en de sesje krijt de skuld. Wat boud is, wie in skulp, en dat is ien fan fjouwer hiel ferskillende ynterfaces dy’t SSH biede kin. Neam earst it ynterface en test dan dat de applikaasje it echt brûkt. De folchoarder is wichtich, want elk ynterface mislearret op syn eigen wize.
Neam it ynterface foardat jo wat dan ek ferlykje
De hânlieding fan de OpenSSH-kliïnt ûnderskiedt fjouwer meganismen dy’t maklik trochinoar helle wurde. In skulp of in opdracht op ôfstân wurdt útfierd op ’e SSH-host. In lokale foarútstjoering iepenet in harkjende socket op ’e kliïnt en makket de fierdere ferbining fan ’e ôfstânkant. In foarútstjoering op ôfstân docht it tsjinoerstelde en harket oan ’e serverkant. Dynamyske foarútstjoering biedt in SOCKS-einpunt foar programma’s dy’t witte hoe’t se it brûke moatte.
- Skulp: it programma rint op ’e masine op ôfstân, lokaal harket neat.
- Lokale foarútstjoering: jo laptop hat in poarte, de host op ôfstân makket de útgeande ferbining.
- Foarútstjoering op ôfstân: de ôfstânkant hat in poarte, ferkear komt werom nei jo ta.
- Dynamysk: in SOCKS-proxy op ’e kliïnt, allinnich brûkt troch proxybewuste applikaasjes.
Net ien fan dizze ynstallearret in rûte. In programma dat proxyynstellingen negearret, of UDP praat, of nammen sels oplost, wurdt net beynfloede troch in aktive SSH-sesje. Dat is gjin flater yn SSH; it is de omfang fan it ynterface dat jo keazen hawwe.
Lokale, ôfstâns- en dynamyske foarútstjoeringen ferskille yn wa’t harket
It ûnderskie dat de measte gefallen beslist, is wa’t de harkjende socket besit. By in lokale foarútstjoering harket de kliïnt en kiest it fierre ein it doelwyt, dêrom wurdt it doeladres út it eachpunt fan ’e server oplost. By in foarútstjoering op ôfstân harket de server en wurdt de ferbining werom nei jo kant droegen, en sa biedt jo in lokale tsjinst oan sûnder dy daliks te publisearjen.
ssh -N -L 5432:db.internal.example:5432 [email protected] ssh -N -D 1080 [email protected] ss -ltnp | grep -E '5432|1080'
It earste kommando bynt poarte 5432 op ’e laptop en stjoert dy foarút nei de databank sa’t dy fan ’e bastion ôf te sjen is. It twadde makket in SOCKS-proxy op poarte 1080. It tredde kommando befêstiget hokker prosessen echt harkje, en dat is it iennige bewiis dat de foarútstjoering bestiet ynstee fan stil mislearre te wêzen op in poartekonflikt.
Dynamyske foarútstjoering fertsjinnet syn eigen warskôging: it dekt allinnich applikaasjes dy’t SOCKS respektearje. In browser kin derop rjochte wurde, in kommandorigel-ark kin sein wurde it te brûken, en in databankstjoerder mei syn eigen ferbiningsstapel kin it meast net. Oannimme dat elk programma op ’e masine no de tunnel brûkt, is de meast foarkommende flater yn dit hiele fjild.
Tunnelapparaatmodus is de iennige echte netwurkútsûndering
OpenSSH stipet ek -w tunnelapparaat-foarútstjoering, dy’t in punt-nei-punt-ynterface trochjout ynstee fan in TCP-harker. Dat is in echte netwurktunnel, en hy wurdt bewust konfigurearre, net as in bywurking fan it iepenjen fan in skulp.
sudo ssh -w 0:0 [email protected] ip addr show tun0
Hy hat de byhearrende ynterfacenûmers nedich dy’t oan beide kanten beskikber binne, de juste konfiguraasje op ’e server en genôch foech op ’e kliïnt om it apparaat te meitsjen. Hy hat ek in adressearrings- en rûteplan nedich, want in keale ynterface draacht gjin belied oer hokker doelen it brûke moatte.
Sels dan einiget de tunnel by de host op ôfstân. Hokker beskerming de SSH-transport ek biede, dy einiget dêr, en de fierdere ferbining is in aparte sprong. In VPN-gateway hat deselde foarm fan grins, dêrom soe de ferliking oer omfang en einiging gean moatte en net oer hokker ark sterker is. Dy grins lûd neame besljochtet ek it skeel oer de fraach oft in tunnel «alles fersiferet», want dat docht er dúdlik net.
Test dat jo applikaasje it ynterface brûkt dat jo boud hawwe
Ferifikaasje is per applikaasje, net per sesje. In wurkjende foarútstjoering bewiist dat de poarte bûn is en de ôfstânkant kieze kin; it bewiist net dat it programma dat jo oanbelanget der troch ferbûn is.
curl -sS --socks5-hostname 127.0.0.1:1080 -o /dev/null -w '%{http_code}\n' https://app.internal.example/health
psql "host=127.0.0.1 port=5432 dbname=app sslmode=require" -c 'select 1'It earste kommando stjoert in fersyk troch it SOCKS-einpunt mei de hostnamme op ôfstân oplost, en it twadde beproevet de foarútsjoende databankpoarte wylst TLS noch ferplicht is. Rin deselde tests mei de foarútstjoering stoppe om te befêstigjen dat se mislearje, want in test dy’t beide kanten slagget, hat nea de tunnel brûkt.
Fergelykje dan mei in rûtearre VPN allinnich op ’e diminsjes dy’t fan belang binne: hokker doelen dekt binne, hokker protokollen wurkje, wêr’t beskerming einiget en wa’t de tagong goedkarre moat. In foarútstjoering foar ien tsjinst kin it smeller en bettere antwurd wêze, wylst in VPN de juste foarm is as in protte applikaasjes deselde netwurkpaad nedich hawwe. Net ien fan beide jout alles wat fan syn fierre einpunt berikber is.