jueves, 18 de septiembre de 2014

Como encriptar todas tus conexiones a Internet desde Ubuntu 14.10

Muy pocos usuarios se preocupan por la seguridad de sus conexiones a Internet, y poco  les importa si su propio proveedor de acceso a Internet les espía. Salvo los Hackers súper paranoicos y celosos de su anonimato y privacidad, el resto de los usuarios navega ingenuo sin imaginar que espían sus comunicaciones.  Primero, te hago un par de advertencias. Cualquier cosa que hagas en la red de internet deja registros, rastros, huellas, pistas que pueden ser encontradas por expertos. Segundo, si cometes algún tipo de delito informático, este puede ser detectado por las autoridades, y por orden judicial, acudir a tu Proveedor de Internet y pedir la lista de registros de conexiones (Logs) desde tu equipo a cualquier IP a la que te hayas conectado. De ese modo sabrán si has enviado correos electrónicos, si has estado conectado a un chat, y que has descargado, y que paginas has visitado.


¿Cómo lo hacen?

Aquí el problema es que si quieres estar conectado con el resto del mundo estas forzado a tener una conexión Telefónica y a Internet, en la que existe el registro de tu nombre, DNI, dirección, y numero de teléfono.  Cuando conectas tu Router, ese Router llama por la linea de teléfono y establece una conexión con el ISP (Morrange, Pajazztel, Timofonica, Ñoño, Vegafone, el que sea), entonces transcurridos unos segundos tu Proveedor de Internet te entrega una IP dinámica que es la que te sirve para que puedas navegar por todo Internet durante el tiempo que estés conectado. Cualquier cosa que hagas quedara registrado en los servidores de tu proveedor por varios parámetros: Hora de conexión, IP dinámica, numero de Teléfono, usuario (Con todos sus datos) y nodo de conexión (centralita del bucle telefónico desde el cual accedes a los servidores de Internet), y como ves, tu propio proveedor de Internet sabrá muchas cosas sobre ti.


¿Como pueden espiarte sin que te des cuenta?
 
¿Has oído alguna vez la expresión MITM?, pues mira el gráfico y lo comprenderás de forma sencilla. El MITM es un ataque en el que “alguien que tiene la oportunidad de acceso” también tiene la capacidad de leer, insertar y modificar a voluntad, los mensajes entre dos partes sin que ninguna de ellas conozca que la conexión entre ellos ha sido pinchada. La forma mas fácil que un ISP puede espiar tus comunicaciones sucede de forma silenciosa y clandestina cuando entras con tu navegador Internet Explorer, o Firefox, y haces una petición de un servicio web o te conectas a una pagina como por ejemplo Google.

Todas las peticiones de paginas web se realizan a través de tu Proveedor de Internet. Pero antes de que recibas la pagina web que has pedido en tu navegador, tu ISP debe traducirla de un formato numero de dirección IP 85.90.86.102), a un formato web www.mipeticionweb.com. Para ello utiliza sus propios servidores DNS. Una vez que esos servidores DNS han traducido la dirección IP a un formato web, la conexión entre tu equipo con esa pagina web se establece sin problemas.

Lo que te importa saber de este proceso es que tu propio proveedor de Internet actúa como intermediario (esta en medio de todas las conexiones) entre tu equipo y el servidor de la pagina web (Las paginas web que tu quieras visitar) con la que tu te quieres conectar.


¿Y que peligro hay con eso? 
 
Si tu entras en Internet sin que tus conexiones estén encriptadas tu propio ISP y alguien mas interesado podrán leer sin problemas todo tu trafico. Cualquier Agencia o autoridad Gubernamental sabrá que has estado haciendo. Pero si reflexionas sobre como proteger tus conexiones a internet, me refiero a cifrar  tu navegación entre tu  equipo y tu proveedor de Internet, al interponer contra medidas te proteges de varios posibles ataques:

1- Te saltas cualquier posible baneo (restricción) que tu Proveedor de Internet haga sobre tu navegación.

2- Impides que alguien meta las narices en tus comunicaciones porque están encriptadas y no puede leerlas.

3- Evitas los ataques MITM (Man In The Middle). ¿Si la conexión esta encriptada, para qué meterse en medio a espiarlas si no hay modo de entender nada?


Cifrar nuestra conexión DNSCrypt. 
 
¿Para qué molestarse en encriptar nuestro trafico de Ubuntu hacia Internet? Bueno, al cifrar tu conexión a Internet impedirás que tu propio ISP o un Agente del Gobierno  este escuchando el tráfico entre tu y el, y no importara qué paginas visites porque no podrá leerlas.  Para ello podemos usar un Software que esta disponible de forma gratuita para los siguientes sistemas operativos: OSX, OpenBSD, Bitrig, NetBSD, Dragonfly BSD, FreeBSD, Linux, iOS, Android, Solaris y Windows; y que es conocido entre los profesionales como DNSCrypt. Este software es una herramienta que nos permite cifrar todo el tráfico entre nuestro computador y el Proveedor de Acceso a Internet porque emplea el servicio de resolución de nombres de dominio de OpenDNS de forma predeterminada.

 
Tengo Linux Ubuntu 14.10, ¿cómo instalo la encriptacion de mis conexiones a Internet?  
 
