Crear un proxy totalmente anónimo con squid


Dibujo antiguo de calamar gigante Squid es una de las herramientas mas conocidas para hacer de una máquina Linux un completo proxy. Pero puede ser un quebradero de cabeza el ir mirando que cabeceras envia y cuales no dependiendo de la configuración que le demos. Esta configuración está pensada para poder poner las cabeceras opcionales desde el cliente, pero que el servidor proxy Squid no altere las cabeceras el mismo y se delate.

Lo primero es decir que la versión que tenia Squid cuando se realizó esta configuración era la siquiente: Squid 3.1.20


Comprobación de las cabeceras de los proxys

Lo siguiente es mostrar que claramente el servidor devuelve unas cabeceras mínimas enviando un curl. Las cabeceras que envía un navegador Firefox serían algo parecido a esto:

GET / HTTP/1.1
Host: laweb.com
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:35.0) Gecko/20100101 Firefox/35.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: es-ES,es;q=0.8,en-US;q=0.5,en;q=0.3
Accept-Encoding: gzip, deflate
Connection: keep-alive
Cache-Control: max-age=0

En el caso de que el proxy active las cabeceras Via, X-Forwarder-For,Cache-Control y demás puede que la web de destino se de cuenta de que navegas con proxy.

Si quieres comprobar las cabeceras de tu proxy squid o de un proxy cualquiera puedes usar este script /script-saca-la-ip-real-su-geolocalizacion-y-los-headers en un servidor web. Puede funcionar en un webhosting gratuito también.

La configuración

La configuración de Squid ( /etc/squid3/squid3.conf ) seria la siguiente.

forwarded_for transparent             #Dejas las cabeceras de Forwarded a elección del cliente. Si el cliente no las pone Squid no las añade.
via off                               #Deshabilitada la cabecera Via.

client_persistent_connections off
server_persistent_connections off

acl SSL_ports port 443
acl Safe_ports port 80          # http
acl Safe_ports port 21          # ftp
acl Safe_ports port 443         #https

acl permittedips src 127.0.0.1    #Ip localhost permitida para conexiones al proxy
acl permittedips src 1.1.1.1      #Cualquier otra ip que necesites permitida para conexiones al proxy
http_access allow permittedips

http_port 8888                    #Puerto de proxy

cache_store_log /var/log/squid3/store.log
cache_log /var/log/squid3/cache.log
access_log /var/log/squid3/access.log