You are on page 1of 14

Servidor Proxy Squid en Ubuntu

Pgina 1 de 14

Servidor Proxy Squid en Ubuntu


1. Servidor Proxy Cach Squid......................................................................................................2 2. Instalacin........................................................................................................................................... 2 3. Preparar el servidor Proxy para que funcione................................................................. 3
3.1. Configuracin de las tarjetas de red......................................................................................... 3 3.2. Activar el enrutamiento............................................................................................................... 3 3.3. Configurar el Cortafuegos...........................................................................................................3
3.3.1. Ejemplo 1: configuracin bsica de todas las reglas de filtrado ......................................... 3 3.3.2. Ejemplo 2: Configuracin avanzada para el cortafuegos.....................................................4 3.3.3. Comprobar el encaminamiento............................................................................................... 4 4. Antes de continuar.......................................................................................................................... 5 5. Configuracin....................................................................................................................................5 5.1. Parmetro http_port: Que puerto utilizar para Squid?.................................................... 5 5.2. Parmetro cache_mem.................................................................................................................6 5.3. Parmetro cache_dir: Tamao de la cach..............................................................................6 5.4. Controles de acceso....................................................................................................................... 6 5.4.1. Listas de Control de Acceso (ACL)......................................................................................... 6 5.4.2. Reglas de Control de Acceso.................................................................................................... 8 5.4.3. Aplicando Listas y Reglas de control de acceso..................................................................... 9 5.4.3.1.Permitir el acceso a una red local..................................................................................... 9 5.4.3.2.Permitir el acceso a listas de direcciones IP.................................................................... 9 5.4.3.3.Impedir el acceso a dominios............................................................................................ 9 5.5. Idioma de los mensajes mostrados por Squid al usuario................................................... 10 5.6. Proxy acelerado: aceleracin de Servidores HTTP............................................................. 10 5.6.1. Activacin de proxy acelerado. ............................................................................................11 5.7. Proxy transparente .....................................................................................................................11 5.7.1. Re-direccionamiento de peticiones a travs de iptables y Firestarter................................ 12 6. Inicio y parada de Squid. Depuracin de errores..........................................................13 6.1. Depuracin de errores................................................................................................................ 14 7. Configuracin de los clientes....................................................................................................14 8. Documentacin................................................................................................................................14 Autor: Ramn Jos Martnez Cuevas. Esta obra est bajo una licencia de Creative Commons.

Servidor Proxy Squid en Ubuntu

Pgina 2 de 14

1. Servidor Proxy Cach Squid


Squid es un popular programa de software libre que implementa un servidor proxy y un demonio para cach de pginas web, publicado bajo licencia GPL. Tiene una amplia variedad de utilidades, desde acelerar un servidor web, guardando en cach peticiones repetidas a DNS y otras bsquedas para un grupo de gente que comparte recursos de la red, hasta cach de web, adems de aadir seguridad filtrando el trfico. Est especialmente diseado para ejecutarse bajo entornos tipo Unix, aunque tiene versiones para otros sistemas operativos como Windows. Funcionamiento de la cach: cuando un usuario hace peticin hacia un objeto en Internet, este es almacenado en la memoria cach, 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. Esta funcin permite navegar rpidamente cuando los objetos ya estn en la memoria cach y adems optimiza enormemente la utilizacin del ancho de banda. Adems, guarda una lista de peticiones repetidas a DNS, para que la resolucin de nombres de dominio sea ms rpida. Otra funcin que realiza Squid es la de proporcionar un servicio de proxy (actuar de intermediario) a ordenadores que necesiten acceder a internet a travs de algn tipo de cortafuegos. Por eso es comn denominar a Squid como un proxy cach, al unir las dos funcionalidades que presenta. Squid puede hacer proxy y cach con los protocolos HTTP, HTTPS, FTP, GOPHER y WAIS, proxy de SSL, cach transparente, WWCP, aceleracin HTTP de Servidores Web como Apache, cach de consultas DNS y otras muchas ms como filtracin de contenido y control de acceso por IP y por usuario. Nota: Squid no puede funcionar como proxy para servicios como SMTP, POP3, TELNET, SSH, etc.. Si se requiere hacer proxy para cualquier cosa distinta a HTTP, HTTPS, FTP, GOPHER y WAIS se requerir o bien implementar enmascaramiento de IP a travs de un NAT (Network Adress Translation) o bien hacer uso de un servidor SOCKS como Dante.

2. Instalacin
Escriba en una terminal de comandos: sudo apt-get install squid Observe que versin de squid, ha instalado, con Ubuntu 8.04 la versin instalada debera ser squid 2.6.STABLE18 . Para comprobar la versin instalada ejecute el comando: squid -v Los ficheros y directorios ms importantes son:

El directorio /etc/squid : donde se guardan los ficheros de configuracin: por ejemplo el fichero squid.conf Una parte importante de ficheros se encuentran en /usr/lib/squid, pero no tendremos que preocuparnos de ellos por ahora. La documentacin se encuentra en /usr/share/doc/squid-x.x.x/ En /var/spool/squid se van a encontrar las pginas cacheadas, es decir, las tradas desde Internet y que se almacenan para la prxima vez que las solicite alguien y no hayan cambiado. En /var/log/squid se guardan los accesos de nuestros usuarios a Internet a travs del proxy, as como los posibles errores que hayan ocurrido.

Servidor Proxy Squid en Ubuntu

Pgina 3 de 14

3. Preparar el servidor Proxy para que funcione.


3.1. Configuracin de las tarjetas de red
El servidor Proxy Squid necesita tener al menos 2 tarjetas de red reales (aunque para hacer prcticas o pruebas podemos simular una segunda tarjeta de red mediante una interfaz de red virtual, por ejemplo: eth0:0, pero nunca ser de forma permanente para un caso real). Un posible esquema de las tarjetas de nuestro servidor proxy Squid es el siguiente:

La primera tarjeta de red (eth0), ser la que conecte a la red local de ordenadores y que posteriormente accedern a Internet a travs del servidor proxy Squid. Por ejemplo la red: 172.26.0.0/16 red de Clase B La segunda tarjeta de red (eth1), ser la que est conectada directamente a Internet, por ejemplo a travs de un router ADSL, por ejemplo la red 192.168.1.0/24 red de Clase C, suponemos que el acceso a Internet nos lo proporciona la direccin IP 192.168.1.1, que es la IP del router.

De esta forma tenemos aislada la red local de la red que permite el acceso a Internet, de forma que si un usuario de la red local quiere acceder a Internet lo tiene que hacer a travs del servidor proxy Squid y de esta forma podremos filtrar el contenido al que puede acceder, e incluso impedirle el acceso segn nos convenga.

3.2.

Activar el enrutamiento

Con esto se consigue comunicar las dos tarjetas de red eth0 y eth1 entre si, ya que sino sera imposible conectar la red local de ordenadores y la red que tiene acceso a Internet.
# Activar enrutamiento de forma temporal echo 1 >/proc/sys/net/ipv4/ip_forward

Tambin se puede hacer permanentemente, descomentando la siguiente lnea en el fichero de configuracin /etc/sysctl.conf :
# Uncomment the next line to enable packet forwarding for Ipv4 #net.ipv4.ip_forward=1

3.3.

Configurar el Cortafuegos

Hay que configurar correctamente el cortafuegos del servidor Squid, para que permita enviar paquetes y recibir desde la red local, enmascarar la red local (NAT) para poder usar la nica direccin IP pblica que normalmente se tiene para acceder a Internet

3.3.1.

Ejemplo 1: configuracin bsica de todas las reglas de filtrado

Supondremos que el interfaz de red conectado a Internet es eth1 y el de la red local eth0 con direccin: 172.26.0.0/16). Un posible script de configuracin puede ser (puedes incluir el script en /etc/rc.local para Ubuntu):
# Limpiar las reglas de filtrado y NAT del cortafuegos iptables iptables --flush iptables -t nat --flush #Activamos el NAT con enmascaramiento iptables -t nat -A POSTROUTING -s 172.26.0.0/16 -o eth1 -j MASQUERADE # Permitir el trfico generado por el enrutamiento iptables -A FORWARD -s 172.26.0.0/16 -i eth0 -j ACCEPT # Permitir el trfico entrante que proviene de la red local iptables -A INPUT -s 172.26.0.0/16 -j ACCEPT

Servidor Proxy Squid en Ubuntu

Pgina 4 de 14

3.3.2.

Ejemplo 2: Configuracin avanzada para el cortafuegos

La configuracin anterior de cortafuegos permite que los clientes usen el servicio del proxy Squid, pero y si desea algn cliente saltarse el proxy?, con las reglas del cortafuegos en el ejemplo anterior conseguira saltrselo, para evitar esto se deben aadir algunas reglas ms que refuercen la seguridad de nuestro equipo en la red. Para este ejemplo se tendr la siguiente configuracin en un ordenador con dos tarjetas de red:

wlan0: interfaz que se conecta a Internet a travs de la dir. IP: 192.168.1.131/24 eth1: interfaz de la red local de ordenadores que usan el proxy: 10.42.43.1/8

El fichero /etc/rc.local tendr las siguientes lneas:


# Activar enrutamiento echo 1 >/proc/sys/net/ipv4/ip_forward # Limpiar las reglas de filtrado y NAT del cortafuegos iptables iptables --flush iptables -t nat --flush # Activamos el NAT con enmascaramiento iptables -t nat -A POSTROUTING -s 10.0.0.0/8 -o wlan0 -j MASQUERADE # Todas las peticiones de enmascaramiento que vengan desde eth1 # y que tengan como puerto destino el 3128 (SQUID) sean redirigidas al # puerto 8080 (dansguardian). iptables -t nat -A PREROUTING -i eth1 -p tcp --dport 3128 -j REDIRECT --to-port 8080 # Solo acepto los paquetes que desde eth1 (red local) # van dirigidos al servidor proxy 10.42.43.1 iptables -A FORWARD -i eth1 -d 10.42.43.1 -j ACCEPT iptables -A INPUT -s 10.0.0.0/8 -i eth1 -d 10.42.43.1 -j ACCEPT # Todos los paquetes de la red local que se dirigen a la red de Internet o a este # ordenador, que no hayan sido aceptados por el servidor proxy son rechazados iptables -A FORWARD -i eth1 -s 0.0.0.0/0 -j DROP iptables -A INPUT -i eth1 -s 0.0.0.0/0 -j DROP

Esta configuracin permite pararle los pies a Ultrasurf, una aplicacin que da ms de un quebradero de cabeza los Administradores de red, ya que se salta la configuracin del proxy y cortafuegos de la red, mediante el uso de tneles SSL y proxys annimos. Artculo principal: http://linuxerotijolero.blogspot.com/2011/11/bloquear-ultrasurf.html

3.3.3.

Comprobar el encaminamiento

Se debe revisar que la tabla de encaminamiento est correcta, y en caso necesario habr que ajustarla adecuadamente:
# route -n Destino 172.26.0.0 192.168.1.0 0.0.0.0 127.0.0.1 Pasarela 0.0.0.0 0.0.0.0 192.168.1.1 0.0.0.0 Genmask 255.255.0.0 255.255.255.0 0.0.0.0 255.255.0.0 ..... Interfaz eth0 eth1 eth1 lo

Servidor Proxy Squid en Ubuntu

Pgina 5 de 14

4. Antes de continuar
Evite dejar espacios vacos en lugares indebidos. El siguiente es un ejemplo de como no debe descomentarse un parmetro.
# Opcin incorrectamente des-comentada http_port 3128

El siguiente es un ejemplo de como si debe des-comentarse un parmetro.


# Opcin correctamente des-comentada http_port 3128

5. Configuracin
El archivo de configuracin que utiliza Squid es /etc/squid/squid.conf, pudiendo encontrarse en otras localizaciones dependiendo de la instalacin. Este archivo est ampliamente comentado por lo que no lo analizaremos de forma detallada, sino que haremos un rpido recorrido por el fichero de configuracin centrndonos en los aspectos que consideremos ms importantes. Sera bueno realizar una copia de seguridad del fichero squid.conf, mediante el comando:
# cp /etc/squid/squid.conf /etc/squid/squid.conf.copia

5.1.

Parmetro http_port: Que puerto utilizar para Squid?

Squid por defecto utilizar el puerto 3128 para atender peticiones, sin embargo se puede especificar que lo haga en cualquier otro puerto o bien que lo haga en varios puertos a la vez. En el caso de un Proxy Transparente, regularmente se utilizar el puerto 80 y se valdr del redireccionamiento de peticiones de modo tal que no habr necesidad alguna de modificar la configuracin de los navegadores Web para utilizar el servidor Proxy. bastar con utilizar como puerta de enlace al servidor. Es importante recordar que los servidores Web, como Apache, tambin utilizan dicho puerto, por lo que ser necesario reconfigurar el servidor HTTP para utiliza otro puerto disponible, o bien desinstalar o deshabilitar el servidor HTTP. Hoy en da ya no es del todo prctico el utilizar un Proxy Transparente, a menos que se trate de un servicio de Caf Internet u oficina pequea, siendo que uno de los principales problemas con los que lidian los administradores es el mal uso y/o abuso del acceso a Internet por parte del personal. Es por esto que puede resultar ms conveniente configurar un servidor Proxy con restricciones por contrasea, lo cual no puede hacerse con un Proxy Transparente, debido a que se requiere un dilogo de nombre de usuario y contrasea. Regularmente algunos programas utilizados comnmente por los usuarios suelen traer por defecto el puerto 8080 -servicio de cacheo WWW- al configurar que servidor proxy utilizar. Si queremos aprovechar esto en nuestro favor y ahorrarnos el tener que dar explicaciones innecesarias al usuario, podemos especificar que Squid escuche peticiones en dicho puerto tambin. Siendo as localice la seccin de definicin de http_port, y especifique:
# Default: http_port 3128 http_port 3128 http_port 8080

