jueves, 22 de noviembre de 2012

Compartición de Archivos via HTTP


Hoy voy a enseñaros un par de trucos más para acceder a vuestro PC casero desde cualquier parte.

Esto presentaba un serio problema para mi, ya que el trabajo lo desarrollaba en el PC del cliente, pero no podía enviar ni recibir ficheros, bueno, si que podía, le podía enviar por mail los ficheros a un empleado del cliente y el los copiaba al PC mediante carpetas compartidas….totalmente inútil cuanto tienes que copiar ficheros de más de 10 MB. Además el susodicho acababa hasta los hu…s de mi J

Ni que decir tiene que los protocolos de sftp y ftp también estaban capados….parecía un callejón sin salida.

Pero encontré una pequeña joya de freeware, HFS:
Es un servidor que te permite intercambiar ficheros usando HTTP, es bastante configurable y puedes proteger el acceso mediante cuentas de usuario.



La únicas pegas que tiene es que no puede instalarse como un servicio, pero más adelante os enseñaré como hacerlo, y que el tráfico no es seguro (no he encontrado nada que use https), en el siguiente post os contaré como securizarlo!

Volvamos a las aventuras del consultor Juan Palomo, una vez instalado, lo configuré para que el servidor HFS compartiera mis carpetas de almacenamiento cloud (dropbox, Google Drive, etc…), con esto lo que consigo es subir y bajar ficheros usando el servidor HFS al PC del cliente (cosa de la que no puede enterarse el cliente...sssssh!), y cuando subo ficheros, los subo a las carpeta del cloud, con lo cual se me actualizan en mi portátil, si, no es la forma más rápida, pero con esto puedes “sincronizar” los ficheros usando tu propio PC y en la nube.

Espero que os haya gustado! En la siguiente entrada os enseñaré como configurar ejecutables como servicios, para HFS y para el servidor de Calibre.

Saludos!

lunes, 19 de noviembre de 2012

Configuracion Adicional de OPENVPN

Bueno, si ya tenéis openVPN configurada en el router, aquí van un par de truquillos.

Podéis configurar hasta dos servidores en el router, eso si, tienen que tener certificados totalmente independientes, esto es, tenéis que generar todos los certificados de manera independiente para cada uno de los servidores.

De manera general, si estás en el trabajo, normalmente tienes salida por un proxy, esta salida se puede configurar en el fichero cliente de openvpn añadiendo la información en la siguiente sección del fichero:

http-proxy [IP o HOSTNAME del proxy] [PUERTO DEL PROXY]

Ejemplo
http-proxy prox.myproxy.com 8080

Ok, pero... ¿que pasa si tenemos que poner usuario y password?, pues añadimos en un fichero el usuario y password y lo dejamos en el mismo directorio que la configuración, y lo añadimos al final de la linea:

http-proxy [IP o HOSTNAME del proxy] [PUERTO DEL PROXY] [FICHERO CREDENCIALES]

Ejmplo
http-proxy prox.myproxy.com 8080 miusuario.txt

El contenido del usuario.txt sería:
midomino\misuario
mipassword

Si, vale, hay que dejar las credenciales en un fichero plano, pero no hay nada perfecto.

Si habéis llegado hasta aquí, probablemente me diréis: NO FUNCIONA DESDE EL TRABAJO, desde una 3G si, pero desde el curro no me va.

OK, si vosotros fuérais los administradores de redes de vuestro trabajo, no dejaríais que la gente abriera VPNs sin ton ni son desde la red del trabajo a saber con que otras redes. Por eso seguramente hayan capado los puertos estandar, como el 1194 de openVPN.

Solución:
Poner el protocolo a TCP
Puerto 443
Y usar el proxy, TACHAN!!! ahora mismo estáis accediendo por VPN a casa con un tráfico HTTPS que el 99% de los proxys permiten en el puerto estandar 443.
OJO, si hacéis esto, estar seguros que vuestro router no está dando servicio, como el acceso remoto al mismo en el 443, y que no hacéis redirección del puerto 443 en el router.

