Una altre d'aquelles eines que malgrat ser petitones i rares poden servir per fer mil i una coses. Per exemple, connectar a un servidor DNS a través d'un port TCP en una xarxa on el tràfic UDP estigui tancat.
UDPTunnel és una eina molt simple d’usar i la seva sintaxis és molt autoexplicativa:
és interessant fixar-se que el mateix executable pot ser usat com a servidor o com a client, així doncs ideal per construir els dos costats de l’enllaç de forma simple.
A més si ho combinem amb httptunnel podem passar per sobre de proxies de forma senzilla.
-L: connecta per SSH a un HOST Un cop allà obre una connexió TCP a un altre HOST:PORT i obre un port TCP local que al connectar-hi ens envia al HOST:PORT anteriors, o sigui, portforwarding.
-L [bind_address:]port:host:hostport]
-W: connecta per SSH a un HOST un cop allà obre una connexió TCP a un altre HOST:PORT i ens retorna a la stdin/stdout el contingut d’aquest darrer enllaç TCP
-W host:hostport
-R publicar un port: connecta per SSH a un host i un cop allà publica un port TCP, quan un client es connecta a aquest port TCP accedeix per SSH a la màquina que ha llença l’enllaç SSH i obre un altre enllaç TCP a una altre IP:PORT.
-R[bind_address:]port:host:hostport
-D socks5: connecta per SSH a un HOST i després publica un port SOCKS5/TCP, és a dir, que podem connectar a aquest port local i sortir a internet a través de la IP del HOST on hem connectat per SSH
-D [bind_address:]port
-w tunel: connecta per SSH a un HOST i el socket que s’ha usat per fer l’enllaç SSH es connecta a dues interficies de tipus TUN, una a cada extrem del socket. Així doncs, si configurem les corresponents IPs a les interficies TUN tenim un tunel/VPN montada entre els extrems.
-w local_tun[:remote_tun]
HPN-SSH
La web de: HPN-SSH -> especialment interessant: Dynamic Windows and None Cipher
treballa amb mida de finestra dinàmica
treballa sense xifrat quan un enllaç no té terminal associat, sovint usat per pas de fitxers
Les proves:
Openssh 5.3p1 + hpn-13 (només el patch: Dynamic Windows and None Cipher)
després d’aplicar el patch: openssh5.3-dynwindow_noneswitch.diff.gz
modifiquem el fitxer: sshconnect2.c
linia: 366
- if (!tty_flag) /* no null on tty sessions */
+ if (1) /* no null on tty sessions */
així podem fer SSH sense xifrar només després d’haver fet el login.
exemple ampla de banada d’un SSH amb xifrat aes128-ctr, usant finestra dinàmica:
scp -v -oNoneEnabled=no -oNoneSwitch=yes fitxer root@127.0.0.1:/tmp/ssh
o
ssh -v -oNoneEnabled=no -oNoneSwitch=yes root@127.0.0.1 "dd if=/dev/zero"|pv > /dev/null
velocitat de transferència: 13.7MB/s
debug ciphers, una única negociació de ciphers:
debug1: AUTH STATE IS 0
debug1: REQUESTED ENC.NAME is 'aes128-ctr'
debug1: kex: server->client aes128-ctr hmac-md5 none
debug1: REQUESTED ENC.NAME is 'aes128-ctr'
debug1: kex: client->server aes128-ctr hmac-md5 none
exemple sense xifrat, usant finestra dinàmica:
scp -v -oNoneEnabled=yes -oNoneSwitch=yes fitxer root@127.0.0.1:/tmp/ssh
o
ssh -v -oNoneEnabled=yes -oNoneSwitch=yes root@127.0.0.1 "dd if=/dev/zero"|pv > /dev/null
velocitat de transferència: 37.4MB/s
abans del pass de login:
debug1: AUTH STATE IS 0
debug1: REQUESTED ENC.NAME is 'aes128-ctr'
debug1: kex: server->client aes128-ctr hmac-md5 none
debug1: REQUESTED ENC.NAME is 'aes128-ctr'
debug1: kex: client->server aes128-ctr hmac-md5 none
després d’autenticar-se:
debug1: AUTH STATE IS 1
debug1: REQUESTED ENC.NAME is 'none'
debug1: Requesting NONE. Authflag is 1
debug1: None requested post authentication.
debug1: kex: server->client none hmac-md5 none
debug1: REQUESTED ENC.NAME is 'none'
debug1: Requesting NONE. Authflag is 1
debug1: None requested post authentication.
debug1: kex: client->server none hmac-md5 none
Finalment l’última entrega de la trilogia de podcasts sobre SOCKS. Com indica el títol i podeu veure amb els links aquest parla d’eines per montar servidors SOCKS i wrappers per montar clients SOCKS5.
La idea es força simple es tracta de transportar un fluxe TCP sobre d’una connexió HTTP convencional, fiexeu-vos que en aquest cas no estem parlant de proxies ni similars. Sinó de paquets TCP+HTTP que en la part de dades del HTTP tornen a implementar TCP, si fessim un petit esquema seria algo així:
+----+----+------+------+-----+------+
|... | IP | TCP | HTTP | TCP | DATA |
+----+----+------+------+-----+------+
Si realment teniu aquest interés montar reDuh és realment senzill, de fet, suporta servidors amb JSP, PHP i ASP. En escència l’únic que fa és usar aquests protocols per re-obrir una connexió TCP. Així doncs, al servidor on montem aquesta eina hem de tenir certs privilegis per poder obrir sockets des d’un script.
L’eina no és massa recomanable si pensem tenir fluxes de dades molt intensos, per exemple, senssions VNC. Però funciona prou bé si el que volem és transportar una sessió SSH o similar.
En l’article sobre Turnkey Linux vaig parlar sobre shellinabox, doncs bé per coses de l’atzar he descobert que no és l’únic sistema que preten donar accés a una sessió de shell a través d’una pàgina web.
De fet, les tres eines que he trobat són realment bones, així doncs si algú en sap alguna cosa més sobre elles que m’ho digui perquè no sé amb quina quedar-me:
shellinabox: emula un terminal VT100 i es llença com un dimoni que dona accés al host local a través del port que escollim, pot treballar amb o sense SSL.
AJAXTerm: inspirat en ANYTerm però molt més simple d’instal·lar, ja que només depèn de python, o sigui, que treballa com a dimoni en el sistema on volem tenir la shell.
Descrirure tècnicament el que fa proxytunnel és força senzill, ja que l’únic que fa és connectar l’entrada i sortides estàndard a través d’un socket que va del client al servidor a través d’un servidor proxy HTTP o HTTPs; soportant autenticació de diversos tipus en el servidor proxy.
Gràcies a aquesta funcionalitat tan simple es pot aplicar en infinitat de llocs, per exemple, com a backend d’OpenSSH per tal de poder fer connexions SSH a través d’un proxy HTTP. Això si el proxy haurà de suportar el mètode CONNECT.
Un cop ha establert la connexió amb l’extrem desitjat publica un port a través del qual ens podem connectar a través d’un client TCP convencional i enviar/rebre dades de l’altre extrem del túnel.
Quan treballem sobre proxies HTTP aquests no poden fer inspecció de continguts de capa 7 sinó s’adonaran que el tràfic qeu es passa no és legítim, encanvi si fem el túnel sobre HTTPs això no e un problema ja que no es pode inspeccionar les dades que van per sobre de la capa 4 al anar xifrades.
També cal pensar que és habitual que si el mètode CONNECT, que ha de ser suportat pel proxy esta habilitat (cosa rara que passi) segurament estarà restringit a connectar-se al port 80, 8080 i 443 remots, com a molt. Així doncs, si el que volem és fer una connexió SSH el que hem de fer és publicar el servidor SSH per algún d’aquests ports.
Si esteu interessats en aplicar la solució de la connexió SSH sobre proxy HTTP/s ús recomano seguir el manual que hi ha a la pàgina: DAG WIEERS: Tunneling SSH over HTTP(S).
Després de moltes hores de feina estudiant el protocol SOCKS he decidit publicar un podcast que expliqui el seu RFC, el podcast pretent fer una introducció des de la part meś conceptual fins endinsar-se en el fluxe de paquets, els camps de les peticions llençades arribant a explicacions de nivell de bit. Amb l’ajuda dels diagrames adjunts a aquest article, l’RFC1928 i l’explicació del podcast després hauriem d’estar capacitats per implementar un client/servidor SOCKS5.
esquema 5: encapsulaments per enviaments de paquets UDP
+-----+----+-----+------------------------+------+
| ... | IP | UDP | SOCKS5 UDP ASSOCIATION | DATA |
+-----+----+-----+------------------------+------+
esquema 6: camps de l’encapsulament: UDP ASSOCIATION
Apunts per fer el podcast: fitxer .txt amb la llista de coses que havia de comentar al podcast és una barreja de català, castellà i anglès… però pot servir-vos per entendre el que intento explicar
parprouted és un dimoni que fa funcions de proxy ARP, idea per fer unir dues xarxes a nivell 3 quan no estan unides per la capa 2. O sigui, no cal que fem WDS (usant en xarxes Wi-Fi) o que posem un bridge de capa 2 per unir dues xarxes separades físicament però unides a través de routing.
El funcionament del dimoni és el següent: quan es rep una petició ARP i la resposta de la petició és desconeguda llavors aquesta petició ARP es re-envia a la resta d’interficies en busca de la MAC requerida per la IP demanada en la petició ARP. Quan es localitza la IP es creen rutes estàtiques de tipus host (/32) per interconnectar aquella IP que esta en una altre interficie de xarxa diferent de la interficie que la requeria. Així aconseguim fer visible la IP entre les dues interficies de xarxa.
Totes les entrades que es creen amb el dimoni es refresquen cada 50s enviant peticions ARP que validin que encara són vigents. En cas de que les peticions fallin el propi kernel borrarà les entrades de la taula ARP i el dimoni s’encarregarà de borrar les rutes estàtiques.
Normalment es triguen uns 60ms per aconseguir fer visible un host que no esta al propi segment de xarxa degut als processos que s’han comentat, però es considera un temps marginal en comparació al benefici que se’n obté.
Aquí podràs trobar moltíssima informació relacionada amb l'Oriol Rius. Des del blog, fins a moltes altres seccions. Les temàtiques que es tracten són tan de caire personal com de temàtiques tecnològiques. M'autodefineixo com un geek completament absorvit per la tecnologia i tot el que l'envolta. Bàsicament els aspectes tècnics que m'interessen són el Linux, networking, xarxes sense fils, veu sobre IP i molts d'altres temes relacionats.
Warning: http://oriolrius.cat/blog/wp-content/cache/f04e550c6f585d2a897d75be092f9485.spc is not writeable in /var/www/oriolrius.cat/blog/wp-content/plugins/simplelife/simplepie.inc on line 1623
Warning: http://oriolrius.cat/blog/wp-content/cache/38d6a04800fb1ab91fd7ab486778b4f3.spc is not writeable in /var/www/oriolrius.cat/blog/wp-content/plugins/simplelife/simplepie.inc on line 1623
Warning: http://oriolrius.cat/blog/wp-content/cache/bf40e3d084b1c4f7473eded3c1fd63aa.spc is not writeable in /var/www/oriolrius.cat/blog/wp-content/plugins/simplelife/simplepie.inc on line 1511
Warning: http://oriolrius.cat/blog/wp-content/cache/d06d5b621b10ec10157a16a62e9bab8a.spc is not writeable in /var/www/oriolrius.cat/blog/wp-content/plugins/simplelife/simplepie.inc on line 1623
Warning: http://oriolrius.cat/blog/wp-content/cache/756c2f766232b15cdff4784a76562a8a.spc is not writeable in /var/www/oriolrius.cat/blog/wp-content/plugins/simplelife/simplepie.inc on line 1623
Warning: http://oriolrius.cat/blog/wp-content/cache/004dcadcf5a1df4de6acd9908fa5b3d1.spc is not writeable in /var/www/oriolrius.cat/blog/wp-content/plugins/simplelife/simplepie.inc on line 1623
Warning: http://oriolrius.cat/blog/wp-content/cache/a7f8a0ca55738742fdf1834bc387975b.spc is not writeable in /var/www/oriolrius.cat/blog/wp-content/plugins/simplelife/simplepie.inc on line 1623
Warning: http://oriolrius.cat/blog/wp-content/cache/6ae333342783504028a4a3f3d22bfa11.spc is not writeable in /var/www/oriolrius.cat/blog/wp-content/plugins/simplelife/simplepie.inc on line 1623