Proxy Squid 2.6 3

Servidor Proxy Squid en Ubuntu Página 1 de 14 Servidor Proxy Squid en Ubuntu 1. Servidor Proxy Caché Squid............

Views 50 Downloads 0 File size 224KB

Report DMCA / Copyright

DOWNLOAD FILE

Recommend stories

Citation preview

Servidor Proxy Squid en Ubuntu

Página 1 de 14

Servidor Proxy Squid en Ubuntu 1. Servidor Proxy Caché Squid......................................................................................................2 2. Instalación........................................................................................................................................... 2 3. Preparar el servidor Proxy para que funcione................................................................. 3 3.1. Configuración de las tarjetas de red......................................................................................... 3 3.2. Activar el enrutamiento............................................................................................................... 3 3.3. Configurar el Cortafuegos...........................................................................................................3 3.3.1. Ejemplo 1: configuración básica de todas las reglas de filtrado ......................................... 3 3.3.2. Ejemplo 2: Configuración avanzada para el cortafuegos.....................................................4 3.3.3. Comprobar el encaminamiento............................................................................................... 4 4. Antes de continuar.......................................................................................................................... 5 5. Configuración....................................................................................................................................5 5.1. Parámetro http_port: ¿Que puerto utilizar para Squid?.................................................... 5 5.2. Parámetro cache_mem.................................................................................................................6 5.3. Parámetro cache_dir: Tamaño 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: aceleración de Servidores HTTP............................................................. 10 5.6.1. Activación de proxy acelerado. ............................................................................................11 5.7. Proxy transparente .....................................................................................................................11 5.7.1. Re-direccionamiento de peticiones a través de iptables y Firestarter................................ 12 6. Inicio y parada de Squid. Depuración de errores..........................................................13 6.1. Depuración de errores................................................................................................................ 14 7. Configuración de los clientes....................................................................................................14 8. Documentación................................................................................................................................14 Autor: Ramón José Martínez Cuevas. Esta obra está bajo una licencia de Creative Commons.

Servidor Proxy Squid en Ubuntu

Página 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 páginas 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 búsquedas para un grupo de gente que comparte recursos de la red, hasta caché de web, además de añadir seguridad filtrando el tráfico. Está especialmente diseñado para ejecutarse bajo entornos tipo Unix, aunque tiene versiones para otros sistemas operativos como Windows. Funcionamiento de la caché: cuando un usuario hace petición hacia un objeto en Internet, este es almacenado en la memoria caché, si otro usuario hace petición hacia el mismo objeto, y este no ha sufrido modificación 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 función permite navegar rápidamente cuando los objetos ya están en la memoria caché y además optimiza enormemente la utilización del ancho de banda. Además, guarda una lista de peticiones repetidas a DNS, para que la resolución de nombres de dominio sea más rápida. Otra función que realiza Squid es la de proporcionar un servicio de proxy (actuar de intermediario) a ordenadores que necesiten acceder a internet a través de algún tipo de cortafuegos. Por eso es común 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, aceleración HTTP de Servidores Web como Apache, caché de consultas DNS y otras muchas más como filtración 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 través de un NAT (Network Adress Translation) o bien hacer uso de un servidor SOCKS como Dante.

2. Instalación Escriba en una terminal de comandos: sudo apt-get install squid Observe que versión de squid, ha instalado, con Ubuntu 8.04 la versión instalada debería ser squid 2.6.STABLE18 . Para comprobar la versión instalada ejecute el comando: squid -v Los ficheros y directorios más importantes son: ●

El directorio /etc/squid : donde se guardan los ficheros de configuración: 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 documentación se encuentra en /usr/share/doc/squid-x.x.x/



En /var/spool/squid se van a encontrar las páginas “cacheadas”, es decir, las traídas desde Internet y que se almacenan para la próxima vez que las solicite alguien y no hayan cambiado.



En /var/log/squid se guardan los accesos de nuestros usuarios a Internet a través del proxy, así como los posibles errores que hayan ocurrido.

Servidor Proxy Squid en Ubuntu

Página 3 de 14

3. Preparar el servidor Proxy para que funcione. 3.1.

Configuración de las tarjetas de red

El servidor Proxy Squid necesita tener al menos 2 tarjetas de red reales (aunque para hacer prácticas 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 accederán a Internet a través 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 través 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 dirección 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 través del servidor proxy Squid y de esta forma podremos filtrar el contenido al que puede acceder, e incluso impedirle el acceso según 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 sería 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

También se puede hacer permanentemente, descomentando la siguiente línea en el fichero de configuración /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 dirección IP pública que normalmente se tiene para acceder a Internet

3.3.1.

Ejemplo 1: configuración básica 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 dirección: 172.26.0.0/16). Un posible script de configuración 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 tráfico generado por el enrutamiento iptables -A FORWARD -s 172.26.0.0/16 -i eth0 -j ACCEPT # Permitir el tráfico entrante que proviene de la red local iptables -A INPUT -s 172.26.0.0/16 -j ACCEPT

