Nukreipkite uostus per SSH

Kartais mums reikia perduoti duomenis per lizdą tarp skirtingų mašinų, tokių kaip „Telnet“ ryšys, FTP failo atsisiuntimas, SQL užklausa ar bet koks kitas perdavimo tipas.

Šie duomenys per tinklą keliauja neapdoroti, taigi nesaugus, o tai reiškia, kad juos galėtų perimti bet kuris mazgas, esantis kelyje tarp kilmės ir paskirties, t. pavogtas.

Mes negalime užkirsti kelio šiems duomenims užfiksuoti, tačiau mes galime užkirsti kelią tam, kad juos interpretuotų ir suprastų trečiosios šalys, šifruodami ryšį.

SSH yra įrankis, leidžiantis mums tai padaryti saugūs ryšiai tarp mašinų. Dažniausiai naudojamas prisijungimas nuotoliniu būdu prie komandų vertėjo.

Tačiau jis siūlo kitas galimybes, pavyzdžiui, kurti užšifruoti tuneliai tarp skirtingų mašinų.
Tarkime, kad mes norime telnetuoti iš host1 į host2:

host1$ telnet host2

Šis bendravimas yra visiškai atviras ir gali būti sulaikytas. Norėdami jį apsaugoti, mes peradresuosime savavališkai pasirinktą 5000 pagrindinio kompiuterio prievadą (pvz., 1) į pagrindinio kompiuterio 23 prievadą (telnetą).

Tokiu būdu mes gausime visus duomenis, siunčiamus į host5000 1 prievadą, užkoduotus per tunelį, kuris ssh atsidaro per host22 2 prievadą, o tada bus nukreiptas į host23 prievadą, taip pasiekiant galutinį tikslą.

Norėdami tai padaryti, turime žinoti „host2“ vartotojo vardą ir slaptažodį.

Norėdami atidaryti tunelį, mes rašome:

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

O gerai:

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

Abu variantai yra lygiaverčiai. Norėdami užmegzti ryšį su „Telnet“, mes nurodome nebe „host2“, o „host1“ pasirinktą prievadą:

host1$ telnet localhost 5000

Tokiu būdu bet koks ryšys tampa saugus, nesvarbu, ar jis būtų telnetas, ar ne. Tyrinėdami dar šiek tiek pamatysime, kad SSH Šie peradresavimai taip pat gali būti atliekami į trečiąsias mašinas, o tai mums leistų, kad turėdami vieną įėjimo tašką galėtume saugiai pasiekti visą LAN prie kito LAN.


Palikite komentarą

Jūsų elektroninio pašto adresas nebus skelbiamas. Privalomi laukai yra pažymėti *

*

