Configure global proxy on linux

Proxy portada

En sistemas operativos GNU/Linux cuando nos encontramos detr谩s de un servidor proxy, puede volverse un poco engorroso utilizar programas que no tengan configuraci贸n propia para proxy o comandos como apt-get, o simplemente lo queremos configurar de forma global. Muchos de las distribuciones GNU/Linux usan diferentes manejadores de paquetes los cuales se configuran de formas distintas, adem谩s existen muchos programas que necesitan sus especificaciones para configurar la salida a Internet a trav茅s de un servidor proxy. Todo este proceso se vuelve muy engorroso de hacer en ambientes donde uses un proxy con autenticaci贸n y est谩 cambien cada cierto tiempo o que uses una laptop donde constantemente puedes conectarte a redes donde no se use proxy. Imaginen cambiar toda la configuraci贸n cada vez que cambies de red.

Proxy Schema

A continuaci贸n les dejo algunos ejemplos de como configurar proxy en algunas distros GNU/Linux

Proxy Global

Configurar proxy en la terminal de forma temporal

Si queremos usar un proxy de manera puntual, podemos realizar el siguiente paso:

export http_proxy=http://username:password@proxyserver:puerto
export https_proxy=$http_proxy

Configuraci贸n de variables de entorno para distribuciones de la familia Debian|Ubuntu:

Editar el fichero /etc/environment con tu editor de texto preferido.

sudo vim /etc/environment

Agregamos las siguientes l铆neas al archivo, debes duplicarlas en may煤scula y min煤scula porque(desafortunadamente) algunos programas solo buscan una o la otra:

http_proxy http://username:password@proxyserver:puerto
https_proxy http://username:password@proxyserver:puerto
ftp_proxy http://username:password@proxyserver:puerto
no_proxy localhost,127.0.0.1,localaddress,.localdomain.com
#Duplicadas en may煤sculas
HTTP_PROXY http://username:password@proxyserver:puerto
HTTPS_PROXY http://username:password@proxyserver:puerto
FTP_PROXY http://username:password@proxyserver:puerto
NO_PROXY localhost,127.0.0.1,localaddress,.localdomain.com

Configuraci贸n de variables de entorno para distribuciones de la familia RedHat|Fedora|Centos:

sudo vim /etc/profile.d/proxy.sh

Modificamos los par谩metros necesarios

export http_proxy="http://username:password@proxyserver:puerto/"
export https_proxy="http://username:password@proxyserver:puerto/"
export ftp_proxy="http://username:password@proxyserver:puerto/"

Configuraci贸n de proxy para apt-get, apt, aptitude:

Creamos o editamos archivo /etc/apt/apt.conf

sudo vim /etc/apt/apt.conf

Agregamos las siguientes l铆neas:

Acquire::http::Proxy "http://username:password@proxyserver:puerto";
Acquire::https::Proxy "http://username:password@proxyserver:puerto";
Acquire::ftp::Proxy "http://username:password@proxyserver:puerto";
#En caso de tener un repo local para el que no necesitemos proxy
Acquire::http::Proxy {
repositorio.localdomain.com DIRECT;
repositorio2.localdomain.com DIRECT;
};

Configuraci贸n de proxy para yum:

Editamos el archivo /etc/yum.conf

# Indicamos direcci贸n m谩s puerto del proxy
proxy=http://proxyserver:puerto
# Si el proxy funciona con usuario y contrase帽a
proxy_username=usuario
proxy_password=contrase帽a

Configuraci贸n de proxy para pacman:

Editamos el fichero /etc/pacman.conf y debemos descomentar XferCommand de la siguiente manera:

XferCommand = /usr/bin/wget --passive-ftp -c -O %o %u
Pacman Config

Guardamos los cambios y procedemos a editar el fichero de configuraci贸n para wget, herramienta utilizada para la descarga de paquetes.

sudo vim /etc/wgetrc

Editamos el archivo de configuraci贸n /etc/wgetrc buscamos las siguientes l铆neas y las descomentamos o agregamos al final del archivo.