Con esta configuración yo, hasta ahora he sido capaz de conectarme desde cualquier red de mi trabajo o de un cliente usando proxies.


Vale, ahora vamos a abordar un segundo caso, las redes de invitados.
En ciertos clientes (como bancos), dejan redes wifi de invitados para conectarse a VPN, algunas de estas  redes no permiten acceso a internet, pero si permite conectarse a VPN estandar como PPTP.
Si dáis con alguna red como estas, lo más facil es usar la siguiente configuración:
Protocolo: UDP
Puerto 4500
Este es el puerto estandar de PPTP y seguramente funcionará sólo con UDP.

La moraleja es que si tenéis acceso a internet sin proxy, uséis la configuración original (UDP y 1194) y dependiendo de los puertos que os den en las redes origen adaptéis uno de los dos servidores de OpenVPN de casa para que sea compatible con la configuración de red origen.

Otra recomendación, es que uno de los serviodres de OpenVPn lo dejéis con enrutamiento total y otro no.
¿Por qué?, en el caso que tengáis un adsl en casa, el ancho de banda no será muy bueno en subida, por lo que lo más recomendable es que si estáis en el trabajo, uséis el acceso a internet del mismo y que solo uséis el tunel para conectaros a los recursos de casa. Así no penalizaréis el resto de servicios, (como el correo).
Pero si  estáis accediendo por una red no segura o queréis acceder a una página que tenéis capada en el curro (marca.com, thepiratebay) entonces conectaros al servidor que direcciona todo el tráfico para que todo vuestro tráfico vaya encriptado y nadie pueda saber que estáis haciendo.

En la siguiente entrada os enseñaré a crear servicios en vuestro PC desde ejecutables estandar.....

Saludos!

Configurando el Router WRT54GL con OpenVPN

Un lector del blog me ha pedido encarecidamente que pusiera los pasos para configurar OpenVPN en el router WRT54GL.

A continuación voy a poner una guía para hacerlo funcionar paso a paso. Para este tutorial me he basado el que ya existe en:

Lo bueno es que me podéis preguntar en castellano :-)

Primero un poco de teoría:
OpenVPN nos permite crear una conexión VPN usando certificados, esto es, un servidor OpenVPN tiene el certificado raíz, y tenemos que emitir una serie de certificados clientes que nos autoricen la conexión a la VPN. La gran ventaja es que todo el trafico viajará encriptado, haciendo que la conexión a nuestra casa sea realmente segura. Una de las cosas que más utilizo cuando viajo y quiero mirar cosas de mi banco online en una red abierta, es abrir mi tunel VPN y entonces se que nadie va a poder sacar nada de mi tráfico.

Por tanto los pasos a dar para tener configurado OpenVPN son:
1.- Instalar un Firmware al router que soporte OpenVPN, podéis elegir DDRT o Tomato VPN, este tutorial es para Tomato, pero hacerlo con DDRT es muy parecido:
           DDWRT:  http://www.dd-wrt.com/site/index 
           Tomato VPN:  http://tomatovpn.keithmoyer.com/

2.- Para hacerlo funcionar tenemos que crear los certificados de los clientes y del servidor, para ello hay que bajarse el software desde OpenVPN para tener las herramientas que nos permitan crearlos.

Seleccionar el que corresponda a vuestra versión del PC.

3.- Instalarlo en el pc, si no vais a usar el cliente en el pc, podéis deshabilitar el "OpenVPN Service"



4.- Una vez instalado el software de OpenVPN, la herramienta que vamos a usar es easy-rsa.
Abriros una linea de comando, como usuario administrador e ir a la siguiente dirección:
c:\Program Files (x86)\OpenVPN\easy-rsa
para windows 64 bit en inglés, en el caso de 32 bit ir a:
c:\program fles\OpenVPN\easy-rsa

Con esta utilidad crearemos tanto el certificado del servidor como los certificados de los clientes para conectarnos a la VPN.

