Se encuentra usted aquí

Tunel SSH para navegar por internet en lugares donde lo bloquean

Un ejemplo de un tunel SSH, aunque no el que yo hice

Esto sucedió hace ya unos años, pero como no escribí de ello, ahora lo hago. Me acordé porque lo mencioné en esta Ignite Talk que di apenas...
Video

No voy a dar el detalle del lugar en que hice esto, para no quemar ni involucrar a nadie. Bueno poquito, tenía que ver con el gobierno federal :v

Resulta que el sysadmin del lugar, seguramente por indicación de algun alto mando de esos que no saben de tecnología, bloqueó la salida a internet en todos los puertos habidos y por haber. Sólo dejó abiertos los puertos 80 (para navegar por web, http) y 443 (para navegar por web de manera segura, https). Y eso sólo a ciertos sitios, o más bien bloqueando sitios específicos de la red.

En ese entonces yo era usuario asiduo de mi propio servidor, ya sea para jugar o distraerme, ya sea para aprender, ya sea para acceder a recursos que a veces necesitaba dentro de mi propio trabajo. Al mismo tiempo usaba internet para lo que todos los que trabajamos como programadores lo usamos: o sea las redes sociales para procastinar, y por supuesto muchos sitios con referencias, documentación y herramientas a usar en nuestro trabajo (como ya lo he dicho antes, tontos son los que creen que memorizar una tecnología te haga siquiera de nivel decente como desarrollador, el internet hoy en día ya es básico).

Afortunadamente la dirección de mi servidor estaba accesible, no estaba dentro de la lista que el sysadmin decidió bloquear. Aunque claro, no podía más que ver mi sitio web, en modo inseguro y seguro y ya. ¿Cómo resolver mi problema con estos recursos?

Aquí lo que hice:

  • Sabía que conectándome a SSH a un servidor sin restricciones, como el mío, podría hacer un proxy SOCKS para poder navegar a donde yo quisiera
  • Investigué y encontré que HTTPS utiliza el protocolo SSL para la encriptación de la información, y que es la base de la seguridad de HTTPS
  • Igualmente descubrí que SSH (la 'consola', para acceder a mi servidor a hacer cualquier cosa con él) utiliza el mismo SSL. ¿Cómo podría aprovechar esto?
  • Hice un plan y una hipótesis: tenía que cambiar mi servidor. Reconfigurar sus puertos, de forma que SSH en lugar de estar abierto en el puerto 22, lo estuviera en el 443, y HTTPS en cualquier otro. ¿Bastaría esto para poder conectarme al SSH de mi servidor?
  • Lo ejecuté. Recuerdo que ese día me salí a un café internet en el metro XD , instale puTTY, me metí a mi servidor y cambié las configuraciones que necesitaba: SSH al puerto 443, HTTPS a cualquier otro (no recuerdo a cual).
  • Probé a conectarme a https://mi_servidor y obtuve una respuesta que quizá me funcionaría... Secure Connection Failed. Parecía estar funcionando, el navegador nada más no entendía los detalles de como se estaba usando SSL, porque no era HTTPS sino SSH. Si intentaba conectarme a otro puerto el mensaje era otro, de otro tipo de error. ¿Funcionaría con los bloqueos que hizo el sysadmin? ¿Y si había más bloqueos? No creía, la verdad.
  • La prueba final: regresé a la oficina luego de media hora y desde allá intenté conectarme al SSH de mi servidor vía puerto 443. ¡Funcionó! seguramente si espiaban mi tráfico sólo veían navegación web encriptada a una dirección de mi servidor, con un inocente blog casi vacío, sin saber que en realidad estaba fuera de su restricción :D
  • Usé esto entonces para navegar libremente. Creé un proxy SOCKS a mi servidor con SSH. Y luego configuré mi navegador para usar este proxy. ¡Listo! Facebook y todo el internet a mis pies...

Añadir nuevo comentario

Privado. No aparecerá en el sitio

Filtered HTML

  • Las direcciones de las páginas web y las de correo se convierten en enlaces automáticamente.
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • Etiquetas HTML permitidas: <a> <em> <strong> <cite> <blockquote> <code> <ul> <ol> <li> <dl> <dt> <dd> <pre> <code>
  • Syntax highlight code surrounded by the <pre class="brush: lang">...</pre> tags, where lang is one of the following language brushes: as3, applescript, bash, csharp, coldfusion, cpp, css, delphi, diff, erlang, groovy, jscript, java, javafx, perl, php, plain, powershell, python, ruby, sass, scala, sql, vb, xml.
  • Saltos automáticos de líneas y de párrafos.

Plain text

  • No se permiten etiquetas HTML.
  • Las direcciones de las páginas web y las de correo se convierten en enlaces automáticamente.
  • Saltos automáticos de líneas y de párrafos.
CAPTCHA
Esta pregunta es para probar si eres un visitante humano y para prevenir contra entradas automatizadas de spam.
Image CAPTCHA
Enter the characters shown in the image.

Theme by Danetsoft and Danang Probo Sayekti inspired by Maksimer