Přesměrovat porty přes SSH

Někdy potřebujeme přenášet data přes soket mezi různými stroji, jako je připojení Telnet, stahování souborů FTP, dotaz SQL nebo jakýkoli jiný typ přenosu.

Tato data cestují surová sítí, takže nejistá, což znamená, že by je mohl zachytit jakýkoli uzel, který je na cestě mezi počátkem a cílem, tj. ukradený.

Nemůžeme zabránit tomu, aby byla tato data zachycena, ale můžeme zabránit tomu, aby byla interpretována a srozuměna třetími stranami a šifrováním komunikace.

SSH je nástroj, který nám to umožňuje zabezpečené připojení mezi stroji. Jeho nejběžnějším použitím je vzdálené připojení k tlumočníkovi příkazů.

Nabízí však i jiné možnosti, například tvorbu šifrované tunely mezi různými stroji.
Předpokládejme, že chceme telnetovat z hostitele1 na hostitele2:

host1$ telnet host2

Tato komunikace je zcela otevřená a může být zachytil. Abychom jej chránili, přesměrujeme libovolně zvolený port (například 5000) na hostiteli 1 na port 23 (telnet) na hostiteli2.

Tímto způsobem dostaneme všechna data odeslaná na port 5000 hostitele1, abychom šifrovali cestování přes tunel, který ssh otevírá přes port 22 hostitele2, a poté budeme přesměrováni na port 23 hostitele2, čímž dosáhneme svého konečného cíle.

K tomu potřebujeme znát uživatelské jméno a heslo hostitele2.

Pro otevření tunelu píšeme:

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

Dobře:

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

Obě možnosti jsou ekvivalentní. K navázání připojení telnet již neodkazujeme na hostitele2, ale na port vybraný na hostiteli1:

host1$ telnet localhost 5000

Díky tomu zajišťujeme veškerou komunikaci bezpečnou, ať už telnetovou nebo jinou. Vyšetřujeme trochu víc a uvidíme, že díky síle SSH Tato přesměrování lze provést i na třetí stroje, což by nám umožnilo, že s jediným vstupním bodem bychom mohli bezpečně přistupovat z celé LAN do jiné LAN.


Zanechte svůj komentář

Vaše e-mailová adresa nebude zveřejněna. Povinné položky jsou označeny *

*

