Hemen zaude: Hasiera Comunidad Documentación Recetas Navegar desde un ordenador que lo tiene prohibido

Navegar desde un ordenador que lo tiene prohibido

Si tu ordenador tiene cerrado el acceso al puerto 80, o sufre un proxy tirano, no te desesperes. Si puedes acceder con ssh a ese ordenador, no todo esta perdido.

Introducción

Imagínatelo, te dan un servidor en housing, pero por políticas de seguridad no te dejan acceder a Internet desde el. Solo puedes acceder a través de ssh. Necesitas actualizar el sistema. Como te lo curras?

La idea

Una de las funcionalidades de ssh es el túnel inverso. Podemos hacer que todo el tráfico que vaya a un puerto del servidor se redirija a otra maquina, a través de nuestra propia conexión a Internet.

Primera prueba

Establecemos una conexión ssh al servidor, creando el túnel inverso que redirija todo el tráfico desde el puerto 1234 del servidor al puerto 80 (http) de nuestro repositorio de Debian preferido:

  ssh -R 1234:ftp.fr.debian.org:80 root@servidor

Una vez en el servidor editamos el fichero /etc/apt/sources.list para decirle como llegar al repositorio. Comentamos todas las líneas de los repositorios que utilizamos y ponemos la siguiente:

  deb http://localhost:1234/debian/ lenny main contrib non-free

Ahora podemos utilizar el aptitude normalmente:

  web:~# aptitude update
Des:1 http://localhost lenny Release.gpg [189B]
Des:2 http://localhost lenny/main Translation-es [679kB]
Ign http://localhost lenny/contrib Translation-es
Ign http://localhost lenny/non-free Translation-es
Des:3 http://localhost lenny Release [74,5kB]
Des:4 http://localhost lenny/main Packages [6978kB]
Des:5 http://localhost lenny/contrib Packages [97,1kB]
Des:6 http://localhost lenny/non-free Packages [122kB]
Descargados 7951kB en 2min1s (65,6kB/s).
Leyendo lista de paquetes... Hecho

Current status: 123 actualizados [+123], 1 nuevo [+1].

Sin embargo esta solución es incompleta, porque solo nos permite utilizar un repositorio, lo que nos impide realizar las actualizaciones de seguridad además de las actualizaciones ordinarias, por ejemplo.

Segundo intento: Help me PROXY!

Necesitamos un proxy que nos de acceso a todo internet. Instalaremos Squid para que haga de proxy-cache en un ordenador que se pueda conectar a Internet (la nuestra, por ejemplo); para saber como buscar algún manual en Internet, esta muy documentado.

Seguidamente creamos el túnel inverso (desde el ordenador donde este el proxy cache):

  ssh -R 1234:localhost:3128 servidor

Una vez en el servidor editamos el fichero /etc/apt/apt.conf (si no existe lo creamos) y especificamos el proxy:

  Acquire {
Retries "0";
HTTP {
Proxy "http://localhost:1234";
};
};

Ahora ya podemos actualizar nuestro sistema, con todos los repositorios que queramos:

  web:~# aptitude update 
Des:1 http://ftp.fr.debian.org lenny Release.gpg [189B]
Des:2 http://ftp.fr.debian.org lenny/main Translation-es [679kB]
Obj http://security.debian.org lenny/updates Release.gpg
[...]
Des:46 http://ftp.fr.debian.org lenny/non-free 2008-10-14-0840.35.pdiff [784B]
Descargados 7749kB en 1min50s (70,2kB/s).
Leyendo lista de paquetes... Hecho

Current status: 123 actualizados [+80], 16 nuevos [-54].
There are 2 newly obsolete packages: libdb4.3, libdb4.4

El proxy no solo vale para el apt...

Un momento! Y si necesito navegar para descargar algo con otro sistema que no sea apt? Necesito navegar!

Solución general

Para las aplicaciones de consola suele bastar con definir el proxy en la variable http_proxy:

  web:~# export http_proxy=http://localhost:1234
web:~# wget http://www.google.es
--2008-10-21 00:29:46-- http://www.google.es/
Resolviendo localhost... 127.0.0.1
Connecting to localhost|127.0.0.1|:1234... conectado.
Peticin Proxy enviada, esperando respuesta... 200 OK
Longitud: no especificado [text/html]
Saving to: `index.html'

[ <=> ] 6.415 --.-K/s in 0,1s

2008-10-21 00:29:46 (56,5 KB/s) - `index.html' saved [6415]

También vale para navegar con el w3m y para la librería urllib2 que usa buildout, por ejemplo.

Subversion

Hay que editar el fichero ~/.subversion/servers. En la sección [global]:

  [global]
http-proxy-host = localhost
http-proxy-port = 1234

Con esto es suficiente para poder obtener copias de trabajo del subversion. Si también queremos enviar modificaciones, habrá que asegurarse que el proxy-cache soporta los métodos PROPFIND, REPORT, MERGE, MKACTIVITY y CHECKOUT. En el FAQ de subversion explican esto con más detalle. http://subversion.tigris.org/faq.html#proxy