[LUG.ro] Rediccionar SSH según dominio

Maximiliano Sampirisi - Austral OMI SA msampirisi en australomi.com.ar
Mar Ago 16 16:31:26 ART 2011


El 16/08/11 00:47, Guido escribió:
> El 15 de agosto de 2011 22:48, Sebastian Dominguez
> <sebaminguez en gmail.com>escribió:
>
>> El 15/08/11 12:39, Guido escribió:
>>
>>> Hola a todos,
>>>
>>> Les escribo con la siguiente duda:
>>>
>>> Situación:
>>> * Máquina física con una IP pública
>>> * Máquina Virtual alice. Entrada en dns alice.com apuntando a la IP
>>> pública
>>> * Máquina Virtual bob. Entrada en dns bob.com apuntando a la IP pública
>>>
>>> Necesidad:
>>>
>>> Hacer ssh alice.com y llegar directo a alice
>>> Hacer ssh bob.com y llegar directo a bob
>>>
>>> Posible solución:
>>>
>>> Forward de puerto 2222 de la pública a 22 de alice
>>> Forward de puerto 2223 de la pública a 22 de bob
>>>
>>> Esta solución es clásica y la puedo usar pero no es lo que busco.
>>>
>>>
>>> Lo que busco:
>>>
>>> En la pc física tengo un apache con virtual hosts para alice.com y
>>> bob.comapuntando a los puertos 80 respectivamente, lo que busco
>>>
>>> es algo igual pero en lugar de http, ssh.
>>>
>>> Info:
>>> Busqué información para saber si con squid podría hacerlo, aunque debería
>>> hacer que escuche en internet y no me convence, además de que no veo como
>>> prodría ayudarme realmente.
>>> Con iptables intenté algunos comandos pero no logré mi cometido.
>>>
>>>
>>> Alguien hizo algo similiar?
>>> Alguna herramienta que puedan recomendarme?
>>> Alguna Idea?
>>>
>>> Nota: Todo esto funcionando con Debian
>>>
>>> Muchas Gracias de ante mano, saludos
>>>
>>>   Hasta donde se, tenes solo dos opciones.
>> - Un proxy reverso SSH (que no conozco exista)
>>
> No vi nada sobre un proxy reverso SSH, aunque te aseguro busqu'e bastante
> jeje
>
>
>> - Usar layer 7 como mencionas por ahí.
>>
>> El problema con layer 7 es que el filtro actual solo reconoce que la
>> conexión es del tipo SSH http://l7-filter.sourceforge.**net/protocols<http://l7-filter.sourceforge.net/protocols>. Si bien con layer 7 podes ver los campos, el filtro actual no los tiene en
>> cuenta.
>>
> Sabes, estuve viendo como hacerlo, layer7 fue uno de mis primeros intentos
> de soluci'on, pero por ahi comentaron algo que no vi en un principio, pero
> muy cierto, el dato que me serviria es el dominio que se resolvi'o para
> llegar a la pc... cosa que no tengo desde un principio, ya que al momento de
> iniciar la conexi'on ssh el cliente ya resolvi'o la direcci'on ip y le
> apunta directo...
>
> Resumiendo, haga lo que haga, todo indica que en el server no voy a ver mas
> que una conexi'on al puerto 22 con destino mi IP p'ublica y nunca con
> destino el nombre de dominio no resuelto...
>
>
>> Para hacer lo que necesitas tendríamos que escribir un nuevo patrón que
>> identifique tus dominios o, mejor aún, que permita colocar el dominio como
>> parámetro. http://l7-filter.sourceforge.**net/Pattern-HOWTO<http://l7-filter.sourceforge.net/Pattern-HOWTO>
>>
> Suena a propuesta, no? jejeje si se te ocurre que esto puede ser una
> soluci'on, o puede ser un desarrollo interesante podemos hacer algo...
>
> Hice algunos intentos con pcapy para intentan forzar una redirecci'on dados
> ciertos datos del paquete, pero nada fruct'ifero... no fue el destino no
> resuelto... mi destino es la ip p'ublica siempre
>
>
>> Un abrazo!
>>
> Otro Seba...
>
>
> PD: Perdon por los tildes mal puestos, tengo un teclado en ingl'es en este
> momento
>
>>
>> --
>> Sebastian A. Dominguez
>> Imagen de Seba
>> http://odiolasllaves.com.ar
>>
>> ______________________________**_________________
>> Lugro mailing list
>> Lugro en lugro.org.ar
>> http://lugro.org.ar/mailman/**listinfo/lugro<http://lugro.org.ar/mailman/listinfo/lugro>
>>
>
>

Despues de leer todo lo que te escribieron y escribiste, se me ocurren 
dos soluciones para el manejo del ssh de los servidores internos de una 
forma bastante transparente :
1. Instalas el webadmin en cada servidor interno, y en el servidor 
externo armas las redirecciones pertinentes. con la extension de ssh 
client, haces un ssh internamente desde la pagina web, con lo que, podes 
hacer casi todo lo que haria con el ssh.
2. Habilitar el servidor externo para recibir conexiones externas y 
luego, en base al usuario que se conecto, disparar un script que fuerce 
una conexion ssh internamente.
     por ejemplo, se crea en el servidor externo el usuario 
"administrador_bob.com", luego, dentro del mismo mismo servidor, en el 
script de inicio del shell que ese usuario tenga creado, se cargan dos 
comandos "ssh administrador en ip_interna_de_bob.com" y luego "exit".
     al momento de conectarte al servidor externo, se dispara la 
conexion interna, y se entra al mismo.
     cuando esa sesion de ssh es finalizada, se finaliza la que se tiene 
en el servidor externo.
     No es un deschave de seguridad, pero si esta bien configurado el 
servidor externo, es muy dificil que se pueda hacer algo que no sea 
acceder al servidor interno.

Una muy buena solución seria poder analizar el header en la conexión 
entre el cliente y el usuario, y reescribir el sshd para que funcione en 
dos modos : proxy y servidor, pero, eso creo que seria mucho mas de lo 
que estas dispuesto a invertir.

Saludos

Maximiliano


Más información sobre la lista de distribución Lugro