https_proxy = http://username:password@proxyserver:puerto
http_proxy = http://username:password@proxyserver:puerto
ftp_proxy = http://username:password@proxyserver:puerto
use_proxy = on

Configuraci贸n de proxy para nodejs(npm)

npm config set proxy http://username:password@proxyserver:puerto
npm config set https-proxy http://username:password@proxyserver:puerto

Configurar proxy para git

git config --global http.proxy http//proxyserver:puerto
git config --global https.proxy https//proxyserver:puerto
##En caso de tener conexi贸n directa y necesitemos quitarle la configuraci贸n de proxy a git
git config --global --unset http.proxy
git config --global --unset https.proxy

Como se puede apreciar es muy complejo mantener constantemente la configuraci贸n de un proxy en tu pc, pero por suerte existen otras opciones que te permiten configurar un proxy de forma global a todo el sistema operativo. En sistemas como Windows o MacOS existen herramientas como Proxifier, ProxyCap entre otras que facilitan la salida a internet a trav茅s de un proxy por otra parte sistemas operativos GNU/Linux tenemos alternativas a estos programas como las que listo a continuaci贸n.

Redsock

Redsock es una herramienta que permite redirigir cualquier conexi贸n TCP a SOCKS o proxy HTTPS usando su firewall, por lo que la redirecci贸n puede ser en todo el sistema o en toda la red. Esta herramienta es muy 煤til porque nos permite con un solo archivo de configuraci贸n poder usar la conexi贸n a trav茅s del proxy en todo el sistema operativo.

Paquetes para las distintas distribuciones linux


Compilaci贸n manual de redsock

Para compilar redsock necesitamos clonar su repositorio en GitHub https://github.com/darkk/redsocks y seguir las instrucciones en el README.md. Es necesario que en nuestro sistema est茅 instalado libevent-2.0.x, al igual que los compiladores gcc y clang. La compilaci贸n es tan f谩cil como ejecutar make en el directorio ra铆z del proyecto.

Ejecutar redsock

Ejecutar redsock depende mucho de la distribuci贸n que est茅s usando y de la forma en la que el paquete instal贸 redsock. El programa tiene las siguientes opciones de l铆nea de comando:

  • -c especifica el camino al archivo de configuraci贸n (./redsocks.conf es el usado por defecto)
  • -t esta opci贸n verifica la sintaxis del archivo de configuraci贸n
  • -p establece un archivo para escribir el getpid() donde se especifican las siguientes se帽ales: SIGUSR1 vuelca la lista de clientes conectados al registro, SIGTERM y SIGINT terminan el demonio, se cierran todas las conexiones activas.

Puedes ver un ejemplo del archivo de configuraci贸n en redsocks.conf.example.

Ejemplo de iptables