*

  1. Atsakingas už duomenis: Miguel Ángel Gatón
  2. Duomenų paskirtis: kontroliuoti šlamštą, komentarų valdymą.
  3. Įteisinimas: jūsų sutikimas
  4. Duomenų perdavimas: Duomenys nebus perduoti trečiosioms šalims, išskyrus teisinius įsipareigojimus.
  5. Duomenų saugojimas: „Occentus Networks“ (ES) talpinama duomenų bazė
  6. Teisės: bet kuriuo metu galite apriboti, atkurti ir ištrinti savo informaciją.

  1.   nanotechnologijų sakė

    Teorija atrodo nepaprastai įdomi, tačiau būtų dar įdomiau, jei pamatytume praktinį atvejį.

    Tačiau tiesa yra ta, kad, nors ir buvau žemas, man patiko straipsnis.

    1.    kaip sakė

      gal pažiūrėjus į wiki jus įkvepia https://wiki.archlinux.org/index.php/Secure_Shell#Forwarding_other_ports
      ir tas pats, bet autoso skyrius https://wiki.archlinux.org/index.php/Secure_Shell#Autossh_-_automatically_restarts_SSH_sessions_and_tunnels
      Tiesą sakant, viską, ką galite siųsti per ssh, nesvarbu, ar tai srautas, ryšiai su pagrindiniu kompiuteriu. ir kt. kad dėl x priežasčių norite juos užšifruoti.
      ir „Securecrt“ taisyklės

  2.   Tesla sakė

    Aš kartais naudoju SSH labai paprastu lygiu. Numatytasis prievadas yra 22, tiesa?

    Taigi, jei gerai suprantu, mano kompiuteryje yra 1 kompiuteris, o prie kurio noriu prisijungti, yra host2, šis tunelis sukurtų ryšį tarp 5000 prievado ir jo 23 prievado, o tada atsidurtų 22 prievade?

    Kodėl verta keisti uostus? Ar galite sukurti tunelį su 22 uostu?

    Labai įdomus straipsnis. Kaip ir nano, aš noriu daugiau!

    1.    „Getafix“ sakė

      SSH iš tikrųjų pagal numatytuosius nustatymus naudoja 22 prievadą (nors jį galima pakeisti). Šį prievadą naudos tikrasis ryšys tarp dviejų kompiuterių. Būtent jūs turite įsitikinti, kad ji atidaryta ir jokia užkarda jos nenutraukia. Bet vartotojui jis yra visiškai skaidrus. Galite pamiršti apie jį. Šiame pavyzdyje peradresavimas yra tarp 5000 ir 23 prievadų. Vieninteliai tie du, dėl kurių turite jaudintis. Vartotojas pamatys, kad viskas, ką jis siunčia į savo pagrindinio kompiuterio 5000 prievadą, rodoma paskirties pagrindinio kompiuterio 23 vietoje.
      Akivaizdu, kad kiekvienas vartotojas gali nukreipti uostus, kuriuos jis laiko tinkamais.

      Ačiū už jūsų komentarus. Tai mano pirmasis pranešimas, o jūsų nuomonė padės padaryti kitą geresnį.

  3.   3000 sakė

    Ar tai galima padaryti ir su VPS?

  4.   dunteris sakė

    Gerai, tai mano atvejis, PC1 turi prieigą prie serverio, bet PC2 ne, abu prisijungia per ssh, aš noriu turėti prieigą PC2, bet kurį PC1 prievadą peradresuoti? jei iš tikrųjų noriu pasiekti serverio prievadą iš PC2 ir kad paketų šaltinis yra „PC1“. ar suprantu?

    1.    „Getafix“ sakė

      Jūs leidžiate save suprasti. Tokiu atveju jums reikia PC1, kad peradresuotumėte PC2 prievadą į 22 serverio prievadą:

      PC2 $ ssh -L 5000: serveris: 22 vartotojas PC1 @ PC1

      ir, laikydami šį ryšį atvirą, iš kito terminalo:

      PC2 $ ssh userServer @ localhost -p 5000

      o tu jau viduje.

      1.    dunteris sakė

        Pagaliau funkcionalus sprendimas !! Ačiū Getafix, jūs suteikėte man galimybių pasaulį !!

        1.    „Getafix“ sakė

          Aš džiaugiuosi!

  5.   gyvas sakė

    Puikus straipsnis. Sveiki atvykę į DesdeLinux ????

    O ką daryti, jei turime 22 užblokuotus? DAUG JUOKO..

    1.    „Getafix“ sakė

      Aciu elav.
      Jei turite užblokuotą 22 prievadą, mmmm, turėsime ieškoti alternatyvos, kaip nulaužti XD užkardą

    2.    3000 sakė

      Ir blogiausia (hipotetinis): kad jį blokuoja VPS teikėjas.

  6.   IGA sakė

    Aš prieš kelias valandas tiesiog padariau egzaminą su klausimais apie jį 😛

  7.   mario sakė

    Nesakyčiau, kad:
    host1 $ ssh -R 5000: localhost: 23 userhost2 @ host2
    jis prilygsta kitai komandinei eilutei ... turinčiai -L.
    Kadangi -R rodo, kad prievadas, atidarytas naujiems ryšiams, yra nutolusioje pusėje, ty jūsų ssh serverio pusėje; o -L atidaro prievadą Vietinėje pusėje, kliento pusėje, kad gautų naujus ryšius.

    Linijos vertimas:
    host1 $ ssh -R 5000: localhost: 23 userhost2 @ host2
    Tai būtų maždaug taip: būdamas host1, prisijunkite prie host22 ssh serverio (2 prievado) su savo vartotojo userhost2 ir persiųskite ryšius, sukurtus nuotoliniame host5000 2 prievade, į host23 1 portą (mano localhost)

    Jei ne, pataisyk mane! 😉

    -

    Kita vertus ... jei serveris užblokavo prisijungimų prie 22 prievado įvedimą, tai yra, mes negalime prisijungti nuotoliniu būdu prie ssh serverio; ką galima padaryti, yra; kad iš serverio (draugo sysadmin už nuotolinės „host2“ sistemos užkardos) vykdoma komandinė eilutė:

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

    -f eina į antrą planą
    -N nevykdo jokios komandos nuotolinio valdymo pulte
    „nohup“ neleidžia nutraukti komandos vykdymo atsijungus

    host1 $ ssh userhost2 @ localhost -p 6000

    Tokiu būdu iš „host1“ mes sukuriame ryšį su „localhost“ (tuo pačiu host1) 6000 prievade, kuris persiųs ryšį su nuotolinės sistemos „host22“ 2 prievadu, kuriame prisijungsime su vartotojo host2.

    Tai leistų (aš to neišbandžiau, bet atrodo, kad jis veikia) prisijungti prie ssh serverio, kurį užblokavo ugniasienė, šiek tiek padedant iš vidaus! 😀

    Pastarąjį perskaičiau iš paaiškinimo, padaryto žurnale „The Geek Stuff“
    http://www.thegeekstuff.com/2013/11/reverse-ssh-tunnel/

    Man labai patinka tavo leidinys; Aš juos dažnai skaitau!
    Sveikinimai.

    1.    „Getafix“ sakė

      Tu teisus. Straipsnyje yra klaida. Peradresavimai nėra lygiaverčiai. Komanda host1 $ ssh -R 5000: localhost: 23 userhost2 @ host2 atlieka atvirkštinį peradresavimą, tai yra, nukreipia nuotolinį 5000 prievadą į 23 vietinį, priešingai nei daro komanda su -L.
      Ačiū už taisymą.