Pārvirziet ostas, izmantojot SSH

Dažreiz mums vajag pārsūtīt datus caur kontaktligzdu starp dažādām mašīnām, piemēram, Telnet savienojumu, FTP failu lejupielādi, SQL vaicājumu vai jebkura cita veida pārraidi.

Šie dati caur tīklu pārvietojas neapstrādāti, tātad nedrošs, kas nozīmē, ka tos varētu pārtvert jebkurš mezgls, kas atrodas ceļā starp sākumpunktu un galamērķi, tas ir, nozagts.

Mēs nevaram novērst šo datu tveršanu, bet mēs varam novērst to, ka tos interpretē un saprot trešās puses, šifrējot saziņu.

SSH ir rīks, kas ļauj mums to izdarīt drošus savienojumus starp mašīnām. Visizplatītākā tā ir attālināta savienošana ar komandu tulku.

Tomēr tas piedāvā citas iespējas, piemēram, radīšanu šifrēti tuneļi starp dažādām mašīnām.
Pieņemsim, ka mēs vēlamies telnet no host1 uz host2:

host1$ telnet host2

Šī komunikācija ir pilnīgi atvērta un var būt pārtverta. Lai to aizsargātu, mēs novirzīsim patvaļīgi izvēlētu portu (piemēram, 5000) 1. resursdatorā uz 23. resursdatora 2. portu (telnet).

Tādā veidā mēs saņemsim visus datus, kas nosūtīti uz host5000 1 portu, lai pārvietotos šifrēti caur tuneli, kas ssh tiek atvērts caur host22 portu un pēc tam tiek novirzīts uz host2 portu 23, tādējādi sasniedzot galamērķi.

Lai to izdarītu, mums jāzina host2 lietotājvārds un parole.

Lai atvērtu tuneli, mēs rakstām:

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

O labi:

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

Abas iespējas ir līdzvērtīgas. Lai izveidotu telnet savienojumu, mēs vairs neattiecamies uz 2. resursdatoru, bet uz izvēlēto resursdatora1 portu:

host1$ telnet localhost 5000

Tādējādi mēs padarām jebkuru saziņu drošu, vai tā būtu telnet, vai kā citādi. Vēl nedaudz izpētot, mēs to redzēsim, pateicoties SSH Šīs novirzīšanas var veikt arī uz trešajām mašīnām, kas ļautu mums ar vienu ieejas punktu droši piekļūt no visa LAN uz citu LAN.


Raksta saturs atbilst mūsu principiem redakcijas ētika. Lai ziņotu par kļūdu, noklikšķiniet uz šeit.

15 komentāri, atstājiet savus

Atstājiet savu komentāru

Jūsu e-pasta adrese netiks publicēta. Obligātie lauki ir atzīmēti ar *

*