Tienes que construir iptables con seguimiento de conexi贸n y objetivo REDIRECT.

  # Create new chain
  root# iptables -t nat -N REDSOCKS
  
  # Ignore LANs and some other reserved addresses.
  # See http://en.wikipedia.org/wiki/Reserved_IP_addresses#Reserved_IPv4_addresses
  # and http://tools.ietf.org/html/rfc5735 for full list of reserved networks.
  root# iptables -t nat -A REDSOCKS -d 0.0.0.0/8 -j RETURN
  root# iptables -t nat -A REDSOCKS -d 10.0.0.0/8 -j RETURN
  root# iptables -t nat -A REDSOCKS -d 100.64.0.0/10 -j RETURN
  root# iptables -t nat -A REDSOCKS -d 127.0.0.0/8 -j RETURN
  root# iptables -t nat -A REDSOCKS -d 169.254.0.0/16 -j RETURN
  root# iptables -t nat -A REDSOCKS -d 172.16.0.0/12 -j RETURN
  root# iptables -t nat -A REDSOCKS -d 192.168.0.0/16 -j RETURN
  root# iptables -t nat -A REDSOCKS -d 198.18.0.0/15 -j RETURN
  root# iptables -t nat -A REDSOCKS -d 224.0.0.0/4 -j RETURN
  root# iptables -t nat -A REDSOCKS -d 240.0.0.0/4 -j RETURN
  
  # Anything else should be redirected to port 12345
  root# iptables -t nat -A REDSOCKS -p tcp -j REDIRECT --to-ports 12345
  
  # Any tcp connection made by `luser' should be redirected.
  root# iptables -t nat -A OUTPUT -p tcp -m owner --uid-owner luser -j REDSOCKS
  
  # You can also control that in more precise way using `gid-owner` from
  # iptables.
  root# groupadd socksified
  root# usermod --append --groups socksified luser
  root# iptables -t nat -A OUTPUT -p tcp -m owner --gid-owner socksified -j REDSOCKS
  
  # Now you can launch your specific application with GID `socksified` and it
  # will be... socksified. See following commands (numbers may vary).
  # Note: you may have to relogin to apply `usermod` changes.
  luser$ id
  uid=1000(luser) gid=1000(luser) groups=1000(luser),1001(socksified)
  luser$ sg socksified -c id
  uid=1000(luser) gid=1001(socksified) groups=1000(luser),1001(socksified)
  luser$ sg socksified -c "firefox"
  
  # If you want to configure socksifying router, you should look at
  # doc/iptables-packet-flow.png, doc/iptables-packet-flow-ng.png and
  # https://en.wikipedia.org/wiki/File:Netfilter-packet-flow.svg
  # Note, you should have proper `local_ip' value to get external packets with
  # redsocks, default 127.0.0.1 will not go. See iptables(8) manpage regarding
  # REDIRECT target for details.
  # Depending on your network configuration iptables conf. may be as easy as:
  root# iptables -t nat -A PREROUTING --in-interface eth_int -p tcp -j REDSOCKS

Redsock es una de mis herramientas favoritas para configurar todo mi tr谩fico a internet a trav茅s de un proxy usando el protocolo TCP. A continuaci贸n les muestro otra alternativa m谩s reciente que resulta muy interesante y de f谩cil configuraci贸n.

Proxifier-For-Linux

Proxifier-For-Linux es una herramienta que act煤a como un intermediario entre el servidor proxy y los programas clientes que necesiten acceso a internet. Proxifier trabaja a trav茅s de los servidores proxy en nombre de los otros programas. Proxifier act煤a como un punto global para configurar las reglas de proxy, que se aplicar谩n a todos los programas del sistema. Como mencion茅 anteriormente es un proyecto nuevo por lo que actualmente solo tiene soporte para proxies http.

Como se explica en el repositorio oficial de Proxifier-for-linux nuestro sistema operativo debe contar con las siguientes dependencias

Dependencias

A continuaci贸n se muestra la lista de dependencias requeridas para compilar y ejecutar Proxifier, asi como la posible instalaci贸n en dependencia del sistema operativo que uses.

Instalar las dependencias

Para comprobar si tienes ya las dependencias instaladas puedes usar el comando which <nombre del paquete>. Ejemplo which autoconf y si te devuelve la ruta es que ya esa dependencia est谩 instalada

Descargar Proxifier

Obt茅n la 煤ltima versi贸n estable de Proxifier clonando el repositorio de GitHub.

$ git clone https://github.com/m0hithreddy/Proxifier-For-Linux.git && cd Proxifier-For-Linux

Construir e Instalar

Despu茅s de instalar todas las dependencias, obt茅n el c贸digo fuente de Proxifier y dentro del directorio donde est谩 el c贸digo ejecuta los siguientes comandos:

$ autoreconf -vfi
$ ./configure
$ make all
$ sudo make uninstall
$ sudo make install

Como usar Proxifier

El servicio de Proxifier se puede habilitar ejecutando el comando:

$ sudo systemctl daemon-reload # Reload the service units
$ sudo systemctl start proxifier

Para m谩s informaci贸n de Proxifier puedes consultar la ayuda ejecutando el comando $ man proxifier. El archivo de configuraci贸n se puede encontrar en la ruta /usr/local/etc/proxifier.conf donde puedes especificar la configuraci贸n de tu proxy.

