Pesquisar

Como instalar DansGuard en windows.

Contenido
• Introduccion
• Requisitos Previos
• Recolectando lo necesario
• Instalacion y compilacion
• Opciones Avanzadas
• Configuracion de Squid
• Configuracion del Cliente
• Soporte

Introduccion
Esta no es una guia de instalacion rapida. Este documento apunta a quien busca instrucciones detalladas sobre DansGuardian 2.2.x. Para instalar DansGuardian en forma rapida, le recomendamos leer la Guia de Instalacion Rapida.

Requisitos Previos
Se requiere una distribucion razonablemente reciente de Linux, FreeBSD, OpenBSD, Solaris o SuSE. Tambien se requiere squid corriendo en el puerto 3128.
DansGuardian es in filtro directo que se ubica entre el el cliente Web (web browser) y el Servidor Proxy Squid. Dansguardian acepta conexiones en el puerto 8080 y se conecta a squid en el puerto 3128. Por lo tanto, es importante que no haya otro servicio utilizando el puerto 8080.
Tambien se necesita un Servidor Web. El servicio Apache (httpd) que se incluye con RedHat 6.2 es perfecto y seria dificil encontrar un mejor servidor para tal efecto. El Servidor se usa para mostrar un script cgi escrito en perl que notifiaca al usuario en caso de haber un 'Acceso Denegado'.
Se necesitan tambien varias herramientas de desarrollo estandar como glibc, autoconf, gcc and make. Los usuarios de Debian tambien necesitaran zlib1g-dev. La instalacion predeterminada de Redhat 6.2 y muchas otras ya incluyen dichas herramientas, por lo que no necesitaria preocuparse por las mismas.
La mayoria del tiempo, durante la instalacion necesitara estar conectado como root o para usuarios experimentados, el proceso completo directamente puede efectuarse como root.
Asegurese de que todo lo mencionado previamente esta instalado y funcionando correctamente antes de proseguir.

Recolectando lo necesario
Obviamente necesitara DansGuardian. Lo puede obtener aqui: DansGuardian, o en el sitio US mirror.
Es recomendable instalar desde el codigo fuente ya que siempre esta al dia. Sin embargo, hay paquetes pre-compilados para distintas distribuciones. A fines instructivos, esta guia detalla el proceso de instalacion desde el codigo fuente.

Instalacion y compilacion
Si desea instalar DansGuardian en forma rapida y evitar los detalles de esta guia, no olvide que puede contar con la Guia de Instalacion Rapida.
1. Ponga DansGuardian-2.2.*.source.tar.gz en un area temporal y descomprima el archivo con tar -zxpf. Esto creara el sub-directorio DansGuardian-2.2.*.
DansGuardian usa el autoconf de gnu, auto-generando el archivo Makefile con el script "configure".
2. Ingrese al nuevo directorio con cd. Ejecute el script "configure" con la opcion de ayuda (./configure --help) para ver las opciones de configuracion (vea la tabla a continuacion).
opcion descripcion valor predeterminado
bindir Donde se instalan los binarios o ejecutables /usr/sbin/
sysconfdir Donde se instalan los archivos de configuracion y datos /etc/dansguardian/
sysvdir Donde se instala el script de inicio /etc/rc.d/init.d/
cgidir Ubicacion del directorio cgi-bin /home/httpd/cgi-bin/
mandir Ubicacion de los manuales /usr/man/
logdir Donde se crearan los archivos historicos (logs) /var/log/dansguardian/
runas_usr El usuario de sistema corre como nobody
runas_grp El grupo del usuario del sistema es nobody
piddir Ubicacion del archivo de identificacion del proceso (pid) /var/run/
3. Ejecute "configure" con las opciones deseadas. Por ejemplo vea la seccion Ejemplos de Scripts de Configuracion mas adelante.
Los usuarios de RedHat 6.2 y 7.0 users pueden usar las configuraciones predeterminadas. Los usuarios de RedHat 7.1 y 7.2 necesitaran especificar la opcion cgidir. Usuarios de Solaris, OpenBSD y FreeBSD necesitaran ajustar casi todas las opciones en forma manual.
4. Modifique el archivo Makefile y verifique que todos los parametros son correctos. De no ser asi, ejecute el script nuevamente. Si no esta familiarizado con archivos Makefile, saltee este paso.

5. Ejecute make para compilar DansGuardian (gmake en Solaris).

6. Ejecute make install para crear la estructura de directorios, instalar el programa y archivos en los directorios elejidos y ajustar los permisos en forma apropiada.

7. Ejecute make clean para eliminar los archivos no necesarios.

8. Cuando una pagina es denegada, DansGuardian redireccionara al usuario al script cgi perl en su servidor web, donde el usuario vera el reporte. De esta forma es facil personalizar los mensajes que el usuario recibira. Este servidor no necesariamente tiene que correr en el mismo ordenador donde corre el servicio DansGuardian. Sin embargo, de no estar en el ordenador local, tendra que enmendar o eliminar la linea que especifica la ubicacion del script perl en el archivo Makefile.
Para configurar la direccion del servidor web que mostrara la pagina con el reporte de error, modifique la variable accessdeniedaddress dentro del archivo dansguardian.conf (vea sysconfdir arriba). Para mas opciones de configuracion, vea la seccion Opciones Avanzadas
9. Por ultimo, debe configurar la rotacion de los archivos historicos (logs). La rotacion de los historicos evitara que el crecimiento desmedido de los historicos llene el sistema de archivos. La mayoria de los servicios rotan sus historiales una vez por semana. Con DansGuardian, hay cinco archivos historicos: access.log, access.log.1, access.log.2 ... y asi sucesivamente hasta 4. Todas las semanas, el archivo mas antiguo de los cinco es eliminado y los nombres de los demas archivos se incrementan en uno y un nuevo archivo access.log es creado. El script Makefile copia el script de rotacion de historiales al directorio de configuracion. Es necesario entonces agendar la ejecucion de este proceso de la siguiente manera: Ejecute crontab -e (como root) y agrege la siguente linea:
59 23 * * sat /etc/dansguardian/logrotation
Grabe el archivo. Esto agendara la rotacion a las 23:59 todos los sabados. Por supuesto, usted puede personalizar este parametro y modificar el script de rotacion como usted lo prefiera.
DansGuardian ya esta listo. Ahora puede iniciarlo simplemente ejecutando el binario (por ejemplo, escriba dansguardian y presione Retorno). Puede detenerlo con dansguardian -q. O use el script provisto SysV(-like). Ejecute dansguardian -h para ver otras opciones disponibles.
Ejemplos de Scripts de Configuracion
A continuacion vera algunos ejemplos de opciones para el script de configuracion para diferentes distribuciones:
FreeBSD
La ejecucion con los valores predeterminados deberia funcionar, siempre y cuando la instalacion de FreeBSD haya sido efectuada ubicando los programas en forma predeterminada.

