Go Back   Champions of Regnum > Español > La Taberna

La Taberna Un lugar para conversar sobre casi cualquier tema

 
 
Thread Tools Display Modes
Prev Previous Post   Next Post Next
Old 08-26-2008, 01:22 AM   #1
ArcticWolf
Duke
 
ArcticWolf's Avatar
 
Join Date: Nov 2006
Location: 0x00CAFE
Posts: 3,366
ArcticWolf is a glorious beacon of lightArcticWolf is a glorious beacon of lightArcticWolf is a glorious beacon of lightArcticWolf is a glorious beacon of lightArcticWolf is a glorious beacon of light
Default Regnum por un túnel ssh, o cómo me salteé la seguridad de un firewall blando

DISCLAIMER:
No me hago responsable del uso de ésta información, como así de los daños que pueda causar por su mala utilización. Antes de aplicar cualquiera de los procedimientos se debe saber del tema y no "lanzarse a lo desconocido".


Abstract
Se pretende explicar brevemente una técnica para saltearse un firewall que bloquee puertos específicos y que deje tan sólo algunos abiertos (fundamental). En teoría, la guía sirve para cualquier sistema operativo utilizando las herramientas apropiadas.


Requisitos
Globales
  • Regnum Online (para jugar)
  • Servidor SSH fuera de la red con firewall
Linux
  • Tsocks, proxychains o equivalente (se usa tsocks en los ejemplos)
  • Cliente SSH. Generalmente con el paquete de OpenSSH va perfecto
Windows
  • PuTTY (hace las veces de cliente OpenSSH)
  • Sockschain o similar


Intro
(saltearse esto si ya se conoce algo del tema... es la explicación aburrida)
Conectarse al Regnum desde algún sitio con internet a menudo no es tan sencillo como usar el browser, ya que hay tecnologías de captive portal, traffic shapping o bloqueo de puertos que impiden siquiera conectarse al servidor.
Si uno ya cuenta con un servidor SOCKS5 dentro de la red y quiere utilizar el juego entonces la guía puede servir, pero supongo que ya sabrán resolverlo (o lo explicaré en otro post).

Información importante sobre la máquina servidora, la que está fuera del firewall y que cuenta con una conexión a internet decente, sin bloqueos y con un buen up/down stream. Cabe destacar que debe contener una capacidad de procesamiento razonable si es que ejecuta otros servicios.
La máquina servidora va a hacer las veces de salida de túnel por el cual se va a realizar el conexionado al servidor del Regnum. Los datos van a viajar encriptados por el túnel hasta la máquina cliente, donde el ssh le deriva los paquetes al servidor de SOCKS5 y éste al juego (sí, describí el camino a la inversa ).
En otras palabras, la transferencia de datos sería así:
  1. Regnum trata de conectarse.
  2. El "sockificador" redirecciona los paquetes al servidor SOCKS5 (SSH).
  3. El cliente SSH recibe la información, la codifica y envía por un puerto determinado al Servidor de SSH.
  4. [acá está el firewall con un puerto como el 80 ó 443 abierto]
  5. [acá está Internet]
  6. Los datos llegan cifrados al servidor SSH, quien los desencripta y realiza la conexión al servidor del Regnum.
  7. Servidor del Regnum responde.
Puntos importantes:
  • Para Ra, la conexión sería totalmente transparente y no se daría cuenta que hay un túnel antes del cliente.
  • La conexión está cifrada desde el cliente hasta el server SSH. Si uno se conecta en una red wifi abierta o con WEP todavía los datos serían seguros.
  • No sólo se puede hacer con el Regnum, sino que con miles de aplicaciones.
  • Realmente no sube mucho la latencia si es que se tiene una buena conexión y hay pocos saltos.
  • El OS del servidor SSH es trivial.


Desarrollo:


Lado del Servidor

Primero vamos a configurar la máquina servidora. Tiene que ejecutar el servidor de OpenSSH en un puerto que el firewall tenga abierto. Para eso podemos hacer un nmap a nuestra computadora detrás del cortafuegos. Es conveniente usar puertos altos (>1024) porque no requieren privilegios de administrador.

Para setear el OpenSSH en otro puerto sólo tienen que iniciar el demonio sshd con -p y el puerto en cuestión. Es conveniente matar al demonio si es que ya está en ejecución.



Lado del Cliente

Ya que los comandos son útiles para otros programas aparte del Regnum voy a hacerlo por separado.

Linux
Primero instalamos un programa como tsocks o proxychains. Yo prefiero tsocks porque es, a mi modo de ver, el más fácil para configurar y menos problemático en el momento de la compilación.

