Proxy Squid - Redes Linux
Proxy Squid - Redes Linux
Proxy Squid - Redes Linux
http://www.ite.educacion.es/formacion/materiales/85/cd/linux/m6/prox...
El proxy es un intermediario
1 de 10
09/09/2013 13:51
http://www.ite.educacion.es/formacion/materiales/85/cd/linux/m6/prox...
Para que las aplicaciones accedan a Internet a travs del proxy, es necesario configurar cada aplicacin: navegador web, cliente ftp, cliente de correo, etc... Todas las comunicaciones con el exterior pasarn por el servidor. Si el proxy falla, la red se quedar sin conexin a Internet. Para subsanar lo ms rpidamente posible el problema ante un fallo del Proxy, ser conveniente disponer de un proxy de repuesto. El proxy requiere mantenimiento. Para que todo funcione, es necesario que exista un administrador de la red que se encargue de actualizar, revisar, mantener y reparar el proxy cuando deje de funcionar.
Direccionamiento de nuestra red -Utilizar el rango 10.0.0.0/8 para el direccionamiento de red del centro educativo. -Utilizar la IP 10.0.0.1 para el servidor proxy. Conviene que dicho servidor sea tambin servidor DNS. -Las aulas usarn la direccin 10.0.X.Y donde X sea el nmero de aula e Y sea el nmero de PC. Ejemplo, si en la aula 1 hay 4 PCs, en el aula 2 hay 3 y en el aula 3 hay 3, el direccionamiento sera:
Aula PC Nom. IP Mscara P.Enlace DNS -------------------------------------------------------------------------------1 1 a1pc1 10.0.1.1 255.0.0.0 sin configurar 10.0.0.1
2 de 10
09/09/2013 13:51
http://www.ite.educacion.es/formacion/materiales/85/cd/linux/m6/prox...
1 2 a1pc2 10.0.1.2 255.0.0.0 sin configurar 10.0.0.1 1 3 a1pc3 10.0.1.3 255.0.0.0 sin configurar 10.0.0.1 1 4 a1pc4 10.0.1.4 255.0.0.0 sin configurar 10.0.0.1 2 1 a2pc1 10.0.2.1 255.0.0.0 sin configurar 10.0.0.1 2 2 a2pc2 10.0.2.2 255.0.0.0 sin configurar 10.0.0.1 2 3 a2pc3 10.0.2.3 255.0.0.0 sin configurar 10.0.0.1 3 1 a3pc1 10.0.3.1 255.0.0.0 sin configurar 10.0.0.1 3 2 a3pc2 10.0.3.2 255.0.0.0 sin configurar 10.0.0.1 3 3 a3pc3 10.0.3.3 255.0.0.0 sin configurar 10.0.0.1
// Arrancar o reiniciar el servidor squid sudo /etc/init.d/squid restart // Parar el servidor squid sudo /etc/init.d/squid stop // Recargar configuracin del servidor squid sudo /etc/init.d/squid reload
Para un arranque automtico del servicio al iniciar el servidor, debemos crear los enlaces simblicos correspondientes tal y como se indica en el apartado Trucos > Arranque automtico de servicios al iniciar el sistema.
3 de 10
09/09/2013 13:51
http://www.ite.educacion.es/formacion/materiales/85/cd/linux/m6/prox...
Una lista de control de acceso (acl) se crea utilizando la palabra acl seguido del nombre que queramos dar a la lista y seguido de una condicin que cumplirn los miembros de la lista. Entre las condiciones ms utilizadas destacamos: src (IPs o URLs origen), dst (IPs o URLs destino), port (puertos) y proto (protocolos). Ejemplos: Si en mi red local utilizo el direccionamiento 10.0.0.0/8, puedo crear una lista para definir a toda mi red: //acl para definir toda mi red acl todos src 10.0.0.0/8 Si en mi red local utilizo el direccionamiento 10.0.X.0/24, para el aula X, puedo crear una lista para cada aula: //Una acl para cada aula acl aula1 src 10.0.1.0/24 acl aula2 src 10.0.2.0/24 acl aula3 src 10.0.3.0/24 acl aula4 src 10.0.4.0/24 acl aula5 src 10.0.5.0/24 Luego tendra que dar permiso a las listas. Para ello se utiliza la palabra clave http_access seguido del permiso allow (permitir) o deny (denegar) y seguido del nombre de la lista. Ejemplos: Si quiero dar permiso a toda mi red para que navegue por Internet: //Permiso para que navegue toda mi red http_access allow todos Si quiero dar permiso a las aulas 1, 2 y 3 para que navegue por Internet pero no quiero que naveguen las aulas 4 y 5: //Permiso para que naveguen las aulas 1, 2 y 3 y no naveguen las aulas 4 y 5 http_access allow aula1 http_access allow aula2 http_access allow aula3 http_access deny aula4 http_access deny aula5 Por defecto, squid viene configurado para actuar como cach de acceso a Internet, pero no tiene creadas listas de control de acceso. Si configuramos el navegador de Internet de los PCs cliente para que utilicen el Proxy, veremos que tenemos denegado el acceso al Proxy. Para empezar a disfrutar del Proxy, tendremos que crear una lista de control de acceso con el rango de nuestra red y darla permiso. Si en nuestra red utilizamos el rango 10.0.0.0/8, deberamos aadir en /etc/squid /squid.conf: //Permiso para que navegue toda mi red. acl todos src 10.0.0.0/8 http_access allow todos Cuando creamos acls, podemos sustituir el rango de IPs por el nombre de un archivo externo, y de esa manera podemos indicar el en archivo externo el rango o los rangos de IPs a los que queremos referirnos, sin necesidad de estar continuamente modificando el archivo squid.conf. Ms adelante veremos un ejemplo cmo tener un archivo externo con las urls prohibidas a las que no podrn navegar nuestros alumnos. NETWORK OPTIONS (Opciones de red) En esta seccin estableceremos con el parmetro http_port, el puerto en el que escucha el Proxy. Lo mejor es dejar el valor por defecto que es el puerto 3128: //Configurar squid en el puerto 3128 http_proxy 3128 Squid puede trabajar en modo transparente. La ventaja de configurar squid en dicho modo de trabajo, es que no sera necesario configurar el navegador de los PCs clientes para trabajar con el proxy, sino que simplemente configuramos la puerta de enlace del PC cliente con la IP del servidor proxy. Posteriormente tendremos que configurar el cortafuegos del servidor para que redirija las peticiones al puerto 80 hacia el puerto 3128 y as las reciba squid. Si deseamos poner el Proxy en modo transparente, deberemos indicarlo despus del puerto. En tal caso, el parmetro http_port quedara as: //Configurar squid en el puerto 3128, en modo transparente http_proxy 3128 transparent //Redirigir las peticiones al puerto 80 hacia el puerto 3128. Ejecutar como root: sudo iptables -t nat -A PREROUTING -i eth1 -p tcp --dport 80 -j REDIRECT --to-port 3128 El inconveniente de trabajar en modo transparente es que no sirve para el protocolo HTTPS.
4 de 10
09/09/2013 13:51
http://www.ite.educacion.es/formacion/materiales/85/cd/linux/m6/prox...
MEMORY CACHE OPTIONS En esta seccin estableceremos la memoria RAM utilizada para la cach. Una buena opcin es utilizar sobre un tercio de la memoria RAM del sistema. Ejemplo, si nuestro sistema tiene 512 MB de memoria RAM, una buena opcin sera: //RAM utilizada por squid cache_mem 192 MB DISK CACHE OPTIONS En esta seccin estableceremos el espacio de disco duro utilizado para la cach. Una buena opcin es utilizar el 50% de la capacidad total del disco duro. Ejemplo, si nuestro disco tiene sistema tiene 80 GB de memoria RAM, una buena opcin sera utilizar 40 GB. Deberemos utilizar la palabra clave cache_dir seguida de la palabra ufs que es el formato utilizado por squid, de la carpeta donde queremos que se almacene la cache, el tamao de la cach en MB, el nmero de subdirectorios de primer nivel y el nmero de subdirectorios de segundo nivel. Ejemplo, si queremos que la cach se guarde en /var/spool/squid, que utilice 40 GB y que cachee hasta 16 subdirectorios de primer nivel y hasta 256 subdirectorios de segundo nivel, escribiremos: //Espacio en disco utilizado por squid cache_dir ufs /var/spool/squid 40000 16 256
Configuracin del navegador de los PCs clientes, para que utilicen el Proxy
Supongamos que nuestro servidor Proxy tiene la IP 192.168.1.239 y el servidor squid est escuchando en el puerto 3128 que es el puerto que utiliza por defecto. Con estos dos datos, la IP y el puerto, ya podemos configurar el navegador de Internet de los PCs clientes.
Mozilla Firefox
Para que Firefox utilice nuestro Proxy en sus conexiones, debemos ir a Herramientas > Opciones > Avanzado > Red y en el apartado Conexin, hacer clic en el botn Configuracin. En la ventana que aparece, debemos configurar la IP y el puerto de nuestro servidor Proxy:
5 de 10
09/09/2013 13:51
http://www.ite.educacion.es/formacion/materiales/85/cd/linux/m6/prox...
Configuracin del Proxy en Firefox A partir de este momento, Firefox enviar a nuestro Proxy cualquier consulta web que realice, y ser nuestro Proxy quien realizar la conexin en caso necesario.
Internet Explorer
Para indicar a Internet Explorer que debe utilizar un Proxy para realizar conexiones, debemos ir a Herramientas > Opciones de Internet > Conexiones > Configuracin de LAN y activar la casilla 'Usar un servidor proxy para la LAN'. En la casilla 'Direccin' pondremos la IP de nuestro Proxy y el 'Puerto' el puerto, tal y como se muestra en la siguiente ventana:
6 de 10
09/09/2013 13:51
http://www.ite.educacion.es/formacion/materiales/85/cd/linux/m6/prox...
7 de 10
09/09/2013 13:51
http://www.ite.educacion.es/formacion/materiales/85/cd/linux/m6/prox...
8 de 10
09/09/2013 13:51
http://www.ite.educacion.es/formacion/materiales/85/cd/linux/m6/prox...
acl urls-prohibidas dst "/etc/squid/urls-prohibidas.txt" http_access deny urls-prohibidas Si no queremos que nuestros alumnos accedan a www.sex.com ni a www.misvecinitas.com, el contenido del archivo /etc/squid/urls-prohibidas.txt debera ser: //Archivo /etc/squid/urls-prohibidas.txt www.sex.com www.misvecinitas.com La filosofa sera denegar las aulas prohibidas, denegar las urls prohibidas y luego permitir todo lo dems. Resumiendo, nuestro archivo squid.conf ser como el original con las siguientes modificaciones, justo despus de la lnea # INSERT YOUR OWN RULE(S) HERE TO ALLOW ACCESS FROM YOUR CLIENTS que podramos traducir como: Inserte sus propias reglas para permitir acceso a sus clientes: //Resumen de modificaciones en squid.conf # INSERT YOUR OWN RULE(S) HERE TO ALLOW ACCESS FROM YOUR CLIENTS acl aulas-prohibidas src "/etc/squid/aulas-prohibidas.txt" http_access deny aulas-prohibidas acl urls-prohibidas dst "/etc/squid/urls-prohibidas.txt" http_access deny urls-prohibidas http_access allow all As, editando los archivos /etc/squid/aulas-prohibidas.txt y /etc/squid/urls-prohibidas.txt y recargando la configuracin de squid ejecutando /etc/init.d/squid reload, podemos reconfigurar squid sin necesidad de tocar el archivo de configuracin squid.conf. El inconveniente es que cada vez que queremos permitir o denegar el acceso a Internet a un aula, tenemos que andar editando el archivo aulas-prohibidas.txt lo que puede resultar un poco engorroso. Podemos crear dos scripts de unix que hagan el trabajo por nosotros y solamente tengamos que ejecutar los scripts indicando el nmero de aula que queremos prohibir o permitir: Nombre del script: prohibir-aula.sh #/bin/bash # # Script para prohibir la navegacin de un aula # Se crear el rango del aula en /etc/squid/aulas-prohibidas.txt # Indicar el nmero de aula al ejecutar el script if [ $# -ne 1 ]; then echo "Es necesario introducir el numero de aula a prohibir" exit -1 fi echo Prohibir navegar aula $1, subred 10.0.$1.0/24 echo 10.0.$1.0/24 >> /etc/squid/aulas-prohibidas.txt /etc/init.d/squid reload echo subredes denegadas: cat /etc/squid/aulas-prohibidas.txt //Nombre del script: permitir-aula.sh #/bin/bash # # Script para permitir la navegacin de un aula # Se eliminar el rango del aula de /etc/squid/aulas-prohibidas.txt # Indicar el nmero de aula al ejecutar el script if [ $# -ne 1 ]; then echo "Es necesario introducir el numero de aula" exit -1 fi subred=10.0.$1.0/24 echo Permitir navegar aula $1, subred $subred patron=`echo /10.0.$1.0/d` cat /etc/squid/aulas-prohibidas.txt | sed -e $patron > /tmp/temp.txt cat /tmp/temp.txt > /etc/squid/aulas-prohibidas.txt /etc/init.d/squid reload echo Subredes denegadas: cat /etc/squid/aulas-prohibidas.txt Si deseamos que el aula 1 no navegue, deberamos ejecutar: prohibir-aula 1. Si luego deseamos permitir que el aula 1 navegue, tendramos que ejecutar: permitir-aula 1.
9 de 10
09/09/2013 13:51
http://www.ite.educacion.es/formacion/materiales/85/cd/linux/m6/prox...
An con los scripts prohibir-aula.sh y permitir-aula.sh, sigue siendo engorroso realizar cambios ya que el profesor tendra que iniciar sesin en el servidor por ssh y lanzar el script. Lo mejor ser crear una pgina en PHP con botones de comando, donde con un simple clic podamos ejecutar los scripts cmodamente desde el navegador.
Anlisis de conexiones
Una de las funcionalidades principales que nos ofrece squid es que registra todos los accesos a Internet. Cada vez que un PCs accede a Internet, squid registrar en el archivo /var/log/squid /access.log la fecha y hora, el PC y la url a la que ha accedido. //Archivo de registro de squid /var/log/squid/access.log
Reflexin
Para qu puede ser interesante analizar el archivo /var/log/squid/access.log?
10 de 10
09/09/2013 13:51