De proxy en proxy y navego porque me toca
Autor: DDiego (ddiegoATdisidents.org)
Temática: Redes
Plataforma: Linux/Windows
Fecha: 14/06/2009
Licencia: Este documento es propiedad de Disidents, su distribución/modificación siempre esta limitada a la autorización explicita del autor o de la organización. En general siempre que no se modifique el contenido ni se elimine esta cabecera la distribución esta autorizada, salvo que Disidents o el autor indiquen lo contrario.
Introducción.
En el siguiente documento veremos como saltarnos un proxy que habremos configurado primero, haciendo tunneling dinámico. También veremos como intentar evitarlo desde el punto del vista del administrador.
Configurando nuestro proxy “squid”.
Voy a explicar como configurar de forma básica, este servidor proxy lo usaremos para hacer pruebas. El sistema donde estara hospedado el proxy en este caso sera un vector linux http://vectorlinux.com/ , os podeis bajar el proxy de http://www.squid-cache.org squid, podeís seguir el documento de instalación que viene incluido en el paquete, una vez instalado pasamos directamente a la configuración.
Editamos / usr / local / squid / etc / squid.conf
y modificamos o creamos las siguientes lineas
http_port 8080
cache_mem 8 MB
cache_dir ufs /var/spool/squid 100 16 256 #tamaño que deseamos uqe tenga la cache
# “ufs” is the old well-known Squid storage format that has #always been there.
# 100 megas el numero de megas reservado para la cache
# 16 es el numero de subdirectorios de primer nivel que seran #creados bajo el dentro del directorio squid, 16 por #defecto
# 256 es el numero de subdirectorios de segundo nivel que #seran creados dentro de los subdirectorios de primer #nivel
# por defecto 256
access_log /usr/local/squid/var/logs/access.log squid # Podriamos meterlos dentro de /var/log/squid # eso a gusto de cada uno
cache_log /usr/local/squid/var/logs/cache.log
cache_store_log /usr/local/squid/var/logs/store.log
#creamos acls
acl mi_lan src 192.168.16.0/24 #Permitimos solo el acceso a nuestra red:
#Si pusieramos direcciones de equipos la mascara es 32 no 24.
#restriccion de acceso a páginas y contenido
acl webprohibidas url_regex disidents google
#Insertamos nuestras reglas
http_access allow mi_lan !webprohibidas # tambien podriamos poner un http_access deny # webprohibidas
http_access allow localhost
http_access deny all
Comprueba que esten creados los directorios cache y log, con permisos para poder escribir.
# / usr / local / squid / sbin / squid -z
2009/04/27 03:12:25| Creating Swap Directories
2009/04/27 03:12:25| / usr / local / squid / var / cache exists
2009/04/27 03:12:25| / usr / local / squid / var / cache / 00 exists
2009/04/27 03:12:25| Making directories in / usr / local / squid / var / cache / 00
2009/04/27 03:12:25| / usr / local / squid / var / cache / 01 exists
2009/04/27 03:12:25| Making directories in / usr / local / squid / var / cache / 01
2009/04/27 03:12:25| / usr / local / squid / var / cache / 02 exists
2009/04/27 03:12:25| Making directories in / usr / local / squid / var / cache / 02
2009/04/27 03:12:25| / usr / local / squid / var / cache / 03 exists
2009/04/27 03:12:25| Making directories in / usr / local / squid / var / cache / 03
2009/04/27 03:12:25| / usr / local / squid / var / cache / 04 exists
2009/04/27 03:12:2| Making directories in / usr / local / squid / var / cache / 04
2009/04/27 03:12:25| / usr / local / squid / var / cache / 05 exists
2009/04/27 03:12:25| Making directories in / usr / local / squid / var / cache / 05
2009/04/27 03:12:25| / usr / local / squid / var / cache / 06 exists
2009/04/27 03:12:25| Making directories in / usr / local / squid / var / cache / 06
2009/04/27 03:12:25| / usr / local / squid / var / cache / 07 exists
2009/04/27 03:12:25| Making directories in / usr / local / squid / var / cache / 07
2009/04/27 03:12:25| / usr / local / squid / var / cache / 08 exists
2009/04/27 03:12:25| Making directories in / usr / local / squid / var / cache / 08
2009/04/27 03:12:25| / usr / local / squid / var / cache / 09 exists
2009/04/27 03:12:25| Making directories in / usr / local / squid / var / cache / 09
2009/04/27 03:12:25| / usr / local / squid / var / cache / 0A exists
2009/04/27 03:12:25| Making directories in / usr / local / squid / var / cache / 0A
2009/04/27 03:12:25| / usr / local / squid / var / cache / 0B exists
2009/04/27 03:12:25| Making directories in / usr / local / squid / var / cache / 0B
2009/04/27 03:12:25| / usr / local / squid / var / cache / 0C exists
2009/04/27 03:12:25| Making directories in / usr / local / squid / var / cache / 0C
2009/04/27 03:12:25| / usr / local / squid / var / cache / 0D exists
2009/04/27 03:12:25| Making directories in / usr / local / squid / var / cache / 0D
2009/04/27 03:12:25| / usr / local / squid / var / cache / 0E exists
2009/04/27 03:12:25| Making directories in / usr / local / squid / var / cache / 0E
2009/04/27 03:12:25| / usr / local / squid / var / cache / 0F exists
2009/04/27 03:12:25| Making directories in / usr / local / squid / var / cache / 0F
Si queremos, autenticación necesitamos el modulo ncsa_auth, pero compruebo que no esta instalado, entonces vamos a las fuentes:
cd squid-3.0.STABLE14 / helpers / basic_auth / / CSA
# make
# make install
# ls
Makefile Makefile.in crypt_md5.h ncsa_auth* ncsa_auth.c
Makefile.am crypt_md5.c crypt_md5.o ncsa_auth.8 ncsa_auth.o
squidproxy: / / tmp / squid-3.0.STABLE14 / helpers / basic_auth / NCSA
LE14 / helpers / basic_auth / NCSA
# cp ncsa_auth / usr / sbin /
# ln -s / usr / local / squid / libexec / ncsa_auth / usr / sbin / ncsa_auth
ln: creating symbolic link ` / usr / sbin / ncsa_auth’: File exists
Creando usuarios: htpasswd viene con apache
# htpasswd -c / usr / local / squid / etc / passwords ddiego
New password:
Re-type new password:
Adding password for user ddiego
Ahora podemos ir a squid.conf y buscar auth_param_basic o ncsa
quedaria así:
auth_param basic program / usr / local / squid / libexec / ncsa_auth / usr / local / squid / etc / passwords
agregamos la siguiente acl:
acl mispass proxy_auth REQUIRED
y tambien debemos modificar la regla:
http_access allow mi_lan mispass !web_prohibidas
si queremos evitar bajar mp3 avi mpeg
acl nodescargas url path_regex \.mp3 \.avi \.mpeg
Restringir horarios
acl diahora time SMTWHFA 9:00-15:01
un día en concreto
acl martes time T 8:00-10:00
entonces la regla quedaria tal que asi y ademas prohibiriamos los martes:
http_access allow mi_lan mispass !web_prohibidas !martes
Podemos iniciar squid proxy:
/usr / local / squid / sbin / squid
Comprobamos que esta escuchando:
# netstat -an | grep 8080
tcp 0 0 0.0.0.0:8080 0.0.0.0:* LISTEN
Parte cliente.
Bueno, ya tenemos configurado el proxy, ahora solo hay que configurarlo en el navegador del cliente, vemos que puede navegar sin problema pero también vemos que al intentar acceder a algunas paginas nos sale un error parecido al siguiente:
Esto se debe a la acl que hemos puesto anteriormente en el squid:
acl webprohibidas url_regex disidents google
En el access_log de squid veremos lo siguiente:
1240825278.034 1 192.168.1.51 TCP_DENIED / 403 2119 GET http: / / www.disidents.org / ddiego NONE / – text / html
Para saltarnos esto necesitaremos un servidor sshd en algun sitio, por ejemplo en nuestra casa, luego nos bajaremos el putty http://www.putty.org/ y lo configuraremos de la siguiente manera.
En hostname ponemos la ip o nombre de nuestro equipo sshd el puerto “22 por defecto” o el que tengamos y le pondremos un nombre, aun no le deis a aceptar ya que hay que configurar más cosas:
Ahora iremos a la seccion Proxy, es donde pondremos el servidor proxy que tenemos en nuestro navegador y el puerto, en concreto pondre el que he montado en el paso anterior:
Si el proxy requiere autenticacion, introducimos los datos en Username y Password
Ahora podemos habilitar compresión, este paso es opcional
Ahora tenemos que configurar el tunnel dinamico, pondremos en Source port 8080 y en Destination Dynamic, y luego presionamos el boton Add
Quedaria tal que así:
Ahora volveriamos a Session y presionariamos Save para guardarlo para otro momento, posteriormente presionamos Open y se nos abre una consola negra pidiendo usuario y contraseña, dejaremos esa ventana negra abierta.
Ahora vamos a nuestro navegador, a configurar nuestro proxy socks, ya sabeis Herramientas > Opciones de Internet > Conexiones > Configuración LAN > y capturaza, en este caso hay que dejar todo vacio salvo Socks, poniendo nuestra dirección local y puerto 8080
Ahora si nos dejara entrar en la página que deseamos.
En el log / usr / local / squid / var / logs / access.log del servidor veremos:
1240856427.215 251184 192.168.1.51 TCP_MISS / 200 379659 CONNECT micasa.ddiego.dsd:22 – DIRECT / micasa.ddiego.dsd -
Como evitar este tipo de conexiones, pues con más acls.
micasa.ddiego.dsd
acl adiossh port 22
http_access allow mi_lan !web_prohibidas !adiossh
Y esto vemos en el servidor.
1240859444.101 3 192.168.1.51 TCP_DENIED / 403 1746 CONNECT micasa.ddiego.dsd:22 – NONE / – text / html
Eso es todo amigos!!!, saludos..
DDiego (ddiegoATdisidents.org)










Hola señores Ddiego y compañía, que tal va todo? Gratos es para mi saber que después de hace mas de 8 años continuáis en activo!!
Me encantará quedar algún día, dejo mi correo (jabber/gtalk) y hablamos por mensajería instantanea.
Un abrazo