abclinuxu.cz AbcLinuxu.cz itbiz.cz ITBiz.cz HDmag.cz HDmag.cz abcprace.cz AbcPráce.cz
Inzerujte na AbcPráce.cz od 950 Kč
Rozšířené hledání
×
    včera 18:22 | Nová verze

    Byla vydána verze 0.2.0 v Rustu napsaného frameworku Pingora pro vytváření rychlých, spolehlivých a programovatelných síťových systémů. Společnost Cloudflare jej letos v únoru uvolnila pod licencí Apache 2.0.

    Ladislav Hagara | Komentářů: 0
    10.5. 19:11 | Nová verze

    Open source RDP (Remote Desktop Protocol) server xrdp (Wikipedie) byl vydán ve verzi 0.10.0. Z novinek je vypíchnuta podpora GFX (Graphic Pipeline Extension). Nová větev řeší také několik bezpečnostních chyb.

    Ladislav Hagara | Komentářů: 7
    10.5. 04:11 | Nová verze

    Rocky Linux byl vydán v nové stabilní verzi 9.4. Přehled novinek v poznámkách k vydání.

    Ladislav Hagara | Komentářů: 0
    9.5. 22:22 | Bezpečnostní upozornění

    Dellu byla odcizena databáze zákazníků (jméno, adresa, seznam zakoupených produktů) [Customer Care, Bleeping Computer].

    Ladislav Hagara | Komentářů: 17
    9.5. 21:11 | Zajímavý článek

    V lednu byl otevřen editor kódů Zed od autorů editoru Atom a Tree-sitter. Tenkrát běžel pouze na macOS. Byl napevno svázán s Metalem. Situace se ale postupně mění. V aktuálním příspěvku Kdy Zed na Linuxu? na blogu Zedu vývojáři popisují aktuální stav. Blíží se alfa verze.

    Ladislav Hagara | Komentářů: 32
    9.5. 14:33 | Pozvánky

    O víkendu 11. a 12. května lze navštívit Maker Faire Prague, festival plný workshopů, interaktivních činností a především nadšených a zvídavých lidí.

    Ladislav Hagara | Komentářů: 0
    8.5. 21:55 | Nová verze

    Byl vydán Fedora Asahi Remix 40, tj. linuxová distribuce pro Apple Silicon vycházející z Fedora Linuxu 40.

    Ladislav Hagara | Komentářů: 20
    8.5. 20:22 | IT novinky

    Představena byla služba Raspberry Pi Connect usnadňující vzdálený grafický přístup k vašim Raspberry Pi z webového prohlížeče. Odkudkoli. Zdarma. Zatím v beta verzi. Detaily v dokumentaci.

    Ladislav Hagara | Komentářů: 7
    8.5. 12:55 | Nová verze

    Byla vydána verze R14.1.2 desktopového prostředí Trinity Desktop Environment (TDE, fork KDE 3.5). Přehled novinek v poznámkách k vydání, podrobnosti v seznamu změn.

    JZD | Komentářů: 0
    7.5. 18:55 | IT novinky

    Dnešním dnem lze již také v Česku nakupovat na Google Store (telefony a sluchátka Google Pixel).

    Ladislav Hagara | Komentářů: 10
    Podle hypotézy Mrtvý Internet mj. tvoří většinu online interakcí boti.
     (64%)
     (7%)
     (13%)
     (15%)
    Celkem 162 hlasů
     Komentářů: 11, poslední 10.5. 18:00
    Rozcestník

    Pohádka o tunelování ssh přes dva NATy

    23.11.2007 21:15 | Přečteno: 3518× | varia

    Bylo, nebylo. Za sedmero firewally a sedmero NATy žily byly dva počítače, domek a hrad. V domku bydlel hloupý Honza a v hradu princezna. Ani jeden z nich neměl veřejnou IP adresu a tak po sobě dlouho jen platonicky toužili a Honza princezně nosil zamilovaná psaníčka jen na disketách. Pan král jejich spojení nepřál a tak Honzu s žádostí o přesměrování portů poslal tam, kde slunce nevychází. Honza ale po princezně toužil čím dál tím víc, a tak se rozhodl pro ďábelský plán: vykope tunel ...

    Honza měl víc štěstí než rozumu, protože potkal hodnou kouzelnou babičku, která mu za pár buchet dovolila přístup do své chaloupky, která nejenže měla veřejnou IP adresu, běžela na linuxu, ale také měla povolený sshd port forwarding. Babička mu ochotně zřídila účet i pro princeznu. Honza chvíli hledal na googlu a pak se v převleku dostal na hrad, kde bydlela princezna a napsal:

    
    ssh-keygen princenzna
    scp princezna.pub princezna@chaloupka:princezna.pub
    
    Ještě postaru, heslem, se připojila princezna do chaloupky a pomocí
    cat princezna.pub>>~/.ssh/authorized_keys
    přidala klíč. Honza pak princezně na hradu vytvořil soubor /home/princezna/.ssh/config, do kterého napsal:
    
    Host chaloupka
            User princezna
            IdentityFile ~/.ssh/princezna
    
    Mohli si tak přes ytalk vesele povídat aniž by král vůbec co tušil.

    Jak šel čas, začal být ale Honza princezně čím dál tím bližší a chtěla ho pozvat k sobě na hrad. Jak ale na to ? Princezna šla trochu googlit a objevila reverzní tunel. Stačilo na hradě napsat ssh -R 7777:hrad:22 a Honza se mohl ze svého účtu honza@chaloupka pomocí příkazu ssh -p 7777 localhost přihlásit přímo na hrad.

    Jako v každé pohádce ale přišel problém. I když pan král o ničem nevěděl, objevil se drak Paketožrout, který seděl pod hradem a žral pakety. Ke vší smůle taky princezna zapoměla svou passphrase, protože ji už rok nepotřebovala. Princ byl na pokraji zoufalství a začal vymýšlet, jak to udělat aby se přerušené spojení dalo navzovat automaticky, když jeho krásná, ale úplně blbá princezna nesedí furt u klávesnice.V diskuzi mu poradili openVPN, s tím ale neměl žádné zkušenosti a protože chtěl tunelovat jen ssh, zrodil se v jeho hlavě ďábelský plán. Udělá TunelDémona, který bude hlídat spojení a když ho Paketožrout přeruší, tak ho znovu nahodí. Aby to chodilo automaticky, i když princezna není nalogovaná, bude se muset vytvořit klíč bez passphrase, který bude v rootově vlastictví. Protože princezně počítač hlídala celá setnina královského vojska (a princezna byla jediný člověk, který měl roota), tak si mohli dovolit nezadat passphrase a pricezna se mohla jednoduše logovat pomocí ssh chaloupka. A aby si byl jistý, vytvořil následující skript, který nechal volat cronem každou hodinu:

    
    #!/bin/sh
    whereToLog="chaloupka"
    remoteport="777"
    localport="222"
    sshcmd="ssh -R $remoteport:`uname -n`:$localport $whereToLog -n -N"
    
    export PATH="${PATH:+$PATH:}/usr/sbin:/sbin"
    pid=`ps aux|grep "$sshcmd"|grep -v "grep"|sed -e s/"^\([a-z]*\)\([ ]*\)\([0-9]*\)\(.*\)"/"\3"/g`
    case "$1" in
      stop)
            echo "Stopping TunnelD"
            kill $pid
            ;;
      start|check)
            echo -n "TunnelD ... "
            if test -n "$pid"; then 
                    echo "running"
            else 
                    echo "starting"
                    `$sshcmd`&
                    logger "sshd to $whereToLog (re)started"
            fi 
            ;;
      *)
            echo "Usage: tunneld {start|stop|check}"
            exit 1
    esac
    exit 0
    
    Za chvilku to měl napsané a odladěné, došel k princezně, tam vytvořil ten klíč, nahrál skript a nastavil crona. Ssh tunel jim dobře sloužil a jestli neumřeli, tak jim to chodí dodnes.

    Důležitá poznámka na konec

    Pokud se vám nějaká část pohádky nezdá a vyprávěli byste jí jinak, tak se, prosím, podělte v diskuzi, protože princ půjde nahrávat skript až zítra ;-)        

    Hodnocení: 96 %

            špatnédobré        

    Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

    Komentáře

    Vložit další komentář

    23.11.2007 21:47 outsider
    Rozbalit Rozbalit vše Re: Pohádka o tunelování ssh přes dva NATy
    ... ale také měla povolený sshd port forwarding.
    Hmmmm, tak tohle je to mocne kouzlo, ktere otevira dvirka k princeznam a ze zajimave pohadky dela tuctovou historku ;-)
    Josef Kufner avatar 23.11.2007 22:36 Josef Kufner | skóre: 70
    Rozbalit Rozbalit vše Re: Pohádka o tunelování ssh přes dva NATy
    Hloupý honza objeví kouzelného dědečka zvaného init a naučí se používat jeho kouzlo respawn, bude mlátit hlavou o zeď a démona pošle zpět do hlubin ;-)
    Hello world ! Segmentation fault (core dumped)
    Josef Kufner avatar 23.11.2007 22:37 Josef Kufner | skóre: 70
    Rozbalit Rozbalit vše Re: Pohádka o tunelování ssh přes dva NATy
    Až ...
    Hello world ! Segmentation fault (core dumped)
    24.11.2007 09:06 Georgius | skóre: 24 | blog: jirka
    Rozbalit Rozbalit vše Re: Pohádka o tunelování ssh přes dva NATy
    No jo, ale když drak Paketožrout bude žrát třeba hodinu všechny pakety, tak se celou dobu bude snažit init obnovit spojení (což se mu nebude dařit), pan král se podívá do logů a uvidí, že se děje něco móóć divného, copak to tam ta princezna má za skriptík, půjde, podívá se a vytahá princeznu za uši. To ale nechceme. Jednou za hodinu je uvěřitelné, že to dělá princezna sama ... Navíc, když se objeví Paketožrout, tak se vnitřní síť hradu začíná chovat více než podivně a samozřejmě se to pak hodí na princeznu, že tam dělá bordel ...
    Josef Kufner avatar 24.11.2007 09:18 Josef Kufner | skóre: 70
    Rozbalit Rozbalit vše Re: Pohádka o tunelování ssh přes dva NATy
    Ono init není zas tak hloupý a když v tom skriptíku nějak pořešíš ono čekání... Třeba pokud se pingne do cíle, tak to zkus a když ne, tak chvíli počkej...
    Hello world ! Segmentation fault (core dumped)
    24.11.2007 09:31 Georgius | skóre: 24 | blog: jirka
    Rozbalit Rozbalit vše Re: Pohádka o tunelování ssh přes dva NATy
    No to je koneckonců pravda, to by stálo za úpravu ... možná to pak upravím aby to tak bylo. On v podstatě rozdíl je jen v eleganci řešení (což init je elegantnější, neříkám, že ne) a v tom, že se to zavolá opravdu jen když se rozpadne spojení. Na druhou stranu takhle se 1x za hodinu udělá ps|grep|sed, což na mém Core2Duo @1.8 GHz trvá zhruba 20-30 ms (a princezna má lepší počítač než já), takže je to ztráta výkonu, která se dá tolerovat ;-) ;-)
    Josef Kufner avatar 24.11.2007 10:46 Josef Kufner | skóre: 70
    Rozbalit Rozbalit vše Re: Pohádka o tunelování ssh přes dva NATy
    V nejlepším případě to bude trvat jen 20ms, ale v nejhorším budeš hodinu bez spojení.
    Hello world ! Segmentation fault (core dumped)
    24.11.2007 11:02 Georgius | skóre: 24 | blog: jirka
    Rozbalit Rozbalit vše Re: Pohádka o tunelování ssh přes dva NATy
    Nebo můžu testovat každých 10 min s vědomím, že se připravuji skoro o 5s výpočtu jednoho z jader za den :-). Ach jo, ty rejpavý lidi, ty mě snad donutíš to vymyslet ... Nebo víš řešení zpaměti ?
    24.11.2007 11:40 Georgius | skóre: 24 | blog: jirka
    Rozbalit Rozbalit vše Re: Pohádka o tunelování ssh přes dva NATy
    a ještě k tomu bububunťáci zrušili /etc/init.tab :-(((
    Josef Kufner avatar 24.11.2007 11:45 Josef Kufner | skóre: 70
    Rozbalit Rozbalit vše Re: Pohádka o tunelování ssh přes dva NATy
    #!/bin/bash
     
    if ping chaloupka -c 1
    then
       exec ssh chaloupka ...
    else
       exec sleep 60
    fi
    
    Jakmile tohle skonci, init to respawne. Jakmile chcipne ssh, okamzite se zkusi pingem, zda je sit ok a pokud ano, okamzite se to znovu pripoji. Pokud ping neprojde, pocka se minutu a zkusi se to znovu.
    Hello world ! Segmentation fault (core dumped)
    24.11.2007 11:48 Georgius | skóre: 24 | blog: jirka
    Rozbalit Rozbalit vše Re: Pohádka o tunelování ssh přes dva NATy
    díky, už jsem vymyslel něco komplikovanějšího, tohle se mi líbí, je to takové elegantní (já jsem testoval packetloss na 10 paketech). Problém je, že právě zvracím nad Ubuntím řešením inittabu. To je prasárna ... bleeeh, zlatej Slackware. Toho idiota co vymyslel upstart dostat do ruky ...
    24.11.2007 12:28 Georgius | skóre: 24 | blog: jirka
    Rozbalit Rozbalit vše Re: Pohádka o tunelování ssh přes dva NATy
    Tak jsem ten upstart pochopil, fuj to je ale chujovina. Při testování jsem zjistil, že toto elegantnější řešení je méně robustní než moje původní. Pokud je totiž dostatek smůly (a známe Murphyho zákony) tak spoj spadne mezi úspěšným pingem a spuštěním ssh. A ssháčko zůstane viset a bude čekat a čekat a čekat ... takže mu musíme ještě přidat pár parametrů:
    if ping $whereToLog -c 1
    then
       logger "sshd to $whereToLog (re)starting"
       ssh -R $remoteport:`uname -n`:$localport $remoteuser@$whereToLog -n -N -o ConnectTimeout=30 ConnectionAttempts=1
    else
      logger "Link to $whereToLog too bad, respawn within 1 minute"
      exec sleep 60
    fi
    
    
    24.11.2007 16:56 disorder | blog: weblog
    Rozbalit Rozbalit vše Re: Pohádka o tunelování ssh přes dva NATy
    este sa skus pozriet na autossh, nikdy som to nepouzil, ale myslim, ze take nieco hladas :)
    Josef Kufner avatar 25.11.2007 00:32 Josef Kufner | skóre: 70
    Rozbalit Rozbalit vše Re: Pohádka o tunelování ssh přes dva NATy
    No jasně, takovéhle drobnosti jsem neřešil... a tomu pingu by to nejaky rozumny timeouty taky chtelo nastavit.
    Hello world ! Segmentation fault (core dumped)
    24.11.2007 17:40 Radek Hladik | skóre: 20
    Rozbalit Rozbalit vše Re: Pohádka o tunelování ssh přes dva NATy
    Měl jsem pocit, že tohle už dělá autossh. Ale každopádně ta openVPNka je opravdu hodně jednoduchá, v případě dvou konců vysloveně triviální...
    24.11.2007 23:00 CET
    Rozbalit Rozbalit vše Re: Pohádka o tunelování ssh přes dva NATy
    Muzu potvrdit, ze jsem si taky delal tunelovani SSHckem (tuneloval jsem si spojeni na httpproxy). Bohuzel to opravdu stabilni nebylo, nemel jsem sice vyreseny restartovani, ale docela to byl hnusnej pristup.

    Muzu ale potvrdit, ze openVPN je opravdu jednoducha. A pokud se nepletu, slo by mozna openVPN tlacit primo bez nutnosti dalsiho stroje pomoci UDP NAT traversalu (nezkousel jsem). A dalsi vyhoda bude, ze tunel bude oboustranny a pro vsechny protokoly (cili ne pouze ssh s ytalkem), ale jednodusse i treba VNC, samba, http atd.

    Jinak ytalkovat je trosku podivne v dnesni dobe Jabber, ICQ, Skype a dalsi IM reseni:-)
    25.11.2007 09:04 Georgius | skóre: 24 | blog: jirka
    Rozbalit Rozbalit vše Re: Pohádka o tunelování ssh přes dva NATy
    Mám už to tak udělaný, a docela to drží (a až to spadne, tak se to resetne :-) ). Když budu náhodou potřebovat procpat něco dalšího (VNC,samba,http), tak to pustím tímtéž/sousedním tunelem ... Tím že je to takhle, tak mi to přijde o něco bezpečnější a navíc se můžu do chaloupky přihlásit odkudkoliv, takže je to univerzálnější. Co se týče ytalku, tak je to (při komunikaci dvou lidí, co mají účet na stejném stroji) nejbezpečnější řešení co znám, v podstatě ekvivalentní puštění místního jabber serveru. ICQ,Skype či Jabber.cz Honza nepoužije, protože není hloupý ;-) a nebude chtít, aby někdo zvenku (ať už v USA nebo v ČR) mohl číst co si s princeznou píše :-)
    25.11.2007 17:42 CET
    Rozbalit Rozbalit vše Re: Pohádka o tunelování ssh přes dva NATy
    Honza bohuzel hloupy je, kdyz nezna PGP, resp. GnuPG a neumi si do PSI (nebo jineho Jabber klienta s podporou GPG) pridat klic. Sifrovani komunikace pak probiha velmi bezpecnym zpusobem od odesilatele az k prijemci a neni nikde cestou dekodovana:-) Ale to jen pro uplnost, abys vedel, ze s Jabberem se da komunikovat 100% bezpecne. A tim nemyslim zrizovani vlastniho jabber serveru.

    Jinak ytalk jsem taky videl, ale do hloubky jsem ho nezkoumal, takze nemuzu uplne jiste prohlasit, jestli by se treba nedal ytalk nejak podfouknout a nezobrazoval komunikaci nejake treti osobe:-)

    Jinak souhlasim, ze tunel pres SSH je ten nejjednodussi, co se nahozeni tyka, proste parametr -L (LocalForward) nebo -R (RemoteForward). Nevyhoda je bohuzel nutnost uctu v systemu. Pro obecnejsi reseni je lepsi VPN.

    Co se vzdaleneho prihlasovani tyka, osobne bych se pres ssh neprihlasoval z cizich kompu (cili ne "odkudkoliv"), jeste tak v pripade pouziti jednorazovych hesel. Ale to plati i v pripade pouziti Jabber klienta i kdyz treba se zaheslovanym GnuPG klicem na USB flash disku.

    Vyhodu v jabberu vidim v tom, ze tak muzu pomoci stejneho protokolu a programu komunikovat i s dalsimi lidmi.
    frEon avatar 24.11.2007 21:26 frEon | skóre: 40 | Praha
    Rozbalit Rozbalit vše Re: Pohádka o tunelování ssh přes dva NATy
    luxusni pohadka :-). skoda ze kdyz jsem byl malej, tak mi nikdo takovyhle pohadky nevypravel :-D....
    Talking about music is like dancing to architecture.

    Založit nové vláknoNahoru

    ISSN 1214-1267   www.czech-server.cz
    © 1999-2015 Nitemedia s. r. o. Všechna práva vyhrazena.