You are on page 1of 8

Configurar Squid - Proxy

Squid es un Servidor Intermediario (Proxy) de alto desempeo, que puede funcionar como Servidor Intermediario (Proxy) y cach de contenido de Red para los protocolos HTTP, FTP, GOPHER y WAIS, Proxy de SSL, cach transparente, WWCP, aceleracin HTTP, cach de consultas DNS, filtracin de contenido y control de acceso por IP y por usuario. Consiste bsicamente en un programa principal como servidor, un programa para bsqueda en servidores DNS, programas opcionales para reescribir solicitudes y realizar autenticacin y algunas herramientas para administracin y y herramientas para clientes. Al iniciar Squid da origen a un nmero configurable (5, de modo predefinido a travs del parmetro dns_children) de procesos de bsqueda en servidores DNS, cada uno de los cuales realiza una bsqueda nica en servidores DNS, reduciendo la cantidad de tiempo de espera para las bsquedas en servidores DNS. No puede ser utilizado como Servidor Intermediario (Proxy) para protocolos como SMTP, POP3, TELNET, SSH, IRC, etc. Si se requiere intermediar para cualquier protocolo distinto a HTTP, HTTPS, FTP, GOPHER y WAIS se requerir hacer uso de un servidor SOCKS como Dante No se instala por defecto, pero se encuentra en los repositorios de Ubuntu, por lo que puede ser instalado a travs de Synaptic, Aptitude o apt-get Configuracin Squid utiliza el archivo de configuracin localizado en /etc/squid/squid.conf, y se puede editar con el siguiente comando, en modo consola (terminal) sudo gedit /etc/squid/squid.conf Para editar al menos los siguientes parmetros: http_port cache_dir Al menos una Lista de Control de Acceso Al menos una Regla de Control de Acceso httpd_accel_host httpd_accel_port httpd_accel_with_proxy Parmetro http_port Los Puertos Registrados recomendados para Servidores Intermediarios (Proxies) pueden ser el 3128 y 8080 a travs de TCP.

# You may specify multiple socket addresses on multiple lines. # Default: http_port 3128 http_port 3128 http_port 8080 Si se desea incrementar la seguridad, puede vincularse el servicio a una IP que solo se pueda acceder desde la red local. Considerando que el servidor utilizado posee una IP 10.140.111.1, puede hacerse lo siguiente: # You may specify multiple socket addresses on multiple lines. # Default: http_port 3128 http_port 10.140.111.1:3128 http_port 10.140.111.1:8080 Parmetro cache_mem. El parmetro cache_mem establece la cantidad ideal de memoria para lo siguiente: Objetos en trnsito. Objetos frecuentemente utilizados (Hot). Objetos negativamente almacenados en el cach. De modo predefinido se establecen 8 MB. Si se posee un servidor con al menos 128 MB de RAM, 16 MB es el valor para este parmetro: cache_mem 16 MB Parmetro cache_dir: El parmetro cache_dir se utiliza para establecer que tamao se desea que tenga el cach en el disco duro para Squid. De modo predefinido Squid utilizar un cach de 100 MB, de modo tal que encontrar la siguiente lnea: cache_dir ufs /var/spool/squid 100 16 256 Mientras ms grande sea el cach, ms objetos se almacenarn en ste y por lo tanto se utilizar menos el ancho de banda. La siguiente lnea establece un cach de 700 MB: cache_dir ufs /var/spool/squid 700 16 256 Los nmeros 16 y 256 significan que el directorio del cach contendr 16 directorios subordinados con 256 niveles cada uno.