5.- Ejecutamos init-config.bat



5.- Se inicializará el fichero de configuración VARS.BAT y lo tenemos que editar.
Primero, comprobar que el path al directorio es el correcto, y luego añadir la información de los campos al final.
Podemos poner los valores que queramos, ya que estos servirán para crear los cetificados



6.- Una vez editado el fichero lo ejecutamos(vars.bat), no saldrá nada por pantalla, pero habrá cargado las variables necesarias


7.-Ejecutamos clean-all.bat para asegurarnos que no hay basura de intentos anteriores



8.-Ahora creamos la autoridad certificadora (CA) con el siguiente comando:
           build-ca.bat
Nos pedira que confirmemos los datos, como los hemos metido en el fichero vars, simplemente tenemos que dar a enter.



9.-Una vez creada la CA tenemos que crear el certificado del servidor, que es el que usaremos en el router.
Para ello ejecutar build-key-server.bat server
Nos pedirá que verifiquemos los datos, y además nos pedirá dos nuevos atributos, rellenarlos y creará el certificado para el router.



10.- Ahora toca crear los certificados cliente. Estos certificados son los que usaremos en los PCs o dispositivos que quieran conectarse a la VPN. Normalmente se crea uno por dispositivo, o puedes crear uno únicamente y usarlo en todos los dispositivos.
Para ello ejecutar: build-key.bat cliente1
Podemos crear tantas como queramos, en este caso se creará un certificado llamado "cliente1" pero puedes llamarlo como quieras. Eso si, no puedes hacer dos certificados iguales.



11.- Ahora queda crear el fichero diff-hellman, para ello ejecutar build-dh.bat



12.-Ahora ya tienes todos los ficheros, así que tienes que poner la inforamción en el router, para ello ve al apartado "VPN Tunneling" 

Verás distintas opciones, las mas importantes son
  • Start with WAN: Si quieres que cuando el router se reinicia, se active el servidor VPN cuando consiga conectar a internet
  • Interface type: Hay dos opciones:
    • TUN: Que el tunnel se estableza a una IP virtual en este caso en la red 10.8.0.0, de esta forma tienes acceso a toda la subred de tu casa
    • TAP(NO RECOMENDADA): Que te de una IP de la misma subred, podrás ver el tráfico de broadcast, pero no podrás acceder directamente a las IPs de tu casa.
  • Protocol: TCP o UDP, el recomendado es UDP
  • Puerto: Por defecto es 1194, ya veremos más adelante que otros valores usar.

El resto dejarlo por defecto.

13.- Hay que configurar el apartado de "Advanced". Los puntos a tener en cuenta son:
  • Push Lan to clients: Para configurar el interfaz de red cuando te conectas, dejarlo habilitado por defecto.
  • Direct clients to redirect Internet Traffic: Esta es muy importante, si queremos redirecciónar TODO el tráfico por el tunnel activarlo, esto es muy util si nos vamos a conectar a un punto de acceso inseguro y queremos encryptar todo el trafico para que nuestra navegación sea segura.
  • Respond to DNS: Para tunelar todas las peticiones DNS.
La moraleja es, si queremos redirigir todo el tráfico de o no cambiaremos estas opciones.
14.- Por último configuramos la pestaña de "Keys" usando los certificados que hemos generado previamente:

Ya podemos arrancar el servidor VPN, una vez arrancado, podemos usar la pestaña "status" para ver quien está conectado a la vpn y como funciona todo.


Ya tenemos el router configurado, ahora tenemos que configurar el cliente.
Para un PC, hay que descargar el cliente de openVPN e instalarlo.
Para Android podeis bajaros FeatVPN de la Play store para dispositivos no rooteados, y para rooteados hay un monton de apps gratuitas en la store.

Ok, ya tenemos el cliente instalado, ahora hay que crear el fichero de configuación para poder conectarse a la VPN.
Para ello:

