Bienvenido

Este Blog es tú Blog. No es nada sin tú participación, ideas y sugerencias.

viernes, 24 de octubre de 2008

Conexión remota

Me han pedido que agrupe los artículos que escribimos hace más de un año explicando como hacer conexiones seguras.
Al parecer a algunos os ha parecido instructivo, pero os incomodaba la "versión" por capítulos, y nada más sencillo que copiarse uno mismo así que ahí va:



Conexión Remota (I) (Hardware)

Intro:

En principio lo que queremos como objetivo, es poder manejar nuestro ordenador desde cualquier sitio del mundo. Obviamente usando Internet.

Para demostrarlo voy a manejar mi ordenador viejo con su Kubuntu desde otro sitio con un Windows. Es decir voy a mezclar sistemas y vamos a usar varias tecnicas simultaneas.

Como quiero que todo el mundo sepa como funciona esto, en la medida que sepa explicarme, empezaré de cero. Para ello vamos a explicar como se conecta un ordenador.

-------------------------------------------

Comunicaciones:

En un ordenador podemos simplificar las comunicaciones a dos ámbitos Hardware y Software.

Hardware:

Damos por hecho que algo sabéis, o que por lo menos esta bien configurado, en caso contrario no estarías viendo este Blog.

El ordenador tiene varias formas de conectarse a Internet:

-RJ 45. es el conector de aspecto similar a la clavija del teléfono, pero un poco más ancha. Siempre que podáis elegir usar esta opción, sin lugar a dudas la mejor, y la que doy por hecho usas.

-USB, en realidad es una conexión serie directa al moden externo, ya veremos diferencias de estos.

-RS232. conector tipo D, por su forma, los equipos más recientes ya no lo traen, sobre todo los portátiles. su velocidad de conexión es menor que lo que se soporta en un ADSL. Solo se usan en Modens de línea convencional, no ADSL.

-Wifi. Solo recomendable para equipos portátiles o sitios con dificultad al cablear.

-Bluetooth. Apliquese todo lo del Wifi, pero en malo, malo.

-Fibra. Si tienes fibra y la usas no necesitas leer esto, eres un fenómeno y tienes un server.


El Moden:

-Moden router. puede ser Wifi o tener RJ45, en este último caso, también puede ir conectado a un Wifi aparte.
Sin lugar a dudas la mejor opción, permanece permanentemente conectado y permite conexión a varios equipos de forma simultanea y entre ellos directamente.
Suele ser ADSL ó Cable .

-USB, por regla general dependen del equipo, si este se apaga ellos se desconectan. No permiten mas que un PC .

Existen otros tipos: satélite, fibras, pares ADSL directos, redes propias, pero ya basta asi.


Conexión Remota (II) (Software)


Comunicaciones:

Ya sabemos como se conecta físicamente nuestro ordenador, asumamos que nuestro equipo se conecta a Internet. Debemos saber como lo hace:

Protocolo:

Es determinado por el software del sistema o red a la que nos conectamos, y se rige por normativas especificas.

No nos importa mucho como nos conectamos, pero en realidad debemos de cumplir unos protocolos para poderlo hacer. Y ¿Para qué?.
Pondré un ejemplo:

Voy conduciendo y me hace señas para detener el vehículo un señor vestido de verde.
Caso 1:
Haciendo un saludo militar y dandome los buenos días, me pide la documentación.
Un guardia civil
Caso 2:
Me dice: "Hola, ¿que tal?. Parece que va ha llover.
El jardinero.

Y lo sé de forma inmediata, pues en el primer caso a cumplido perfectamente con el protocolo.
En el ámbito ordenadil, si te quieres conectar has de cumplir unos requisitos, muy estrictos y concisos para que todo el mundo te entienda. Estos requisitos son independientes del sistema operativo.


Software:


Si nuestro sistema se va ha encargar de que cumplamos los protocolos, alguien tendrá que ocuparse de que es lo que queremos hacer, los programas. En nuestro caso necesitaremos varios como vamos a ir viendo.
En todo caso saber que cumplir el protocolo no significa nada, ahora es cuando debemos transmitir y cada servicio lo manejaremos de una forma distinta.







Conexión Remota (III) (IP)

IP:

Espero que a este punto todo este comprendido. Ahora veamos como se ordenan las conexiones.

Todo el mundo se interconecta y manda paquetes de datos, con la esperanza de que lleguen a su destinatario. Para ello tenemos que poner la dirección tanto de a quien se envía, como del remitente. Exacto, igual que si fuera una carta.
Esta dirección es el IP y consiste en una serie de 4 números del 0 al 255.
Ejemplo IP: 89.129.163.179

Este sistema funciona bastante bien así que se usa para más cosas. Tendremos una IP de cara al exterior, que es nuestra dirección de portal. Y otra IP dentro de nuestra red, que es la que detalla cual es nuestro equipo dentro de nuestro entorno. Esta sería la IP del equipo.

Este último caso, no se aplica si usamos modens serie, USB, u otro medio que no soporte conexión múltiple. Para que vamos a marcar que equipo es entre miles si solo es uno.

Pero ahora lo complicamos un poquito. Nuestra dirección no es fija, salvo que paguemos un plus, no nos guardan el buzón. Así que cada vez que nos conectamos nos dan una dirección distinta, IP dinámica.

Veamos con un ejemplo.
Soy el domador de pulgas del circo PACHIN PACHIN.
Si me quieres escribir:
Domador de pulgas (servicio o programa)
Carabana de las pulgas (IP del equipo)
dirección del circo (IP publica)

Pero claro el circo cambia de ciudad cada 15 días (IP Pública Dinámica)

En este enlace podéis ver la IP publica y como ver la privada para Win.

¿Cual es mi IP?


Conexión Remota (IV) (DNS y puertas)


DNS:

Ya conocemos nuestras IPs, es decir ya sabemos quienes somos en Internet y en Intranet.
Pero en el ejemplo que pusimos del circo, me sigue siendo muy difícil enviar la carta. Cada 15 días cambiaba de ciudad, es decir me tendrán que decir en que ciudad están de forma regular.

Bueno, eso lo hacen los servidores de DNS. A nuestro circo le pondremos una etiqueta "PACHIN PACHIN" y con esa etiqueta correos ya sabe en que ciudad se encuentra el circo.

En realidad es el circo el que cada vez que se mueve, si lo hace, se lo dice a correos.

Aún en el caso de que nunca se mueva siempre es más fácil recordar la etiqueta, que no las cuatro cifras.

En nuestro ejemplo:

Domador de pulgas (servicio o programa)
Caravana de las pulgas (IP del equipo)
circo PACHIN PACHIN (DNS)

Estas son las direcciones de Internet a las que estamos acostumbrados.

http://jmpascualsite.blogspot.com/ no es más que una forma de escribir la IP de este Blog.

Y esta te sonara mucho:

Http:// 72.14.207.191


En Win, bajando a la consola Dos, tienes dos instrucciones muy majas:

Tracert, que te indicará por donde se desarrolla la conexión (tracert nombre dominio)

nslookup, que te marcara las direcciones asignadas a una DNS (nslookup nombre dominio)


Puertas:

Pero ahora lo vamos a hacer aún más potente.
Mi caravana tiene: una puerta principal, una puerta trasera, una gatera y una ventana.

Las visitas quiero que entren por la puerta principal, los amigos por la trasera, el gato (adivinalo) y que mi amante salga por la ventana.

Pues un ordenador exige que le digas por donde tiene que entrar y se lo dices dándole el número de puerta (Gate).
Y el ordenador más modesto tiene miles de puertas, no como la caravana. Y además cada servicio tiene unos preasignados.


Conexión Remota (V) (seguridad SSH)

Ya sabemos como funciona todo y como lo vamos a hacer.

Encriptación:

Aún tenemos un problema.
Todo lo que se manda por Internet está en texto plano. Esto significa que si mandas una clave o un número de cuenta cualquiera que este escuchando lo puede ver.
Y sí siempre puedes tener a alguien escuchando, se les llama olfateadores.

En el caso de la carta que mandábamos al Domador de Pulgas, es como si el sobre no estuviese cerrado. Así el cartero podría leerlo.

La solución encriptarlo y lo hacemos con un programa SSH que se encarga de codificarlo. Para ello usa dos claves, una pública y otra privada. Es decir se encripta con una clave y solo se puede decodificar si tienes la otra.

Ejemplo real de clave publica SSH:

AAAAB3NzaC1kc3MAAACBAIF/hzwjwPsRNxgfuqPBTqw0SaCfcxQDT5Hpmrw
qAcBvle+4lRC6hIHoBZFoxPKrEZZY0WmTpO0PzxeYNkzRo6AYPUzP9dKbdRm
59lMwZTKukSs/bVQkICSETEIm68tD8XcUhZ9GQVq8BqIAHueAbnjZaz6ESJ3G3
AJX/93Cv2DzAAAAFQCMRUVV5hly61ccC85tqmq8ap7JKQAAAIA1Y9KLm+TKZ
jtGl9kPVOiN63hKmb1J55N6tH/z5iCcXnD/zQl0w/CnMmqXjUg5L8/6YtNZ4Eo+9
gyO4tCt5U014FEeHfgDpVAraxjTwF9f5La5TfB9Ja7ngS21EzNa6XkelxboTYgBu
wUzY+98xY6H0X6jZm/KMx/b6zGU5/HNNwAAAIBp+dlpstagxf7luhuvNFK2TF2
l3LlF5KCCg7k73039hOhwhYPOgyr6E1/I0NFjb2v0YftizMcutk5mAbV4snJ22YIe3
qpxeEDKw/Q5SMWRc9txBSbkKrZs4KFX8rIHdHAfuxZ5bbltl8/rmsw/w4dziB3flp

Supongo que el tamaño os hace una idea de la complejidad de la encriptación.

Tuneles:

Ya podemos comunicarnos sin que nadie sepa lo que hacemos, pues para hacer aún más eficaz la comunicación vamos a realizar un túnel.
Volvamos al Circo, sería ideal si de alguna forma me hiciera amigo del mago y me diera una cabina de teletransporte al estilo Star Trek. De esta forma el cartero se mete en la cabina y aparece mágicamente en medio del circo.

Pues podemos hacerlo, para ello al programa SSH le vamos a decir que determinada "puerta" de mi equipo, está en el equipo receptor y además le podemos cambiar la puerta en el otro equipo, incluso que este solo haga de puente, para conectar con un tercero de la red lejana.


En el ejemplo del circo todo lo que yo tiro por la ventana le aparece al Domador de Pulgas por su propia ventana. Gracias al mago (SSH).

Lamentablemente la magia no existe, tiene truco.
En realidad en mi ventana tengo a los de prosegur que agarran mi mensaje y lo meten al camión blindado. Llaman al Circo que les dice donde están ese día y sin parar ni pá mear, se lo entregan al Domador, avisándole dando golpecitos en su ventana.
Cuando este abre la ventana le piden el santo y seña, que por supuesto le he dado yo previamente. Aún le queda desencriptarlo.




Por ejemplo esta página usa el protocolo HTTP que está en el puerto 80.




Conexión Remota (VI) (NO-IP)

Lo primero que vamos ha hacer, es conseguir saber como llamar a nuestro ordenador siempre. Para una determinada conexión nos puede valer mirando nuestra IP, pero ya hemos visto que cambiara con cada conexión.

Existe un servicio, varios en realidad, pero solo veremos este, No-IP.

No-IP.com