La siguiente herramienta que te quiero mostrar es Proxychains

Proxychains

Proxychains-ng es un servidor proxy que soporta los protocolos de internet HTTPs, SOCKS4 y SOCKS5 y funciona en plataformas basadas en Unix. Permite que cualquier conexi贸n TCP hecha por un programa siga una serie de proxies(de los protocolos antes mencionados) hasta su destino. La lista de proxies as铆 como la estrategia de selecci贸n de los proxies se definen con anterioridad.

Instalar proxychains

Proxychains est谩 disponible con pkgsrc para todos los que lo usen en Linux, NetBSD, FreeBSD, OpenBSD, DragonFlyBSD o Mac OS X. Solo necesita instalar pkgsrc-wip y ejecutar make install en un el directorio wip/proxychains

Instalar proxychains desde el c贸digo fuente

Clonar el c贸digo fuente de GitHub y ejecutar los siguientes comando:

git clone https://github.com/haad/proxychains.git && cd proxychains
# se necesita un compilador de C, preferiblemente gcc
./configure
make
sudo make install

Paquetes para las distintas distribuciones linux


Configuraci贸n

Proxychains busca la configuraci贸n en el siguiente orden:

  • Puerto proxy SOCKS5 en la variable de entorno $ {PROXYCHAINS_SOCKS5} (si se establece, no se buscar谩n m谩s configuraciones)

  • Archivo listado en la variable de entorno $ {PROXYCHAINS_CONF_FILE} o proporcionado como un argumento -f para el script o binario de proxychains.

  • ./proxychains.conf

  • $(HOME)/.proxychains/proxychains.conf

  • /etc/proxychains.conf

Ver m谩s de la configuraci贸n en el archivo /etc/proxychains.conf

Ejemplo de como configurar varios proxies

Al final del fichero /etc/proxychains.conf se encuentra la lista donde podemos agregar nuestros proxies. Las estrategias de selecci贸n de proxies var铆an entre dynamic_chain, strict_chain, round_robin_chain, random_chain y solo uno puede estar descomentado.

  • dynamic_chain: Din谩mico: cada conexi贸n se realizar谩 a trav茅s de proxies encadenados, todos los proxies encadenados en el orden en que aparecen en la lista, al menos un proxy debe estar en l铆nea para jugar en cadena (se omiten los proxies muertos) de lo contrario, EINTR se devuelve a la aplicaci贸n

  • strict_chain: Estricto: cada conexi贸n se realizar谩 a trav茅s de proxies encadenados, todos los proxies encadenados en el orden en que aparecen en la lista, todos los proxies deben estar en l铆nea para jugar en cadena; de lo contrario, EINTR se devuelve a la aplicaci贸n

  • round_robin_chain: Round Robin: cada conexi贸n se realizar谩 a trav茅s de proxies encadenados de longitud chain_len, todos los proxies encadenados en el orden en que aparecen en la lista, al menos un proxy debe estar en l铆nea para jugar en cadena (se omiten los proxies muertos). el inicio de la cadena de proxy actual es el proxy despu茅s del 煤ltimo proxy en la cadena de proxy invocada anteriormente. Si se alcanza el final de la cadena de proxy mientras se buscan proxies, comience de nuevo desde el principio. De lo contrario, EINTR se devuelve a la aplicaci贸n. Esta sem谩ntica no est谩 garantizada en un entorno multiproceso.

  • random_chain: Aleatorio: cada conexi贸n se realizar谩 mediante un proxy aleatorio (o una cadena de proxy, consulte chain_len) de la lista.

    [ProxyList]

    add proxy here …

    meanwile

    defaults set to “tor”

    socks4 127.0.0.1 9050 #psiphon proxy http 127.0.0.1 52525 socks5 127.0.0.1 42552 #Otro Proxy http 192.168.1.11 8080 user password #Mobile proxy http 192.168.44.244 3128 user password

Ejemplos de uso