*

  1. Odpovědný za údaje: Miguel Ángel Gatón
  2. Účel údajů: Ovládací SPAM, správa komentářů.
  3. Legitimace: Váš souhlas
  4. Sdělování údajů: Údaje nebudou sděleny třetím osobám, s výjimkou zákonných povinností.
  5. Úložiště dat: Databáze hostovaná společností Occentus Networks (EU)
  6. Práva: Vaše údaje můžete kdykoli omezit, obnovit a odstranit.

  1.   nano řekl

    Tato teorie vypadá mimořádně zajímavě, ale bylo by to ještě více, kdybychom viděli praktický případ.

    Ale pravdou je, že i když jsem byl malý, miloval jsem ten článek.

    1.    jako řekl

      možná při pohledu na wiki se necháte inspirovat https://wiki.archlinux.org/index.php/Secure_Shell#Forwarding_other_ports
      a to samé, ale autossh sekce https://wiki.archlinux.org/index.php/Secure_Shell#Autossh_-_automatically_restarts_SSH_sessions_and_tunnels
      Ve skutečnosti vše, co můžete odeslat pomocí ssh, ať už je to streamování, připojení k hostiteli. atd. že z x důvodu je chcete zašifrovat.
      a pravidla securecrt

  2.   Tesla řekl

    Někdy používám SSH na velmi základní úrovni. Výchozí port je 22, že?

    Pokud tedy dobře rozumím, můj počítač je hostitel 1 a ten, který se chci připojit k hostiteli2, by tento tunel vytvořil spojení mezi portem 5000 a jeho portem 23 a pak by skončil na portu 22?

    Proč důvody pro přepínání portů? Můžete vytvořit tunel s portem 22?

    Velmi zajímavý článek. Jako nano chci víc!

    1.    Getafix řekl

      SSH ve výchozím nastavení skutečně používá port 22 (i když jej lze změnit). Tento port je ten, který by byl použit při skutečné komunikaci mezi dvěma hostiteli. Je to ten, u kterého se musíte ujistit, že je otevřený a žádný firewall jej nepřerušuje. Ale pro uživatele je zcela transparentní. Můžete na něj zapomenout. V tomto příkladu je přesměrování mezi porty 5000 23 a 5000. Tyto dva jsou jediné, kterých se musíte obávat. Uživatel uvidí, že vše, co pošle na port 23 XNUMX svého hostitele, se objeví na XNUMX cílového hostitele.
      Je zřejmé, že každý uživatel může přesměrovat porty, které považuje za vhodné.

      Děkuji za vaše komentáře. Toto je můj první příspěvek a vaše názory pomohou vylepšit další.

  3.   eliotime3000 řekl

    Lze to udělat také s VPS?

  4.   lovec řekl

    Dobře, to je můj případ, PC1 má přístup k serveru, ale PC2 ne, oba se připojují pomocí ssh, chci mít přístup v PC2, ale který port PC1 přesměrovat? pokud ve skutečnosti to, co chci, je dosáhnout portu serveru z PC2 a že pakety mají jako zdrojovou IP adresu PC1. rozumím?

    1.    Getafix řekl

      Dáte tomu porozumět. V tomto případě potřebujete PC1 k přesměrování portu PC2 na port 22 serveru:

      PC2 $ ssh -L 5000: Server: 22 uživatelů PC1 @ PC1

      a při zachování tohoto připojení otevřeného z jiného terminálu:

      PC2 $ ssh userServer @ localhost -p 5000

      a už jsi uvnitř.

      1.    lovec řekl

        Konečně funkční řešení !! Děkuji Getafix, dal jsi mi svět možností !!

        1.    Getafix řekl

          Jsem rád!

  5.   živý řekl

    Výborný článek. Vítejte v DesdeLinux ????

    A co dělat, když máme 22 blokovaných? LOL ..

    1.    Getafix řekl

      Díky elav.
      Pokud máte zablokovaný port 22, mmmm, budeme muset hledat alternativu k hacknutí XD firewallu

    2.    eliotime3000 řekl

      A nejhorší ze všeho (hypotetické): že je blokován poskytovatelem VPS.

  6.   IGA řekl

    Právě jsem před pár hodinami udělal zkoušku s otázkami o ní 😛

  7.   Mario řekl

    Neřekl bych, že:
    host1 $ ssh -R 5000: localhost: 23 userhost2 @ host2
    je ekvivalentní s druhým příkazovým řádkem ... příkazem s -L.
    Protože -R označuje, že port, který je otevřen pro nová připojení, je na vzdálené straně, tj. Na straně vašeho ssh serveru; zatímco -L otevírá port na místní straně, na straně klienta pro příjem nových připojení.

    Překlad řádku:
    host1 $ ssh -R 5000: localhost: 23 userhost2 @ host2
    Bylo by to něco takového: Být na hostiteli1, připojit se k serveru ssh (port 22) hostitele s mým uživatelem userhost2 a předat připojení vygenerovaná na vzdáleném portu 2 hostitele na port 5000 na host2 (můj localhost)

    Pokud ne, opravte mě! 😉

    -

    Na druhou stranu ... pokud server zablokoval vstup připojení na port 22, to znamená, že se nemůžeme vzdáleně připojit k serveru ssh; co lze udělat, je; že ze serveru (přítel sysadmin za firewallem vzdáleného systému host2) je spuštěn příkazový řádek:

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

    -f přejde na pozadí
    -N neprovede na dálkovém ovladači žádný příkaz
    nohup zabrání přerušení provádění příkazu při odhlášení

    host1 $ ssh userhost2 @ localhost -p 6000

    Tímto způsobem z hostitele 1 vygenerujeme připojení k localhost (stejný hostitel1) na portu 6000, které předá připojení na port 22 vzdáleného systému host2, ve kterém se přihlásíme pomocí uživatele host2.

    To by umožnilo (netestoval jsem to, ale zní to, jako by to fungovalo) přihlásit se na ssh server blokovaný firewalem s malou pomocí zevnitř! 😀

    Ten druhý jsem četl z vysvětlení v časopise The Geek Stuff
    http://www.thegeekstuff.com/2013/11/reverse-ssh-tunnel/

    Opravdu se mi líbí vaše publikace; Četl jsem je často!
    Zdravím.

    1.    Getafix řekl

      Máš pravdu. V článku je chyba. Přesměrování není ekvivalentní. Příkaz host1 $ ssh -R 5000: localhost: 23 userhost2 @ host2 provede reverzní přesměrování, to znamená, že přesměruje vzdálený port 5000 na 23 místních, což je opak toho, co příkaz s -L.
      Děkuji za opravu.