Pöörd-SSH ühele seadmele: loopback-kuulaja või marsruuditud VPN?
Üks haldusport seadmele, mis oskab ainult välja helistada. Kolm tingimust otsustavad, kas pöördtunnelist piisab või on vaja tõelist marsruuditud teed.
Teie seade asub operaatori NAT-i taga, suudab avada väljaminevaid ühendusi ja käitab SSH-serverit, kuhu keegi ei pääse. Saabuv taotlus sõnastatakse tavaliselt kui "andke sellele VPN", mis on üks vastus paljude seas. Enne selle vastuvõtmist otsustage, kas vajate ühte halduslikku TCP-porti või marsruuditud teed terve alavõrgu juurde, sest need on erinevad projektid erineva kokkupuutega.
Pöördtunnel vastab kitsale versioonile hästi. Seade helistab teie jaoturi poole, palub jaoturil kuulata loopback-pordil ja edastab selle pordi tagasi omaenda SSH-teenusele. Seejärel jõuavad administraatorid kuulajani jaoturi kaudu, mitte avaliku interneti kaudu.
Kolm tingimust, mis valiku otsustavad
Kirjutage need enne igasugust seadistamist üles. Need on piir piiratud haldussisendi ja võrgu laienduse vahel ning nende segamini ajamine viib selleni, et viierealdisest tunnelist saab omanikuta lame võrk.
| Condition | Reverse tunnel fits | Something else is needed |
|---|---|---|
| How many services must be reachable? | One, or a small fixed set on loopback | Anything that needs many ports or dynamic discovery |
| Who connects, and how are they authenticated? | Named administrators with their own hub accounts | Third parties, or anything needing per-flow audit you do not control |
| Does the device's own LAN need to be reachable? | No | Yes, so a routed VPN or a managed platform is the honest answer |
Kolmas rida on see, mille üle inimesed vaidlevad. Tunnel seadme SSH-pordini ei pane selle naabreid teie võrku ega tohiks jätta muljet, et see seda teeb täiendavate edasisaatmiste ahela kaudu. Kui nõue on tõesti LAN, öelge seda ja projekteerige hoopis see.
Jaoturi pool: piiratud releekonto
Andke igale seadmele oma releekonto avaliku võtme autentimisega ja ilma interaktiivse seansita. Match blokk, mis on selle kontoga piiratud, hoiab loa väikesena, ja privaatvõti jääb seadmesse, kuhu see kuulub.
Match User relay-dev-7
AuthenticationMethods publickey
PubkeyAuthentication yes
AllowTcpForwarding remote
PermitListen 127.0.0.1:21022
GatewayPorts no
MaxSessions 0
PermitTTY no
X11Forwarding no
AllowAgentForwarding no
MaxSessions 0 on huvitav rida. See keeldub shelli- ja alamsüsteemiseanssidest, lubades samal ajal edasisaatmist, mida seade vajab, nii et varastatud võtit ei saa interaktiivseks sisselogimiseks muuta. PermitListen kinnitab jaoturi poolel kuulaja aadressi ja pordi ning GatewayPorts no hoidke seda loopbackil, selle asemel et avada see võrgule, kus jaotur asub.
Testige kehtivat seadistust enne uuesti laadimist ja hoidke selle ajal teine seanss avatuna. Match blokk, mis rakendub kogemata kõigile, või kirjaviga valiku nimes, on klassikaline viis end seadmest välja lukustada, mida te karastate. Kuvage jooksev seadistus ja lugege valikud uuesti, selle asemel et usaldada faili, mille just kirjutasite. Pange tähele, et valikute tugi erineb versioonide lõikes, nii et uuemas serveris aktsepteeritud rida võib vanemas lihtsalt tähelepanuta jääda.
Seadme pool: edasisaatmine, mis nurjub valjusti
Seade avab ühenduse ja küsib kuulajat. Kaks aadressi argumendis -R tähendavad eri asju ja nende lugemine vasakult paremale on kiireim viis meeles pidada, kumb on kumb.
ssh -NT \
-o ExitOnForwardFailure=yes \
-o ServerAliveInterval=30 \
-o ServerAliveCountMax=3 \
-R 127.0.0.1:21022:127.0.0.1:22 \
[email protected]
Vasakpoolne paar on koht, kus jaotur peaks kuulama. Parempoolne paar on see, millega seade ühendub, kui taotlus saabub, lahendatud seadme enda poolelt. Nende vahetamine annab tunneli, mis tõuseb puhtalt ja edastab valesse kohta, mis on hullem kui nurjumine.
ExitOnForwardFailure=yes paneb käsu väljuma, kui nõutud kuulajat ei saa luua, nii et taaskäivitustsükkel ütleb teile tõe, selle asemel et jätta pooleldi töötav seanss. See ei ütle midagi selle kohta, kas kohalik SSH-teenus on hiljem terve, seega siduge see protsessihalduri ja aeg-ajalt tõelise ühendustestiga.
Ärge kunagi asendage loopback-kuulamisadressi metamärgiga, et vältida lisahüpet. See üks muudatus on erinevus haldustee ja avalikult kättesaadava pordi vahel ning see juhtub tavaliselt silumise ajal ja jääb siis püsima. Kui kolleeg ei pääse pordile jaoturi kaudu, parandage hüppe seadistust, mitte laiendage sidumist. Loopback on kogu selle kujunduse turvaargument.
Administraatori juurdepääs jaoturi kaudu
Jaoturis tavalise kontoga administraator saab selle kaudu hüpata edastatud pordile. Releekontot selleks ei kasutata ja just selles on mõte hoida neid eraldi.
ssh -J [email protected] -o HostKeyAlias=device-7 \
-p 21022 [email protected]
Kontrollige seadme hostivõtit valitud pseudonüümi all, sest see võti identifitseerib seadme ahela lõpus ja tunnel on ainult transport. Otsast-otsani sisselogimine autentib endiselt mõlemat otsa; ühises jaoturis lõppev tunnel ei tee sellest iseenesest usaldusväärset teed.
Võtke elutsükkel omaks
Käivitage seadme käsk protsessihalduri all täpselt ühe aktiivse eksemplariga ja taaskäivituspoliitikaga, mille valisite teadlikult. Keepalive-valikud tuvastavad surnud partneri; need ei ärata ellu protsessi, mis väljus.
Seejärel kirjutage kasutuselt kõrvaldamise protseduur. Iga seade saab oma kuulaja ja oma võtme, nii et kasutuselt kõrvaldamine tähendab selle konto tühistamist ja selle võtme eemaldamist, mitte kogu laevastikule ühise saladuse pööramist.
Lõpuks pidage meeles, mida loopback teile annab. See piirab võrgu kokkupuudet ja ei tee midagi teiste kohalike kasutajate suhtes ühises jaoturis, seega peab jaoturi enda juurdepääsupoliitika ikkagi õige olema. sshd_config viide dokumenteerib kõik ülal kasutatud valikud ja tasub edasisaatmise jaotised täielikult läbi lugeda, enne kui mõnda neist laiendate.