Si 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 192.168.1.254, puede hacerse lo siguiente:
# Default: http_port 3128 http_port 192.168.1.254:3128 http_port 192.168.1.254:8080

Servidor Proxy Squid en Ubuntu

Pgina 6 de 14

5.2.

Parmetro cache_mem

Define la cantidad de memoria RAM que deseamos asignar a las funciones de Squid, por defecto se establecen 8 MB. Puede especificarse una cantidad mayor si as se considera necesario, dependiendo esto de los hbitos de los usuarios o necesidades establecidas por el administrador. Si se posee un servidor con al menos 128 MB de RAM, establezca 16 MB como valor para este parmetro:
cache_mem 16 MB

5.3.

Parmetro cache_dir: Tamao de la cach

Este parmetro establece que tamao va a tener la cach en el disco duro para Squid . Para entender esto un poco mejor, responda a esta pregunta: Cuanto desea almacenar de Internet en el disco duro? Por defecto Squid utilizar un cache de 100 Mb, de modo tal que encontrar la siguiente lnea:
cache_dir ufs /var/spool/squid 100 16 256

Se puede incrementar el tamao de la memoria cach hasta donde lo desee el administrador. Mientras ms grande sea la cache, ms objetos de almacenarn en ste y por lo tanto se utilizar menos el ancho de banda. La siguiente lnea establece un cache 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 subdirectorios con 256 niveles cada uno. No modifique esto nmeros, no hay necesidad de hacerlo. El sistema de almacenamiento usado se especifica con el parmetro ufs. Es muy importante considerar que si se especifica un determinado tamao de cach y este excede al espacio real disponible en el disco duro, Squid se bloquear inevitablemente. Sea cauteloso con el tamao de cache especificado.

5.4.

Controles de acceso.

Es necesario establecer Listas de Control de Acceso que definan una red o bien ciertas maquinas en particular. A cada lista se le asignar una Regla de Control de Acceso que permitir o denegar el acceso a Squid, es decir, el acceso a Internet si est disponible.

5.4.1.

Listas de Control de Acceso (ACL)

Las Listas de Control de Acceso empiezan a definirse a partir de estas lneas, que nunca deberan ser modificadas, en concreto en la versin de squid 2.6 te puedes encontrar con:
#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 to_localhost dst 127.0.0.0/8 acl SSL_ports port 443 # https acl SSL_ports port 563 # snews acl SSL_ports port 873 # rsync acl Safe_ports port 80 # http acl Safe_ports port 21 # ftp acl Safe_ports port 443 # https acl Safe_ports port 70 # gopher acl Safe_ports port 210 # wais acl Safe_ports port 1025-65535 # unregistered ports

Servidor Proxy Squid en Ubuntu

Pgina 7 de 14

acl Safe_ports port 280 # http-mgmt acl Safe_ports port 488 # gss-http acl Safe_ports port 591 # filemaker acl Safe_ports port 777 # multiling http acl Safe_ports port 631 # cups acl Safe_ports port 873 # rsync acl Safe_ports port 901 # SWAT acl purge method PURGE acl CONNECT method CONNECT ...... ...... # Deny requests to unknown ports http_access deny !Safe_ports # Deny CONNECT to other than SSL ports http_access deny CONNECT !SSL_ports # # We strongly recommend the following be uncommented to protect innocent # web applications running on the proxy server who think the only # one who can access services on "localhost" is a local user #http_access deny to_localhost # # INSERT YOUR OWN RULE(S) HERE TO ALLOW ACCESS FROM YOUR CLIENTS

Cada Lista de Control de Acceso (ACL) puede definir a una red, direccin IP, listas de direcciones IP, un dominio (FQDN), listas de dominios, e incluso palabras o listas de palabras. Las ACL definidas por el administrador deben ser insertadas a partir de la siguiente lnea:
# INSERT YOUR OWN RULE(S) HERE TO ALLOW ACCESS FROM YOUR CLIENTS

Regularmente una lista de control de acceso se establece siguiendo la siguiente sintaxis:


acl [nombre de la lista] src [lo que compone a la lista]

Se puede establecer una ACL que defina la red local a travs de la IP que corresponde a la red y la mscara de red. Por ejemplo, si se tiene la red 192.168.1.0 con mscara de red 255.255.255.0, podemos utilizar lo siguiente:
acl miredlocal src 192.168.1.0/255.255.255.0

Tambin se puede definir as en notacin CIDR:


acl miredlocal src 192.168.1.0/24

Otro ejemplo de Lista de Control de Acceso (ACL):


acl redcontabilidad src 172.20.0.0/16

Tambin puede definirse una Lista de Control de Acceso invocando un fichero localizado en cualquier parte del disco duro, y en el cual se en cuenta una lista de direcciones IP. Ejemplo:
acl permitidos src "/etc/squid/permitidos"

El fichero /etc/squid/permitidos contendra algo como siguiente:


192.168.1.1 192.168.1.2 192.168.1.3 192.168.1.15 192.168.1.16 192.168.1.20

Servidor Proxy Squid en Ubuntu

Pgina 8 de 14

Se puede definir una ACL que est formada por palabras incluidas en la URL o direccin de la pgina web, por ejemplo:
acl no_permitidos url_regex sexo hotmail porno

Igual que en el caso anterior, se pueden definir estas ACL de palabras incluidas en la URL, mediante un fichero que contenga estas palabras, sobre todo si la lista de palabras es extensa:
acl denegados url_regex "/etc/squid/denegados"

En este ejemplo el fichero es /etc/squid/denegados que contendr las siguientes lneas:


facebook sexo hotmail porno messenger

Tambin se pueden declarar ACL de direcciones de destino o dominios, por ejemplo:


acl adultos dstdomain playboy.com sex.com hotmail.com

Y por supuesto se puede realizar esto mediante un fichero que contenga un dominio en cada lnea, si la lista de dominios es muy grande.
acl dosrombos dstdomain "/etc/squid/dosrombos"

5.4.2.

Reglas de Control de Acceso

Las Reglas de Control de Acceso se aplican sobre las ACL's creadas anteriormente y permite o deniega el acceso a internet a cada una de estas Listas de Control de Acceso (ACL). Las Reglas de Control de Acceso definidas por el administrador, se deben insertar, a partir de donde se localiza la siguiente leyenda (al igual que sucede con las ACL):
# 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 el siguiente ejemplo consideramos una regla que establece acceso permitido a Squid a la Lista de Control de Acceso denominada permitidos:
http_access allow permitidos

Tambin pueden definirse reglas valindose de la expresin !, la cual significa excepcin. En el siguiente ejemplo hay dos listas de control de acceso, una denominada lista1 y otra denominada lista2 en donde se asigna la expresin ! a una de estas. La siguiente establece que se permite el acceso a Squid a lo que comprenda lista1 excepto aquello que establezca lista2:
http_access allow lista1 !lista2

Este tipo de reglas son tiles 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.

Servidor Proxy Squid en Ubuntu

Pgina 9 de 14

5.4.3.

Aplicando Listas y Reglas de control de acceso.

Una vez comprendido el funcionamiento de la Listas y las Reglas de Control de Acceso, procederemos a determinar cuales utilizar para nuestra configuracin.
5.4.3.1. Permitir el acceso a una red local

Considerando como ejemplo que se dispone de una red local 192.168.1.0/24, habr que escribir las siguientes lneas en el lugar adecuado, detrs de INSERT YOUR OWN RULE(S).....
# INSERT YOUR OWN RULE(S) HERE TO ALLOW ACCESS FROM YOUR CLIENTS# acl redlocal src 192.168.1.0/24 http_access allow localhost http_access allow redlocal http_access deny all

La regla http_access allow redlocal permite el acceso a Internet a la Lista de Control de Acceso denominada redlocal, la cual est conformada por la red 192.168.1.0/24. Esto significa que cualquier mquina desde 192.168.1.1 hasta 192.168.1.254 podr acceder a internet a travs de Squid en caso de que lo haya ;-) Y por supuesto la red localhost del propio ordenador donde se instal Squid.
5.4.3.2. Permitir el acceso a listas de direcciones IP

Si solo se desea permitir el acceso a Squid a ciertas direcciones IP de la red local, deberemos crear un fichero que contenga dicha lista. Genere el fichero /etc/squid/lista, dentro del cual se incluirn solo aquellas direcciones IP que desea confirmen la Lista de Control de acceso. Ejemplo:
192.168.1.1 192.168.1.2 192.168.1.3 192.168.1.15 192.168.1.16