He usado DNSCrypt desde la versión 12.10, y te puedo garantizar que funciona de maravilla. Por eso estoy en condiciones de escribir este post con todo detalle y decirte que actualmente, sigo usando DNSCrypt en Ubuntu 14.10 sin problemas. Y como anécdota mi equipo es un Intel Pentium de 32 bits. Sin embargo advierto que la instalación supone una cierta dificultad, es de nivel medio o alto para el usuario Linux Ubuntu. Pero esto no tiene porque desanimar al principiante, aunque si que debe ser prudente con lo que haga, cuando siga los pasos que aquí se describen.

El sistema de cifrado se basa en la instalación de dos paquetes para Linux conocidos como libsodium-0.4.5, y dnscrypt-proxy-1.3.3. Por desgracia actualmente no existe ningún paquete.deb, o repositorio conocido que se pueda utilizar para su fácil instalación. Y aquí nos encontramos con la primera dificultad técnica. Es necesario recurrir a la compilación de su código fuente desde el Terminal Linux. La compilación supone que nos hará falta instalar desde el terminal Linux los paquetes necesarios para lograr compilar la aplicación y sus dependencias.


PARTE 1

Por tanto si estas en Linux Ubuntu teclea Ctrl+Alt+T y se te abrirá el terminal Linux. Debes loguearte como root, con tu nombre de usuario y contraseña. En este ejemplo veras mi nombre de usuario de una instalación virtual de Virtual Box, no lo uses, solo debes teclear las ordenes como sudo -s y todas las demás que estén a la derecha del root. Para ello haces la siguiente operación escribiendo en tu terminal...

darkode@sikandark:~$   sudo -s
[sudo] password for darkode:  (Escribe tu pasword)
root@sikandark:~# sudo apt-get install build-essential

Instalamos build-essential, porque como he dicho no existe ningún paquete debian extensión punto deb que se pueda instalar de manera fácil, y porque build-essential es un paquete que contiene todas las herramientas de compilacion que necesitamos para convertir el código fuente en el software que deseamos usar.

El siguiente paso es compilar las dos librerías: dnscrypt-proxy, y libsodium, y convertirlas en paquetes que podamos instalar en nuestro Linux. Para ello nos vamos a estos enlaces:

http://download.libsodium.org/libsodium/releases/
http://download.dnscrypt.org/dnscrypt-proxy/

Y descargamos los dos archivos. Es preferentemente recomendable descargar la versión más reciente de cada archivo. Eso se sabe mirando cual es la ultima versión que esta almacenada en el sitio. Y otra cosa, debes bajar la versión que corresponde a tu sistema operativo. Para Linux Ubuntu lo sabrás porque tiene la fecha 2014 y la extensión tar.gz En cuanto a que lugar de Linux Ubuntu hacer la descarga de esos dos archivos, recomiendo que lo hagáis en la carpeta de descargas, porque es allí donde se hará la instalación.

Ahora empieza la parte complicada del asunto, que es donde muchos se quejan siempre de que algo no sale bien. Yo en esto quiero ser muy conciso y por eso os daré las instrucciones del terminal con todo detalle. Tenemos que descomprimir primero el archivo.tar.gz y a continuación comenzar el proceso de compilación. Con tu terminal Linux, y con tu usuario root activo, escribe las ordenes siguientes que están a la derecha del root:

root@sikandark:~# cd /home/darkode/Descargas
root@sikandark:~/Descargas#

Con estas dos ordenes lo que hacemos en situarnos en la ruta donde están descargados desde internet los dos archivos que necesitamos compilar. Como es lógico, ahora deberemos averiguar el nombre exacto de cada archivo, para poder escribirlo correctamente mas tarde en el terminal y hacer la compilación.

Ahora hacemos un ls para listar todos los archivos que tenemos en nuestra carpeta de descargas.

root@sikandark:~/Descargas# ls

dnscrypt-proxy-1.3.3.tar.gz
libsodium-0.4.5.tar.gz

Y efectivamente, vemos los nombres de nuestros dos archivos recién descargados. Bueno, ahora hay que compilar el primer archivo. Esto lo he dividido en seis pasos, que hay que hacer en este orden. Después de escribir una orden en el terminal, hay que hacer un ENTER. Primero la descompresión, que es el primero paso, esperas a que termine, y entonces haces el paso siguiente.