Este servicio nos va ha facilitar, previo registro gratuito, una dirección de Internet, a elegir entre varias opciones. De tal manera que apartir de ese momento se pueda localizar a nuestro ordenador con una dirección del orden: mynombre.myservicio.com


En primer lugar nos registramos, nos piden muchos datos, en esta página:
NO-IP sign-up

y cuando todo este en regla nos bajamos el programa para nuestro sistema:
Para Linux seguro que lo tienes en tus repositorios, si es así descargarlo de ellos.
NO-IP download

El proceso de dada de alta no tiene por que ser inmediato, no lo será, así que a lo mejor tienes que esperar para saber si funciona.

Instala el programa en tu equipo y darle todos los datos de la cuenta, y cuando todo ande, entra en la página de NO-IP y logeate. Si todo va bien la IP que ellos dicen que tienes debe ser la que realmente tienes. Para comprobar que funciona prueba a desconectar el moden y resetear tu ordenador varias veces. Debe de cambiar automáticamente.
Si el programa no se pone en marcha solo, acuerdate de meterlo en los programas de inicio.

El programa lo que hace es conectarse al servicio NO-IP y decirle cual es tu IP, con lo cual ellos cambian las redirecciones. Si este servicio no lo usas al menos una vez al mes (creo), te mandaran un aviso y posteriormente borraran tu cuenta.

Conexion remota (VII) (UltraVNC)

En primer lugar vamos a crear una red VNC ( Virtual Network Computing).
Dado que está muy bien explicado que es el VNC mirar este enlace a la Wikipedia:
VNC (Wikipedia)

Para que funcione el sistema hemos de poner tanto un servidor como un cliente.
El servidor es el ordenador al que queremos acceder, en nuestro ejemplo un Linux.
Como Linux ya está preparado para ello, en KDE es Krfb, se activa y ya está. En Kubuntu está en Internet, Krfb (escritorio compartido).
Se puede hacer por invitaciones o permanente.
El cliente es el Krdc (al lado del otro)

Si quisieramos hacerlo en Win, el sistema que tiene no es estándar con lo cual debemos de usar un programa server VNC. Como Windows tampoco suministra ningún programa cliente, nos vamos a descargar el programa UltraVNC:

UltraVNC
UltraVNC Download

En nuestro ejemplo solo encestaríamos el Viewer, que es el cliente.
Os hago notar que el programa cliente es un ejecutable, de hecho yo lo llevo en una llave USB.
Si queréis que el servidor sea un Windows este deberá ejecutar el server.

Con el programa (viewer) ya en ejecución, nos pedirá una serie de parámetros. Lo más importante, el nombre del VNC server, que es la dirección del ordenador al cual queremos acceder. La dirección que conseguimos en nuestra cuenta No-IP.

Si tenéis un firewall abrir los puertos (por defecto 5900 , 5800 la versión Java).
quedara así: Dirección No-IP::5900 (no es necesario el puerto si no lo cambiáis).

Este programa también nos permite usar un fichero de encriptamiento para sus transmisiones, con lo cual podéis conseguir conexiones seguras solo con este sistema, pero la encriptación no es Open, lo que limita su uso.

En la página de UltraVNC tenéis información en español y detallada en Ingles. El programa funciona muy bien.

Si usáis router acordaros de redireccionar el puerto al equipo que tenga el server.
Lo sé, este paso es toda una aventura, pero el resultado es muy satisfactorio.

Una advertencia si queréis conectaros a un equipo de vuestra propia red. aún cuando sea el que dé servicio Internet, no lo direccionéis con No-IP. El router no conseguirá hablar con el DNS externo y no localizará el equipo.
Para conexiones locales usar la IP local.

Conexion Remota (VIII Putty-SSH)

En realidad cuando llegueis aquí y si todo fue de forma satisfactoria, ya podeis manejar el equipo remotamente con el VNC.

En este paso vamos a subir el nivel de seguridad y primero consigamos el SSH.

