Portál AbcLinuxu, 30. dubna 2025 11:21
Igor má rád Evu, Eva jeho (nie). Eva chce mať Vojta .... no nedovolí Eva Igorovi aby si povídal s Vojtem. Za to Igorovi dovolí ať se na ní ssháčkne (a od ní k Vojtovi). Introducing sstream.
O co že tu jde? Takhle hezky nám to ve firmě zamotaly lamy z infosecu. Nejspíš provádí penetrační testy asi tak často jako Blek. tak si to pak vybíjí a takto nám znepříjemňují život.
Na stole mám dva stroje - jeden s Windows na korporatni komunikaci, přístup na internet apod. a druhý s Linuxem na kterém se provádí samotný vývoj. Samozřejmě jsou na oddělených sítích a vývojářská síť není nijak s korporatni propojena. No je tu pár strojů které mají přístup do obou sítí a běží na nich sshd. Takže je možné se z Windows sshacknout na "jumpbox" a z něho na naše stroje ve vývojářské sítí. Jumpbox samozřejmě nepodporuje port forwarding. No my bychom ip konektivu mezi stroji rádi - už kvůli tomu že používat dvě klávesnice (či kvm switch) je těžce neergonomické a zdravotně závadné - ale hlavně kvůli tomu že je punk ukázat infosecu že zase jednou jejich obstrukce akorát otravují ale kdo umí se propenetruje kde chce
Podaří se? Protahnem TCP skrz SSHacko? Jak by jste to řešili vy?
Tady je moje řešení - skript v pythonu (sstream.py) otevře v PTY OpenSSH klienta a transparente presmeruju co přečte z PTY na stdout a co přečte z stdinu zapíše do PTY až dokud z PTY nenarazí na kouzelnou sekvenci bytu. Tuto sekvenci pošle při spuštění na serverů druhý python skript (sstream-server). Sstream-server se pak připojí k serverů a všechny data která přečte pošle na svůj stdout ve formátu "data_len\ndata\n" (a obráceně). Sstream.py poté co přečte kouzelnou sekvenci nabinduju socket počká až se připojí klient a pak vše co od klienta přečte pošle do PTY (opět ve formátu "data_len data ") (a obráceně, co přečte z PTY dekóduje a pošle klientovi).
Vypadá to snadné ... devil's in thé details ... jo vyřešit všechny detaily fakt byla poradna sranda, pak když jsme zistili že synergy rádo timeoutuje klienta takže sstream a sstream-server po sobě musí jen přestat házet data a musí si i začít povídat a občas se synchronizovat ("hele synergy mě zas odpojilo","ok přestanu ti posílat data a odpojím klienta a schválně jestli se znova připojí","ok","připojil","paráda já se znovu připojím k serverů, JEDEM") (několik hodin strávených debugovanim i přesto že sstream funguje ale tváří se že ne protože synergy nefunguje v Gnóme3 pokud není u hrany obrazovky ne-gnóme3 aplikace snad raději nezmiňovat ).
Výsledek je tady: https://github.com/luv/sstream , tak jestli vás ve firmě taky takto omezují tak určitě zkuste.
Tiskni
Sdílej:
Jumpbox samozřejmě nepodporuje port forwarding.
ProxyCommand ssh -e none proxy "/bin/bash -c 'exec 3<>/dev/tcp/%h/%p; cat <&3 & cat >&3;kill $!'" 2> /dev/null
Stačí mít na prostředním serveru bash :)
-bash-4.1$ cat ~/.ssh/config Host 10.119.23.224 ProxyCommand ssh 10.224.193.153 exec nc %h %p $ ssh -e none 10.119.23.224 ssh: connect to host 10.119.23.224 port 22: Connection timed outTak pres nas jumpbox kde nemame ani pristup k ssh to neprojde
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.