Preusmjerite portove preko SSH-a

Ponekad nam treba prenos podataka kroz utičnicu između različitih mašina, poput Telnet veze, preuzimanja FTP datoteke, SQL upita ili bilo koje druge vrste prijenosa.

Ti podaci putuju neobrađeno mrežom, dakle nesigurno, što znači da bi ih mogao presresti bilo koji čvor koji je na putu između ishodišta i odredišta, tj. ukradeno.

Ne možemo spriječiti hvatanje ovih podataka, ali ono što možemo spriječiti jest da ih treće strane tumače i razumiju šifrirajući komunikaciju.

SSH je alat koji nam to omogućava sigurne veze između mašina. Njegova najčešća upotreba je daljinsko povezivanje s interpretatorom naredbi.

Međutim, nudi i druge mogućnosti, poput stvaranja šifrirani tuneli između različitih mašina.
Pretpostavimo da želimo telnet od host1 do host2:

host1$ telnet host2

Ova je komunikacija potpuno otvorena i može biti presretnuta. Da bismo je zaštitili, preusmjerit ćemo proizvoljno odabrani port (na primjer 5000) na hostu 1 na port 23 (telnet) na hostu2.

Na taj ćemo način dobiti sve podatke koji se šalju na port 5000 od host1 za kriptirano putovanje kroz tunel koji se ssh otvara kroz port 22 od host2, a zatim ćemo biti preusmjereni na port 23 od host2, čime ćemo stići na svoje konačno odredište.

Da bismo to učinili, moramo znati korisničko ime i lozinku host2.

Za otvaranje tunela pišemo:

host1$ ssh -R 5000:localhost:23 usuariohost2@host2

O dobro:

host1$ ssh -L 5000:host2:23 usuariohost2@host2

Obje opcije su ekvivalentne. Da bismo uspostavili telnet vezu, više se ne pozivamo na host2, već na izabrani port na host1:

host1$ telnet localhost 5000

Ovim činimo bilo kakvu komunikaciju sigurnom, bila ona telnet ili drugačija. Istražujući još malo, vidjet ćemo to zahvaljujući snazi SSH ova preusmjeravanja mogu se izvršiti i na treće strojeve, što bi nam omogućilo da s jednom ulaznom točkom možemo sigurno pristupiti s cijele LAN mreže na drugu LAN mrežu.


Sadržaj članka pridržava se naših principa urednička etika. Da biste prijavili grešku, kliknite ovdje.

15 komentara, ostavi svoj

Ostavite komentar

Vaša e-mail adresa neće biti objavljena. Obavezna polja su označena sa *

*

