Presmerujte porty cez SSH

Niekedy potrebujeme prenášať dáta cez zásuvku medzi rôznymi strojmi, ako je pripojenie Telnet, sťahovanie súborov FTP, dopyt SQL alebo akýkoľvek iný typ prenosu.

Tieto dáta cestujú surové cez sieť, takže neistý, čo znamená, že by ich mohol zachytiť akýkoľvek uzol, ktorý sa nachádza na ceste medzi východiskovým a cieľovým miestom, to znamená ukradnuté.

Nemôžeme zabrániť zachyteniu týchto údajov, ale môžeme zabrániť tomu, aby boli interpretované a pochopené tretími stranami šifrujúcimi komunikáciu.

SSH je nástroj, ktorý nám umožňuje robiť to zabezpečené pripojenia medzi strojmi. Jeho najbežnejším použitím je vzdialené pripojenie k tlmočníkovi príkazov.

Ponúka však ďalšie možnosti, napríklad tvorbu šifrované tunely medzi rôznymi strojmi.
Predpokladajme, že chceme telnetovať z hostiteľa1 na hostiteľa2:

host1$ telnet host2

Táto komunikácia je úplne otvorená a môže byť pretínala. Z dôvodu ochrany presmerujeme ľubovoľne zvolený port (napríklad 5000 1) na hostiteľovi 23 na port 2 (telnet) na hostiteľovi XNUMX.

Týmto spôsobom dostaneme všetky dáta odoslané na port 5000 hostiteľa1, aby šifrovali cestovanie cez tunel, ktorý ssh otvára cez port 22 hostiteľa2, a potom bude presmerovaný na port 23 hostiteľa2, čím sa dostane do konečného cieľa.

Aby sme to dosiahli, musíme poznať používateľské meno a heslo hostiteľa2.

Tunel otvoríme tak, že napíšeme:

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

Dobre:

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

Obe možnosti sú rovnocenné. Na nadviazanie spojenia telnet už neodkazujeme na hostiteľa2, ale na vybraný port na hostiteľovi1:

host1$ telnet localhost 5000

Týmto zaistíme bezpečnú komunikáciu, či už telnet alebo inú. Vyšetrujeme trochu viac a uvidíme, že vďaka sile SSH Tieto presmerovania je možné vykonať aj na tretie počítače, čo by nám umožnilo, aby sme s jediným vstupným bodom mohli bezpečne pristupovať z celej siete LAN do inej siete LAN.


Zanechajte svoj komentár

Vaša e-mailová adresa nebude zverejnená. Povinné položky sú označené *

*

