Tuesday, October 20, 2009

SheevaPlug + SSH Server ( Solo para tus ojos )



Este post quiso ser un tutoríal sobre la posibilidad de implementar un VPN server en SheevaPlug mediante OpenVPN, pero el problema se me presento al momento de crear una interface TUN. En este momento no cuento con mucho tiempo para crear el modulo para este tipo de dispositivos, asi que pense en una solucion alternativa. Aqui surge la idea de utilizar SSH Tunneling.

Hay muchísimos posts sobre SSH tunneling, esto no es nada nuevo, lo único nuevo es el hardware sobre el cual realizaremos el tunnel. Independientemente de esto, voy a mostrar como utilizar un tunnel SSH para poder navegar tranquilos ( comunicaciones encriptadas ) desde conexiones publicas ( Cybercafes, hotspots públicos... ) o en caso de estar en lugares donde esta restringido el acceso a ciertos sitios y dispongamos de salida por el puerto de SSH.

Para esto necesitamos las siguientes herramientas :

Un server SSH ( En nuestro caso SheevaPlug )

Un cliente SSH ( Para los usuarios que no tienen una notebook con Linux, vamos a utilizar Putty )

1er Paso )

Lo primero es configurar el acceso en Putty indicando la direccion del server SSH.


2do Paso )

Click en Connections ---> SSH---> “Tunnels” en el menu de la izquierda, alli configuraremos un fowarding dinámico para un puerto local ( por ejemplo el 8888 )
Debemos marcar Auto y Dynamic en las opciones y agregar el port 8888 en el campo "source port". Luego presionar ADD.
Aparecerá en la ventana de Forwarded Ports : D8888


Salvamos el perfil para no ingresar nuevamente la configuración.

3er Paso )

Paso seguido nos conectamos al server SSH :


4to Paso )

Ahora configuramos firefox para hacer uso del proxy


Para evitar que nuestras búsquedas al server DNS puedan ser interceptadas ( ya que se realizan sin encriptar ) modificamos este parámetro en about:config de Firefox :

network.proxy.socks_remote_dns = true

Nos conectamos a un sitio :


Verifico las conexiones en el pluggedPC


Efectivamente, me encuentro navegando por medio del SheevaPlug.

Ahora cuando naveguemos, todas las conexiones a los websites visitados se realizaran desde nuestra laptop hasta el server SSH en forma encriptada.

Para los usuarios de Linux, la conexion mediante el cliente ssh es mas sencilla :

ssh -N -D 8888 username@ip-server-ssh


Tips avanzados


Cuando el sitio desde el cual queremos navegar tiene restringido el port de salida tcp 22, podemos modificar este valor tanto en el server como en el cliente.

En el caso del server, se realiza mediante el archivo :

/etc/ssh/sshd_config

Debemos modificar la siguiente linea por el numero de port adecuado ( Ej:443 ):

Port 22

Luego en el cliente SSH Putty :


En el caso del cliente ssh en Linux :

ssh -p443 -D 8888 username@ip-server-ssh


Para quienes les resulte complicado configurar y des-configurar el Proxy en Firefox, puede usar un Add-On llamado FoxyProxy que permite manejar las configuraciones de diferentes proxies.


Acceso mediante clave publica/clave privada

La utilización del esquema de clave publica/privada, aumentara significativamente la seguridad del acceso, ya que en este caso el server nos reconocerá por algo que poseemos ( clave privada ) , además de algo que conocemos ( password )

Para generar el par clave privada/publica de manera que Putty pueda conectarse al server SSH necesitaremos las siguientes herramientas.

puttygen ( Es un programa para generar las claves publicas privadas a ser utilizadas por Putty )

pscp ( Programa para transmitir en forma encriptadas archivos )



Pasos :

Debemos conectarnos por ssh al server mediante el usuario/password que utilizaremos en el futuro.

En el directorio raiz del usuario debe existir un directorio llamado .ssh, si no existe lo creamos dando los siguientes permisos.

chmod 700 .ssh

Luego debemos crear un archivo llamado authorized_keys y darle los siguientes permisos

chmod 600 authorized_keys


Ahora generamos las claves en el server mediante el comando

ssh-keygen -t dsa ( o rsa )

Aceptamos los nombres de archivos propuestos e ingresamos un password segura.

Paso siguiente es agregar la clave publica al archivo authorized_keys

cat id_dsa.pub >> .ssh/authorized_keys

Copiamos la clave privada desde equipo cliente mediante pscp

pscp nombre_usuario@ip_server:/home/directorio donde se genero clave/id_dsa ./

Ahora ejecutamos el programa Puttygen.exe

En el recuadro Actions, hacemos click sobre el boton Load y cargamos el archivo id_dsa

Luego nos pide la password que ingresamos al momento de crear la clave, Puttygen transformara la clave en un formato que Putty reconocera.

Lo salvamos con el nombre : privatekey.ppk

Este archivo es importante tenerlo en un medio seguro ( un pendrive encriptado )

Ahora le indicamos a Putty donde se encuentra la clave privada

Vamos a Connections --> SSH--->Auth


Ya estamos en condiciones de conectarnos, se nos pide la password correspondiente a la clave y si es correcta nos autenticamos.



Este esquema se puede repetir independientemente del hardware, los pasos anteriores se aplican en forma idéntica en cualquier openssh que tengan disponible.


Fuentes de las cuales tome material :

embraceubuntu

andrelmonar

3 comments:

Nikitux said...
This comment has been removed by the author.
Nikitux said...

Hola Julio en primera instancia felicitarte por el blog y contarte a modo comentario que uso una herramienta en gnome llamada gsmt (SSH tunnel manager for GNOME) para hacer tunneling de ssh , es piola y queda en el systray cosa de no tener una consola abierta.

PD= Te dejo mi humilde blog que lamentablemente no actualizo con tu frecuencia http://nikitux.blogspot.com

Julio Jaime said...

Interesante el dato, de gsmt.

Vamos a visitar tu blog, cuando uno escribe, no importa tanto la cantidad como la calidad.

Saludos