Como Atravesar Proxys y Firewalls Con VNC

8

Click here to load reader

Transcript of Como Atravesar Proxys y Firewalls Con VNC

Page 1: Como Atravesar Proxys y Firewalls Con VNC

Hace unos 10 años que descubrí las bondades del control remoto (el ‘no ir allí’) en modo gráfico. Desde entonces he probado muchas variedades distintas de software para manejar escritorios remotos aunque VNC ha sido siempre mi favorito. VNC es un software y protocolo muy utilizado para establecer conexiones por control remoto. Quizás su éxito se deba a que fue uno de los primeros, es gratuíto y porque está soportado en múltiples plataformas. En este artículo os contaré distintos escenarios de conexión con VNC, desde la conexión más sencilla y simple a cómo saltarse proxys, routers y firewalls sin que lo sepa el administrador de la red.

Aquí no se revela ninguna forma nueva ni secreta de conectarse vía VNC, pero sí pretende ser una simple guía para aprovechar al máximo las posibilidades del control remoto en distintos escenarios de red. Trataré de mejorarlo con el tiempo y vuestros comentarios.

VNC en esenciaPara los que os estrenais con VNC os diré que:

- VNC consiste en un par de programas: uno que se ejecuta en el servidor (VNC server) y otro que arrancamos en el cliente (VNC Viewer) para visualizar una copia exacta y en tiempo real del escritorio del servidor. Desde el cliente podremos simplemente visualizar o interactuar con él ratón y teclado del servidor.

- VNC Está soportado en muchos sistemas operativos. Yo he experimentado entre PCs con Windows (todas las versiones incluso con las de 16bits), Mac OS X, GNU/Linux, Solaris OS; y existen también versiones de cliente para Palm OS y Pocket PC

- El programa VNC servidor puede ejecutarse como servicio del sistema o como aplicación de usuario.

- Si os preocupa la seguridad, os adelanto que la comunicación NO está cifrada. Además el algoritmo de cifrado de la contraseña es reversible y se esta puede revelar fácilmente (buscad el software Cain). Pero es posible tunelizar la comunicación por otros medios y conseguir una comunicación segura.

- La fluidez con la que veremos el escritorio remoto depende principalmente del ancho de banda de la comunicación, así que lo veremos perfectamente en una red local de 100mbps y a saltitos con un módem de 56kbps.

- Al establecer la conexión desde el cliente podreis especificar opciones como el host al que os conectareis, el número de colores, modo sólo lectura, escalado o el display o puerto alternativo.

- Se puede instalar un controlador de vídeo específico para VNC que optimiza mucho el framerate con el que se transmite la imagen del servidor remoto y disminuye el consumo de CPU.

- Existen versiones derivadas del proyecto original que optimizan y extienden la funcionalidad de escritorio remoto con opciones como cifrado, autenticación con directorio activo, transferencia de ficheros, difusión simultánea a varios clientes…

Page 2: Como Atravesar Proxys y Firewalls Con VNC

Conexiones con VNCTrataré de resumir aquí mi experiencia con VNC. Aunque conceptualmente, la filosofías de conexión que podemos utilizar entre un cliente y un servidor VNC podrían ser aplicadas a otros protocolos y puertos por lo que ya me contareis si teneis otras formas interesantes de conectaros y tomar el control remoto de una máquina.

* VNC Conexión directa cliente a servidorEl cliente inicia la comunicación y se conecta al servidor. Es la forma más sencilla y directa. El procedimiento consiste en:

1. En el servidor arrancar el VNC server como aplicación o como servicio. Tened en cuenta que este escuchará por el puerto 5900 TCP de todas las direcciones IP de vuestro ’servidor’.2. En el cliente arrancar el VNC Viewer e indicar a qué máquina os quereis conectar (nombre de host o dirección IP)3. Introducir la contraseña.4. El cliente toma el control: CONECTADO