Servidor Proxy Squid en Ubuntu

3.3.2.

Página 4 de 14

Ejemplo 2: Configuración avanzada para el cortafuegos

La configuración anterior de cortafuegos permite que los clientes usen el servicio del proxy Squid, pero y ¿si desea algún cliente saltarse el proxy?, con las reglas del cortafuegos en el ejemplo anterior conseguiría saltárselo, para evitar esto se deben añadir algunas reglas más que refuercen la seguridad de nuestro equipo en la red. Para este ejemplo se tendrá la siguiente configuración en un ordenador con dos tarjetas de red: •

wlan0: interfaz que se conecta a Internet a través 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 líneas: # 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 configuración permite pararle los pies a Ultrasurf, una aplicación que da más de un quebradero de cabeza los Administradores de red, ya que se salta la configuración del proxy y cortafuegos de la red, mediante el uso de túneles SSL y proxys anónimos. Artículo 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

Página 5 de 14

4. Antes de continuar Evite dejar espacios vacíos en lugares indebidos. El siguiente es un ejemplo de como no debe descomentarse un parámetro. # Opción incorrectamente des-comentada http_port 3128

El siguiente es un ejemplo de como si debe des-comentarse un parámetro. # Opción correctamente des-comentada http_port 3128

5. Configuración El archivo de configuración que utiliza Squid es /etc/squid/squid.conf, pudiendo encontrarse en otras localizaciones dependiendo de la instalación. Este archivo está ampliamente comentado por lo que no lo analizaremos de forma detallada, sino que haremos un rápido recorrido por el fichero de configuración centrándonos en los aspectos que consideremos más importantes. Sería bueno realizar una copia de seguridad del fichero squid.conf, mediante el comando: # cp

5.1.

/etc/squid/squid.conf

/etc/squid/squid.conf.copia

Parámetro 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 configuración 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, también 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 día ya no es del todo práctico el utilizar un Proxy Transparente, a menos que se trate de un servicio de Café Internet u oficina pequeña, 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 más conveniente configurar un servidor Proxy con restricciones por contraseña, lo cual no puede hacerse con un Proxy Transparente, debido a que se requiere un diálogo de nombre de usuario y contraseña. Regularmente algunos programas utilizados comúnmente 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 también. Siendo así localice la sección de definición 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

5.2.

Página 6 de 14

Parámetro 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 hábitos 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 parámetro: cache_mem 16 MB

5.3.

Parámetro cache_dir: Tamaño de la caché

Este parámetro establece que tamaño 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 línea: cache_dir ufs /var/spool/squid 100 16 256

Se puede incrementar el tamaño de la memoria caché hasta donde lo desee el administrador. Mientras más grande sea la cache, más objetos de almacenarán en éste y por lo tanto se utilizará menos el ancho de banda. La siguiente línea establece un cache de 700 Mb: cache_dir ufs /var/spool/squid 700 16 256

Los números 16 y 256 significan que el directorio del caché contendrá 16 subdirectorios con 256 niveles cada uno. No modifique esto números, no hay necesidad de hacerlo. El sistema de almacenamiento usado se especifica con el parámetro ufs. Es muy importante considerar que si se especifica un determinado tamaño de caché y este excede al espacio real disponible en el disco duro, Squid se bloqueará inevitablemente. Sea cauteloso con el tamaño 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 líneas, que nunca deberían ser modificadas, en concreto en la versión 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

Página 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, dirección 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 línea: # 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 través de la IP que corresponde a la red y la máscara de red. Por ejemplo, si se tiene la red 192.168.1.0 con máscara de red 255.255.255.0, podemos utilizar lo siguiente: acl miredlocal src 192.168.1.0/255.255.255.0

También se puede definir así en notación 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

También 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 contendría 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

Página 8 de 14

Se puede definir una ACL que esté formada por palabras incluidas en la URL o dirección de la página 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 líneas: facebook sexo hotmail porno messenger

También 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 línea, 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 básica 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

También pueden definirse reglas valiéndose de la expresión !, la cual significa excepción. En el siguiente ejemplo hay dos listas de control de acceso, una denominada lista1 y otra denominada lista2 en donde se asigna la expresión ! 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

5.4.3.

Página 9 de 14

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 configuración. 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 líneas en el lugar adecuado, detrás 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 máquina desde 192.168.1.1 hasta 192.168.1.254 podrá acceder a internet a través 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 incluirán 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 líneas en el lugar adecuado, detrás 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 máquina 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 número 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

Página 10 de 14