Parmetro ftp_user. Al acceder a un servidor FTP de manera annima, de modo predefinido Squid enviar como clave de acceso Squid@. Puede establecerse una direccin de correo especificada como clave de acceso: ftp_user proxy@gmail.com Controles de acceso. Las Listas de Control de Acceso definen una red o bien ciertas mquinas en particular. A cada lista se le asignar una Regla de Control de Acceso que permitir o denegar el acceso a Squid. Listas de control de acceso, se establecen con la siguiente sintaxis: acl [nombre de la lista] src [lo que compone a la lista] Si se desea establecer una lista de control de acceso que abarque a toda la red local, basta definir la IP correspondiente a la red y la mscara de la sub-red. Por ejemplo, si se tiene una red donde las mquinas tienen direcciones IP 10.140.111.n con mscara de sub-red 255.255.255.0, podemos utilizar lo siguiente: acl miredlocal src 10.140.111.0/255.255.255.0 Ms conveniente es definir una Lista de Control de Acceso especificando un archivo localizado en cualquier parte del disco duro, y la cual contiene una lista de direcciones IP.: acl permitidos src "/etc/squid/permitidos" El archivo /etc/squid/permitidos contendra algo como siguiente: 10.140.111.2 10.140.111.3 10.140.111.4 10.140.111.5 10.140.111.6 En caso de querer restringir el acceso de una pc, basta con eliminarla de la lista. Listas de control de acceso: Bloqueo de Dominios de Destino. Es conveniente definir una Lista de Control de Acceso especificando los dominios bloqueados en un archivo localizado en cualquier parte del disco duro, y la cual contiene una lista de los dominios:

acl bloqueados dstdomain "/etc/squid/bloqueados"

El archivo /etc/squid/bloqueados contendra algo como siguiente:

www.microsoft.com www.ibm.com www.hotmail.com

Reglas de Control de Acceso. Las Reglas de control de Aceso definen si se permite o no el acceso hacia Squid. Se aplican a las Listas de Control de Acceso. Deben colocarse en la seccin de reglas de control de acceso definidas por el administrador, es decir, a partir de donde se localiza la siguiente leyenda: # INSERT YOUR OWN RULE(S) HERE TO ALLOW ACCESS FROM YOUR CLIENTS La sintaxis bsica es la siguiente: http_access [deny o allow] [lista de control de acceso] En este ejemplo la regla que establece acceso permitido a Squid a la Lista de Control de Acceso denominada permitidos: http_access allow permitidos La expresin !, significa no. Pueden definirse as respecto de dos listas de control de acceso, lista1 y lista2, que se permite el acceso a Squid a lo que comprenda lista1 excepto aquello que comprenda lista2: http_access allow lista1 !lista2 Esta regla es til cuando se tiene un gran grupo de IP dentro de un rango de red al que se debe permitir acceso, y otro grupo dentro de la misma red al que se debe denegar el acceso. Aplicando Listas y Reglas de control de acceso. Considerando como ejemplo que se dispone de una red 10.140.111.0/255.255.255.0, si se desea definir toda la red local, utilizaremos la siguiente lnea en la seccin de Listas de Control de Acceso:

acl todalared src 10.140.111.0/255.255.255.0 Listas de Control de Acceso: definicin de una red local completa # Recommended minimum configuration: acl all src 0.0.0.0/0.0.0.0 acl manager proto cache_object acl localhost src 127.0.0.1/255.255.255.255 acl todalared src 10.140.111.0/255.255.255.0 A continuacin procedemos a aplicar la regla de control de acceso: http_access allow todalared Reglas de control de acceso: Acceso a una Lista de Control de Acceso. # INSERT YOUR OWN RULE(S) HERE TO ALLOW ACCESS FROM YOUR CLIENTS http_access allow localhost http_access allow todalared http_access deny all La regla http_access allow todalared permite el acceso a Squid a la Lista de Control de Acceso denominada todalared, la cual est conformada por 10.140.111.0/255.255.255.0. Esto significa que cualquier mquina desde 10.140.111.1 hasta 10.140.111.254 podr acceder a Squid. Si solo se desea permitir el acceso a Squid a ciertas direcciones IP de la red local, deberemos crear un archivo que contenga dicha lista, en modo consola ejecutar sudo gedit /etc/squid/listas/redlocal Incluir las direcciones IP que desea confirmen la Lista de Control de acceso; 10.140.111.1 10.140.111.4 10.140.111.17 10.140.111.19 10.140.111.21