PCc (Vnc Client) – LAN – PCs (Vnc Server)————————————–><————————————–

* VNC Conexión directa cliente a servidor (puerto alternativo)El cliente inicia la comunicación y se conecta al servidor por un puerto alternativo. Puede ocurrir que no podais utilizar el puerto 5900 o que querais tener un servidor VNC de reserva por si el principal se cuelga. Yo utilizo esta opción si voy a actualizar o reinstalar el VNC en remoto de una máquina a la que no puedo llegar físicamente. Si la actualización falla puedo entrar por el servidor VNC alternativo y recuperar el control.

Los pasos:1. En el servidor arrancar el VNC server como aplicación o como servicio en el display 1 (o 2, 3…) Ahora este escuchará por el puerto 5901 TCP (o 5902, 5903…) de todas las direcciones IP de vuestro ’servidor’.2. En el cliente arrancar el VNC Viewer e indicar a qué máquina os quereis conectar (nombre de host o dirección IP) y el display 1 (o 2, 3…)3. Introducir la contraseña.4. El cliente toma el control: CONECTADO

PCc (Vnc Client) – LAN – PCs (Vnc Server)————————————–><————————————–

* VNC Conexión inversa servidor a clienteEn este caso es el servidor el que llama al cliente para que este tome control. En una red local, la única razón por la que utilizais este sistema es porque no quereis revelar la contraseña del servidor VNC, estais sentados frente a él y queréis que alguien observer o tome control de vuestro escritorio.

Existe una aplicación mucho más interesante de este método que os cuento en un caso posterior.

Page 3: Como Atravesar Proxys y Firewalls Con VNC

La secuencia es:1. En el servidor arrancar el VNC server como aplicación o como servicio (TCP 5900)2. En el cliente arrancar el VNC Viewer en modo listen (TCP 5500)3. En el servidor añadimos el cliente indicando su nombre de host o dirección IP4. El cliente toma el control: CONECTADO

PCc (Vnc client Listen Mode) – LAN – PCs (Vnc Server)<—————————————-—————————————->

* VNC conexión directa a través de firewall personal.Hoy [todos] tenemos un firewall personal que nos protege de intrusiones y ataques en nuestro propio PC. Además nos permite elegir los programas que intentan establecer una conexión con el exterior.

Hay que configurar los firewalls así:

1. En el firewall personal del servidor permitir conexiones entrantes/salientes por el puerto 5900 TCP.2. En el firewall personal del cliente permitir conexiones salientes por el puerto 5900 TCP.

Si utilizais algún otro display recordad que serían 5901 TCP, 5902 TCP…

Luego seguid el procedimiento normal de conexión desde el cliente.

PC (Vnc Client) – PFW – LAN – PFW – PC (Vnc Server)————————————–><————————————–

* VNC conexión inversa a través de firewall personal.De forma similar al caso anterior, hay que configurar los firewalls así:

1. En el firewall personal del servidor permitir conexiones salientes por el puerto 5500 TCP.2. En el firewall personal del cliente permitir conexiones entrantes/salientes por el puerto 5500 TCP.

Luego seguid el procedimiento básico de conexión inversa desde el servidor

PC (Vnc Client listen mode) – PFW – LAN – PFW – PC (Vnc Server)<————————————–————————————–>

Hasta aquí lo básico, pero ahora viene lo divertido. Nos interesa realizar conexiones entre equipos que pertenecen a redes distintas, entre firewalls personales o corporativos, routers y proxis. A partir de ahora, es importante que tengais presente la arquitectura de las redes y equipos implicados en la comunicación. Si sois los administradores no habrá

Page 4: Como Atravesar Proxys y Firewalls Con VNC

problemas porque podreis configurar todas las partes, pero si no, tendreis que imaginar cómo funciona la red para atravesar las barreras sin ser advertidos.