Paso 1 hacemos tar -xvzf libsodium-0.4.5.tar.gz

Paso 2  hacemos cd libsodium-0.4.5

Paso 3 hacemos ./configure

Paso 4 hacemos make

Paso 5 Verificamos que todo se encuentre en orden, haciendo make check

Paso 6  Si en este punto no  habéis tenido ningún problema, hacéis make install

Luego, cuando termine todo el proceso salís del terminal tecleando exit. Y es recomendable hacer un reboot del sistema (escribe reboot) desde el terminal para que todos los archivos se afiancen.



PARTE 2

Bueno doy por hecho que todo ha salido bien, y que después del reboot (reinicio del sistema) estas otra vez en tu escritorio de Ubuntu a la espera de continuar con este complicado proceso. Volvemos a hacer un Ctrl+Alt+T y abrimos un terminal. Nos logueamos como root.

darkode@sikandark:~$   sudo -s
[sudo] password for darkode:  (Escribe tu pasword)
root@sikandark:~#

Ya estamos en la consola de Linux Ubuntu. Antes de comenzar a compilar DNSCrypt es necesario escribir en el terminal lo siguiente:

ldconfig

A continuación debemos volver por el terminal hacia la ruta que nos guía a la carpeta de Descargas. Esto lo hacemos porque es allí donde se realizara la operación de descompresión y luego la compilación, y porque allí es donde quedaran las capetas de este software.

root@sikandark:~# cd /home/darkode/Descargas
root@sikandark:~/Descargas#

Hacemos un ls para ver los nombres de archivos que tenemos y buscamos dnsproxy.

root@sikandark:~/Descargas# ls

dnscrypt-proxy-1.3.3.tar.gz
libsodium-0.4.5.tar.gz

Ahora hacemos la descompresión del tar de dnscrypt. Esto lo haremos paso por paso, para que algunos usuarios aprendan de paso el tedioso proceso de instalar un paquete desde el terminal. Quiero decir, que esta experiencia, os ayudara mucho en el futuro para aprender a instalar paquetes desde el terminal.

Paso 1 hacemos tar -xvzf dnscrypt-proxy-1.3.3.tar.gz

Paso 2 hacemos cd dnscrypt-proxy-1.3.3

Paso 3 hacemos ./configure

Paso 4 hacemos make

Paso 5 hacemos make install

Paso 6 hacemos exit

Después de alcanzar el éxito en todos estos pasos (Ya te veo sonriendo por ser la primera vez que la instalación. manual de un paquete te funciona en Ubuntu.) hay que hacer un reboot, con el propósito de que todos los archivos se afiancen en el sistema. Regresamos al escritorio después del reinicio, abrimos el terminal Ctrl+Alt+T y nos logueamos de nuevo como root. Todo lo que hagamos a de ser como Root.


Configuración de nuestra interfaz de red
 
Tenemos que configurar DNSCrypt para que Linux Ubuntu trabaje en nuestra interfaz de red con el Loopback, apuntándose a si mismo. El Loopback es la DBI Dirección de Bucle Interno. La dirección IP 127.0.0.1 hace referencia a localhost que no es otra cosa que el host local o el propio equipo.

Tenéis que configurar las interfaces de red en Linux, tanto la red cableada como la red Wifi, con los siguientes parámetros:

Interfaz de red red cableada (Ethernet): Método y Servidores, sólo direcciones automáticas (DHCP) la dirección IP 127.0.0.1 En la red Wireless (WiFi) hacéis exactamente lo mismo.

Un detalle importante. Si después de configurar DNSCrypt no se conecta a la pagina OpenDNS con éxito, es posible que se deba a que la IP 127.0.0.1 presente algún problema de conexión.  Esto se soluciona sustituyendo la dirección por esta otra 127.0.0.2

Después de cambiar los valores de nuestra interfaz de red, hay que reiniciar la red desde el terminal:

root@sikandark:~# restart network-manager

Durante unos instantes no tendrás conexión a Internet hasta que DNSCrypt se ejecute correctamente, y esto se debe a que temporalmente no estamos utilizando ningún servidor. Ahora hay que comprobar que todo lo que hemos hecho desde el terminal esta correcto, y para ello hay que realizar una prueba.  Debemos ejecutar DNSCrypt y probar que todo funciona. Vamos al terminal y tecleamos lo siguiente:

/usr/local/sbin/dnscrypt-proxy --daemonize --pidfile=/run/dnscrypt-proxy.pid –edns-payload-size=4096

Y damos ENTER

NOTA: Si la ruta hacia DNSCrypt no esta correctamente escrita, de forma continua en el terminal, con sus espacios correctos, se producirá un fallo semántico, y generara un error de ejecución. Al principio, cuando empecé a practicar la encriptacion con DNSCrypt, nunca pasaba de este punto porque en el terminal, el comando se quedaba separado en dos lineas, y una quedaba bajo la otra. Al no estar correctamente escrita la ruta, daba un error que me decepcionaba. Abrí la pantalla al máximo y descubrí que estaba mal colocado, lo corregí, y funciono.

