Proxy transparente en Debian: The revolution is here!!

Con todo este rollo de los blackouts informativos que se están generando en Venezuela, no sería de extrañar que oficialicen lo que ya han venido haciendo por partes los ISPs: Bloquear los dominios que les son incómodos.

Entonces, para evitarme presentes y futuros dolores de cabeza por esa causa, me decidí a instalar un proxy transparente para usarlo como pasarela. De este modo, mi salida es desde un servidor fuera del país y paso «colado» los bloqueos.

Parte I: El Mise en Place
Necesitamos:
-Un VPS, hay varias opciones. Googleando un poco puedes conseguir unas a precios bastante accesibles. El problema es que se pagan en dólares. Entonces, hay opciones como host1free que te dan un vps muy reducido de forma gratuita. Lo malo de esto es que debes esperar un tiempo (que puede extenderse a un par de meses, como en mi caso) a que lo activen.
-Squid, del lado del servidor
-BIND (Opcional), para poder tener resoluciones reversas y poder saltarse algunos proxy scanners que consigas por allí.
-El cliente donde vas a configurar la navegación anónima

En este caso, uso un vps con debian estable, y configuro tanto firefox como chrome/chromium

Parte II: La preparación
A) Del lado del server
-Instala squid con

# apt-get install squid3 squid3-common -y

-Busca el archivo de autenticación de squid con

# dpkg -L squid3 | grep -w ncsa_auth

Debería regresar algo como esto:

/usr/lib/squid3/ncsa_auth

Toma nota de ese path, porque debes modificar el squid.conf con él

-Respalda squid.conf y edítalo

cp /etc/squid3/squid.conf /etc/squid3/squid.conf.bak
nano /etc/squid3/squid.conf

Pastea lo siguiente:

auth_param basic program /usr/lib/squid3/ncsa_auth /etc/squid3/passwd
auth_param basic children 5
auth_param basic realm please login to the squid server?
auth_param basic credentialsttl 2 hours
auth_param basic casesensitive off

acl ncsa_users proxy_auth REQUIRED
http_access allow ncsa_users
acl manager proto cache_object
acl localhost src 127.0.0.1/32 ::1
acl to_localhost dst 127.0.0.0/8 0.0.0.0/32 ::1
acl localnet src 10.0.0.0/8 # RFC1918 possible internal network
acl localnet src 172.16.0.0/12 # RFC1918 possible internal network
acl localnet src 192.168.0.0/16 # RFC1918 possible internal network
acl localnet src fc00::/7 # RFC 4193 local private network range
acl localnet src fe80::/10 # RFC 4291 link-local (directly plugged) machines
acl SSL_ports port 443
acl Safe_ports port 80 # http
acl Safe_ports port 21 # ftp
acl Safe_ports port 443 # https
acl Safe_ports port 70 # gopher
acl Safe_ports port 210 # wais
acl Safe_ports port 1025-65535 # unregistered ports
acl Safe_ports port 280 # http-mgmt
acl Safe_ports port 488 # gss-http
acl Safe_ports port 591 # filemaker
acl Safe_ports port 777 # multiling http
acl Safe_ports port 901 # SWAT
acl CONNECT method CONNECT
http_access allow manager localhost
http_access deny manager
http_access deny !Safe_ports
http_access deny CONNECT !SSL_ports
http_access allow localnet
http_access allow localhost
http_access allow localhost
http_access deny all
http_port 2222
coredump_dir /var/cache/squid
refresh_pattern ^ftp: 1440 20% 10080
refresh_pattern ^gopher: 1440 0% 1440
refresh_pattern -i (/cgi-bin/|\?) 0 0% 0
refresh_pattern . 0 20% 4320

icp_access allow localnet
icp_access deny all
acl ip1 myip XXX.XX.XX.XXX
tcp_outgoing_address XXX.XX.XX.XXX ip1
cache_mgr example@example.net
cache_mem 64 MB
visible_hostname example.com
maximum_object_size 10 MB

forwarded_for off
request_header_access Allow allow all
request_header_access Authorization allow all
request_header_access WWW-Authenticate allow all
request_header_access Proxy-Authorization allow all
request_header_access Proxy-Authenticate allow all
request_header_access Cache-Control allow all
request_header_access Content-Encoding allow all
request_header_access Content-Length allow all
request_header_access Content-Type allow all
request_header_access Date allow all
request_header_access Expires allow all
request_header_access Host allow all
request_header_access If-Modified-Since allow all
request_header_access Last-Modified allow all
request_header_access Location allow all
request_header_access Pragma allow all
request_header_access Accept allow all
request_header_access Accept-Charset allow all
request_header_access Accept-Encoding allow all
request_header_access Accept-Language allow all
request_header_access Content-Language allow all
request_header_access Mime-Version allow all
request_header_access Retry-After allow all
request_header_access Title allow all
request_header_access Connection allow all
request_header_access Proxy-Connection allow all
request_header_access User-Agent allow all
request_header_access Cookie allow all
request_header_access All deny all

shutdown_lifetime 3 seconds

Cambia al path que conseguiste anteriormente. Debe quedar así:

auth_param basic program /usr/lib/squid3/ncsa_auth /etc/squid3/passwd

Cambia XX.XXX.XXX.XX a tu ip. Puedes usar whatsmyip.org para descubrir cuál es.

-Crea una clave para acceder al proxy

# htpasswd -c /etc/squid3/passwd tu_usuario

-Reinicia Squid

# service squid3 restart

B) Del lado del cliente:
Si usas Firefox, en las preferencias está la posibilidad de cambiar el proxy.

Si usas Chrome/Chromium, hay dos posibilidades:
-Tu sistema operativo permite configurar via GUI. O sea, usas windows, macos, o algún entorno de escritorio en Linux como xfce4, gnome o kde. En ese caso, úsalos.
-Usas openbox, lxde o algún otro entorno en linux. En ese caso, modifica /usr/share/applications/[chrome/chromium].desktop. Y modificas la línea de exec a:

Exec=/usr/bin/chromium --proxy-server="servidor:puerto"

Donde servidor es el ip de tu servidor y el puerto es el 2222

Happy proxying.

Fuentes:

Install and configure private anonymous proxy server using Squid in Debian 6


http://blog.desdelinux.net/usar-proxy-en-chromium-chrome/

Publicada en SL

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *