PDA

Ver la Versión Completa : [ TUTORIAL ] Navegación Segura en Android con SSH


aceGuanche
14/12/11, 12:39:58
He creado un pequeño tutorial para hacer conexiones seguras con nuestros cacharros :-) lo comparto por aquí por si a alguien le sirve... Aunque solo lo utilizo para hacer conexiones en Puntos de Acceso públicos, en teoría también serviría para saltarnos los proxy X-D

Lo he hecho basándome en Ubuntu pero también se puede adaptar a Windows... pero es algo mas complejo, si alguien se anima que haga un pequeño tuto de los pasos y así lo tendremos para Windows y GNU/Linux

Una de las cosas que me preocupan cuando navego desde un Wifi Público, ya que cualquier persona con un poco de conocimiento y malicia podría snifar (http://es.wikipedia.org/wiki/Analizador_de_paquetes) el trafico y con ello saber algunas de mis claves, también me he dado cuenta haciendo pruebas que no todas las App cifran sus paquetes, dejando al descubierto muchos de nuestros datos. Bien que vamos a hacer os pongo un dibujo para que os hagáis una idea:

http://www.technologicalzombie.net/wp-content/uploads/2011/12/Conexion-Cifrada-SSH-300x140.jpg (http://www.technologicalzombie.net/wp-content/uploads/2011/12/Conexion-Cifrada-SSH.jpg)

¿Requisitos?


Ubuntu
Servidor SSH
Android con permisos de Root
Kernel con IPtables

¿Qué es SSH?

SSH es el nombre de un protocolo y del programa que lo implementa, y sirve para acceder a máquinas remotas a través de una red. Permite manejar por completo la computadora mediante un intérprete de comandos, y también puede redirigir el tráfico de X para poder ejecutar programas gráficos si tenemos un Servidor X (en sistemas Unix y Windows) corriendo. El protocolo SSH también se utiliza con frecuencia para tunelizar tráfico confidencial sobre Internet de una manera segura. Por ejemplo, un servidor de ficheros puede compartir archivos usando el protocolo SMB (Server Message Block), cuyos datos no viajan cifrados. Esto permitiría que una tercera parte, que tuviera acceso a la conexión (algo posible si las comunicaciones se realizan en Internet) pudiera examinar a conciencia el contenido de cada fichero trasmitido. Por ejemplo, para conectar con un servidor web de forma segura, utilizando SSH, haríamos que el cliente web, en vez de conectarse al servidor directamente, se conecte a un cliente SSH. El cliente SSH se conectaría con el servidor tunelizado, el cual a su vez se conectaría con el servidor web final. Lo atractivo de este sistema es que hemos añadido una capa de cifrado sin necesidad de alterar ni el cliente ni el servidor web. La técnica de tunelizar puede ser usada también para evitar o circunvalar un cortafuegos. Para ello, se encapsula el protocolo bloqueado en el cortafuegos dentro de otro permitido, habitualmente HTTP.
¿Cómo instalamos SSH en Ubuntu?

Fácil, fácil…

sudo apt-get install ssh
Dejaremos la configuración por defecto exceptuando un pequeño cambio, cambiaremos el puerto que éste usa que por defecto es el 22 por un puerto que no nos de problemas en wifi públicos el 443 que es el puerto seguro de las conexiones HTTPS/SSL usado para la transferencia segura de páginas web.
Tipeamos en una terminal

sudo gedit /etc/ssh/sshd_config Y cambiamos donde pone:
# What ports, IPs and protocols we listen for Port 22
Port 22
Por este:
# What ports, IPs and protocols we listen for Port 443
Port 443 ¿Por qué el 443 y no el 22? Simple, el puerto 22 esta capado en muchos router públicos, por lo que bloqueara la conexión y por el puerto 80 estarán los posibles sniffer, aunque el 443 no esta libre de sniffer, siempre será más seguro que el 80.

¿Cómo puedo saber mi ip?
Para conectarnos por SSH fuera de nuestra red privada, necesitamos saber nuestra IP publica y claro esto es sencillo en un principio, el problema es que nuestra IP publica es dinámica, esto significa que cada ves que apaguemos el router ó modem, cambiara nuestra IP, como solventar este pequeño inconveniente, pues usando los servicios de NO-IP que nos dará un DNS estático para nuestra IP a través de un subdominio, esto quiere decir que aunque nuestra IP cambie siempre podremos establecer conexión a través de un subdominio. Voy a intentar poner un ejemplo para que lo entendáis:

Esta seria la IP asociada a nuestro subdominio:
Technologicalzombie.no-ip.info –> nos llevara a -> IP 80.46.27.13

Apagamos el Router y a través del nombre de subdominio podremos seguir accediendo ya que NO-IP a vuelto a asociar el subdominio:
Technologicalzombie.no-ip.info –> nos llevara a -> IP 85.44.36.12

¿Cómo uso los servicios de NO-IP?
Esto consta de dos partes, primeros nos registramos en la pagina web de NO-IP (http://www.no-ip.com/) y agregaremos un Host para nuestra IP, para ello despues de registrarnos vamos a Manager your account (En Logged In)

http://www.technologicalzombie.net/wp-content/uploads/2011/12/Pantallazo-No-IP-Dynamic-DNS-Static-DNS-for-Your-Dynamic-IP-Mozilla-Firefox-300x111.png (http://www.technologicalzombie.net/wp-content/uploads/2011/12/Pantallazo-No-IP-Dynamic-DNS-Static-DNS-for-Your-Dynamic-IP-Mozilla-Firefox.png)

Ahora vamos a Add Host

http://www.technologicalzombie.net/wp-content/uploads/2011/12/Pantallazo-No-IP-Members-Portal-Your-No-IP-Mozilla-Firefox-300x109.png (http://www.technologicalzombie.net/wp-content/uploads/2011/12/Pantallazo-No-IP-Members-Portal-Your-No-IP-Mozilla-Firefox.png)

Y ahora creamos el host con el nombre que veamos oportuno y le damos a create host en la parte inferior:

http://www.technologicalzombie.net/wp-content/uploads/2011/12/Pantallazo-No-IP-Members-Portal-Managed-DNS-Add-a-host-Mozilla-Firefox-300x183.png (http://www.technologicalzombie.net/wp-content/uploads/2011/12/Pantallazo-No-IP-Members-Portal-Managed-DNS-Add-a-host-Mozilla-Firefox.png)

Y segundo en Ubuntu vamos a instalar el programa de NO-IP que le dirá al servidor cual es nuestra IP en todo momento:

sudo apt-get install noip2 Y seguimos los pasos poniendo nuestro datos de la Web de NO-IP

¿Nuestro router? Ese gran desconocido…
Bueno no puedo explicar todos los router del mundo, pero en principio lo que tendremos que hacer para poder conectar con el PC donde tenemos instalado SSH es redireccionar el puerto que estemos usando para la conexión SSH (443) en el router a la IP del PC donde esta SSH. Con poner en el Google redireccionar IP y vuestro modelo de Router saldrán muchos tutoriales.

¿Qué instalamos en nuestro Android para tener una conexión segura?
Personalmente uso SSHTunnel que lo podemos encontrar en el Market, me ha gustado mucho las opciones que trae.

http://www.technologicalzombie.net/wp-content/uploads/2011/12/SC20111211-203010-180x300.png (http://www.technologicalzombie.net/wp-content/uploads/2011/12/SC20111211-203010.png)

Empezamos a configurar la conexión:
Host: El nombre del Host que pusimos en NO-IP en caso de querer hacer pruebas dentro de nuestra Red privada hay que poner la ip privada de nuestro PC
Port: 443 Como dijimos antes
User: El usuario de nuestro Ubuntu donde tenemos SSH
Password: El Password de nuestro usuario en Ubuntu donde tenemos SSH
Bien tenemos la primera parte configurada ahora vamos por la segunda:

http://www.technologicalzombie.net/wp-content/uploads/2011/12/SC20111211-203938-180x300.png (http://www.technologicalzombie.net/wp-content/uploads/2011/12/SC20111211-203938.png)


Use socks proxy: Marcado
Local Port: 8080
Y para terminar la configuración:

http://www.technologicalzombie.net/wp-content/uploads/2011/12/SC20111211-202938-180x300.png (http://www.technologicalzombie.net/wp-content/uploads/2011/12/SC20111211-202938.png)


Global Proxy: Marcado, la opción más importante de todas, para que todas las aplicaciones pasen a través del túnel cifrado y no sólo unas pocas.
El resto lo dejamos como esta.


Si queremos que en cuanto nos conectemos a internet, el programa se auto-conecte a nuestro servidor SSH debemos marcar la primera opción (AUTO-CONNECT).
Si queremos que cuando pierda la conexión por cualquier motivo, intente reconectar, seleccionamos la segunda opción (AUTO-RECONNECT).

NOTA: Cuando conectemos la primera vez aceptaremos la llave de seguridad SSH, que autentificara nuestro teléfono, saldremos del programa, volveremos a entrar y conectaremos perfectamente.

Fuente: Technological Zombie (http://www.technologicalzombie.net/2011/12/navegacion-segura-en-android-con-ssh/)

confar
14/12/11, 14:00:09
Gracias. Excelente tutorial aunque nada pequeño je je. Al menos no en mi teléfono.

Enviado desde mi GT-I9100 usando Tapatalk

Player
14/12/11, 15:40:30
Genial, lastima que sólo use windows...
No me suelo conectar en sitios públicos por esto mismo...

Jozzze
14/12/11, 17:54:24
Muchas gracias!!! Me ha resultado MUY UTIL.

Saludos

pedestre
14/12/11, 18:33:53
Podrías decirnos que kernels tienen iptables? Es la única forma? Quiero decir, se puede tener iptables sin cambiar de kernel?
Yo por cierto uso el connectbot en vez del SSHTunnel que te permite definir un sock y además túneles específicos de puertos.

Saludos

Gracias

larg pawers
14/12/11, 19:13:58
Sabeis si ay algun tutorial para windows o para servidores mas de empresas windows server o algo parecio.Gracias un saludo
Pos data curiosisimo el tuto

pedestre
14/12/11, 19:23:32
Para windows hay que instalar el Openssh en tu PC y funciona todo igual

Por si quereis informaros:

http://www.openssh.com/

y en español una miniguía:

https://seguridadyredes.wordpress.com/2008/02/22/servidor-openssh-para-windows/

Instalación:
http://dl.dropbox.com/u/19078986/setupssh.rar

aceGuanche
14/12/11, 22:54:53
Podrías decirnos que kernels tienen iptables? Es la única forma? Quiero decir, se puede tener iptables sin cambiar de kernel?
Yo por cierto uso el connectbot en vez del SSHTunnel que te permite definir un sock y además túneles específicos de puertos.

Saludos

Gracias

Creo que los Kernel con iptables son todos aquellos después de Android 2.2, lo confirmare y lo posteo! ;-)

He echado un ojo por arriba al connectbot y también esta bien ;-) eso ya es sobre gustos, el mejor cliente ssh que se adapte a las necesidades de cada uno. En SSHTunnel tambien te deja definir socket (IP+Puerto) yo en el tuto especifico en vez de una IP un subdoniminio de NO-IP (Para los que no tienen IP Publicas Estática, mas el puerto 443, pero puedes usar el que quieras ;-)

aceGuanche
14/12/11, 22:58:17
Para windows hay que instalar el Openssh en tu PC y funciona todo igual

y en español una miniguía:

http://www.dacostabalboa.com/es/instalar-configurar-y-usar-un-servidor-openssh/2212


La miniguia la pusiste para Ubuntu Debian :risitas:

aguilacaponata
14/12/11, 23:12:19
Muy buen tuto. Yo uso ubuntu. Solo uso windonw para el odin y el kies. Cuando pille vacaciones lo intentare. Por cierto esto relentizara la conexion?
Me podre conectar desde una red que tenga windons y acceder a mi pc con ubuntu?
Es necesario tener el pc ubuntu encendido? Gracias de nuevo por el tuto es largo y quiero intentarlo con mas tiempo.

aceGuanche
14/12/11, 23:34:11
Muy buen tuto. Yo uso ubuntu. Solo uso windonw para el odin y el kies. Cuando pille vacaciones lo intentare. Por cierto esto relentizara la conexion?

A mi me pasa lo mismo uso Windows solo para Flashear X-D
Yo no noto que vaya mas lenta conexion o mejor dicho nada perceptible, seguramente unos milisegundos, lo que si se nota es que sube un poco el consumo de Batería, aunque es lógico, ya que tiene que trabajar más para encriptar y desencriptar los paquetes

Me podre conectar desde una red que tenga windons y acceder a mi pc con ubuntu?
Es necesario tener el pc ubuntu encendido? Gracias de nuevo por el tuto es largo y quiero intentarlo con mas tiempo.Android - Ubuntu da igual donde estés siempre que tengas conexión a internet.
Windows - Ubuntu necesitas un cliente SSH para Windows como Putty

Si, necesitas tener el PC donde esta SSH encendido, ya que es el que hará de servidor, para hacer el tunnel cifrado y conectarte a internet a través de él. ;-)

pedestre
15/12/11, 12:30:28
La miniguia la pusiste para Ubuntu Debian :risitas:

Cierto, me equivoqué de guía, lo he corregido

Gracias por el aviso

Amberyl
08/02/12, 11:23:46
HOla, he intentando configurar el openssh en windows para conectarme a traves de mi android. El caso es que con el sshtunnel, cuando intento conectactme me dice que "cannot connect to the host"

he seguido los pasos de la guia. Aunque hay una cosa que no me quedo claro. El usuario esta creado tal cual decia en la guia... pero que password debo usar?

aceGuanche
09/02/12, 00:15:59
HOla, he intentando configurar el openssh en windows para conectarme a traves de mi android. El caso es que con el sshtunnel, cuando intento conectactme me dice que "cannot connect to the host"

he seguido los pasos de la guia. Aunque hay una cosa que no me quedo claro. El usuario esta creado tal cual decia en la guia... pero que password debo usar?

hola de nuevo Ambery ;-)

Lamento decirte que nunca he montado el servicio ssh en Windows, comentame varias cosas...

Las pruebas las estas haciendo dentro de tu red local?
Si es dentro de tu red local tienes que poner la IP del PC donde tienes montado el servidor ssh

Primero has las pruebas dentro de tu red local.

Para cuando empieces a hacer las pruebas desde fuera de la red local...

Tienes Router y si lo tienes tienes los puerto necesarios abiertos y redirecionados ?

a ver si te puedo echar una mano ;-)

Perseidas
09/02/12, 11:58:31
Estupendo tutorial, y hasta con capturas de pantalla para hacerlo más fácil. Has hecho un buen trabajo. :ok:

asturnauta
09/02/12, 18:05:49
Muy buen tutorial, tengo que probarlo cuando reciba el S2.

Una duda, ¿usas este método cuando te conectas por wifi, o siempre, es decir, por 3g?.


Un saludo.

aceGuanche
09/02/12, 23:46:57
Muy buen tutorial, tengo que probarlo cuando reciba el S2.

Una duda, ¿usas este método cuando te conectas por wifi, o siempre, es decir, por 3g?.


Un saludo.

Solo con el Wifi ;-)