Se supone que después de uso segundos la conexión a internet ya estará restablecida. Ahora para comprobar que todo  nuestro tráfico esta siendo cifrado, y estamos empleando los servidores de OpenDNS, es necesario abrir nuestro navegador de Internet y escribir la siguiente URL:

http://www.opendns.com/welcome/

 
Si todo ha salido bien la pagina de OpenDNS se abrirá y te dará el signo del visto bueno en verde. Pero si la pagina se abre y te sale una X en rojo, significa que tu trafico en la red es visible y no esta siendo encriptado. Si no te ha funcionado, es posible que haya un conflicto con la IP 127.0.0.1, y seguramente el problema sea esta IP.

Para solucionarlo debes entrar otra vez en Configuración de interfaz de red, y cambia el valor IP de 127.0.0.1 por el de 127.0.0.2 Ahora tienes que volver a ejecutar nuevamente a dnscrypt-proxy en el terminal pero de la siguiente forma:

/usr/local/sbin/dnscrypt-proxy --daemonize --pidfile=/run/dnscrypt-proxy.pid --edns-payload-size=4096 –local-address=127.0.0.2

Y haces ENTER

Tienes que abrir otra vez una ventana de navegador y realizar nuevamente la comprobación con la dirección web de OpenDNS. Después de hacerlo, si pasas la prueba con éxito, tendrás que usar 127.0.0.2, pero si no te funciona, deberes de regresar al principio y repetir todo el proceso de instalación.


 
Como usar una configuración de dnscrypt-proxy permanente

Supongamos que todo ha salido bien al primero intento, es decir, que has pasado correctamente la prueba con la IP 127.0.0.1, entonces para hacer que DNSCrypt se ejecute de forma automática y al iniciar el sistema, hay que entrar el archivo /etc/rc.local y añadir las siguientes lineas.

Para el caso de que te funcione con la IP 127.0.0.1 debes añadir al archivo /etc/rc.local la siguiente linea

exec /usr/local/sbin/dnscrypt-proxy --daemonize --pidfile=/run/dnscrypt-proxy.pid --edns-payload-size=4096


Para el caso de que te funcione con la IP 127.0.0.2

exec /usr/local/sbin/dnscrypt-proxy --daemonize --pidfile=/run/dnscrypt-proxy.pid --edns-payload-size=4096 --local-address=127.0.0.2

En el terminal con root escribes lo siguiente.

root@sikandark:~# nano /etc/rc.local

En el terminal veras un archivo que antes de ser modificado tiene el siguiente aspecto:

#!/bin/sh -e
#
# rc.local
#
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will "exit 0" on success or any other
# value on error.
#
# In order to enable or disable this script just change the execution
# bits.
#
# By default this script does nothing.

exit 0

Bueno, pues en este arhivo, pegas una de las 2 líneas según corresponda la opcion que te funcione, justo al final pero antes de la línea: exit 0. Para que lo entienda, el archivo debe quedar del siguiente modo:

#!/bin/sh -e
#
# rc.local
#
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will "exit 0" on success or any other
# value on error.
#
# In order to enable or disable this script just change the execution
# bits.
#
# By default this script does nothing.

exec /usr/local/sbin/dnscrypt-proxy --daemonize --pidfile=/run/dnscrypt-proxy.pid --edns-payload-size=4096

exit 0

 
Usuarios de Windows7

Para los usuarios de Windows7, es posible usar OpenDNS sin demasiadas complicaciones simplemente configurando sus adaptadores de red, para que en vez de usar las DNS que os suministra vuestro proveedor de Internet, utiliceis estas dos, y estaréis navegando con el trafico protegido.

DNS-1      208.67.222.222
DNS-2      208.67.220.220


Bibliografía consultada para el articulo


https://use.opendns.com/
https://use.opendns.com/#win7
http://blog.desdelinux.net/opendns-servidor-dns-para-navegar-mas-rapido-y-seguro-en-internet/
http://unbound.net/documentation/howto_optimise.html
http://simonclausen.dk/2013/09/dnscrypt-autoinstaller/
http://es.wikipedia.org/wiki/Loopback
https://github.com/simonclausen/dnscrypt-autoinstall
https://github.com/jedisct1/dnscrypt-proxy/blob/master/README.markdown
https://github.com/jedisct1/libsodium
https://cloudns.com.au/
http://www.opennicproject.org/
http://dnscrypt.eu/
http://dc1.soltysiak.com/
https://es.wikipedia.org/wiki/Identificador_de_proceso
http://whatsmydns.net/

LinkWithin

Related Posts Plugin for WordPress, Blogger...