habr que escribir las siguientes lneas en el lugar adecuado, detrs de INSERT YOUR OWN RULE(S).....:
# INSERT YOUR OWN RULE(S) HERE TO ALLOW ACCESS FROM YOUR CLIENTS# acl listaIP src "/etc/squid/lista" http_access allow localhost http_access allow listaIP http_access deny all

La regla http_access allow listaIP 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 fichero /etc/squid/lista. esto significa que cualquier mquina no incluida en /etc/squid/lista no tendr acceso a Internet, salvo la red localhost
5.4.3.3. Impedir el acceso a dominios

Existe un caso frecuente, consistente en prohibir el acceso a una lista de sitios consideramos como "inapropiados". Squid no est optimizado para gestionar una larga lista de sitios, pero puede gestionar un nmero concreto de sitios sin problemas.
# INSERT YOUR OWN RULE(S) HERE TO ALLOW ACCESS FROM YOUR CLIENTS# acl adultos dstdomain playboy.com sex.com acl hostpermitidos src 10.0.0.0/8 http_access http_access http_access http_access deny adultos allow localhost allow hostpermitidos deny all

Servidor Proxy Squid en Ubuntu

Pgina 10 de 14

Este ejemplo indica que las URLs playboy.com o sex.com sern denegadas, ya que as lo especifica la primera lnea de la directiva "http_access". Si se piden otras URLs, lgicamente la primera lnea no es aplicable, y Squid pasa a considerar la segunda y tercera. Por tanto, si el cliente se conecta dentro del rango permitido se cursar la peticin. De lo contrario, la peticin ser rechazada.

5.5.

Idioma de los mensajes mostrados por Squid al usuario.

Squid incluye traduccin a distintos idiomas de las distintas pginas de error e informativas que son desplegadas en un momento dado durante su operacin. Dichas traducciones se pueden encontrar en /usr/share/squid/errors/. Para poder hacer uso de las pginas de error traducidas al espaol, es necesario cambiar un enlace simblico localizado en /etc/squid/errors para que apunte hacia /usr/share/squid/errors/Spanish en lugar de hacerlo hacia /usr/share/squid/errors/English. Elimine primero el enlace simblico actual:
rm -f /etc/squid/errors

Coloque un nuevo enlace simblico apuntando hacia el directorio con los ficheros correspondientes a los errores traducidos al espaol.
ln -s /usr/share/squid/errors/Spanish /etc/squid/errors

Importante: Este enlace simblico debe verificarse, y regenerarse de ser necesario, cada vez que se actualice Squid.

5.6.

Proxy acelerado: aceleracin de Servidores HTTP

Activar la opcin del proxy acelerado con Squid, permite que un servidor web no sea accedido directamente desde internet, ya que el servidor proxy Squid acta como intermediario entre Internet y el servidor de pginas web (por ejemplo Apache). Es decir, Squid ahora hace de proxy (intermediario) para tu servidor web, los clientes que accedan a tu web, en vez de ir directamente al servidor de pginas web, llegarn hasta tu proxy Squid y este har las peticiones al servidor web. Con este concepto la principal ventaja es la seguridad, ya que nicamente tu proxy accede al servidor web, como adems el servidor proxy hace uso de la memoria cach aumenta la velocidad de servir pginas web, ya que liberas al servidor web de procesos. Con las ltimas versiones del servidor Apache no es necesario acelerar el servidor Proxy, ya que Apache es capaz por si solo de ofrecer un rendimiento ptimo. En general, no se recomienda activar esta opcin de acelerar un servidor web mediante Squid, a menos que:

El Servidor de pgina Web sea lento , de modo que Squid pueda acelerar el rendimiento del servidor de pginas web. Bajo rendimiento de la red. El servidor web puede estar en una red lenta, por lo que har que su sitio web ms rpido para el resto del mundo. Seguridad. Puede usar Squid para ocultar un servidor web inseguro que es propenso a ser atacado desde el exterior.

Servidor Proxy Squid en Ubuntu

Pgina 11 de 14

5.6.1.

Activacin de proxy acelerado.

Si se quiere activar el proxy cach (proxy acelerado), hay que distinguir varios casos: a) Versiones de Squid 2.5 y anteriores Opciones para Servidor Intermediario (Proxy) en modo convencional. En la seccin HTTPDACCELERATOR OPTIONS deben habilitarse los siguientes parmetros:
httpd_accel_host virtual httpd_accel_port 0 httpd_accel_with_proxy on