Este ejemplo indica que las URLs playboy.com o sex.com serán denegadas, ya que así lo especifica la primera línea de la directiva "http_access". Si se piden otras URLs, lógicamente la primera línea 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 petición. De lo contrario, la petición será rechazada.

5.5.

Idioma de los mensajes mostrados por Squid al usuario.

Squid incluye traducción a distintos idiomas de las distintas páginas de error e informativas que son desplegadas en un momento dado durante su operación. Dichas traducciones se pueden encontrar en /usr/share/squid/errors/. Para poder hacer uso de las páginas de error traducidas al español, es necesario cambiar un enlace simbólico 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 simbólico actual: rm -f /etc/squid/errors

Coloque un nuevo enlace simbólico apuntando hacia el directorio con los ficheros correspondientes a los errores traducidos al español. ln -s /usr/share/squid/errors/Spanish /etc/squid/errors

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

5.6.

Proxy acelerado: aceleración de Servidores HTTP

Activar la opción del proxy acelerado con Squid, permite que un servidor web no sea accedido directamente desde internet, ya que el servidor proxy Squid actúa como intermediario entre Internet y el servidor de páginas 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 páginas web, llegarán 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 además el servidor proxy hace uso de la memoria caché aumenta la velocidad de servir páginas 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 opción de acelerar un servidor web mediante Squid, a menos que: ● ● ●

El Servidor de página Web sea lento, de modo que Squid pueda acelerar el rendimiento del servidor de páginas web. Bajo rendimiento de la red. El servidor web puede estar en una red lenta, por lo que hará que su sitio web más rápido 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

5.6.1.

Página 11 de 14

Activación 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 sección HTTPDACCELERATOR OPTIONS deben habilitarse los siguientes parámetros: 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, están situados en la misma máquina, 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, están situados en la misma máquina, 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 opción (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

0

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

originserver default

HTTP/%rv" %Hs % 80 httpd_accel_port 80 httpd_accel_with_proxy on httpd_accel_uses_host_header on

Servidor Proxy Squid en Ubuntu

Página 12 de 14

También sería correcta esta configuración, 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 través de iptables y Firestarter.

Si se tiene poca experiencia con guiones de cortafuegos a través de iptables, sugerimos utilizar Firestarter. éste permite configurar fácilmente 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 través 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 tendrán que ser filtrados a través del NAT. El re-direccionamiento lo hacemos a través de iptables. Considerando para este ejemplo que la red local se accede a través 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 guión de cortafuegos funcional en un sistema con dos interfaces de red, hace que cualquier petición hacia el puerto 80 (servicio HTTP) hecha desde la red local hacia el exterior, se re-direccionará hacia el puerto 8080 del servidor Squid (también se puede hacer para otro puerto como el 3128 que es más común en Squid). Utilizando Firestarter, la regla anteriormente descrita se añade en el fichero /etc/firestarter/user-post.

Servidor Proxy Squid en Ubuntu

Página 13 de 14

Ejemplo: configuración 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 dirección: 172.26.0.0/16). Un posible script de configuración 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 tráfico 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 # Política para la red local de todo permitido iptables -A INPUT -s 172.26.0.0/16 -j ACCEPT

En las máquinas 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 automáticamente). 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 máquina 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 están permitidas sobre interfaces de red virtual. Esto se puede resolver con una máquina virtual donde podemos simular otra tarjeta de red, es decir, tener instalado proxy squid en una máquina virtual donde podemos “engañar” 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. Depuración 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 También 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á automáticamente al arrancar el ordenador. Si no te interesa esto, puedes deshabilitar esta opción 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

6.1.

Página 14 de 14

Depuración de errores

Cualquier error al inicio de Squid solo significa que hubo errores de sintaxis o bien se están citando incorrectamente las rutas hacia los ficheros de las Listas de Control de Acceso. Puede realizar diagnóstico de problemas indicándole a Squid que vuelva a leer configuración, lo cual devolverá los errores que existan en /etc/squid/squid.conf. # /etc/init.d/ squid reload

También puede iniciar Squid directamente desde la línea de mandato, especificando el modo de depuración: # squid -d 5

7. Configuración de los clientes Para poder acceder a Internet a través de un navegador web desde el cliente, habrá que configurar dicho navegador, indicando la dirección IP del servidor proxy Squid y el puerto por el que escucha. Por ejemplo, si nuestro servidor proxy Squid tiene la dirección IP: 192.168.55.200 y escucha por el puerto 3128. Hay que configurar el navegador Mozilla accediendo al menú: Editar→Preferencias→Avanzadas→Proxy→Configuración 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. Documentación Este documento ha sido elaborado gracias a la aportación 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 más opciones por ejemplo: jerarquía de caches visita la página web: http://www.alcancelibre.org/staticpages/index.php?page=19-0-como-squid-general



Curso: Servidores con GNU/LINUX en un Centro educativo. A. Saorín.