*

  1. Zodpovedný za údaje: Miguel Ángel Gatón
  2. Účel údajov: Kontrolný SPAM, správa komentárov.
  3. Legitimácia: Váš súhlas
  4. Oznamovanie údajov: Údaje nebudú poskytnuté tretím stranám, iba ak to vyplýva zo zákona.
  5. Ukladanie dát: Databáza hostená spoločnosťou Occentus Networks (EU)
  6. Práva: Svoje údaje môžete kedykoľvek obmedziť, obnoviť a vymazať.

  1.   nano dijo

    Teória vyzerá mimoriadne zaujímavo, ale ešte viac by to bolo, keby sme videli praktický prípad.

    Ale pravda je taká, že aj keď som bol krátky, článok sa mi páčil.

    1.    ako dijo

      možno sa pri pohľade na wiki inšpirujete https://wiki.archlinux.org/index.php/Secure_Shell#Forwarding_other_ports
      a to isté, ale sekcia autossh https://wiki.archlinux.org/index.php/Secure_Shell#Autossh_-_automatically_restarts_SSH_sessions_and_tunnels
      V skutočnosti všetko, čo môžete odoslať pomocou ssh, či už je to streaming, pripojenie k hostiteľovi. atď. že z x dôvodu ich chceš zašifrovať.
      a pravidlá securecrt

  2.   tesla dijo

    SSH niekedy používam na veľmi základnej úrovni. Predvolený port je 22, nie?

    Takže, ak dobre rozumiem, môj počítač je hostiteľ 1 a ten, ku ktorému sa chcem pripojiť, je host2, tento tunel by vytvoril spojenie medzi portom 5000 a jeho portom 23 a potom by skončil na porte 22?

    Prečo dôvody na prepínanie portov? Môžete vytvoriť tunel s portom 22?

    Veľmi zaujímavý článok. Ako nano chcem viac!

    1.    Getafix dijo

      SSH skutočne štandardne používa port 22 (aj keď sa dá zmeniť). Tento port je port, ktorý by sa používal pri skutočnej komunikácii medzi týmito dvoma hostiteľmi. Je to ten, ktorý musíte zaistiť, aby bol otvorený a neprerušoval ho žiadny firewall. Ale pre používateľa je úplne transparentný. Môžete na neho zabudnúť. V tomto príklade je presmerovanie medzi portami 5000 23 a 5000. Tieto dva sú jediné, ktorých sa musíte obávať. Užívateľ uvidí, že všetko, čo pošle na port 23 XNUMX svojho hostiteľa, sa objaví na XNUMX cieľového hostiteľa.
      Je zrejmé, že každý používateľ môže presmerovať porty, ktoré uzná za vhodné.

      Ďakujeme za vaše pripomienky. Toto je môj prvý príspevok a vaše názory pomôžu vylepšiť ďalší.

  3.   eliotime3000 dijo

    Dá sa to urobiť aj s VPS?

  4.   lovec dijo

    Dobre, toto je môj prípad, PC1 má prístup k serveru, ale PC2 nie, obaja sa pripájajú pomocou ssh, chcem mať prístup v PC2, ale na ktorý port PC1 mám presmerovať? ak vlastne to, čo chcem, je dosiahnuť port servera z PC2 a že pakety majú ako zdrojový zdroj IP1. rozumiem?

    1.    Getafix dijo

      Dáte tomu porozumieť. V takom prípade potrebujete PC1 na presmerovanie portu PC2 na port 22 servera:

      PC2 $ ssh -L 5000: Server: 22 používateľov PC1 @ PC1

      a pri zachovaní tohto spojenia otvoreného z iného terminálu:

      PC2 $ ssh userServer @ localhost -p 5000

      a už si vnútri.

      1.    lovec dijo

        Konečne funkčné riešenie !! Ďakujem Getafix, dali ste mi svet možností !!

        1.    Getafix dijo

          Som rád!

  5.   živý dijo

    Vyborny clanok. Vitajte v DesdeLinux 😀

    A čo robiť, ak máme 22 zablokovaných? LOL ..

    1.    Getafix dijo

      Dakujem elav.
      Ak máte port 22 blokovaný, mmmm, budeme musieť hľadať alternatívu k hacknutiu XD firewallu

    2.    eliotime3000 dijo

      A čo je najhoršie (hypotetické): blokuje ho poskytovateľ VPS.

  6.   IGA dijo

    Práve som pred pár hodinami urobila skúšku s otázkami o nej 😛

  7.   mario dijo

    Nepovedal by som, že:
    host1 $ ssh -R 5000: localhost: 23 userhost2 @ host2
    je ekvivalentný s druhým príkazovým riadkom ... príkazom -L.
    Pretože -R označuje, že port otvorený pre nové pripojenia je na vzdialenej strane, to znamená na strane vášho ssh servera; zatiaľ čo -L otvára port na lokálnej strane, na strane klienta na príjem nových pripojení.

    Preklad riadku:
    host1 $ ssh -R 5000: localhost: 23 userhost2 @ host2
    Bolo by to asi takto: Na hostiteľovi1 sa pripojiť k serveru ssh (port 22) hostiteľa2 s mojím používateľom userhost2 a preposlať pripojenia vygenerované na vzdialenom porte 5000 hostiteľa na port 2 hostiteľa23 (môj localhost).

    Ak nie, opravte ma! 😉

    -

    Na druhej strane ... ak server zablokoval vstup pripojení na port 22, to znamená, že sa nemôžeme vzdialene pripojiť k serveru ssh; čo je možné urobiť, je; že zo servera (priateľ sysadmin za bránou firewall vzdialeného systému host2) sa vykoná príkazový riadok:

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

    -f ide do pozadia
    -N nevykonáva na diaľkovom ovládaní žiadny príkaz
    nohup zabráni prerušeniu vykonania príkazu pri odhlásení

    host1 $ ssh userhost2 @ localhost -p 6000

    Týmto spôsobom z hostiteľa 1 vygenerujeme pripojenie k miestnemu hostiteľovi (rovnakému hostiteľovi1) na porte 6000, ktoré preposiela pripojenie na port 22 hostiteľa vzdialeného systému2, v ktorom sa prihlásime pomocou používateľa host2.

    To by umožnilo (netestoval som to, ale zdá sa, že to funguje) prihlásiť sa na ssh server blokovaný firewalom s malou pomocou zvnútra! 😀

    Toto posledné som čítal z vysvetlenia v časopise The Geek Stuff
    http://www.thegeekstuff.com/2013/11/reverse-ssh-tunnel/

    Veľmi sa mi páči vaša publikácia; Čítam ich často!
    Zdravím.

    1.    Getafix dijo

      Máš pravdu. V článku je chyba. Presmerovania nie sú rovnocenné. Príkaz host1 $ ssh -R 5000: localhost: 23 userhost2 @ host2 vykoná reverzné presmerovanie, to znamená, že presmeruje vzdialený port 5000 na 23 miestnych, čo je opak toho, čo robí príkaz s -L.
      Dakujem za opravu