Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Manual Administrador Squid Squidguard Sarg PDF
Manual Administrador Squid Squidguard Sarg PDF
Squid es un programa que implementa un servidor proxy y un demonio para caché1 de datos obtenidos en
Internet. Realiza este trabajo aceptando peticiones de los objetos que los usuarios quieren descargar y
realizando estas peticiones a la red en su nombre. Squid se conecta con el servidor correspondiente y pide
el objeto. De forma transparente, este objeto se entrega a la máquina cliente, pero al mismo tiempo,
guarda una copia. La próxima vez que alguna máquina cliente de squid solicite la misma página, squid
simplemente le transfiere su copia almacenada en memoria o disco, acelerando considerablemente la
transferencia y ahorrando ancho de banda en la conexión a Internet.
Actualmente, Squid es capaz de hacer proxy-caché de los protocolos HTTP, FTP, GOPHER, SSL y
WAIS. No soporta POP, NNTP, RealAudio y otros.
El servidor proxy Squid guarda los datos cacheados en la memoria RAM, realiza caché de consultas DNS
y no guarda en el caché las peticiones que son rechazadas.
Squid también soporta SSL (Secure Socket Layer) con lo que también acelera las transacciones cifradas,
y es capaz de ser configurado con amplios controles de acceso sobre las peticiones de usuarios, lo que es
muy útil, por ejemplo, en un centro educativo para permitir o denegar el acceso al servidor a diferentes
grupos de usuarios. Al utilizar el protocolo de caché de Internet, Squid puede ahorrar un considerable
ancho de banda. Mejorando la velocidad de acceso a Internet en estos protocolos.
Este software consta de un programa servidor principal llamado Squid, un programa de búsqueda de
nombres en el DNS llamado dnsserver, un programa para recuperar ficheros vía FTP, llamado ftpget, y
algunas herramientas de mantenimiento y programas cliente. Cuando arranca, levanta un número
configurable de procesos dnsserver, cada uno de los cuales realiza una búsqueda en el sistema DNS, lo
que reduce el tiempo que la caché espera por la resolución de nombres.
1 Una caché es un conjunto de datos duplicados de otros originales, con la propiedad de que los datos originales son
costosos de acceder, normalmente en tiempo, respecto a la copia en el caché. Cuando se accede por primera vez a un
dato, se hace una copia en el caché, haciendo que el tiempo de acceso medio al dato sea menor en accesos siguientes que
se realizan a dicha copia.
En el contexto de las redes informáticas, el término proxy hace referencia a un programa o dispositivo que
realiza una acción en representación de otro (un intermediario). La finalidad más habitual es la de
servidor proxy, que sirve para permitir el acceso a Internet a todos los equipos de una organización
cuando sólo se puede disponer de un único equipo conectado directamente a Internet, esto es, una única
dirección IP.
Se llama caché web al caché que almacena documentos web (es decir, páginas, imágenes, etc.) para
reducir el ancho de banda consumido, la carga de los servidores y el retardo en la descarga. Un caché web
almacena copias de los documentos que pasan por él, de forma que subsiguientes peticiones pueden ser
respondidas por el propio caché, si se cumplen ciertas condiciones.
Los cachés web pueden utilizarse de diversas formas. Los cachés de agente de usuario (User-Agent),
como los presentes en los navegadores web, son cachés privados, que funcionan sólo para un único
usuario. También existen paquetes específicos que se instalan como proxy local y actúan como caché
además de realizar otras tareas.
Los cachés pasarela (llamados también proxy-cachés inversos o aceleradores web) funcionan a cargo del
propio servidor original, de forma que los clientes no distinguen unos de otros. Puede hacerse funcionar
conjuntamente varios cachés pasarela para implementar una Content Delivery Network (CDN) o Red de
Entrega de Contenido, como es el caso de Akamai.
Los intermediarios que funcionan como caché realizan con frecuencia otras tareas, tales como la
autenticación de usuarios y el filtrado de contenidos. Varios cachés pueden ser coordinados entre sí con la
ayuda de protocolos específicos tales como ICP o HTCP.
visible_hostname nombre_de_la_máquina
Toda vez que se realicen modificaciones en el archivo de configuración, es necesario reiniciar el servidor
Squid para que los cambios se hagan efectivos:
http_port:
Es el puerto que Squid utilizará para funcionar. Por defecto, Squid utiliza el puerto 3128 para atender
peticiones, pero puede especificarse que lo haga en cualquier otro puerto disponible o bien que lo haga en
varios puertos disponibles a la vez.
Algunos ejemplos:
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 se quisiera aprovechar esto, se podría especificar que Squid escuche
peticiones en dicho puerto también. Siendo así, localizar la sección de definición de http_port, y
especificar:
# You may specify multiple socket addresses on multiple lines.
#
# Squid normally listens to port 3128
http_port 3128
http_port 8080
Si se desea incrementar la seguridad, por ejemplo, puede vincularse el servicio a una dirección 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.
#
# Squid normally listens to port 3128
http_port 192.168.1.254:3128
http_port 192.168.1.254:8080
Cuando se configure una computadora cualquiera para acceder a Internet a través del proxy, será
necesario configurar el puerto definido en el menú del navegador. Mas adelante se verá como hacerlo.
cache_mem:
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, se podría establecer 16 MB como valor para este
parámetro:
cache_mem 16 MB
ftp_user:
Determina el usuario que 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 se
considere pertinente:
ftp_user proxy@su-dominio.net
cache_dir:
Este parámetro se utiliza para establecer el tamaño de la caché en el disco duro que utilizará Squid para
almacenar información. Para entender esto un poco mejor, habría que responder a la siguiente pregunta:
¿Cuanto se desea almacenar de Internet en el disco duro? De modo predefinido, Squid utilizará un caché
de 100 MB, de modo tal que se 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
sintaxis general es:
cache_dir ufs /var/spool/squid [tamaño] 16 256
Los números 16 y 256 significan que el directorio del caché contendrá 16 directorios subordinados con
256 niveles cada uno. Estos números no deben modificarse, 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.
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, es decir, determina quien accederá a Internet a través del servidor proxy y quien no.
La sintaxis de la instrucción para definir una lista acl es:
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, se puede 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
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.
Estas definen si se permite o no el acceso hacia el servidor 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
#
En el siguiente ejemplo, se considera 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. Lo siguiente, establece que se
permite el acceso a Squid a lista1 pero no a lista2:
http_access allow lista1 !lista2
Este tipo de reglas son útiles cuando se tiene un gran grupo de direcciones 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.
1. Se dispone de una red 192.168.1.0/255.255.255.0, y se desea definir la red local completa. La sección
de listas de control de acceso debe quedar más o menos del siguiente modo:
#
# Recommended minimum configuration:
acl all src 0.0.0.0/0.0.0.0
acl localhost src 127.0.0.1/255.255.255.255
acl todalared src 192.168.1.0/255.255.255.0
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.
2. Si solo se desea permitir el acceso a Squid a ciertas direcciones IP de la red local, se debe crear un
fichero que contenga dicha lista. Si el archivo se crea en el siguiente directorio: /etc/squid/listas/redlocal,
las secciones de Listas y Reglas de Control de Acceso quedarían de la siguiente manera:
#
# 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"
#
# INSERT YOUR OWN RULE(S) HERE TO ALLOW ACCESS FROM YOUR CLIENTS
#
http_access allow localhost
http_access allow redlocal
http_access deny all
Esto significa que cualquier máquina no incluida en /etc/squid/listas/redlocal no tendrá acceso a Squid.
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 optimiza
enormemente la utilización del ancho de banda.
En la sección HTTPD-ACCELERATOR OPTIONS del archivo de configuración, deben habilitarse los
siguientes parámetros:
httpd_accel_host virtual
httpd_accel_port 0
httpd_accel_with_proxy on
Como se vio anteriormente, utilizando las Listas y Reglas de control de acceso de Squid, es posible filtrar
por:
dominios de cliente o servidor
subredes IP del cliente o servidor
ruta URL
URLs completas, incluyendo parámetros
palabras clave
Además de los parámetros ya explicados en la sección anterior, se mencionarán algunos más que se
utilizan para definir distintos tipos de ACL.
dst:
Especifica una dirección destino de una conexión en formato IP/máscara. Por ejemplo:
acl google_es dst 216.239.0.0/24
acl google_es2 dst 216.239.59.104/32 216.239.39.104/32 216.239.57.104/32
Las definiciones son idénticas a las ACL de tipo src salvo que se aplican al destino de las conexiones, no
al origen.
dstdomain:
Especifica un nombre de dominio que se comprueba con el dominio que se haya especificado en la
petición de página web. Define un dominio de Internet. Por ejemplo:
acl google_com dstdomain google.com
srcdomain:
Especifica un nombre de dominio de origen y se determina por resolución DNS inversa de la IP de la
máquina (tiene que haber en la red local un servidor DNS).
srcdom_regex y dstdom_regex:
Especifican una expresión regular2 que verifica los dominio origen o destino, respectivamente. La
expresión regular hace distinción entre mayúsculas y minúsculas salvo que se incluya la opción -i que
evita dicha distinción. Por ejemplo,
acl google_todos dstdom_regex -i google\..*
time:
Permite especificar una franja horaria concreta dentro de una semana.
2 Una expresión regular es una plantilla formada por unos meta caracteres con significado propio que se utiliza para
especificar patrones regulares sobre cadenas de texto. Un ejemplo de algo parecido a un expresión regular serían las
plantillas para nombres de ficheros usando * y ?; en este caso, *.txt expresaría todos los ficheros cuyo nombre termina
en .txt. Una expresión regular se puede construir, para concordar con, por ejemplo, una dirección de correo electrónico,
un número, una fecha, una url, una etiqueta HTML, etc., es decir, cualquier cadena que cumpla unas determinadas
características de regularidad.
url_regex:
Permite especificar expresiones regulares para comprobar una url completa, desde el http:// inicial. Por
ejemplo, la siguiente expresión se verificará con todos los servidores cuyo nombre sea adserver:
url_regex serv_publicidad ^http://adserver.*
urlpath_regex:
Igual que la anterior, sólo que se empieza a evaluar a partir del primer / que se encuentre por detrás del
nombre de dominio.
Restringir el acceso a la red en ciertos horarios permite administrar racionalmente el ancho de banda con
el que se dispone.
La sintaxis para crear Listas de control de acceso que definan horarios es la siguiente:
Ejemplo:
acl semana time MTWHF 09:00-21:00
Esta regla define a la lista semana, la cual comprende un horario de 09:00 a 21:00 horas desde el Lunes
hasta el Viernes.
Este tipo de listas se aplican en las Reglas de Control de Acceso con una mecánica similar a la siguiente:
se permite o deniega el acceso en el horario definido en la Lista de Control de Acceso denominada X para
las entidades definidas en la Lista de Control de Acceso denominada Y. Lo anterior expresado en una
Regla de Control de Acceso, quedaría del siguiente modo:
Ejemplo:
Se quiere establecer que los miembros de la Lista de Control de Acceso denominada
clase_turno_mañana tengan permitido acceder a Internet en un horario denominado como
turno_mañana, que comprende de lunes a viernes de 08:00 a 12:00 horas.
Lo anterior, en resumen, significa que quienes conformen clase_turno_mañana podrán acceder a Internet
de Lunes a Viernes de 08:00-12:00 horas.
Lo primero será definir un dominio específico utilizando la instrucción dstdomain en una lista de control
de acceso, por ejemplo:
Lo que significa que se dejaría acceder a todo lo que no estuviera en la lista, es decir, todas las
direcciones menos 192.1.168.6.
Si se quiere dejar acceso libre a Internet, a excepción de las páginas pornográficas, por ejemplo. Sería una
auténtica tarea agotadora buscar páginas pornográficas en Internet e incluirlas en la lista. Además,
siempre se encontraría una no definida y con acceso. Para evitar eso, se definen patrones regulares que
permitan contener el acceso. Un patrón o regular es una serie de reglas que definen una palabra. Por
ejemplo, para definir todas las palabras que tengan en medio la palabra “sexo”, se podría hacer: * sexo *.
Existen muchos patrones regulares y formas de expresarlos. En Squid, para configurar los patrones
regulares se utiliza la instrucción: url_regex. Ésta instrucción indica las palabras que se denegarán (o que
se permitirán, según el caso). Se define una lista de control (etc/squid/patrones_denegados) con los
patrones que se identificarán:
sexo
porn
massexo
masporn
porno
Paso a paso:
Como advertencia, es necesario que ésta regla de control, aparezca antes que cualquier otra que permita o
niegue acceso a otras listas. Si fuera al revés el filtro no sería útil.
Si se quisiera permitir sólo un patrón regular, se crea la lista patrones_no_negados, con el contenido:
infosexo :::>>página necesaria y no de sexo
El signo de admiración indica que el acceso a todo lo que no esté en esa lista es denegado.
Otro ejemplo:
Generar una lista, en /etc/squid/sitios_denegados, con las direcciones que se quiere restringir y palabras
usualmente utilizadas en nombres de ciertos dominios. Por ejemplo:
www.sitioporno.com
www.otrositioporno.com
sitioindeseable.com
otrositioindeseable.com
napster
sex
porn
mp3
xxx
adult
warez
celebri
Luego, definir ésta lista en el archivo de configuración utilizando la instrucción url_regex. Con ésta
instrucción la lista de control de acceso, denominada sitios_denegados, se definirían de la siguiente
manera:
#
# 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 192.168.1.0/255.255.255.0
acl sitios_denegados url_regex "/etc/squid/sitios_denegados"
A continuación, se modificará una Regla de Control de Acceso existente, agregando con un símbolo de !
que denegará el acceso a la Lista de Control de Acceso denominada sitios_denegados:
http_access allow redlocal !sitios_denegados
Denegar el acceso a ciertos tipos de extensiones de fichero permite hacer un uso más racional del ancho
de banda con el que se dispone.
Definir los elementos de la lista de control de acceso con las extensiones de fichero que el administrador
considere pertinentes (/etc/squid/extensiones):
Agregar al archivo de configuración, en la sección de Listas de Control de Acceso algo como lo siguiente:
#
# 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 192.168.1.0/255.255.255.0
acl password proxy_auth REQUIRED
acl sitios_denegados url_regex "/etc/squid/sitiosdenegados"
acl lista_extensiones urlpath_regex "/etc/squid/extensiones"
A continuación se modificará una Regla de Control de Acceso existente agregando un símbolo ! que
deniega el acceso a la Lista de Control de Acceso denominada extensiones:
http_access allow redlocal !lista_extensiones
La regla anterior permite el acceso a la Lista de Control de Acceso denominada redlocal, pero le niega el
acceso a todo lo que coincida con lo especificado en la Lista de Control de Acceso denominada
lista_extensiones.
Ejemplos:
1. Se crea una ACL denominada musica que define a todos los ficheros con extensión .mp3:
acl clase_turno_tarde src 192.168.1.0/255.255.255.0
acl musica urlpath_regex \.mp3$
Y se quiere denegar el acceso a todo contenido con extensión .mp3, al grupo clase_turno_tarde:
http_access allow clase_turno_tarde !musica
2. Se quiere restringir parcialmente el acceso a cierto tipo de contenido en ciertos horarios. Pueden
combinarse distintos tipos de reglas:
La Regla de Control de Acceso anterior especifica acceso permitido en el horario definido como
matutino a quienes integran la Lista de Control de Acceso denominada clase_matutina a todo contenido
(por omisión) excepto a los contenidos que coincidan con los definidos en la Lista de Control de Acceso
denominada musica.
Hay varias maneras de configurar el acceso por autenticación: a) a través de un fichero de texto simple
con claves de acceso creadas con htpasswd; b) utilizando PAM (Pluggable Authentication Module), un
mecanismo que proporciona una interfaz entre las aplicaciones de usuario y diferentes métodos de
autenticación; c) a través de un servidor LDAP, lo cual constituye una solución más robusta (ésta opción
se discutirá en la Unidad 16).
El módulo ncsa_auth, de la NCSA (National Center for Supercomputing Applications), viene incluido
como parte del paquete principal de Squid en la mayoría de las distribuciones actuales. Este módulo
provee una autenticación muy sencilla a través de un fichero de texto simple cuyas claves de acceso
fueron creadas con htpasswd.
Para su configuración se requiere:
A) La creación previa de un fichero de claves de acceso que contiene los nombres de usuarios y sus
correspondientes contraseñas (cifradas). El fichero puede localizarse en cualquier lugar del sistema, con
la única condición que sea asequible para el usuario squid.
# touch /etc/squid/claves
Este fichero debe tener permisos de lectura y escritura únicamente para el usuario squid:
A continuación se deben dar de alta las cuentas que sean necesarias, utilizando el mandato htpasswd. Por
ejemplo:
Lo anterior solicitará teclear una nueva clave de acceso para el usuario joseperez y confirmar tecleando
ésta de nuevo. Se repite este procedimiento para cada cuenta que se quiera dar de alta.
Todas las cuentas que se den de alta de este modo son independientes a las ya existentes en el sistema
(shell, correo y Samba). Al dar de alta una cuenta o cambiar una clave de acceso se lo estará haciendo
exclusivamente para el acceso al servidor Proxy.
C) Definir una Lista de Control de Acceso, denominada, en éste caso, password, que será configurada
para utilizar obligatoriamente la autenticación de acceso a Squid. Debe localizarse la sección de Listas de
Control de Acceso y añadirse la siguiente línea:
#
# 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
D) Definir una Regla de Control de Acceso para la lista, o modificar la regla de control de accesos previa
que se tenía para permitir el acceso a Internet. Donde antes decía:
http_access allow redlocal
Se añade password, la definición de la Lista de Control de Acceso que requiere utilizar clave de acceso,
de modo que quede como se muestra a continuación:
http_access allow redlocal password
PAM permite comunicar a aplicaciones con los métodos de autenticación que se deseen de una forma
transparente. Utiliza una arquitectura conectable y modular, que otorga al administrador del sistema una
gran flexibilidad en establecer las políticas de autenticación para el sistema.
En la mayoría de los casos, el archivo de configuración PAM predeterminado para una aplicación que
soporta PAM es suficiente. Sin embargo, a veces se quiere almacenar los usuarios en una base de datos
para centralizar algunos servicios.
Para instalarlo, lo recomendable es compilarlo desde el código fuente. Una vez instalado, hay que
configurarlo para funcionar con Squid.
El directorio /etc/pam.d/ contiene los archivos de configuración de PAM para cada aplicación tipo PAM.
En versiones antiguas de PAM se utilizaba /etc/pam.conf, pero este archivo ya no se utiliza y solamente
es usado si el directorio /etc/pam.d/ no existe. Cada aplicación tipo PAM o servicios tiene un archivo
dentro del directorio /etc/pam.d/. Cada uno de estos archivos lleva el nombre del servicio para el cual
controla el acceso. Depende del programa tipo PAM definir el nombre de su servicio e instalar su archivo
de configuración en el directorio /etc/pam.d/.
Entonces, dentro del directorio /etc/pam.d/ debería existir el archivo squid, en caso que no exista, será
necesario crearlo y editarlo para que quede con las siguientes dos líneas:
El parámetro auth provee una comprobación de que el usuario es realmente quien dice ser.
El parámetro account maneja la cuenta sin basarse en autenticación. Típicamente se usa para
restringir/permitir el acceso a un servicio basado en la hora o quizás desde donde se registra el usuario.
Configurar Squid:
A) Buscar donde se encuentra el archivo pam_auth. Usualmente, se localiza en /usr/lib/squid/pam_auth.
B) Editar el archivo de configuración /etc/squid/squid.conf definiendo el programa que Squid utilizará
para autenticación. Buscar la entrada auth_param basic program y modificar la línea de modo que
apunte al programa pam_auth:
C) Lo siguiente es definir una lista de control de acceso que use autenticación (aquí nombre_lista es el
nombre de la lista, pero podría ser cualquier otro):
Esta configuración básica permite autenticar el proxy con las cuentas locales, es decir, las cuentas de
usuarios definidas en el sistema.
Muchas organizaciones (incluyendo empresas, colegios y familias) usan los proxies para reforzar las
políticas de uso de la red o para proporcionar seguridad y servicios de caché. Normalmente, un proxy
Web o NAT no es transparente a la aplicación cliente, puesto que debe ser configurada manualmente para
usar el proxy. Por lo tanto, el usuario puede evadir el proxy cambiando simplemente la configuración.
Un proxy transparente no necesita ninguna configuración especial en los clientes. Se denomina
transparente porque el cliente en realidad no sabe que lo está usando, es transparente para el usuario. Este
es el tipo de proxy que utilizan los proveedores de servicios de Internet (ISP).
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.
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-
direccione hacia el puerto 8080 del servidor.
Cualquier error al inicio de Squid solo significa que hubo errores de sintaxis, errores de tipeo o que se
están citando incorrectamente las rutas hacia los ficheros de las Listas de Control de Acceso.
Puede realizarse un diagnóstico de problemas indicándole a Squid que vuelva a leer la configuración, lo
cual devolverá los errores que existan en el archivo /etc/squid/squid.conf:
Cuando se trata de errores graves que no permiten iniciar el servicio, puede examinarse el contenido del
archivo /var/log/squid/squid.out con el mandato less, more o cualquier otro visor de texto:
less /var/log/squid/squid.out
SquidGuard es el filtro asociado al proxy Squid, que utiliza una base de datos con miles de direcciones
web clasificadas en grupos (porno, violencia, publicidad, etc.). Hay múltiples opciones de configuración:
bloqueo por grupo o por palabra clave, identificación del cliente por su dirección IP o por nombre de
usuario, creación de horarios, actualización de la base de datos por un robot, etc. SquidGuard funciona
asociado al proxy Squid que permite registrar las páginas web visitadas en ficheros .log y además hace de
caché acelerando el acceso a las páginas visitadas recientemente.
A) Instalación:
B) Configuración:
Lo primero será conectar SquidGuard a Squid. Para ésto, editar el archivo de configuración de Squid
/etc/squid/squid.conf, buscar la entrada redirect_program y agregar la siguiente línea.
http://ftp.tdcnorge.no/pub/www/proxy/squidGuard/contrib/blacklists.tar.gz
Se obtiene un paquete comprimido que es necesario desempaquetar. Los archivos extraídos deben quedar
en la carpeta /var/lib/squidguard/db para que SquidGuard pueda encontrarlos; de otra manera, podría
modificarse el archivo de configuración /etc/squid/squidGuard.conf para definir otra ubicación. Es
importante, asegurarse de tener los permisos de lectura para estos archivos y directorios.
#----------------------------------------------------------------
# SquidGuard CONFIGURATION FILE
#----------------------------------------------------------------
# DIRECTORIOS DE CONFIGURACION
dbhome /usr/share/squidGuard-1.2.0/db
logdir /var/log/squidGuard
# GRUPOS DE DIRECCIONES
dest porn {
domainlist porn/domains
urllist porn/urls
expressionlist porn/expressions
}
dest audio-video {
domainlist audio-video/domains
urllist audio-video/urls
}
dest hacking {
domainlist hacking/domains
urllist hacking/urls
}
dest warez {
domainlist warez/domains
urllist warez/urls
}
dest ads {
domainlist ads/domains
urllist ads/urls
# la publicidad es reemplazada por una imagen vacia
redirect http://127.0.0.1/nulbanner.png
}
dest aggressive {
domainlist aggressive/domains
urllist aggressive/urls
}
dest drugs {
domainlist drugs/domains
urllist drugs/urls
}
dest gambling {
domainlist gambling/domains
urllist gambling/urls
}
# permitimos los servidores gratuitos de correo
#dest mail {
# domainlist mail/domains
#}
dest proxy {
domainlist proxy/domains
urllist proxy/urls
}
dest violence {
domainlist violence/domains
urllist violence/urls
expressionlist violence/expressions
}
# CONTROL DE ACCESO
acl {
# por defecto bloqueamos los grupos de direcciones creados
default {
pass !porn !audio-video !hacking !warez !ads !aggressive !drugs !gambling !proxy !
violence all
# redireccionamos a una pagina web disuasoria
redirect http://127.0.0.1/prohibit.html
}
}
Las páginas bloqueadas deben redireccionarse hacia una página web creada con el nombre prohibit.html
en /var/www/html/prohibit.html. También hay que copiar la imagen vacía nullbanner.png para la
publicidad:
# cp /var/www/cgi-bin/nullbanner.png /var/www/html
1. Comprobar que SquidGuard tenga cinco procesos corriendo (que es el número por defecto):
# ps -e | grep squidGuard
2. Compror el log:
# cat /var/log/squidguard/squidguard.log
#cat /var/log/squidGuard/log/squidGuard.log
Si hubiera algún problema, aparecería el mensaje "Emergency mode...". En modo de emergencia, el filtro
queda desactivado.
Sarg (Squid Analysis Report Generator) es una herramienta, desarrollada por el brasileño Pedro Orso, que
permite saber “dónde han estado navegando los usuarios en Internet”, a través del análisis del
fichero de log access.log de Squid. Sarg es una herramienta muy poderosa que permite saber qué
usuarios accedieron a qué sitios, a qué horas, cuantos bytes han sido descargados, relación de sitios
denegados, errores de autenticación, etc.
Para configurar SARG de manera que genere los reportes diarios de los accesos de Squid, es necesario
que Squid esté configurado para generar los logs de acceso en el fichero access.log. Esto se consigue con
la siguiente línea en el archivo de configuración squid.conf:
cache_acces_log /var/log/squid/access.log
Configuración de Sarg:
# touch exclude.hosts
# touch exclude.strings
# touch exclude.users
exclude.host
En éste archivo, cada línea tendrá un Dominio/URL que NO se mostrará en el informe. Es útil cuando se
insertan direcciones, por ejemplo, direcciones de descarga de la Intranet que pasan por el Squid, pero que
no consumen ancho de banda de Internet.
exclude.strings
Si alguna línea del archivo de log contiene alguna cadena de este archivo (una cadena por línea), esa
línea del log, será ignorada por el informe. Con esto se podrá filtrar del informe lo que se desee.
exclude.users:
Los usuarios que figuren en este fichero no estarán incluidos en el reporte.
Generar un reporte:
Dependiendo de la cantidad de accesos al proxy y del tamaño del fichero de log, el proceso se puede
demorar. Cuando esta operación termina, es posible acceder al informe ubicado en el directorio
configurado en la línea (output_dir /var/www/html/squid-report/dia ) desde el navegador web.
Si no se utiliza un proxy transparente, será necesario configurar los clientes para que naveguen a través
del proxy. Es una tarea rápida y fácil de llevar a cabo.
Mozilla Firefox:
Hay que conocer la dirección IP de la máquina donde funciona Squid y el puerto en el que funciona. Y
colocarlos en: Editar => Preferencias => Red => Opciones