Para crear un proxy transparente, instalamos squid y empezamos a configurar.
aptitude install squid squid-commonYo uso nano como editor, podéis usar con el que más cómodos estéis.
nano /etc/squid/squid.conf
http_port 3128 transparent3128 es el puerto por defecto de escucha de squid, podemos cambiarlo, pero lo importante para hacer un proxy transparente es añadir transparent detrás del 3128.
En esta linea definimos la profundidad de directorios para cachear las webs. El 100 indica el tamaño máximo que ocupará el árbol de directorios. Si modificamos la variable cache_mem, tendremos que sustituir el 100 por el valor que le demos a cache_mem.
cache_mem 100 MBTenemos que permitir el acceso a nuestra red.
cache_dir ufs /var/spool/squid 100 16 256
acl our_networks src 192.168.0.0/22 # esto es lo mismo que 192.168.0.0/255.255.252.0Definimos el nombre de nuestro proxy
http_access allow our_networks # permitido el acceso a nuestra red
http_access allow localhost # permitido el acceso a localhost
visible_hostname delorianserverUna vez tenemos el squid configurado tendremos que reiniciarlo con /etc/init.d/squid restart
Si queremos podemos con squid -z crear la estructura de directorios para el cache, pero si no existe la crea la primera vez que reinicia.
Yo la borraría y la volvería a crear si modificas los parámetros de las lineas:
cache_mem 100 MBPara borrar el árbol de directorios del cache:
cache_dir ufs /var/spool/squid 100 16 256
rm -fr /var/spool/squidPara crear la estructura de directorios (tiene que estar parado el squid /etc/init.d/squid stop)
squid -zDespués lanzamos nuevamente el servicio.
/etc/init.d/squid startAhora solo nos queda añadir una regla de IPTABLES que haga una redirección del puerto 80 al 3128 (puerto por defecto del squid) para hacer de nuestro squid un proxy transparente.
iptables -t nat -A PREROUTING -i eth0 -s 192.168.0.0/255.255.252.0 -d 0.0.0.0/0.0.0.0 -p tcp --dport 80 -j REDIRECT --to-port 3128Si todo ha ido bien podremos ver haciendo un tail -f de los log de squid que todos los clientes de nuestra red están pasando por el squid.
tail -f /var/log/squid/access.log
Bueno el tutorial, la verdad es que está muy currado, pero me encontré con un problema despues de hacer el "rm -fr /var/spool/squid", ya que a la hora de hacer el squid -z, squid no era capaz de crear el directorio "squid", nada que un "mkdir /var/spool/squid" y pálante, jejeje.
ResponderEliminarAhora bien, le lanzé la regla para IPtables del squid, vamos lo que viene siendo redireccionar las peticiones del puerto 80 al puerto del SQUID, me voy a los equipos de mi red, y les pongo que la puerta de enlaze sea la direccion IP de squid. Y hasta ahora todo me funcionaba de coña. ¿pero que pasa con los sitios con HTTPS ....?
Les he tenido que quitar la puerta de enlaze a todos los equipos. pues ninguno puede acceder a las web de los bancos, y eso a los contables de mi empresa no les gusta mucho, jejeje.
¿sabes como solucionar este problema?
Por todo lo demás muy bueno tu BLOG
Que tal toño yo tenia el mismo problema pero decidi compilarlo y leer un poco el manual en ingles y por fin lo solucione, hice un pequeño tutorial sepero te funcione
ResponderEliminarTutorial squid
Respuesta a Antonio:
ResponderEliminarSupongo que igual que has redireccionados las peticiones del 80 al 3128, también podrás redireccionar el https al 3128.
Sino podrías hacer directamente forward, así cuando no puedan salir por el SQUID saldrán directamente a internet haciendo forward con IPTABLES.
Las instrucciones para hacer forward son un poco más complicadas. Si tengo tiempo un día de estos publicaré un post. Pero seguro que no tendrás problemas en encontrar algún buen manual donde te expliquen como hacer un router con IPTABLES en un Debian.
La verdad que es la mejor solución, yo lo tengo así montado y eso no falla en la vida.
hola tengo un squid y dansguardian y las reglas iptables las aplico por un archivo .sh pero hasta ahora no me filtra nada como puedo saber por q puerto esta escuchando el squid y dansguardian?
ResponderEliminarEn el fichero de configuración /etc/squid/squid.conf puedes ver el puerto de escucha del squid.
ResponderEliminarSi ejecutas "nmap -p1-65535 localhost" o "nmap -p1-65535 tuIP" podrás ver si está escuchando o no el puerto. (El puerto por defecto es el 3128).
Una cosas que podrías hacer es pegar aquí la salida de un "iptables -L".
Tu tutorial esta bueno y facil de seguirlo, una pregunta es que si dansguardian puede filtrar paginas seguras https por que necesito restringir las paginas de chateo y no tengo ni idea de como hacerlo o necesito hacerlo con el squid ???
ResponderEliminarEn teoría el https corre en el puerto 443, nunca lo he intentado, pero creo que tendrías que pasar el 443 al puerto de escucha del squid.
ResponderEliminarIgual que hacemos con el http (80->3128).
Y no sé si squid necesita alguna configuración especial para hacer esto.
el squid me corre de maravilla ,el proble que tengo es que deseo filtar el contenido con el dansguardian que utiliza el puerto 8080, todo funcionaba bien hasta que quise restringir el acceso a ciertos rangos de ip de mi red, para lo cual les denegue el acceso en el squid.conf pero no funciono y al revisar los log de squid note que todas las maquinas las registraba con la misma ip por lo cual cualquier cosa que agregaba al squid conf no hacia efecto
ResponderEliminarYo normalmente los filtros me gusta controlarlos desde iptables. Creo que es más seguro que los filtros que pueda tener squid.
ResponderEliminarhola, estoy trabajando con squid,me parece muy bueno bloqueo de pag, acceso a usuarios por medio de MAC, el inconveniente ke he notado, es ke cuando a una computadora cliente le pongo el IP manual,la puerta de enlace (la direccion del proxy 192.168.0.1) y repito esta direccion en el servidor DNS primario, la computadora cliente se brinca al proxy, es decir el proxy no restrige nada a ese equipo, es mas no es ni necesario congigurar el explorador de internet que puedo hacer para que esto no suceda?? muchisimas gracias de antemano
ResponderEliminarSupongo que no tendrás activado la redirección del puerto 80 al 3128.
ResponderEliminarBuenísimo el tutorial, lo que me sucedió ami fue que después de hacer "rm -fr /var/spool/squid", y al hacer el squid -z, no tenia permiso.
ResponderEliminarLo solucione gracias a un amigo que me dijo que haga esto
nos colocamos en la carpeta
#cd /var/spool/
cambiamos el permiso de root por proxy
#chown proxy.proxy squid
#chmod 750 squid
#squiz -z
y recien alli me creo la estructura
# /etc/init.d/squid start
me levanto de 10. squid por que salia runing, pero seguia sin funcionar internet.
Al compara con otro server faltaba crear en /var/spool/squid el archivo core
# cd /var/spool/squid
#touch core
le cambiamos los permiso de squid
#chwon proxy.proxy core
reiniciamos squid y hay si funciono.
Hola amigo bueno el post pero tengo un ultimo problema con esto el iptable en donde lo configuro que archivo tengo q modificarlo o donde crearlo por favor es urgenteeee
ResponderEliminarPara iptables no hay un fichero especifico, crea un fichero de script y lo ejecutas al inicio del sistema.
ResponderEliminar