Ejecutar proxychains <programa a ejecutar a trav茅s de un proxy>

$ proxychains telnet targethost.com

En este ejemplo se ejecuta el programa telnet a trav茅s de un proxy ( o una cadena de proxies ) especificada por proxychains.con in this example it will run telnet through proxy(or chained proxies) specified by proxychains.conf

Proxychains nos da una gran ventaja al poder encadenar muchos proxies a la vez lo que se usa mucho en ciberseguridad para ocultar la identidad de las peticiones realizadas. Una de las desventajas que tiene proxychains es que se ejecuta en la consola lo cual resulta inc贸modo cuando usamos programas con interfaz gr谩fica.

El siguiente en la lista es uno de mis favoritos pues es una VPN que permite configurar un proxy global para todo el sistema operativo as铆 como montar un firewall en la pc.

Windscribe

Windscribe es un conjunto de herramientas que permiten bloquear los seguidores de anuncios y los beacons web, restaurar el acceso a contenido bloqueado y ayudarle a proteger su privacidad en l铆nea. Hay dos componentes: la aplicaci贸n de escritorio VPN (Windows, MacOS y Linux) y la extensi贸n del navegador (Chrome, Edge, Firefox, Safari, …)

La aplicaci贸n de escritorio es un cliente VPN (Virtual Private Network). Crea un t煤nel encriptado desde tu computadora a los servidores de winscribe, y toda tu actividad se env铆a a trav茅s del t煤nel. Esto tiene dos ventajas:

  1. La direcci贸n IP de su proveedor de servicios de Internet (ISP) est谩 enmascarada, por lo que cualquier sitio web que visite o cualquier aplicaci贸n que utilice (Skype, proveedores de correo electr贸nico, BitTorrent, etc.) ver谩 nuestra direcci贸n IP compartida por miles de personas.
  2. Su proveedor de servicios de Internet no puede ver lo que hace en l铆nea. Esto es mucho m谩s importante de lo que piensas.

Lo primero que se tiene que hacer es crear una cuenta en Windscribe registr谩ndose aqu铆. Windscribe nos da 2GB de consumo mensual gratis, pero si confirmamos nuestro correo electr贸nico este aumenta 5GB, adem谩s puedes aumentar hasta 15GB mensuales si creas un post en twitter dando en el bot贸n Tweet4Data en la configuraci贸n de tu cuenta.

More Data

Instalar Windscribe

Despu茅s de registrarse se descarga el cliente de escritorio o la extensi贸n para su navegador favorito en la sesi贸n de Descargas. Seguir las instrucciones del enlace de descarga en dependencia del sistema operativo que uses.

Configuraci贸n del cliente de Windscribe para Linux

Lo primero que tenemos que hacer es arrancar el servicio de windscribe para ello ejecutamos el comando:

sudo systemctl start windscribe

Una vez este corriendo el servicio de windscribe debemos configurar el proxy ejecutando el comando windscribe proxy --host <direccion del proxy> --port <puerto> --user <usuario> --password <contrase帽a>:

windscribe proxy --host 19.18.4.54 --port 3128 --user acosta --password "super password"
windscribe proxy on

Con los comandos anteriores configuramos y activamos windscribe para que use nuestro proxy. Ahora cuando para conectar toda las aplicaciones salgan a internet a trav茅s de Windscribe ejecutamos el comando:

windscribe connect best # Nos conecta al servidor de windscribe con mejor rendimiento

Para consultar la ayuda de windscribe podemos ejecutar el comando windscribe --help

Windscribe

Estas son algunas de las opciones que existen para configurar la salida a internet a trav茅s de un proxy en sistemas operativos GNU-Linux. De todas las variantes mostradas en este art铆culo mi favorita sin dudas es windscribe por todas las facilidades que ofrece. Espero que les sirva de ayuda en caso que quieran tener configurado de forma global un proxy en linux.

No matching posts found. You can use wildcards and search only in titles, e.g. title:iot
Loading search index, please wait...
Search index failed to download 馃槩