1.- Ir al directorio de instalación del cliente OpenVPN, en este ejemplo está en 
C:\Program Files (x86)\OpenVPN
2.- Ir a la carpeta Config.
3.- En la caperta config tenéis que copiar el certificado que generásteis para el cliente (Client1), os tenéis que copiar el fichero Client1.crt y Client1.key. Y además tenéis que copiar el fichero crt del servidor, este ejemplo server.crt
4.- Ahora tenéis que crear un fichero de configuración, encontraréis una serie de ejemplos, copiaros uno y renombrarlo a Casa.ovpn.
5.-Editar el fichero, principalmente los apartados:
  • dev: este apartado tiene que coincidir con el tipo de interfaz del servidor (tun o tap)
  • proto: este tiene que coincidir con el protocolo (UDP o TCP)
  • remote: este tiene que ser la ip del router (en el caso que sea estática) o el hostname dinámico con el numero de puerto configurado (por defecto 1194)
  • ca: tiene que ser el nombre del certificado del servidor (server.crt)
  • cert: certificado del cliente (client1.crt)
  • key: client1.key
Os paso un fichero ejemplo para esta configuación:

client

dev tun

# Windows needs the TAP-Win32 adapter name
# from the Network Connections panel
# if you have more than one.  On XP SP2,
# you may need to disable the firewall
# for the TAP adapter.
;dev-node MyTap

# Are we connecting to a TCP or
# UDP server?  Use the same setting as
# on the server.
;proto tcp
proto udp

# The hostname/IP and port of the server.
# You can have multiple remote entries
# to load balance between the servers.
remote my-server-2 1194

# Choose a random host from the remote
# list for load-balancing.  Otherwise
# try hosts in the order specified.
;remote-random

# Keep trying indefinitely to resolve the
# host name of the OpenVPN server.  Very useful
# on machines which are not permanently connected
# to the internet such as laptops.
resolv-retry infinite

# Most clients don't need to bind to
# a specific local port number.
nobind

# Downgrade privileges after initialization (non-Windows only)
;user nobody
;group nobody

# Try to preserve some state across restarts.
persist-key
persist-tun

# If you are connecting through an
# HTTP proxy to reach the actual OpenVPN
# server, put the proxy server/IP and
# port number here.  See the man page
# if your proxy server requires
# authentication.
;http-proxy-retry # retry on connection failures
;http-proxy [proxy server] [proxy port #]
;dhcp-option DNS 192.168.2.1

# Wireless networks often produce a lot
# of duplicate packets.  Set this flag
# to silence duplicate packet warnings.
;mute-replay-warnings

# SSL/TLS parms.
# See the server config file for more
# description.  It's best to use
# a separate .crt/.key file pair
# for each client.  A single ca
# file can be used for all clients.
ca server.crt
cert client1.crt
key client1.key

# Verify server certificate by checking
# that the certicate has the nsCertType
# field set to "server".  This is an
# important precaution to protect against
# a potential attack discussed here:
#  http://openvpn.net/howto.html#mitm
#
# To use this feature, you will need to generate
# your server certificates with the nsCertType
# field set to "server".  The build-key-server
# script in the easy-rsa folder will do this.
ns-cert-type server

# If a tls-auth key is used on the server
# then every client must also have the key.
;tls-auth ta.key 1

# Select a cryptographic cipher.
# If the cipher option is used on the server
# then you must also specify it here.
;cipher x

# Enable compression on the VPN link.
# Don't enable this unless it is also
# enabled in the server config file.
comp-lzo

# Set log file verbosity.
verb 3

# Silence repeating messages
;mute 20
float
route-method exe
route-delay 5
ip-win32 netsh

Con esto ya podrias conectaros a vuesta vpn. Para ello lanzar el OpenVPN GUI y os aparecerá un icono en la zona de notificaciones, si hacéis boton derecho os aparecerá la lista de vpn disponibles y debería haber una que se llamara "Casa"

En los siguientes post os comentaré como configurar el OpenVPN para conectaros desde el trabajo, usando un proxy o desde redes de invitados sin conexión directa a internet.

Saludos!