Atravesar el router ADSL para conectar con tu casa/oficina desde el exteriorLos que utilizais programas P2P (Peer To Peer) ya conocereis la redirección de puertos, NAT o NAPT (Network Address Port Translation). Se trata de una técnica por la que una máquina acepta conexiones entrantes por un puerto y las redirige a otra de forma transparente. Actualmente es muy frecuente encontrarlo en los routers ADSL y firewalls corporativos.

La configuración es la que sigue:1. En el router/firewall de la red del servidor configurar una regla NAT por la que las peticiones por el puerto 5900 TCP por la IP pública se redireccionen al puerto 5900 TCP de la IP privada del equipo que ejecuta VNC server.(…) seguid los pasos de la conexión directa cliente a servidor2. El router/firewall de la red del cliente debe permitir conexiones salientes por el puerto 5900 TCP

Luego seguid el procedimiento normal de conexión desde el cliente.

PC (Vnc Client) – LAN A – Router/Fw – WAN (Internet) – (IP pública) – Router/Fw (IP privada) – LAN B (NAPT) – PC (Vnc Server)——————————————————————————————><——————————————————————————————

Atravesar un firewall corporativo mal configuradoMuchos firewalls corporativos que me he encontrado permiten conexiones por cualquier puerto desde máquinas internas hacia el exterior. Si quereis enseñarle el escritorio a alguien que está en una red externa, o quereis tomar control de un equipo que está en la red local aparentemente inaccesible desde el exterior, necesitais a alguien (o tú mismo) que inicie una conexión inversa hacia el exterior.

Las condiciones:

1. Configurar una regla NAPT en el router/firewall de la red del cliente VNC para redireccionar las solicitudes entrantes por el puerto 5500 TCP de la IP pública al mismo puerto de la IP privada del cliente VNC2. El router/firewall de la red del servidor debe permitir conexiones salientes por el puerto 5500 TCP

Luego seguid el procedimiento básico de conexión inversa desde el servidor

PC (Vnc Client listen mode) – LAN A – Router/Fw (NAPT) – WAN (Internet) – Router/Fw – LAN B – PC (Vnc Server)<——————————————————————————————

Conectar VNC a través de un proxyEste caso es el que me ha llevado a escribir este artículo sobre conexiones VNC, y el escenario que más me ha dado que pensar. Cuándo los clientes de una red corporativa

Page 5: Como Atravesar Proxys y Firewalls Con VNC

sólo pueden salir a Internet a través de un proxy, típico puerto 8080. Aquí la solución consiste en utilizar una conexión inversa a través de un túnel HTTP

El esquema es el siguiente:

PC (VncClient listen mode + http tunnel) – LAN – Router/Fw (NAPT) – WAN (Internet) – Proxy – LAN – PC (http tunnel + VncServer)<——————————————————————————————

——————————————————————-[/code]

Este enlace es uno de los más complejos y lo pondré en funcionamiento en breve (ya os contaré).

Lo que dejaré a vuestra imaginación es la resolución del problema a cómo automatizar (=troyanizar) una conexión inversa via VNC, de forma que podais iniciar una comunicación desde el servidor hacia el cliente sin estar en el servidor.

Por el momento eso es todo. Espero que os haya gustado.

VNC para distintos sistemas operativosOs propongo opciones de software VNC libre y gratuíto

Windows- RealVNC (servidor y cliente) El software y protocolo originales de AT&T- UltraVNC (servidor y cliente) Extiende el protocolo VNC con transferencia de ficheros integrada, chat además la versión de pago incluye encriptación- TightVNC (servidor y cliente) Versión de VNC optimizada para conexiones 56Kbps

Mac OS- Vine Server (OSXvnc 2.0) Servidor VNC- Chicken of the VNC Cliente VNC

GNU/Linux- RealVNC (servidor y cliente) El software y protocolo originales de AT&T- TightVNC Cliente VNC

PalmOS- PalmVNC Cliente VNC

Pocket PC- PocketPC VNCViewer Client Cliente VNC