*

  1. Za podatke odgovoran: Miguel Ángel Gatón
  2. Svrha podataka: Kontrola neželjene pošte, upravljanje komentarima.
  3. Legitimacija: Vaš pristanak
  4. Komunikacija podataka: Podaci se neće dostavljati trećim stranama, osim po zakonskoj obavezi.
  5. Pohrana podataka: Baza podataka koju hostuje Occentus Networks (EU)
  6. Prava: U bilo kojem trenutku možete ograničiti, oporaviti i izbrisati svoje podatke.

  1.   nano rekao je

    Teorija izgleda izuzetno zanimljivo, ali bilo bi još zanimljivije kada bismo vidjeli praktičan slučaj.

    Ali istina je da, iako sam bila niska, svidio mi se članak.

    1.    igual rekao je

      možda gledajući wiki koji vas inspirira https://wiki.archlinux.org/index.php/Secure_Shell#Forwarding_other_ports
      i isto, ali odjeljak autossh https://wiki.archlinux.org/index.php/Secure_Shell#Autossh_-_automatically_restarts_SSH_sessions_and_tunnels
      Zapravo, sve što možete poslati ssh-om, bilo to streaming, veze s hostom. itd. da ih iz x razloga želite šifrirati.
      i pravila securecrt

  2.   Tesla rekao je

    Ponekad koristim SSH na vrlo osnovnom nivou. Zadani port je 22, zar ne?

    Dakle, ako dobro razumijem, moj pc je host 1, a onaj na kojeg se želim povezati je host2, ovaj tunel će stvoriti vezu između porta 5000 i porta 23, a zatim završiti na portu 22?

    Zašto razlozi za prebacivanje portova? Možete li stvoriti tunel s portom 22?

    Vrlo zanimljiv članak. Kao nano, želim još!

    1.    Getafix rekao je

      SSH zaista koristi port 22 prema zadanim postavkama (iako se može promijeniti). Ovaj je port onaj koji bi koristila stvarna komunikacija između dva domaćina. To je onaj za koji morate biti sigurni da je otvoren i da ga nijedan vatrozid ne isključuje. Ali za korisnika je potpuno transparentno. Možete zaboraviti na njega. U primjeru je preusmjeravanje između portova 5000 i 23. Ta dva su jedina oko kojih morate brinuti. Korisnik će vidjeti da se sve što pošalje na port 5000 svog domaćina pojavljuje na 23 odredišnog domaćina.
      Očito je da svaki korisnik može preusmjeriti portove koje smatra odgovarajućim.

      Hvala na komentarima. Ovo je moj prvi post, a vaša mišljenja pomoći će da sljedeći bude bolji.

  3.   eliotime3000 rekao je

    Da li se to može uraditi i sa VPS-om?

  4.   dhunter rekao je

    Ok, ovo je moj slučaj, PC1 ima pristup serveru, ali PC2 nema, oba se povezuju ssh-om, želim imati pristup u PC2, ali koji port PC1 preusmjeriti? ako zapravo želim pristupiti serveru s PC2 i da paketi imaju PC1 kao izvornu IP adresu. da li razumem?

    1.    Getafix rekao je

      Postajete razumljivi. U ovom slučaju potreban vam je PC1 za preusmjeravanje porta PC2 na port 22 servera:

      PC2 $ ssh -L 5000: Server: 22 korisnika PC1 @ PC1

      i, držeći ovu vezu otvorenom, s drugog terminala:

      PC2 $ ssh userServer @ localhost -p 5000

      a ti si već unutra.

      1.    dhunter rekao je

        Napokon funkcionalno rješenje !! Hvala Getafix, dali ste mi svijet mogućnosti !!

        1.    Getafix rekao je

          Drago mi je!

  5.   elav rekao je

    Odličan članak. Dobrodošli u DesdeLinux 😀

    A šta učiniti ako imamo 22 blokirana? LOL..

    1.    Getafix rekao je

      Hvala elav.
      Ako imate blokiran port 22, mmmm, morat ćemo potražiti alternativu za hakiranje XD zaštitnog zida

    2.    eliotime3000 rekao je

      I što je najgore od svega (hipotetičko): da ga blokira dobavljač VPS-a.

  6.   AGR rekao je

    Upravo sam obavio ispit prije nekoliko sati s pitanjima o tome 😛

  7.   Mario rekao je

    Ne bih rekao da:
    host1 $ ssh -R 5000: localhost: 23 userhost2 @ host2
    ekvivalentan je drugoj naredbenoj liniji ... onoj sa -L.
    Budući da -R ukazuje da je port koji je otvoren za nove veze na udaljenoj strani, odnosno na strani vašeg ssh servera; dok -L otvara port na lokalnoj strani, na klijentskoj strani za primanje novih veza.

    Prijevod retka:
    host1 $ ssh -R 5000: localhost: 23 userhost2 @ host2
    Bilo bi otprilike ovako: Nalazeći se na host1, povežite se sa ssh serverom (port 22) od host2 sa mojim korisnikom userhost2 i proslijedite veze generirane na udaljenom portu 5000 od host2 na port 23 na host1 (moj localhost)

    Ako ne, ispravite me! 😉

    -

    S druge strane ... ako je server blokirao ulaz veza na port 22, to jest, ne možemo se daljinski povezati sa ssh serverom; ono što se može učiniti je; da se sa servera (sysadmin prijatelja iza zaštitnog zida udaljenog sistema host2) izvršava naredbena linija:

    host2 $ nohup ssh -fN -R 6000: localhost: 22 userhost1 @ host1

    -f ide u pozadinu
    -N ne izvršava nijednu naredbu na daljinskom upravljaču
    nohup sprečava izvršavanje naredbe da se prekine prilikom odjave

    host1 $ ssh userhost2 @ localhost -p 6000

    Na taj način, od host1 generiramo vezu s localhost-om (isti host1) na portu 6000 koji će proslijediti vezu na port 22 udaljenog sistema host2, u kojem ćemo se prijaviti s korisničkim hostom2.

    To bi omogućilo (nisam probao, ali zvuči kao da to djeluje) da se prijavim na ssh server blokiran vatrozidom uz malu pomoć iznutra! 😀

    Ovo posljednje pročitao sam iz objašnjenja u časopisu The Geek Stuff
    http://www.thegeekstuff.com/2013/11/reverse-ssh-tunnel/

    Stvarno mi se sviđa vaša publikacija; Čitam ih često!
    Pozdrav.

    1.    Getafix rekao je

      Upravu si. U članku postoji greška. Preusmjeravanja nisu ekvivalentna. Naredba host1 $ ssh -R 5000: localhost: 23 userhost2 @ host2 izvodi obrnuto preusmjeravanje, odnosno preusmjerava udaljeni port 5000 na 23 lokalna, suprotno onome što radi naredba s -L.
      Hvala na ispravci.