En GNU/Linux lo tenemos en los repositorios y cargaremos el (open ssh-server), tambien disponemos del cliente. Para más información:
http://www.openssh.com/

Nos creara un grupo del sistema el ssh, en el cual debemos de introducir al usuario que queramos tenga acceso.
Debemos de editar el fichero de configuración del ssh ( /etc/ssh/sshd_config)
Tiene muchas opciones, pero como mínimo debemos especificarle el puerto en el que va ha permanecer escuchando.

# Wath ports
Port (nº del puerto)

Debe de quedar muy claro que este es el puerto de SSH y se puede usar para cualquier tipo de comunicación, todo lo que se reciba por aquí, lo redirigirá el equipo a donde le digamos desde el cliente. Generalmente el Local Host, pero puede ser cualquier cosa accesible desde este equipo.
Es decir solo necesitamos un equipo en toda una red, y dentro de este equipo podríamos hacerlo todo con un solo tunel SSH.

Este puerto ha de estar abierto en el router y dirigido al equipo servidor.

Como cliente usaremos este otro programa:
PuTTY

No obstante os recomiendo la versión ya conocida de PortableApps:
PuTTY Portable

Ya en el en /Session le especificamos nuestra dirección de NO-IP y el puerto que hemos puesto para el tunel SSH.
En /SSH/Tunnels/ generamos un tunel (origen) puerto 5900, (destino) localhost:5900. Si es otro equipo u otro puerto obrar en consecuencia.
localhost= 127.0.0.1(preferiblemente no useis la IP)

Cuando hagamos la conexión nos pedirá en una consola nombre de usuario y contraseña. Si nos deja acceder ya estamos conectados en un tunel SSH.

Para que el programa VNC lo use, no darle la dirección del equipo remoto sino decirle que el equipo es el localhost:5900. El tunel se encargará de dirigirlo al remoto.

Conexion Remota (IX - Rizando el rizo - Tor)

Solo como notas:

Podéis usar el UltraVNC contra otro UltraVNC, por ejemplo en Win, con llave de encriptamiento y bajo un tunel SSH. La conexión será segurísima.

Tened en cuenta que cada paso que hagamos en seguridad, nos quitara algo de velocidad en el VNC.

PuTTY da acceso total como consola, y sirve también por sí solo para manejar un equipo remoto igual que si estuviéramos allí.

Os aconsejo que desactivéis del SSH el acceso del root, cuantas menos opciones, menos problemas.

Puesto que las claves de acceso local (por teclado) de los usuarios, suelen ser pijadas y sin rigor os aconsejo que la conexión remota sea con un usuario con una clave especialmente segura. Tanto la SSH como la VNC. Y que ningún otro usuario tenga acceso remoto.

Si usáis la conexión SSH, anular el puerto asignado al VNC en el router, de tal manera que solo puedan darse conexiones SSH.

Y solo para los aún más aventureros.
Proyecto Tor

En Español, muy interesante.

Con las conexiones que hemos visto hasta ahora siempre delatas donde está el servidor y el cliente, pues los mensajes parten y terminan siempre en las mismas IPs.

Con los programas de que disponemos en Tor haremos que cuando nos conectemos no lo hagamos al destino sino que lo hacemos a un equipo, este a otro, a otro, otro, ... hasta el servidor y la contestación hará el retorno siguiendo la misma política, pero por otros equipos.
Esto sucede continuamente, cambiando constantemente los equipos involucrados (nodos).
Con esto conseguimos que nadie sepa quien somos ni con quien nos comunicamos.
Navegación anónima. y sobre la red Tor podemos usar el tunel SSH y encriptaciones al gusto.

¿Alguien da más?


Nota:
Lo sé, ha sido largo, quizá pesado, pero espero que a alguno os pueda ser de utilidad. Yo lo uso y sobre redes que están totalmente supervisadas, con proxys, espías y logs automáticos. Y funciona.

No hay comentarios :

Publicar un comentario

Gracias por tu colaboración.