./configure --cgidir=/usr/local/www/cgi-bin/ \
--sysconfdir=/usr/local/etc/dansguardian/ \
--sysvdir=/usr/local/etc/rc.d/ \
--bindir=/usr/local/sbin/ \
--mandir=/usr/local/man/

OpenBSD
La ejecucion con los valores predeterminados deberia funcionar, siempre y cuando la instalacion de OpenBSD haya sido efectuada ubicando los programas en forma predeterminada.

./configure --cgidir=/var/www/cgi-bin/ \
--sysconfdir=/usr/local/etc/dansguardian/ \
--sysvdir=/usr/local/etc/rc.d/ \
--bindir=/usr/sbin/ \
--mandir=/usr/share/man/
RedHat 6.2/7.0
Tambien es posible ejecutar "configure" (./configure) con los valores predeterminados.

RedHat 7.1/7.2
./configure --sysconfdir=/usr/local/etc/dansguardian/ \
--sysvdir=/etc/rc.d/init.d/ \
--cgidir=/var/www/cgi-bin/

Mandrake 7.2
./configure --mandir=/usr/share/man/

Mandrake 8/8.1
./configure --mandir=/usr/share/man/ \
--cgidir=/var/www/cgi-bin/

El usuario de sistema 'squid' puede tambien ser apropiado en lugar de 'nobody' cuando configure el valor del parametro "runas".
SuSE 7.2
./configure --runas_grp=nogroup \
--cgidir=/usr/local/httpd/cgi-bin/

SuSE 7.3
./configure --runas_grp=nogroup \
--cgidir=/usr/local/httpd/cgi-bin/ \
--sysvdir=/etc/init.d/
Solaris
Solo se ha testeado Solaris 8 (7/01). DansGuardian necesita la version GNU de make (gmake), y GCC version 2.95.3 (3.01 puede funcionar, pero no ha sido testeado todavia y por lo tanto, no recomendado).

Ambos gmake y GCC 2.95.3 estan incluidos en el Sistema Operativo en el "Companion CD", y por lo general se instalan en /opt/sfw/bin. Para asegurar que existen en esta ubicacion, simplemente haga (in csh; la sintaxis de bash es diferente):

setenv PATH /opt/sfw/bin\:$PATH

Para compilar y configurar, haga:
./configure --bindir=/opt/dansguardian/sbin/ \
--sysconfdir=/opt/dansguardian/etc/ \
--sysvdir=/etc/init.d/ \
--cgidir=/var/apache/cgi-bin/ \
--mandir=/opt/dansguardian/man/ \
--logdir=/opt/dansguardian/log/

