Võite kasutada sisseehitatud OpenSSH-server Windowsis portide edastamiseks läbi an SSH tunnel (SSH tunneldamine). Pordiedastus SSH-s võimaldab teil tunneldada (edasida) rakendusporte kohalikust arvutist kaugserverisse ja vastupidi. Pordiedastus SSH-tunneli kaudu on laialdaselt kasutusel Linuxi/Unixi keskkondades ja nüüd saate seda funktsiooni kasutada ka Windowsis. Selles näites näitame, kuidas tunneldada RDP-ühenduse liiklust OpenSSH kaudu Windows Serveri hostis.
Sisu:
- RDP turvamine SSH tunneliga (kohalik TCP edastamine)
- Kuidas luua SSH-tunnelit Windowsis Putty abil?
- TCP kaugedastus (Reverse SSH) kohalikku arvutisse
Mis on SSH tunneldamine?
SSH-tunnel pakub turvalise, krüptitud TCP-ühenduse kohaliku hosti ja kaug-SSH-serveri vahel. SSH-pordi edastamine võimaldab teil SSH kaudu tunneldada ühendust kohaliku masina kohalikust pordist mis tahes kaugserveri TCP-pordiga (või vastupidi).
Pordiedastust SSH tunnelites kasutatakse:
- Mööda tulemüüridest;
- tagauste avamine eravõrkudele;
- VPN-stsenaariumide asendused turvalise kaugühenduse jaoks;
- Kaitske pärandrakenduste (protokollide) liiklust, mis edastavad andmeid selge tekstina (ilma krüptimiseta).
TCP-liiklust/porti saab edastada ainult SSH-tunnelisse (UDP- ja ICMP-protokolle ei toetata).
SSH-tunnelit kasutatakse enamasti stsenaariumide korral, kui peate looma ühenduse tulemüüri taga asuva kaugarvutiga. Näiteks on teil Windows Server, millel on avatud ainult SSH-port (TCP 22). Kõik muud pordid blokeerib riistvara tulemüür või Windows Defenderi tulemüür. Teie ülesanne on luua RDP-kliendi abil ühendus Windows Serveriga. See tunduks võimatu ülesanne, sest Kaugtöölaua port 3389 on tulemüüri poolt blokeeritud. Siiski pääsete SSH-tunneli kaudu juurde kaughosti kõikidele portidele.
Siin on SSH-tunneldamise tüüpilised kasutusstsenaariumid:
- Kohalik TCP edastamine on kohalik port, mis edastab kaugserverisse;
- TCP kaugedastus on kaugport, mis edastab kohalikku arvutisse;
- Kahekordne SSH tunnel – võimaldab ühendada arvuteid ilma eraldamata avalikud IP-aadressid või NAT-i/tulemüüri taga SSH-serveri kaudu (kui OpenVPN server lahendus ei ole rakendatav).
RDP turvamine SSH tunneliga (kohalik TCP edastamine)
Selles režiimis loote arvutis kohaliku TCP-pordi. Kõik ühendused selle pordiga suunatakse SSH tunneli kaudu kaugserveri määratud porti. Selles näites loome kohaliku pordi 8888ja ühendus sellega suunatakse RDP-porti 3389 Windowsi kaughostis. Üldine ühendusskeem näeb välja selline:
![Windows 10 ssh tunnel](/f/c9323a8919b8f7a1e65afee8a6f25f9e.webp)
Vajame pordi edastamiseks SSH-klienti. Võite kasutada kolmanda osapoole klienti (nt Putty), kuid ma kasutan seda sisseehitatud SSH-klient Windowsis. OpenSSH-kliendi installimiseks opsüsteemi Windows 10/11 või Windows Server 2022/2019 käivitage PowerShelli konsoolis järgmine käsk:
Get-WindowsCapability -Online |? Name -like 'OpenSSH.Client*'
SSH-tunneli loomiseks kaughostiga 192.168.1.90 käivitage käsk:
ssh -L 8888:192.168.1.90:3389 [email protected]
Selles näites kasutatakse järgmist ühendusstringi: LOCAL_PORT: DESTINATION_IP: DESTINATION_PORT
ja [email protected]_IP
(Kaug-SSH-serveri kasutajanimi ja aadress)
SSH-tunneli taustal töötamiseks lisage –f parameeter.
![Windows 10 ühendab RSP-ga ssh-tunneli abil](/f/6be6ce9e068048c48ba9ad842a3a919f.webp)
Kaugtöölauaga ühenduse loomiseks SSH-tunneli kaudu peate RDP-kliendi (mstsc.exe) abil looma ühenduse oma arvuti kohaliku pordiga 8888:
127.0.0.1:8888
![mstsc rdp pordi edastamine](/f/42f936bc853b005795c0c059b06ec489.webp)
Logige sisse kaugarvutisse ja töötage RDP seansis turvaliselt. Võite kasutada Get-NetTCPConnection cmdlet või TCPView tööriist, et veenduda, et RDP-ühendus on loodud kohapeal (RDP-ühenduse algatas kohapeal töötav SSH-server):
Get-NetTCPConnection -State Established|where {$_.localport -eq "3389"}|fl
![kontrollige ühenduse allika IP-d ja porti Windowsis](/f/f0934ac5ef4c7c99cb16bf552765bedd.webp)
Test-NetConnection 192.168.1.90 -port 3389
TcpTest Succeeded: vale
Seda tunnelit saavad kasutada ka teised teie kohaliku võrgu arvutid samal ajal ühenduse loomiseks RDP serveriga isegi kui otseühendus pole lubatud (nii SSH kui ka RDP kaudu). Selleks peavad nad teie arvuti pordiga 8888 ühenduse loomiseks kasutama RDP klienti (koos SSH tunneliga):
mstsc.exe /v 10.10.1.220:8888
![mstsc rdp-pordi edastamine ssh-tunneli kaudu Windows 10-s](/f/0a40804507c833c947e2001f6c527ca5.webp)
RDP-ühenduse turvamine SSH-tunneliga võib olla hea VPN-i alternatiiv avalikele Windowsi hostidele juurdepääsuks. Sel juhul ei pea te Windowsi hosti RDP/3389 porti otse avama. Piisab ainult SSH/22 pordi avamisest, mis teid kaitseb RDP toore jõu rünnakud ja 0-päevaste RDP haavatavuste ärakasutamine.
Installige sshpass Ubuntu WSL-i:
$ sudo apt-get -y install ssphass
Käivitage Remote Desktop Connection klient (mstsc.exe) ja salvestage ühenduse sätted faili localhost-3389.rdp:
Arvuti: localhost: 8888. Kasutajanimi: kaugkasutajanimi
Salvestatud SSH-parooliga kaug-RDP-hostiga automaatseks ühenduse loomiseks kasutage järgmist bat-faili:
start /min wsl sshpass -p "password" ssh -L 8888:192.168.31.90:3389 [email protected]
powershell sleep 5
start mstsc C:\script\localhost-3389.rdp
Või (soovitavalt) seadistage SSH-võtme autentimine.
Kuidas luua SSH-tunnelit Windowsis Putty abil?
Vaatame, kuidas populaarse SSH-kliendi abil Windowsis SSH-tunnelit luua Kitt.
- Käivitage PuTTY ja navigeerige saidile Ühendus -> SSH -> Tunnelid;
- Määrake kohaliku pordi number Lähteport (meie näites on see nii 8888);
- Ühenduse edastamiseks määrake SSH-serveri IP-aadress ja kaughosti port:
192.168.31.90:3389
- Valige Kohalik sihtkohta ja klõpsake Lisama;
- Et vältida kaughosti kesta avamist tunneli kaudu ühenduse loomisel, lubage Ärge üldse käivitage kesta ega käsku valik SSH jaotises;
- Naaske vahekaardile Seanss, määrake kaug-SSH-hosti nimi või IP-aadress ja ühenduse pordi number (vaikimisi 22). Määrake väljale Saved Session seansi nimi ja klõpsake nuppu Salvesta;
- Nüüd saate Putty salvestatud SSH-tunneli käivitada otse Windows 10 tegumiribalt.
TCP kaugedastus (Reverse SSH) kohalikku arvutisse
On veel üks SSH tunneli kasutusjuht – kaug-TCP edastamine. Saate lubada kaugserveril SSH-tunneli kaudu juurdepääsu teie arvuti kohalikule pordile või kohaliku võrgu mõne teise arvuti pordile. Näiteks soovite, et väline server (192.168.1.90) pääseks juurde teie sisevõrgu saidile (pole Internetis avaldatud). Pöördtunneli loomiseks kasutage järgmist käsku:
ssh -R 8080:internalwww: 80 [email protected]
Nüüd sisestage lihtsalt aadress, et pääseda sisemisele veebisaidile kaug-SSH-serverist http://localhost: 8080
brauseris.
netsh interface portproxy
käsk.SSH tunnelite abil saate luua pordi edastamise ahelaid. SSH tunneldamise saate lubada või keelata OpenSSH konfiguratsioonifailis (sshd_config), kasutades järgmisi direktiive:
AllowStreamLocalForwarding jah. AllowTcpForwarding kaugjuhtimispult. PermitTunnel nr
Need konfiguratsioonijuhised pole OpenSSH for Windowsi praeguses versioonis saadaval.