El servidor Squid escucha por el puerto 80 y Apache escucha por el puerto 81, estn situados en la misma mquina, entonces habr que hacer lo siguiente:
http_port 80 httpd_accel_host virtual httpd_accel_port 81 httpd_accel_with_proxy on

b) Versiones de Squid 2.6 y posteriores El servidor Squid escucha por el puerto 80 y Apache escucha por el puerto 81, estn situados en la misma mquina, entonces habr que hacer lo siguiente:
http_port 80 vhost cache_peer 127.0.0.1 parent 81 0 no-query originserver

Fuente: http://www.tetromino.net/blog/2006/07/27/squid-26-in-accelerator-mode/ 127.0.0.1 indica que el Servidor Apache est ubicado en el mismo ordenador que el proxy Squid. En otros manuales indica que es interesante activar la opcin (collapsed_forwarding on) cuando activamos el proxy acelerado, por ejemplo:
http_port 10.12.12.12:80 vhost vport cache_peer 127.0.0.1 parent 80 acl apache rep_header Server ^Apache broken_vary_encoding allow apache maximum_object_size_in_memory 80 KB emulate_apache_log on collapsed_forwarding on vary_ignore_expire on 0 originserver default

logformat combined %>a %ui %un [%tl] "%rm %ru

HTTP/%rv" %Hs %<st "%{Referer}>h" "%{User-Agent}>h" %Ss:%Sh

Fuente: http://myzope.kedai.com.my/blogs/kedai/94

5.7.

Proxy transparente

Si deseamos disponer de un servicio de proxy en el que los clientes no tengan que modificar nada en la configuracin del navegador necesitamos montar un proxy transparente. Para disponer de esta funcionalidad descomentaremos en el fichero de configuracin de Squid (/etc/squid/squid.conf) las siguientes lneas: a) Versiones de Squid 2.5 y anteriores
httpd_accel_host virtual # numero de puerto del servidor Web (http) => 80 httpd_accel_port 80 httpd_accel_with_proxy on httpd_accel_uses_host_header on

Servidor Proxy Squid en Ubuntu

Pgina 12 de 14

Tambin sera correcta esta configuracin, si el servidor web de la red local es 192.168.1.254, considerando que se har uso del cach de un servidor HTTP (por ejemplo Apache) como auxiliar:
# Debe especificarse la IP de cualquier servidor HTTP # en la red local o bien el valor virtual httpd_accel_host 192.168.1.254 # numero de puerto del servidor Web (http) => 80 httpd_accel_port 80 httpd_accel_with_proxy on httpd_accel_uses_host_header on

Opciones para Proxy Transparente para redes con Internet Exlorer 5.5 y versiones anteriores.
# Debe especificarse la IP de cualquier servidor HTTP en la red local o bien virtual httpd_accel_host 192.168.1.254 httpd_accel_port 80 httpd_accel_with_proxy on httpd_accel_uses_host_header on ie_refresh on

b) Versiones de Squid 2.6 y posteriores Si el servidor http de la red local es 192.168.1.254 y el puerto por el que escucha es el 8080, para no interferir con squid que escucha por el puerto 80.
http_port 192.168.1.254:8080 transparent

En caso de no haber un servidor HTTP en la red local, se puede activar directamente el proxy transparente de la siguiente forma:
http_port 3128 transparent

5.7.1.

Re-direccionamiento de peticiones a travs de iptables y Firestarter.

Si se tiene poca experiencia con guiones de cortafuegos a travs de iptables, sugerimos utilizar Firestarter. ste permite configurar fcilmente tanto el enmascaramiento de IP como el cortafuegos. Firestarter: http://www.fs-security.com/ En un momento dado se requerir tener salida transparente hacia Internet para ciertos servicios, pero al mismo tiempo se necesitar 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. No se puede hacer Servidor Intermediario (Proxy) Transparente para los protocolos HTTPS, FTP, GOPHER ni WAIS, por lo que dichos protocolos tendrn que ser filtrados a travs del NAT. El re-direccionamiento lo hacemos a travs de iptables. Considerando para este ejemplo que la red local se accede a travs de una interfaz eth0, el siguiente esquema ejemplifica un re-direccionamiento:
iptables -t nat -A PREROUTING -i eth0 -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 Squid (tambin se puede hacer para otro puerto como el 3128 que es ms comn en Squid). Utilizando Firestarter, la regla anteriormente descrita se aade en el fichero /etc/firestarter/user-post.

Servidor Proxy Squid en Ubuntu

Pgina 13 de 14