Ejemplos a continuación con tsocks.

Paso 1: crear el .tsocks.conf

Abrir el editor de texto preferido (vi, emacs (aunque si usás emacs no necesitás leer esto, ya lo sabés) nano, gedit) y crear un archivo llamado ".tsocks.conf" en el home de tu usuario. El archivo debe contener lo siguiente:
Code:
server = 127.0.0.1
server_type = 5
server_port = 1234
NOTA: el puerto "1234" es el mismo en el que debe escuchar el cliente ssh, y no es el del servidor ssh.


Paso 2: crear un script para routing (supertsocks)

Este script permite invocar a tsocks con un archivo de configuración predeterminado por el usuario (con lo que nos salteamos modificar el que está en el /etc/).
Code:
#!/bin/sh

TSOCKS_CONF_FILE=$HOME/.tsocks.conf
export TSOCKS_CONF_FILE
exec tsocks "$@"
Es necesario que tenga permisos de ejecución.
Code:
chmod +x supertsocks
¿Por qué no conectar directamente acá al servidor SSH? Porque cada vez que se ejecute el script se estaría llamando a una nueva instancia, y vemos que eso no es necesario (ni posible).


Paso 3: armando un script de conexión al servidor

Este es el paso más importante. Aquí se realiza la conexión y se levanta el túnel, por lo que es en el lado que más puede fallar (si es que el firewall analiza paquetes y filtra el ssh). Previo a continuar, pueden leer este post sobre túneles ssh de este mismo foro para más información.
Deberíamos utilizar un comando como el siguiente:
Code:
ssh -CND 1234 usuario@servidor.ssh.remoto -p puerto
  1. C activa la compresión
  2. N usa el túnel, pero no envía ningún comando
  3. D 1234 es el puerto del servidor SOCKS5 que armamos, y el mismo que el del .tsocks.conf
  4. p puerto es el puerto que está abierto a través del firewall, y el mismo que pusimos en el sshd.
Otra vez, tiene que tener permisos de ejecución.


Paso 4: ejecutar todo!

Primero se ejecuta la conexión al servidor ssh.
Luego se navega hasta el directorio del regnum (usualmente es /home/usuario/regnum).
Se ejecuta "$HOME/supertsocks ./rolauncher".

A disfrutar del juego en donde no deberían

Windows
Para el servidor

Es preferible utilizar el OpenSSH en un Sistema Operativo de Verdad, pero todavía pueden instalar OpenSSH. BULMA tiene una muy buena guía en español.


Para el Cliente

Paso 1: conseguir las herramientas

Putty: Public Text Terminal, de aquí. No necesita instalación, y está disponible para un sinnúmero de plataformas.
Freecap, de aquí.

Paso 2: configuración de freecap

Ir a File, luego a Settings y en donde dice "Default Proxy" escriben 127.0.0.1 y de puerto el que se quiera (ej: 1234). Por último, click en aplicar.
Para agregar un programa a la lista de "proxificado", se va a File, luego a new application y se llena con lo siguiente:
Profile name: Regnum
Program path: la ruta donde esté el regnum. Generalmente es C:\Archivos de Programa\NGD Studios\Regnum Online\rolauncher.exe
Click en aplicar.


Paso 3: configuración de PuTTY

Abrir el PuTTY, ir a SSH, luego Tunnels y marcar las siguientes opciones:
Seleccionar Dynamic, Auto y escribir en Source Port el puerto proxy (el 1234 de la guía en linux).
Hacer click en "add" y dirigirse a Sessions en el panel de la izquierda. Allí se debe escribir la dirección del servidor ssh.

Paso 4: correr el juego.

Una vez que se conectan al servidor SSH a través de putty, SIN CERRARLO, hacen doble click en el ícono del programa (en nuestro caso Regnum) del Freecap (el otro programa).


Bibliografía

No la usé toda, hay algunas que busqué para que se entienda mejor.

http://onlyubuntu.blogspot.com/2008/...x-to-surf.html
https://help.ubuntu.com/6.06/ubuntu/...sh-server.html
http://www.securityfocus.com/infocus/1816
http://www.freecap.ru/eng/?p=faq
__________________
I don't have a solution, but I admire the problem.

Last edited by ArcticWolf; 08-26-2008 at 03:20 AM.
ArcticWolf no ha iniciado sesión   Reply With Quote
 

Tags
linux howto


Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump


All times are GMT. The time now is 11:46 AM.


Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2024, vBulletin Solutions, Inc.
NGD Studios 2002-2024 © All rights reserved