Opciones Avanzadas
DansGuardian es altamente versatil. El codigo fuente le garantiza la maxima flexibilidad de configuracion, aunque para la mayoria de los usuarios sera suficiente con modificar los archivos de configuracion. Si modifica el codigo fuente, por favor envie dichas modificaciones a Daniel.
Despues de haber modificado cualquier archivo de configuracion, necesitara reiniciar DansGuardian. Para esto, ejecute el script sysv con la opcion "restart". Por ejemplo, para usuarios de Redhat ejecute en una terminal:
/etc/rc.d/init.d/dansguardian restart
o para OpenBSD:
/usr/local/etc/rc.d/dansguardian.sh restart
Ademas, ejecute dansguardian -q seguido por dansguardian.
Existe un archivo de configuracion principal, varias listas de frases prohibidas y una lista de excepciones. Las mismas se detallan de la siguiente manera:
exceptionsitelist
Este archivo contiene una lista de fines de dominios que de encontrarse en la URL requerida, , DansGuardian no filtrara la pagina. Observe que no debe incluir http:// o www. al comienzo de los dominios.
exceptioniplist
Este archivo contiene una lista de direcciones IP de clientes que saltearan el filtro. Por ejemplo, la direccion IP del administrator.
exceptionuserlist
Lista de nombre de usuario que no seran filtrados (para esto se necesita autenticacion basica o "ident").
bannedphraselist
Contiene la lista de frases prohibidas. Las frases deben encerrarse entre <>. DansGuardian incluye una lista de ejemplo (en ingles). Debe evitar usar palabras como ya qye de esta manera bloqueara paginas que contengan por ejemplo "Universidad Middlesex". Las frases pueden contener espacios. Use los espacios para obtener mayor beneficio del filtrado. Esta es la parte mas util de DansGuardian y atrapara mas paginas que combinando los filtros de imagen y URL juntos.
Tambien puede usar combinaciones de frases, que de ser encontradas en una pagina, seran bloqueadas.
bannedmimetypelist
Contiene una lista de tipos MIME prohibidos. Si una URL retorna un tipo MIME incluido en esta lista, DansGuardian lo bloqueara. DansGuardian incluye algunos ejemplo de tipos MIME a ser bloqueados. Esta es una forma interesante de bloquear peliculas no deseadas, por ejemplo. Es obvio que no tendria sentido filtrar los tipos MIME text/html o image/*.
bannedextensionlist
Contiene una lista de extensiones de archivos no permitidas. Si una URL termina con alguna extension contenida en esta lista, DansGuardian la bloqueara. DansGuardian incluye un archivo de ejemplo que muestra como denegar extensiones. Esta es una buena forma de evitar que se bajen protectores de pantalla y herramientas para hackers. De mas esta decir que seria una tonteria bloquear las extensiones .html o .jpg, etc.
bannedregexpurllist
Este archivo contiene una lista de expresiones regulares (regexp) a ser bloqueadas. Para mas informacion sobre expresiones regulares, visite (en ingles) a href="http://www.opengroup.org/onlinepubs/7908799/xbd/re.html">este lugar.
bannedsitelist
Este archivo contiene una lista de sitios prohibidos. Si ingresa un nombre de dominio aqui, todo el sitio correspondiente al dominio sera bloqueado. Para bloquear partes especificas de un sitio, vea "bannedurllist". Ademas, si asi lo quisiera, puede bloquear todos los sitios con exepcion de los especificados en exceptionsitelist. Tambien puede bloquear sitios especificados con direcciones IP e incluir una coleccion de listas negras squidGuard. Para habilitar dichas listas, obtengalas en la seccion de extras. Simplemente ubique las listas donde lo crea apropiado y quite el comentario de las lineas correspondientes a las listas negras squidGuard al final del archivo bannedsitelist, verificando que las ubicaciones de los archivos son correctas. Para listas negras de URLs, modifique el archivo bannedurllist de manera similar.
bannedurllist
Este archivo le permite bloquear partes especificas de un site en lugar del sito entero. Para bloquear un sitio entero, vea el archivo bannedsitelist. Para habilitar el bloqueo de listas negras squidGuard, necesita bajar las listas y modificar la seccion de listas negras squidGuard al final del archivo. (de la misma forma en que bannedsitelist se ha explicado anteriormente).
pics
Este archivo le permite hacer un ajuste fino del filtro de PICS (Plataforma para la Seleccion de Contenido de la Internet). Cada seccion PICS contiene una descripcion de las configuraciones permitidas y de lo que las mismas representan. Las configuraciones predeterminadas de DansGuardian estan pensadas para jovenes donde, por ejemplo, los desnudos artisticos estan permitidos.
Para mas detalles e information sobre PICS, visite (en ingles) este sitio.
ICRA
La seccion ICRA se explica por si misma. Un valor 0 significa que nada en esta categoria esta permitido, mientras que un valor 1 lo permite. Por ejemplo:
ICRAnudityartistic = 1
permite los desnudos artisticos. Para informacion mas detallada visite (en ingles) este sitio.
RSAC
RSAC es una version antigua de ICRA. Estos valores varian de 0 (nada es permitido) pasando por 2 (valor predeterminado) hasta 4, que permite todo en la categoria. Para informacion mas detallada visite (en ingles) este sitio.
evaluWEB
evaluWEB utiliza un sistema de calificacion similar a la sistema usado en Filmes Britanicos:
0 = U (Universal, para todas las edades)
1 = PG (Se recomienda la presencia de los padres)
2 = 18 (Solo para mayores de 18)
SafeSurf
Similar a RSAC, pero contiene un rango mas amplio de categorias con valores desde 0 = filtrar todo hasta 9 = permitir todo. Para informacion mas detallada visite (en ingles) este sitio.

Weburbia
Vea evaluWEB. Para informacion mas detallada visite (en ingles) este sitio.

Vancouver Webpages
Otro sistema mas para calificacion. Vea (en ingles) este sitio para mas informacion.

dansguardian.conf
La unica configuracion vital aqui es el valor de accessdeniedaddress . El mismo debe equivaler a la direccion URL (no la ubicacion fisica del archivo) del servidor Apache con el script perl de reporte de acceso denegado. Por lo general, Apache esta instalado en el mismo servidor Squid y DansGuardian. De asi desearlo, esta direccion puede ser cualquier pagina en cualquier servidor web.
Reporting Level
El nivel de reporte cuando una pagina es denegada es configurable. El mismo puede decir simplemente 'Acceso Denegado', o mostrar detalles de porque ha sido denegado y que es lo que se ha denegado. Esto ultimo puede ser util para testear, pero puede que no necesite tanto detalle en una aplicacion de produccion como en una escuela por ejemplo. El modo Stealth agrega los detalles al historico pero no bloquea nada.
Logging Settings
Esto le permite configurar el nivel de reporte historico (log). Puede no reportar nada, solo las paginas denegadas, texto o todos los requerimientos de paginas. Los requerimientos de paginas seguras (HTTPS) solo se registran en el historico cuando el valor de logging equicale a 3 (todos los requerimientos).
Network Settings
Aqui puede modificar la direccion de IP en la que DansGuardian va a aceptar conexiones, el puerto en el que va a escuchar, la direccion de IP y puerto del servidor Squid. Tambien se puede configurar el reporte de Acceso Denegado aqui.
Content Filtering Settings
Aqui se especifica la ubicacion de los archivos que contienen las listas de filtrado. Por lo tanto no es recomendable modificar estos valores.
Reverse Lookups for Banned Sites and URLs
Si habilita esta opcion, DansGuardian hara la resolucion reversa DNS (Servidor de Nombre de Dominio) y buscarlo en las listas correspondientes de sitio y URL. Esto evitara que un usuario por ejemplo entre una direccion IP para acceder a dominios prohibidos. Esta opcion afecta a la velocidad de busqueda, por lo que a no ser que tenga un DNS server local, es recomendable dejar esta opcion desabilitada y usar la opcion Blanket IP Block option en el archivo bannedsitelist.
Build bannedsitelist and bannedurllist Cache Files
Esta opcion compara las fechas de actualizacion de los archivos de lista y cache y los regenera de ser necesario. Si un archivo bsl o bul .processed existe, ese sera el contenido a utilizar. Esto incrementa el proceso de inicio en un 300%. En computadores lentos la diferencia es significativa y no es necesario en computadores rapidos.
POST protection (web upload and forms)
Esta opcion bloquea o limita los uploads (subir archivos) y no sirve para bloquear formularios que no tengan 'upload' de archivos. El valor se especifica en kilobytes despues del codificado MIME y encabezados.
Username identification methods (used in logging)
La opcion proxyauth es para cuando se usa autenticacion basica en el proxy (obviamente esta opcion no sirve para aplicaciones de proxy transparente). La opcion ntlm se usa cuando el proxy soporta autenticacion MS NTLM. Esto solo funciona con IE5.5 SP1 o posterior, y no ha sido implementada todavia. La opcion ident hace que DansGuardian se conecte a un servidor identd en el computador que origino el requerimiento.
Forwarded For
Esta opcion agrega el campo X-Forwarded-For: al encabezado HTTP. Esto puede ayudar a resolver problemas con sitios que necesitan saber la direccion IP de origen.
Max Children
Esta opcion especifica el numero de procesos a iniciar para aceptar conecciones. Esto puede evitar ataques de DoS afectando a un numero ilimitado de procesos. En sitios con mucho trafico, este valor deberia ser duplicado o triplicado.
Log Connection Handling Errors
Esta opcion registra en el archivo historico (log) informacion de 'debug' acerca de estados fork() y accept(), lo cual puede por lo general ser ignorado. Estos estados son registran por syslog y es seguro configurarlo tanto en si o no ('on' u 'off').

Configuracion de Squid
No hay nada requerido aqui ya que para Squid, DansGuardian aparenta ser un cliente web normal. Sin embargo...
Debemos asegurarnos que squid no permitira que ningun cliente web se conecte directamente, salteando a DansGuardian. Se asume que el acceso al puerto de Squid esta bloqueado via firewall o tables de IP (ipchains o iptables) y que la unica forma de acceder a Squid es atraves de DansGuardian. Esto se puede garantizar de varias maneras.
Metodo squid.conf
Puede modificar las reglas ACL para que solo 'localhost' tenga acceso. A continuacion se muestra un ejemplo en el archivo squid.conf:
# INSERT YOUR OWN RULE(S) HERE TO ALLOW ACCESS FROM YOUR CLIENTS
#
acl localnet src 192.168.42.0/255.255.255.0
http_access allow localnet
http_access allow localhost
http_access deny all
Note que se ha agregado el comentario # a ambas lineas que especifican 'localnet'. Por lo general la configuracion predeterminada de Squid solo permite acceso a localhost, por lo que puede que no necesite modificar esta configuracion.
Con autenticacion proxy, se torna un poco mas complejo. Sin DansGuardian en el archivo squid.conf, tenemos:
authenticate_program /usr/bin/smb_auth -W DOMAIN -U 192.168.0.2
acl domainusers proxy_auth REQUIRED
http_access allow domainusers
http_access deny all
Lo cual permite acceso a los usuarios autenticados desde cualquier lugar.
Sin embargo, tendria sentido dejar que el trafico SSL pase directo sin pasar por DansGuardian, pero al mismo tiempo evitar que el trafico a otros puertos saltee a DansGuardian. Por lo tanto, la seccion se veria de la siguiente forma:
authenticate_program /usr/bin/smb_auth -W DOMAIN -U 192.168.0.2
acl domainusers proxy_auth REQUIRED
acl linuxserver src 192.168.0.1/255.255.255.255
acl ntserver src 192.168.0.2/255.255.255.255
http_access allow linuxserver
http_access allow ntserver
http_access allow domainusers localhost
http_access allow CONNECT SSL_ports
http_access deny all
Por lo tanto para todo acceso web (SSL o no), el usuario necesita ser autenticado, pero SSL puede pasar en forma directa salteando DansGuardian. Tambien se le permite a los servidores NT y Linux saltear el filtrado accediendo a Squid directamente.
Metodo ipchains 1
Se pueden redireccionar conexiones entrantes al puerto 3128 desde la red local al puerto 8080 mientras se permiten conexiones de localhost a 3128. Los detalles especificos sobre esta configuracion van mas alla del objetivo de este documento.
Metodo ipchains 2 - Metodo astuto
El metodo mas astuto seria configurar a Squid como proxy transparente y redireccionar todo el trafico al puerto 80 hacia el puerto 8080. Este metodo puede convivir con el metodo 1. Recuerde que en este caso el mismo servidor squid debe ser el gateway de los clientes web. Los detalles especificos sobre esta configuracion van mas alla del objetivo de este documento. Hay un documento (en ingles) que lo explica en detalle

Configuracion del Cliente Web
Configuracion Simple
Asumiento que el servidor Linux que oficia de Web Proxy y servidor Web Intranet se encuantra en la direccion IP 192.168.0.1, y que en este mismo servidor se ha instalado DansGuardian aceptando conexiones en el puerto 8080.
El cliente web se configura especificando que el servidor proxy http esta en la IP 192.168.0.1 en el puerto 8080. Tambien puede especificar proxy para FTP a la misma direccion - se ha reportado que funciona. Eso es todo. Pero para mayor eficiencia, seria bueno especificar 'sin proxy' para la direccion local del apache - 192.168.0.1 en este caso. Si usted tiene un servidor DNS funcionando, puede especificar la direccion de su server local. Aunque yo prefiero no hacerlo.
Configuracion Astuta
Si ha implementado el metodo astuto al configurar Squid, entonces no se requiere ninguna configuracion. Configure su cliente web para no usar proxy y tambien elija la opcion 'sin proxy' para el servidor local (192.168.0.1 en este caso). Recuerde que en este caso el mismo servidor squid debe ser el gateway de los clientes web.
La Configuracion de Daniel
Este podria ser el metodo super astuto. El problema del metodo simple es que hay que configurar todos los clientes web manualmente. Es por eso que el metodo astuto es mas recomendado.
El Metodo de Daniel soluciona todos los problemas con una pequena aplicacion en Visual Basic que en el momento de ingresar el usuario al sistema, le modifica los valores necesarios en el registro de systema de Windows (system registry) de forma tal que tanto Internet Explorer o Netscape (incluyendo email) se configuren en forma automatica. Es tan bueno que simplemente puede instalar una copia del servidor Netscape en una unidad compartida y ejecutar este programa automaticamente en todas las PCs despues de la pantalla de 'login' No se necesita instalacion y es muy facil de actualizar teniendo una copia central.
Tambien tiene otras cualidades como la de remover carpetas web o hacer autoswitch de GMT/BST, datos de aplicaciones y mucho mas.
A no ser que convenza a los directores de liberar el codigo abierto, este metodo no puede ser usado sin pagar la licencia a no ser que lo escriba Usted mismo. I adivine quien escribio esta aplicacion ? Si, el autor de DansGuardian
Soporte
Ante cualquier duda, unase a la lista de correo y deje su comentario o pregunta ahi mismo.
Si prefiere que su comentario no sea publicado o si es de indole privada (por ejemplo para consultas de precios o comerciales) me puede escribir (en ingles) directamente a daniel arroba jadeb punto com.
Tambien puede obtener mas ayuda en el sitio de DansGuardian: dansguardian.org.
Sobre comentarios acerca de esta documento, envie un email (en ingles) a gb arroba dansguardian punto org o al traductor julian arroba coccia punto com

Instalación de un Proxy para windows con Squid for windows

Procedimiento:

  1. Nos descargamos el squid en su más reciente versión estable desde Squid Download
  2. Descomprimimos el paquete con winrar en el disco local C:
  3. La carpeta que se descomprime en C: hay que renombrarla y llamarla squid
  4. Entramos a la carpeta C:/squid/etc y renombramos los archivos .deafult, para que siempre los tengamos originales guardados, los dejamos todos con extensión .conf
  5. Abrimos el archivo squid.conf con nuestro editor preferido.
  6. Allí buscamos la variable http_port podemos dejarla 3128 por defecto o poner 8080 o ambas.
  7. Buscamos la línea cache_dir ufs c:/squid/var/cache 100 16 256 y nos aseguramos que este descomentada (sin el símbolo # al principio de la linea); también podemos aumentar el tamaño de la memoria para el almacenamiento de 100 a otro valor por ej. 1000.
  8. Buscamos la línea visible_hostname y colocamos el nombre de nuestra máquina, si no lo sabes te vas a inicio y luego a ejecutar y tipeas msinfo32 allí verás el nombre del sistema.
  9. Buscamos la sección de las listas de acceso, se identifican porque contienen la palabra acl, es la sección ACCESS CONTROLS del squid.conf; allí buscamos donde dice:

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 563

acl Safe_ports port 80 # http

acl Safe_ports port 21 # ftp

acl Safe_ports port 443 563 # https, snews

acl Safe_ports port 70 # gopher

acl Safe_ports port 210 # wais

acl Safe_ports port 1025-65535 # unregistered ports

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 CONNECT method CONNECT

y debajo escribimos acl nuestra_red src 192.168.0.0/255.255.255.0 También podemos crear un archivo .txt y guardarlo en c:/squid/etc, en dicho archivo colocamos la o las IP que queramos que accedan a los servicios de red.

Ejemplo:

192.168.0.1

192.168.0.2

192.168.1.3

192.168.3.45 , (sólo la máquinas con estas ip accederán a Internet)

el archivo se nombra permitidos.txt y se guarda en c:/squid/etc, y entonces debajo de la línea acl CONNECT method CONNECT colocaríamos acl nuestra_red src “c:/squid/etc/permitidos.txt”; de la primera forma estaríamos dando acceso a toda la red y de esta sería acceso solo a algunas máquinas.

  1. Buscamos la línea http_access allow manager localhost y debajo de ella agregamos: http_acess allow nuestra_red
  2. Crear los siguientes directorios en forma manual

C:\squid\var\cache

C:\squid\var\cache0

C:\squid\var\cache1

C:\squid\var\cache2

C:\squid\var\cache3

C:\squid\var\cache4

C:\squid\var\cache5

C:\squid\var\cache6

C:\squid\var\cache7

C:\squid\var\cache8

C:\squid\var\cache9

C:\squid\var\cacheA

C:\squid\var\cacheB

C:\squid\var\cacheC

C:\squid\var\cacheD

C:\squid\var\cacheE

C:\squid\var\cacheF

O sea nos vamos al direcorio var y creamos un directorio llamado cache y luego dentro de éste creamos varios directotios nombrados de 00 hasta 0F (Esto es numeración Hexadecimal)

  1. Ir a menú Inicio, darle clic a ejecutar y escribir cmd y darle a aceptar (esto es para abrir una consola)
  2. Una vez en la consola escribir: c:/squid/sbin/squid –z y si todo ha salido bien no dará mensajes de error.
  3. Luego escribir c:/squid/sbin/squid –i lo cual instalará squid como servicio de Windows xp.
  4. Iniciar el servicio squid, ir a menú Inicio y hacer clic en ejecutar, luego escribimos services.msc y le damos clic a aceptar, esto nos abrirá la ventana de los servicios y allí buscamos a squid y lo iniciamos o reiniciamos.

De esta forma ya tendremos nuestro Proxy-cache funcionando en Windows.

Cómo configurar Squid: Parámetros básicos para Servidor Intermediario (Proxy).

Introducción.

¿Qué es Servidor Intermediario (Proxy)?

El término en ingles «Proxy» tiene un significado muy general y al mismo tiempo ambiguo, aunque invariablemente se considera un sinónimo del concepto de «Intermediario». Se suele traducir, en el sentido estricto, como delegado o apoderado (el que tiene el que poder sobre otro).

Un Servidor Intermediario (Proxy) se define como una computadora o dispositivo que ofrece un servicio de red que consiste en permitir a los clientes realizar conexiones de red indirectas hacia otros servicios de red. Durante el proceso ocurre lo siguiente:

Cliente se conecta hacia un Servidor Intermediario (Proxy).

Cliente solicita una conexión, fichero u otro recurso disponible en un servidor distinto.

Servidor Intermediario (Proxy) proporciona el recurso ya sea conectándose hacia el servidor especificado o sirviendo éste desde un caché.

En algunos casos el Servidor Intermediario (Proxy) puede alterar la solicitud del cliente o bien la respuesta del servidor para diversos propósitos.

Los Servidores Intermediarios (Proxies) generalmente se hacen trabajar simultáneamente como muro cortafuegos operando en el Nivel de Red, actuando como filtro de paquetes, como en el caso de iptables, o bien operando en el Nivel de Aplicación, controlando diversos servicios, como es el caso de TCP Wrapper. Dependiendo del contexto, el muro cortafuegos también se conoce como BPD o Border Protection Device o simplemente filtro de paquetes.

Una aplicación común de los Servidores Intermediarios (Proxies) es funcionar como caché de contenido de Red (principalmente HTTP), proporcionando en la proximidad de los clientes un caché de páginas y ficheros disponibles a través de la Red en servidores HTTP remotos, permitiendo a los clientes de la red local acceder hacia éstos de forma más rápida y confiable.

Cuando se recibe una petición para un recurso de Red especificado en un URL (Uniform Resource Locator) el Servidor Intermediario busca el resultado del URL dentro del caché. Si éste es encontrado, el Servidor Intermediario responde al cliente proporcionado inmediatamente el contenido solicitado. Si el contenido solicitado no estuviera disponible en el caché, el Servidor Intermediario lo traerá desde servidor remoto, entregándolo al cliente que lo solicitó y guardando una copia en el caché. El contenido en el caché es eliminado luego a través de un algoritmo de expiración de acuerdo a la antigüedad, tamaño e historial de respuestas a solicitudes (hits) (ejemplos: LRU, LFUDA y GDSF).

Los Servidores Intermediarios para contenido de Red (Web Proxies) también pueden actuar como filtros del contenido servido, aplicando políticas de censura de acuerdo a criterios arbitrarios.

Acerca de Squid.

Squid es un Servidor Intermediario (Proxy) de alto desempeño que se ha venido desarrollando desde hace varios años y es hoy en día un muy popular y ampliamente utilizado entre los sistemas operativos como GNU/Linux y derivados de Unix®. Es muy confiable, robusto y versátil y se distribuye bajo los términos de la Licencia Pública General GNU (GNU/GPL). Siendo sustento lógico libre, está disponible el código fuente para quien así lo requiera.

Entre otras cosas, Squid 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, aceleración HTTP, caché de consultas DNS y otras muchas más como filtración de contenido y control de acceso por IP y por usuario.

Squid consiste de un programa principal como servidor, un programa para búsqueda en servidores DNS, programas opcionales para reescribir solicitudes y realizar autenticación y algunas herramientas para administración y y herramientas para clientes. Al iniciar Squid da origen a un número configurable (5, de modo predefinido a través del parámetro dns_children) de procesos de búsqueda en servidores DNS, cada uno de los cuales realiza una búsqueda única en servidores DNS, reduciendo la cantidad de tiempo de espera para las búsquedas en servidores DNS.

NOTA ESPECIAL: Squid no debe 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á implementar obligatoriamente un enmascaramiento de IP o NAT (Network Address Translation) o bien hacer uso de un servidor SOCKS como Dante (http://www.inet.no/dante/).

URL: http://www.squid-cache.org/

Algoritmos de caché utilizados por Squid.

A través de un parámetro (cache_replacement_policy) Squid incluye soporte para los siguientes algoritmos para el caché:

LRU

Acrónimo de Least Recently Used, que traduce como Menos Recientemente Utilizado. En este algoritmo los objetos que no han sido accedidos en mucho tiempo son eliminados primero, manteniendo siempre en el caché a los objetos más recientemente solicitados. Ésta política es la utilizada por Squid de modo predefinido.

LFUDA

Acrónimo de Least Frequently Used with Dynamic Aging, que se traduce como Menos Frecuentemente Utilizado con Envejecimiento Dinámico. En este algoritmo los objetos más solicitados permanecen en el caché sin importar su tamaño optimizando la eficiencia (hit rate) por octetos (Bytes) a expensas de la eficiencia misma, de modo que un objeto grande que se solicite con mayor frecuencia impedirá que se pueda hacer caché de objetos pequeños que se soliciten con menor frecuencia.

GDSF

Acrónimo de GreedyDual Size Frequency, que se traduce como Frecuencia de tamaño GreedyDual (codicioso dual), que es el algoritmo sobre el cual se basa GDSF. Optimiza la eficiencia (hit rate) por objeto manteniendo en el caché los objetos pequeños más frecuentemente solicitados de modo que hay mejores posibilidades de lograr respuesta a una solicitud (hit). Tiene una eficiencia por octetos (Bytes) menor que el algoritmo LFUDA debido a que descarta del caché objetos grandes que sean solicitado con frecuencia.

Sustento lógico necesario.

Para poder llevar al cabo los procedimientos descritos en este manual y documentos relacionados, usted necesitará tener instalado al menos lo siguiente:

Al menos squid-2.5.STABLE6

httpd-2.0.x (Apache), como auxiliar de caché con aceleración.

Todos los parches de seguridad disponibles para la versión del sistema operativo que esté utilizando. No es conveniente utilizar un sistema con posibles vulnerabilidades como Servidor Intermediario.

Debe tomarse en consideración que, de ser posible, se debe utilizar siempre las versiones estables más recientes de todo sustento lógico que vaya a ser instalado para realizar los procedimientos descritos en este manual, a fin de contar con los parches de seguridad necesarios. Ninguna versión de Squid anterior a la 2.5.STABLE6 se considera como apropiada debido a fallas de seguridad de gran importancia.

Squid no se instala de manera predeterminada a menos que especifique lo contrario durante la instalación del sistema operativo, sin embargo viene incluido en casi todas las distribuciones actuales. El procedimiento de instalación es exactamente el mismo que con cualquier otro sustento lógico.

Instalación a través de yum.

Si cuenta con un sistema con CentOS o White Box Enterprise Linux 3 o versiones posteriores, utilice lo siguiente y se instalará todo lo necesario junto con sus dependencias:

yum -y install squid httpd

Instalación a través de up2date.

Si cuenta con un sistema con Red Hat™ Enterprise Linux 3 o versiones posteriores, utilice lo siguiente y se instalará todo lo necesario junto con sus dependencias:

up2date -i squid httpd

Otros componentes necesarios.

El mandato iptables se utilizará para generar las reglas necesarias para el guión de Enmascaramiento de IP. Se instala de modo predefinido en todas las distribuciones actuales que utilicen núcleo (kernel) versiones 2.4 y 2.6.

Es importante tener actualizado el núcleo del sistema operativo por diversas cuestiones de seguridad. No es recomendable utilizar versiones del kernel anteriores a la 2.4.21. Actualice el núcleo a la versión más reciente disponible para su distribución.

Si cuenta con un sistema con CentOS o White Box Enterprise Linux 3 o versiones posteriores, utilice lo siguiente para actualizar el núcleo del sistema operativo e iptables, si acaso fuera necesario:

yum -y update kernel iptables

Si cuenta con un sistema con Red Hat™ Enterprise Linux 3 o versiones posteriores, utilice lo siguiente para actualizar el núcleo del sistema operativo, e iptables si acaso fuera necesario:

up2date -u kernel iptables

Antes de continuar.

Tenga en cuenta que este manual ha sido comprobado varias veces y ha funcionado en todos los casos y si algo no funciona solo significa que usted no lo leyó a detalle y no siguió correctamente las indicaciones.

Evite dejar espacios vacíos en lugares indebidos. El siguiente es un ejemplo de como no se debe habilitar un parámetro.

Mal

# Opción incorrectamente habilitada

http_port 3128

El siguiente es un ejemplo de como si se debe habilitar un parámetro.

Bien

# Opción correctamente habilitada

http_port 3128

Configuración básica.

Squid utiliza el fichero de configuración localizado en /etc/squid/squid.conf, y podrá trabajar sobre este utilizando su editor de texto simple preferido. Existen un gran número de parámetros, de los cuales recomendamos configurar los siguientes:

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

Parámetro http_port: ¿Que puerto utilizar para Squid?

De acuerdo a las asignaciones hechas por IANA y continuadas por la ICANN desde el 21 de marzo de 2001, los Puertos Registrados (rango desde 1024 hasta 49151) recomendados para Servidores Intermediarios (Proxies) pueden ser el 3128 y 8080 a través de TCP.

De modo predefinido Squid utilizará el puerto 3128 para atender peticiones, sin embargo se puede especificar que lo haga en cualquier otro puerto disponible o bien que lo haga en varios puertos disponibles a la vez.

En el caso de un Servidor Intermediario (Proxy) Transparente, regularmente se utilizará el puerto 80 o el 8000 y se valdrá del re-direccionamiento de peticiones de modo tal que no habrá necesidad alguna de modificar la configuración de los clientes HTTP para utilizar el Servidor Intermediario (Proxy). Bastará con utilizar como puerta de enlace al servidor. Es importante recordar que los Servidores HTTP, como Apache, también utilizan dicho puerto, por lo que será necesario volver a configurar el servidor HTTP para utilizar otro puerto disponible, o bien desinstalar o desactivar el servidor HTTP.

Hoy en día puede no ser del todo práctico el utilizar un Servidor Intermediario (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 Intermediario (Proxy) con restricciones por clave de acceso, lo cual no puede hacerse con un Servidor Intermediario (Proxy) Transparente, debido a que se requiere un diálogo de nombre de usuario y clave de acceso.

Regularmente algunos programas utilizados comúnmente por los usuarios suelen traer de modo predefinido el puerto 8080 (servicio de cacheo WWW) para utilizarse al configurar que Servidor Intermediario (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:

#

# You may specify multiple socket addresses on multiple lines.

#

# 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:

#

# You may specify multiple socket addresses on multiple lines.

#

# Default: http_port 3128

http_port 192.168.1.254:3128

http_port 192.168.1.254:8080

Parámetro cache_mem.

El parámetro cache_mem establece la cantidad ideal de memoria para lo siguiente:

Objetos en tránsito.

Objetos frecuentemente utilizados (Hot).

Objetos negativamente almacenados en el caché.

Los datos de estos objetos se almacenan en bloques de 4 Kb. El parámetro cache_mem especifica un límite máximo en el tamaño total de bloques acomodados, donde los objetos en tránsito tienen mayor prioridad. Sin embargo los objetos Hot y aquellos negativamente almacenados en el caché podrán utilizar la memoria no utilizada hasta que esta sea requerida. De ser necesario, si un objeto en tránsito es mayor a la cantidad de memoria especificada, Squid excederá lo que sea necesario para satisfacer la petición.

De modo predefinido 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

Parámetro cache_dir: ¿Cuanto desea almacenar de Internet en el disco duro?

Este parámetro se utiliza para establecer que tamaño se desea que tenga el 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? De modo predefinido Squid utilizará un caché 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 del caché hasta donde lo desee el administrador. Mientras más grande sea el caché, más objetos se almacenarán en éste y por lo tanto se utilizará menos el ancho de banda. La siguiente línea establece un caché 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 directorios subordinados con 256 niveles cada uno. No modifique esto números, no hay necesidad de hacerlo.

Es muy importante considerar que si se especifica un determinado tamaño de caché y éste excede al espacio real disponible en el disco duro, Squid se bloqueará inevitablemente. Sea cauteloso con el tamaño de caché especificado.

Parámetro ftp_user.

Al acceder a un servidor FTP de manera anónima, de modo predefinido Squid enviará como clave de acceso Squid@. Si se desea que el acceso anónimo a los servidores FTP sea más informativo, o bien si se desea acceder a servidores FTP que validan la autenticidad de la dirección de correo especificada como clave de acceso, puede especificarse la dirección de correo electrónico que uno considere pertinente.

ftp_user proxy@su-dominio.net

Controles de acceso.

Es necesario establecer Listas de Control de Acceso que definan una red o bien ciertas máquinas en particular. A cada lista se le asignará una Regla de Control de Acceso que permitirá o denegará el acceso a Squid. Procedamos a entender como definir unas y otras.

Listas de control de acceso.

Regularmente una lista de control de acceso se establece 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 máscara de la sub-red. Por ejemplo, si se tiene una red donde las máquinas tienen direcciones IP 192.168.1.n con máscara de sub-red 255.255.255.0, podemos utilizar lo siguiente:

acl miredlocal src 192.168.1.0/255.255.255.0

También puede definirse una Lista de Control de Acceso especificando un fichero localizado en cualquier parte del disco duro, y la cual contiene 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

192.168.1.40

Lo anterior estaría definiendo que la Lista de Control de Acceso denominada permitidos estaría compuesta por las direcciones IP incluidas en el fichero /etc/squid/permitidos.

Reglas de Control de Acceso.

Estas definen si se permite o no el acceso hacia Squid. Se aplican a las Listas de Control de Acceso. Deben colocarse en la sección 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 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 no. Pueden definirse, por ejemplo, dos listas de control de acceso, una denominada lista1 y otra denominada lista2, en la misma regla de control de acceso, en donde se asigna una expresión a una de estas. La siguiente establece que se permite el acceso a Squid a lo que comprenda lista1 excepto aquello que comprenda 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.

Aplicando Listas y Reglas de control de acceso.

Una vez comprendido el funcionamiento de la Listas y las Regla de Control de Acceso, procederemos a determinar cuales utilizar para nuestra configuración.

Caso 1.

Considerando como ejemplo que se dispone de una red 192.168.1.0/255.255.255.0, si se desea definir toda la red local, utilizaremos la siguiente línea en la sección de Listas de Control de Acceso:

acl todalared src 192.168.1.0/255.255.255.0

Habiendo hecho lo anterior, la sección de listas de control de acceso debe quedar más o menos del siguiente modo:

Listas de Control de Acceso: definición 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 192.168.1.0/255.255.255.0

A continuación procedemos a aplicar la regla de control de acceso:

http_access allow todalared

Habiendo hecho lo anterior, la zona de reglas de control de acceso debería quedar más o menos de este modo:

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 192.168.1.0/255.255.255.0. Esto significa que cualquier máquina desde 192.168.1.1 hasta 192.168.1.254 podrá acceder a Squid.

Caso 2.

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/listas/redlocal, 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

192.168.1.20

192.168.1.40

Denominaremos a esta lista de control de acceso como redlocal:

acl redlocal src "/etc/squid/listas/redlocal"

Habiendo hecho lo anterior, la sección de listas de control de acceso debe quedar más o menos del siguiente modo:

Listas de Control de Acceso: definición 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"

A continuación procedemos a aplicar la regla de control de acceso:

http_access allow redlocal

Habiendo hecho lo anterior, la zona de reglas de control de acceso debería quedar más o menos de este modo:

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 fichero /etc/squid/listas/redlocal. Esto significa que cualquier máquina no incluida en /etc/squid/listas/redlocal no tendrá acceso a Squid.

Parámetro chache_mgr.

De modo predefinido, si algo ocurre con el caché, como por ejemplo que muera el procesos, se enviará un mensaje de aviso a la cuenta webmaster del servidor. Puede especificarse una distinta si acaso se considera conveniente.

cache_mgr joseperez@midominio.net

Parámetro cache_peer: caches padres y hermanos.

El parámetro cache_peer se utiliza para especificar otros Servidores Intermediarios (Proxies) con caché en una jerarquía como padres o como hermanos. Es decir, definir si hay un Servidor Intermediario (Proxy) adelante o en paralelo. La sintaxis básica es la siguiente:

cache_peer servidor tipo http_port icp_port opciones

Ejemplo: Si su caché va a estar trabajando detrás de otro servidor cache, es decir un caché padre, y considerando que el caché padre tiene una IP 192.168.1.1, escuchando peticiones HTTP en el puerto 8080 y peticiones ICP en puerto 3130 (puerto utilizado de modo predefinido por Squid) ,especificando que no se almacenen en caché los objetos que ya están presentes en el caché del Servidor Intermediario (Proxy) padre, utilice la siguiente línea:

cache_peer 192.168.1.1 parent 8080 3130 proxy-only

Cuando se trabaja en redes muy grandes donde existen varios Servidores Intermediarios (Proxy) haciendo caché de contenido de Internet, es una buena idea hacer trabajar todos los caché entre si. Configurar caches vecinos como sibling (hermanos) tiene como beneficio el que se consultarán estos caches localizados en la red local antes de acceder hacia Internet y consumir ancho de banda para acceder hacia un objeto que ya podría estar presente en otro caché vecino.

Ejemplo: Si su caché va a estar trabajando en paralelo junto con otros caches, es decir caches hermanos, y considerando los caches tienen IP 10.1.0.1, 10.2.0.1 y 10.3.0.1, todos escuchando peticiones HTTP en el puerto 8080 y peticiones ICP en puerto 3130, especificando que no se almacenen en caché los objetos que ya están presentes en los caches hermanos, utilice las siguientes líneas:

cache_peer 10.1.0.1 sibling 8080 3130 proxy-only

cache_peer 10.2.0.1 sibling 8080 3130 proxy-only

cache_peer 10.3.0.1 sibling 8080 3130 proxy-only

Pueden hacerse combinaciones que de manera tal que se podrían tener caches padres y hermanos trabajando en conjunto en una red local. Ejemplo:

cache_peer 10.0.0.1 parent 8080 3130 proxy-only

cache_peer 10.1.0.1 sibling 8080 3130 proxy-only

cache_peer 10.2.0.1 sibling 8080 3130 proxy-only

cache_peer 10.3.0.1 sibling 8080 3130 proxy-only

Caché con aceleración.

Cuando un usuario hace petición hacia un objeto en Internet, este es almacenado en el caché de Squid. 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 el caché de Squid y además optimiza enormemente la utilización del ancho de banda.

La configuración de Squid como Servidor Intermediario (Proxy) Transparente solo requiere complementarse utilizando una regla de iptables que se encargará de re-direccionar peticiones haciéndolas pasar por el puerto 8080. La regla de iptables necesaria se describe más adelante en este documento.

Proxy Acelerado: Opciones para Servidor Intermediario (Proxy) en modo convencional.

En la sección HTTPD-ACCELERATOR OPTIONS deben habilitarse los siguientes parámetros:

httpd_accel_host virtual

httpd_accel_port 0

httpd_accel_with_proxy on

Proxy Acelerado: Opciones para Servidor Intermediario (Proxy) Transparente.

Si se trata de un Servidor Intermediario (Proxy) transparente, deben utilizarse las siguientes opciones, considerando que se hará uso del caché de un servidor HTTP (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

httpd_accel_port 80

httpd_accel_with_proxy on

httpd_accel_uses_host_header on

Proxy Acelerado: Opciones para Servidor Intermediario (Proxy) Transparente para redes con Internet Exlorer 5.5 y versiones anteriores.

Si va a utilizar Internet Explorer 5.5 y versiones anteriores con un Servidor Intermediario (Proxy) transparente, es importante recuerde que dichas versiones tiene un pésimo soporte con los Servidores Intermediarios (Proxies) transparentes imposibilitando por completo la capacidad de refrescar contenido. Si se utiliza el parámetro ie_refresh con valor on puede hacer que se verifique en los servidores de origen para nuevo contenido para todas las peticiones IMS-REFRESH provenientes de Internet Explorer 5.5 y versiones anteriores.

# Debe especificarse la IP de cualquier servidor HTTP en la

# red local

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

Lo más conveniente es actualizar hacia Internet Explorer 6.x o definitivamente optar por otras alternativas. Mozilla es en un conjunto de aplicaciones para Internet, o bien Firefox, que es probablemente el mejor navegador que existe en el mercado. Firefox es un navegador muy ligero y que cumple con los estándares, y está disponible para Windows, Linux, Mac OS X y otros sistemas operativos.

Estableciendo el idioma de los mensajes mostrados por de Squid hacia el 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

Nota: Este enlace simbólico debe verificarse, y regenerarse de ser necesario, cada vez que se actualizado Squid ya sea a través de yum, up2date o manualmente con el mandato rpm.

Iniciando, reiniciando y añadiendo el servicio al arranque del sistema.

Una vez terminada la configuración, ejecute el siguiente mandato para iniciar por primera vez Squid:

service squid start

Si necesita reiniciar para probar cambios hechos en la configuración, utilice lo siguiente:

service squid restart

Si desea que Squid inicie de manera automática la próxima vez que inicie el sistema, utilice lo siguiente:

chkconfig squid on

Lo anterior habilitará a Squid en todos los niveles de corrida.

Depuración de errores

Cualquier error al inicio de Squid solo significa que hubo errores de sintaxis, errores de dedo 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 el fichero /etc/squid/squid.conf.

service squid reload

Cuando se trata de errores graves que no permiten iniciar el servicio, puede examinarse el contenido del fichero /var/log/squid/squid.out con el mandato less, more o cualquier otro visor de texto:

less /var/log/squid/squid.out

Ajustes para el muro corta-fuegos.

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 muro corta-fuegos. Si se tiene un poco más de experiencia, recomendamos utilizar Shorewall para el mismo fin puesto que se trata de una herramienta más robusta y completa.

Firestarter: http://www.fs-security.com/

Shorewall: http://www.shorewall.net/

Re-direccionamiento de peticiones a través de iptables y Firestarter.

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:

/sbin/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.

Utilizando Firestarter, la regla anteriormente descrita se añade en el fichero /etc/firestarter/user-post.

Re-direccionamiento de peticiones a través de la opción REDIRECT en Shorewall.

La acción REDIRECT en Shorewall permite redirigir peticiones hacia protocolo HTTP para hacerlas pasar a través de Squid. En el siguiente ejemplo las peticiones hechas desde la zona que corresponde a la red local serán redirigidas hacia el puerto 8080 del cortafuegos, en donde está configurado Squid configurado como Servidores Intermediario (Proxy) transparente.

#ACTION SOURCE DEST PROTO DEST

REDIRECT loc 8080 tcp 80