Denominaremos a esta lista de control de acceso como redlocal: acl redlocal src "/etc/squid/listas/redlocal" Listas de Control de Acceso: definicin de una red local completa # Recommended minimum configuration: acl all src 0.0.0.0/0.0.0.0 acl manager proto cache_object acl localhost src 127.0.0.1/255.255.255.255 acl redlocal src "/etc/squid/listas/redlocal" Aplicar la regla de control de acceso: http_access allow redlocal Reglas de control de acceso: Acceso a una Lista de Control de Acceso. # INSERT YOUR OWN RULE(S) HERE TO ALLOW ACCESS FROM YOUR CLIENTS http_access allow localhost http_access allow redlocal http_access deny all La regla http_access allow redlocal permite el acceso a Squid a la Lista de Control de Acceso denominada redlocal, la cual est conformada por las direcciones IP especificadas en el archivo /etc/squid/listas/redlocal. Esto significa que cualquier mquina no incluida en /etc/squid/listas/redlocal no tendr acceso a Squid.

Parmetro chache_mgr. De modo predefinido, si algo ocurre con el cach, se envia un mensaje de aviso a la cuenta webmaster del servidor, puede especificarse una distinta si se considera conveniente; cache_mgr webmaster@gmail.com Cach con aceleracin. Cuando un usuario hace peticin hacia un objeto en Internet, este es almacenado en el cach de Squid. Si otro usuario hace peticin hacia el mismo objeto, y este no ha sufrido modificacin alguna desde que lo accedi el usuario anterior, Squid mostrar el que ya se encuentra en el cach en lugar de volver a descargarlo desde Internet.

Proxy Acelerado En la seccin HTTPD-ACCELERATOR OPTIONS deben habilitarse los siguientes parmetros: httpd_accel_host virtual httpd_accel_port 0 httpd_accel_with_proxy on Para crear el directorio cache, en modo consola ejecutamos; sudo /usr/local/squid/sbin/squid -z Iniciar, reiniciar y aadir el servicio al arranque del sistema. Para iniciar por primera vez Squid en modo consola: sudo service squid start Para reiniciar en modo consola ejecutar: sudo service squid restart Para que Squid se inicie de manera automtica al inicio el sistema, en modo consola ejecutar: sudo chkconfig squid on Cualquier error al inicio de Squid solo significa que hubo errores de sintaxis, errores de teclado o de las rutas hacia los archivos de las Listas de Control de Acceso. Para realizar el diagnstico de problemas indicndole a Squid que vuelva a leer configuracin, lo cual devuelve los errores que existen en el archivo /etc/squid/squid.conf, en modo consola ejecutar: sudo service squid reload En caso de errores graves que no permiten iniciar el servicio, examinar el contenido del archivo /var/log/squid/squid.out ejecutando en consola: less /var/log/squid/squid.out Ajustes para el muro corta-fuegos.

Re-direccionamiento de peticiones a travs de iptables y Firestarter. Para dar salida transparente hacia Internet a ciertos servicios yo al mismo tiempo re-direccionar peticiones hacia servicio HTTP para pasar a travs del el puerto donde escucha peticiones Squid (8080), de modo que no haya salida alguna hacia alguna hacia servidores HTTP en el exterior sin que sta pase antes por Squid, los protocolos HTTPS, FTP, GOPHER ni WAIS, deben ser filtrados a travs del NAT. El re-direccionamiento se hace a travs de iptables. Suponiendo que la red local se accede a travs de una interfaz eth1, el siguiente esquema ejemplifica un re-direccionamiento: sudo /sbin/iptables -t nat -A PREROUTING -i eth1 -p tcp --dport 80 -j REDIRECT --to-port 8080 Lo anterior, que requiere un guin de cortafuegos funcional en un sistema con dos interfaces de red, hace que cualquier peticin hacia el puerto 80 (servicio HTTP) hecha desde la red local hacia el exterior, se re-direccionar hacia el puerto 8080 del servidor. Utilizando Firestarter, la regla anteriormente descrita se aade en el archivo /etc/firestarter/userpost. sudo gedit /etc/firestarter/user-post y se agrega la lnea /sbin/iptables -t nat -A PREROUTING -i eth1 -p tcp --dport 80 -j REDIRECT --to-port 8080 Fin

You might also like