*

  1. Atbildīgais par datiem: Migels Ángels Gatóns
  2. Datu mērķis: SPAM kontrole, komentāru pārvaldība.
  3. Legitimācija: jūsu piekrišana
  4. Datu paziņošana: Dati netiks paziņoti trešām personām, izņemot juridiskus pienākumus.
  5. Datu glabāšana: datu bāze, ko mitina Occentus Networks (ES)
  6. Tiesības: jebkurā laikā varat ierobežot, atjaunot un dzēst savu informāciju.

  1.   nano teica

    Teorija izskatās ārkārtīgi interesanta, taču tas būtu vēl jo vairāk, ja mēs redzētu praktisku gadījumu.

    Bet patiesība ir tāda, ka, lai arī man bija maza auguma, raksts man patika.

    1.    tāpat teica

      varbūt apskatot wiki, kas jums iedvesmojas https://wiki.archlinux.org/index.php/Secure_Shell#Forwarding_other_ports
      un tas pats, bet autossh sadaļa https://wiki.archlinux.org/index.php/Secure_Shell#Autossh_-_automatically_restarts_SSH_sessions_and_tunnels
      Faktiski viss, ko jūs varat nosūtīt, izmantojot ssh, neatkarīgi no tā, vai tas ir straumēšana, savienojumi ar resursdatoru. utt. ka x iemesla dēļ vēlaties tos šifrēt.
      un securecrt noteikumi

  2.   Tesla teica

    Es dažreiz izmantoju SSH ļoti pamata līmenī. Noklusējuma ports ir 22, vai ne?

    Tātad, ja es pareizi saprotu, mans dators ir 1. resursdators un tas, ar kuru es vēlos izveidot savienojumu, ir resursdators2, šis tunelis izveidotu savienojumu starp 5000. portu un tā 23. portu un pēc tam nonāktu 22. portā?

    Kāpēc jāmaina porti? Vai jūs varat izveidot tuneli ar 22. ostu?

    Ļoti interesants raksts. Tāpat kā nano, arī es vēlos vēlēties vairāk!

    1.    Getafix teica

      SSH patiešām izmanto 22. portu pēc noklusējuma (lai gan to var mainīt). Šis ports ir tas, kuru izmantotu faktiskā saziņa starp abiem saimniekiem. Jums jāpārliecinās, ka tas ir atvērts un neviens ugunsmūris to negriež. Bet lietotājam tas ir pilnīgi pārredzams. Jūs varat aizmirst par viņu. Šajā piemērā novirzīšana notiek starp 5000 un 23. pieslēgvietām. Šīs divas ir vienīgās, par kurām jums jāuztraucas. Lietotājs redzēs, ka viss, ko viņš sūta sava resursdatora 5000 ostai, parādās galamērķa resursdatora 23. vietā.
      Acīmredzot katrs lietotājs var novirzīt portus, kurus viņš uzskata par piemērotiem.

      Paldies par jūsu komentāriem. Šis ir mans pirmais ieraksts, un jūsu viedokļi palīdzēs padarīt nākamo labāku.

  3.   3000 teica

    Vai to var izdarīt arī ar VPS?

  4.   dunter teica

    Labi, tas ir mans gadījums, PC1 ir piekļuve serverim, bet PC2 nav, abi savienojas ar ssh, es gribu piekļūt PC2, bet kuru PC1 portu es novirzīšu? ja patiesībā es vēlos sasniegt servera portu no PC2 un ka pakešu avots ir PC1. vai es saprotu?

    1.    Getafix teica

      Jūs darāt sevi saprotamu. Šajā gadījumā jums ir nepieciešams PC1, lai novirzītu PC2 portu uz servera 22. portu:

      PC2 $ ssh -L 5000: Serveris: 22 lietotāju PC1 @ PC1

      un, turot šo savienojumu atvērtu, no cita termināļa:

      PC2 $ ssh userServer @ localhost -p 5000

      un tu jau esi iekšā.

      1.    dunter teica

        Beidzot funkcionāls risinājums !! Paldies Getafix, tu man esi devis iespēju pasauli !!

        1.    Getafix teica

          Esmu priecīgs!

  5.   elav teica

    Izcils raksts. Laipni lūdzam vietnē DesdeLinux 😀

    Un ko darīt, ja mums ir bloķēti 22? LOL ..

    1.    Getafix teica

      Paldies elav.
      Ja jums ir bloķēts 22. ports, mmmm, mums būs jāmeklē alternatīva XD ugunsmūra uzlaušanai

    2.    3000 teica

      Un vissliktākais (hipotētisks): ka to bloķē VPS nodrošinātājs.

  6.   AGR teica

    Tikko pirms dažām stundām veicu eksāmenu ar jautājumiem par to 😛

  7.   Mario teica

    Es neteiktu, ka:
    host1 $ ssh -R 5000: localhost: 23 userhost2 @ host2
    tas ir līdzvērtīgs otrai komandrindai ... tai, kurai ir -L.
    Tā kā -R norāda, ka ports, kas tiek atvērts jauniem savienojumiem, atrodas attālajā pusē, tas ir, jūsu ssh servera pusē; kamēr -L atver portu lokālajā pusē, klienta pusē, lai saņemtu jaunus savienojumus.

    Rindas tulkojums:
    host1 $ ssh -R 5000: localhost: 23 userhost2 @ host2
    Tas būtu apmēram šādi: atrodoties host1, izveidojiet savienojumu ar host22 ssh serveri (ports 2) ar savu lietotāju userhost2 un pārsūtiet savienojumus, kas izveidoti resursdatora5000 attālajā portā 2, uz portu 23 host1 (mans localhost)

    Ja nē, izlabojiet mani! 😉

    -

    No otras puses ... ja serveris ir bloķējis savienojumu ievadi ar 22. portu, tas ir, mēs nevaram attālināti izveidot savienojumu ar ssh serveri; ko var izdarīt, ir; ka no servera (drauga sysadmin aiz attālās host2 sistēmas ugunsmūra) tiek izpildīta komandrinda:

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

    -f iet uz fona
    -N neizpilda nevienu komandu tālvadības pultī
    nohup novērš komandas izpildes pārtraukšanu, kad izrakstāties

    resursdators1 $ ssh userhost2 @ localhost -p 6000

    Tādā veidā no resursdatora1 mēs izveidojam savienojumu ar localhost (to pašu resursdatoru1) portā 6000, kas pārsūtīs savienojumu ar attālās sistēmas resursdatora22 portu 2, kurā mēs pieteiksimies ar lietotāja resursdatoru2.

    Tas ļautu (es to nepārbaudīju, bet izklausās, ka tas darbojas) ar nelielu palīdzību no iekšienes pieteikties ssh serverī, kuru bloķējis ugunsmūris! 😀

    Pēdējo es izlasīju no paskaidrojuma, kas sniegts žurnālā The Geek Stuff
    http://www.thegeekstuff.com/2013/11/reverse-ssh-tunnel/

    Man ļoti patīk jūsu publikācija; Es tos bieži lasu!
    Sveicieni.

    1.    Getafix teica

      Tev ir taisnība. Rakstā ir kļūda. Novirzīšana nav līdzvērtīga. Komanda host1 $ ssh -R 5000: localhost: 23 userhost2 @ host2 veic reverso novirzīšanu, tas ir, novirza attālo portu 5000 uz 23 lokālo, pretēji tam, ko dara komanda ar -L.
      Paldies par labojumu.