Ejemplo: configuracin de todas las reglas de filtrado de paquetes (supondremos que el interfaz de red conectado a Internet es eth1 y el de la red local eth0 con direccin: 172.26.0.0/16). Un posible script de configuracin puede ser (muy parecido al que se propuso anteriormente, salvo por que este incluye el redireccionamiento, puedes incluir el script en /etc/rc.local para Ubuntu):
# Activar enrutamiento echo 1 >/proc/sys/net/ipv4/ip_forward # Limpiar las reglas de filtrado y NAT del cortafuegos iptables iptables --flush iptables -t nat --flush #Activamos el NAT con enmascaramiento iptables -t nat -A POSTROUTING -s 172.26.0.0/16 -o eth1 -j MASQUERADE # Permitir el trfico de la red local hacia otra red (enrutamiento) que antes hemos enmascarado iptables -A FORWARD -s 172.26.0.0/16 -i eth0 -j ACCEPT # Hacer que squid responda a llamadas http por el puerto 80 iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 8080 # Poltica para la red local de todo permitido iptables -A INPUT -s 172.26.0.0/16 -j ACCEPT

En las mquinas clientes solo ser necesario poner la puerta de enlace y las IPs de los servidores de nombres (si se utiliza un servicio de DHCP se puede hacer automticamente). Pero ya no hay que optar por configurar nada en los navegadores. Importante: Ten en cuenta que para poder activar el proxy transparente con Squid, necesitamos una mquina con al menos dos tarjetas de red reales, no vale en este caso configuraciones de una tarjeta de red real denominada eth0 y otra virtual eth0:0 ya que las reglas de filtrado no estn permitidas sobre interfaces de red virtual. Esto se puede resolver con una mquina virtual donde podemos simular otra tarjeta de red, es decir, tener instalado proxy squid en una mquina virtual donde podemos engaar al sistema operativo (en este caso Linux) para que crea que tenga dos tarjetas de red (o todas las que necesites).

6. Inicio y parada de Squid. Depuracin de errores.


Para arrancar, el servidor proxy Squid, hay que ejecutar el comando: sudo /etc/init.d/squid start Parar: sudo /etc/init.d/squid stop Reiniciar: sudo /etc/init.d/squid restart Tambin se puede usar el comando en Ubuntu 10.04: # service squid {start | stop | restart} Ojo! En Ubuntu 10.10: hay que usar el comando: # {start | stop | restart} squid El formato general de Squid es: # /etc/init.d/squid { force-reload reload restart start stop } Por defecto, el servidor Squid en Ubuntu se iniciar automticamente al arrancar el ordenador. Si no te interesa esto, puedes deshabilitar esta opcin mediante: # update-rc.d -f squid remove Y para que de nuevo vuelva a iniciarse Squid al arrancar el ordenador: # update-rc.d squid

Servidor Proxy Squid en Ubuntu

Pgina 14 de 14

6.1.

Depuracin de errores

Cualquier error al inicio de Squid solo significa que hubo errores de sintaxis o bien se estn citando incorrectamente las rutas hacia los ficheros de las Listas de Control de Acceso. Puede realizar diagnstico de problemas indicndole a Squid que vuelva a leer configuracin, lo cual devolver los errores que existan en /etc/squid/squid.conf.
# /etc/init.d/ squid reload

Tambin puede iniciar Squid directamente desde la lnea de mandato, especificando el modo de depuracin:
# squid -d 5

7. Configuracin de los clientes


Para poder acceder a Internet a travs de un navegador web desde el cliente, habr que configurar dicho navegador, indicando la direccin IP del servidor proxy Squid y el puerto por el que escucha. Por ejemplo, si nuestro servidor proxy Squid tiene la direccin IP: 192.168.55.200 y escucha por el puerto 3128. Hay que configurar el navegador Mozilla accediendo al men: EditarPreferenciasAvanzadasProxyConfiguracin Manual del Proxy, pulsamos Ver y en los distintos protocolos ponemos el host : 192.168.55.200 por el puerto 3128 que es por el que escucha el Squid peticiones de sus clientes. Podemos ponerlo en todos los protocolos menos en el socks.

8. Documentacin
Este documento ha sido elaborado gracias a la aportacin de:

http://www.linuxparatodos.net/ http://www.josedomingo.org/web/file.php/41/2/entrega2.pdf http://es.wikipedia.org/wiki/Squid http://www.idesoft.es/www2/squid/control.php Para consultar ms opciones por ejemplo: jerarqua de caches visita la pgina web: http://www.alcancelibre.org/staticpages/index.php?page=19-0-como-squid-general Curso: Servidores con GNU/LINUX en un Centro educativo. A. Saorn.