Información blog

Linux, tutoriales, noticias, sistemas, redes y seguridad informática, entre otras cosas.

miércoles, 2 de noviembre de 2016

Cómo concatenar varios proxys con proxychains

La privacidad y seguridad de nuestras conexiones es un asunto cada vez más demandado en la actualidad y uno de los aspectos más atractivos es el ocultamiento de nuestra dirección IP pública real... Muchas veces querremos que al conectarnos a un sitio, cuando éste revise sus logs vea una dirección ip que no sea la nuestra, para lo cual hoy en día se usan generalmente dos métodos: Uno de ellos es el famoso y polémico TOR, y otro sería el uso de uno o varios proxys. Puede que nos puedan parecer iguales, debido a que el objetivo final es ocultar nuestra IP, pero mientras que TOR usa el "encaminamiento cebolla" en sus conexiones, y usa la topología punto a punto, aquí usamos una red entre iguales pero haciendo que varios equipos enmascaren nuestra dirección IP pública.

mapa_mundo

Para entender mejor este concepto podemos plasmarlo con un par de imagenes que nos pueden resultar muy esclarecedoras. A modo muy, muy resumido podríamos decir que cuando nos conectamos a un servidor, lo que hacemos es conectarnos desde una IP pública (que sería la de nuestro router) a otra IP que pertenecería al servidor de destino. Es decir que haríamos algo parecido a esto:

Esquema_simple

Repito que esto está muy simplificado y que hay muchos más elementos de por medio: Routers, ISPs, DNSs... Pero a nivel teórico este esquema nos es suficiente para entender el concepto. La cuestión está en que al conectarnos al servidor directamente, los logs del servidor mostrarán que la conexión se ha realizado desde nuestra IP pública, cosa que dependiendo para qué prueba o acción, no nos interesa que sea así, más aún cuando nuestra IP muestra información tan valiosa cómo la geolocalización o incluso el navegador usado. Para evitar proporcionar esta información usaremos varios proxys para realizar varios enmascaramientos de IPs, lo que se traduciría en el siguiente esquema:


Diagrama_red_proxy

Este esquema vendría a significar lo siguiente:

  1. Desde la IP 10.1.185.10 nos dirigimos al proxy con IP 200.60.250.10.
  2. Desde el proxy con IP 200.60.250.10 nos conectaremos al proxy con IP 200.60.250.11; este nuevo proxy verá que la IP de origen de la conexión será 200.60.250.10.
  3. Una vez más desde el proxy con IP 200.60.250.11 nos conectaremos al proxy con IP 200.60.250.12; aquí la IP que verá el proxy será la 200.60.250.11.
  4. Por último nos conectamos a la IP 216.58.210.195, solo que éste verá que se han conectado desde la IP 200.60.250.12.

Gracias a esto tendremos varias "capas" de protección que dificultarán que sepan la IP real de origen, lo cual hace que el servidor final no tenga nuestra información real y evitando que pueda "jugar" con nuestra IP para cualquier "experimento". 

A sabiendas de las ventajas que nos ofrece el uso de varios proxys, usaremos una herramienta que nos facilitará el uso concatenado de éstos; esta herramienta se llama proxychains y si bien no está instalada por defecto en ningún equipo, instalarla es tan sencillo como escribir en la consola:

apt-get install proxychains

Con esto instalaríamos el paquete en cuestión, aunque obviamente no tendría configuración alguna... Dicha configuración se realizaría dentro del fichero /etc/proxychains.conf. Este fichero tiene dos conceptos muy importantes: El cómo tratar el listado de proxys, y la lista de proxys. Al hacer referencia al tratamiento del listado estaríamos hablando de cómo hacer la conexión a través de la lista de proxys. Hay tres tipos de tratamiento, y siempre tiene que haber solamente uno de ellos activo:


  • dynamic_chain: Se conecta al listado de proxys por orden, pero en caso de que uno de éstos estuviese offline, pasaría al siguiente. Por defecto está opción está comentada; es decir que comienza por el carácter #.
  • strict_chain: Funciona igual que dynamic_chain, con la diferencia de que aquí es necesario que todos los proxies estén online para que la conexión funcione. Es la opción habilitada por defecto si bien lo recomendable suele ser optar por usar dynamic_chain.
  • random_chain: En este caso el orden de conexión no importa pues selecciona el orden de conexión aleatoriamente.

Al querer nosotros tener la opción dynamic_chain habilitada y strict_chain deshabilitada, tendríamos que quitar el caracter # de la línea dynamic_chain y agregar dicho carácter al comienzo de la línea strict_chain, tal y como muestra la captura de a continuación:


dynamic_chain

Obviamente faltaría la parte más importante, que sería el listado de proxys; una sección que comienza con la nomenclatura: [ProxyList]. Cada línea del listado tendría esta estructura:

Tipo IP puerto [usuario contraseña]

El motivo por el cual los últimos dos campos están puestos entre [ ] es debido a que son opcionales... Algunos proxys requieren contraseña, si bien lo normal es que no; es por eso que estos dos campos no son obligatorios. Para conocer todos estos datos podemos consultar por Internet los proxys disponibles hoy en día; por ejemplo hay una página muy completa en Español que te da toda la información de éstos, incluyendo el tipo de conexión; esta página se llama: https://incloak.es/proxy-list/. Obviamente esto es una referencia y hay muchísimas páginas de las que obtener listados de proxys.

Aquí simplemente tendremos que seleccionar los proxys que queremos añadir y los pondremos dentro de nuestra sección ProxyList. Por ejemplo nosotros añadiremos 2:

  1. [ProxyList]
  2. http    134.213.148.8   3124
  3. http    88.208.238.110  3128

Ahora únicamente habría que ejecutar el comando que queramos precedido por el comando proxychains; gracias al cual haríamos que la interacción de red realizada por dicho comando se realice mediante los proxys puestos en la lista. Varios de estos comandos que pueden seguir al comando proxychains serían: firefox, curl o wget. En caso de tener problemas con los proxys que hemos añadido, simplemente habría que buscar otros hasta encontrar los que mejor se adapten a nuestras circunstancias y/o geolocalización.

Con esto tendríamos una conexión mucho más segura que nos ocultaría nuestra dirección de origen al usuario final. Tened en cuenta que esta técnica está diseñada para fines benignos y que la mayoría de los proxys recogen y analizan las conexiones, con lo que pensad en esto como una técnica de protección y nada más.

Por último, simplemente recomendaros que escojáis con prudencia los proxys que queráis utilizar y que tratéis de buscarlos en páginas de confianza, pues en caso contrario, quien sabe a quien le podríais estar dando la información de vuestras conexiones.

Espero que os haya resultado útil.

Saludos cordiales.

No hay comentarios :

Publicar un comentario