29.4. Archivo de configuración /etc/squid/squid.conf

Todos los ajustes del servidor alterno Squid se realizan en el archivo /etc/squid/squid.conf. Para iniciar Squid por primera vez, no es necesario realizar ningún cambio en este archivo, pero al principio se deniega el acceso a los clientes externos. El alterno sólo está disponible para localhost. El puerto por defecto es el 3128. El archivo de configuración preinstalado, /etc/squid/squid.conf, proporciona información detallada sobre las opciones y muchos ejemplos. Casi todas las entradas empiezan por # (las líneas tienen comentarios) y las especificaciones relevantes se encuentran al final de las líneas. Los valores dados normalmente se corresponden con los valores por defecto, por lo que eliminar los signos de comentarios sin cambiar los parámetros suele producir pocos cambios en la mayoría de los casos. Si es posible, no modifique los ejemplos e introduzca las opciones junto a los parámetros modificados en la línea siguiente. De este modo, podrá recuperar fácilmente los valores por defecto y compararlos con los cambios en cualquier momento.

[Tip]Adaptación del archivo de configuración después de una actualización

Si ha efectuado una actualización a partir de una versión anterior de Squid, es recomendable editar el nuevo archivo /etc/squid/squid.conf y aplicar sólo los cambios realizados en el archivo anterior. Si intenta utilizar el archivo squid.conf anterior, es posible que la configuración ya no funcione, dado que a veces se modifican las opciones y se añaden nuevos cambios.

29.4.1. Opciones de configuración generales (selección)

http_port 3128

Este es el puerto que Squid utiliza para escuchar las solicitudes de los clientes. El puerto por defecto es el 3128, pero el 8080 también suele utilizarse. Si lo desea, puede especificar varios números de puerto separados por espacios.

cache_peer nombre de host tipo puerto del alterno puerto icp

Introduzca un alterno principal, por ejemplo, si desea utilizar el alterno del proveedor de Internet. Como nombre de host, introduzca el nombre y la dirección IP del alterno que desee utilizar y como tipo, introduzca parent. En puerto del alterno, introduzca el número de puerto proporcionado por el operador del alterno principal para su uso en el navegador, normalmente será el 8080. Establezca los valores 7 o 0 para el puerto icp si el puerto ICP del alterno principal es desconocido y su uso es irrelevante para el proveedor. También puede especificar default y no-query tras los números de puerto para impedir el uso del protocolo ICP. En tal caso, Squid se comportará como un navegador normal por lo que al alterno del proveedor respecta.

cache_mem 8 MB

Esta entrada define la cantidad de memoria que puede emplear Squid para las respuestas más frecuentes. El valor por defecto es 8 MB. Este valor no especifica el uso total de memoria de Squid, por lo que es posible que el uso real sea superior.

cache_dir ufs /var/cache/squid/ 100 16 256

La entrada cache_dir define el directorio del disco en el que se almacenan todos los objetos. Los números del final indican el espacio máximo en disco que debe utilizarse en MB y el número de directorios de primer y segundo nivel. El parámetro ufs no debe modificarse. Los valores por defecto implican 100 MB de espacio ocupado en disco por el directorio /var/cache/squid y la creación de 16 subdirectorios en él, cada uno de los cuales contiene 256 subdirectorios adicionales. Al especificar el espacio en disco que desea utilizar, reserve espacio suficiente. Los valores más adecuados oscilan entre un mínimo del 50% y un máximo del 80% del espacio disponible en disco. Debe extremar las precauciones si decide aumentar los dos últimos números (referentes a los directorios), dado que la existencia de demasiados directorios puede provocar problemas de rendimiento. Si tiene varios discos que comparten el caché, introduzca varias líneas cache_dir.

cache_access_log /var/log/squid/access.log, cache_log /var/log/squid/cache.log, cache_store_log /var/log/squid/store.log

Estas tres entradas especifican las rutas en las que Squid registra todas sus acciones. Normalmente no es necesario realizar ningún cambio. Si Squid experimenta una carga de uso intensa, puede que resulte útil distribuir el caché y los archivos de registro en varios discos.

emulate_httpd_log off

Si la entrada tiene el valor on, obtendrá archivos de registro legibles. No obstante, algunos programas de evaluación no podrán interpretarlos.

client_netmask 255.255.255.255

Esta entrada permite enmascarar las direcciones IP de los clientes en los archivos de registro. El último dígito de la dirección IP tendrá el valor cero si introduce aquí 255.255.255.0. De ese modo, puede proteger la privacidad de los clientes.

ftp_user Squid@

Permite definir la contraseña que debe utilizar Squid para los inicios de sesión FTP anónimos. Puede que sea una buena idea indicar una dirección de correo electrónico válida, dado que algunos servidores FTP las comprueban para verificar su validez.

cache_mgr webmaster

Una dirección de correo electrónico a la que Squid debe enviar un mensaje si se produce un error inesperado. El valor por defecto es webmaster.

logfile_rotate 0

Si ejecuta squid -k rotate, Squid puede rotar los archivos de registro protegidos. Los archivos se numeran durante el proceso y, al llegar al valor especificado, se sobrescribe el archivo más antiguo. El valor por defecto es 0, dado que el almacenamiento y la supresión de archivos de registro en SUSE Linux se lleva a cabo mediante un cronjob establecido en el archivo de configuración /etc/logrotate/squid.

append_domain <dominio>

Utilice append_domain para especificar el dominio que debe adjuntarse automáticamente si no se proporciona ninguno. Normalmente se introduce su propio dominio, por lo que al introducir www en el navegador accederá a su propio servidor Web.

forwarded_for on

Si establece el valor off para esta entrada, Squid eliminará la dirección IP y el nombre de sistema de los clientes de las solicitudes HTTP. De lo contrario, añadirá al encabezado una línea similar a la siguiente:

X-Forwarded-For: 192.168.0.0
negative_ttl 5 minutes; negative_dns_ttl 5 minutes

Por lo general, no necesita efectuar ningún cambio en estos valores. No obstante, si utiliza una conexión de acceso telefónico, en ocasiones puede que no sea posible acceder a Internet. Squid tiene en cuenta las solicitudes fallidas y rechaza emitir solicitudes nuevas, aunque la conexión a Internet se restablezca. Si esto ocurre, cambie el valor de minutes (minutos) a seconds (segundos) y haga clic en el botón de actualización del navegador, el proceso de marcación debería volver a iniciarse en unos segundos.

never_direct allow nombre_acl

Para evitar que Squid acepte solicitudes directamente de Internet, utilice el comando anterior para forzar la conexión con otro alterno. Dicho alterno deberá haberse introducido anteriormente en cache_peer. Si especifica el valor all para la entrada acl_name, forzará todas las solicitudes de modo que se envíen directamente al alterno principal. Esto puede resultar necesario, por ejemplo, si emplea un proveedor que estipula de forma estricta el uso de sus alternos o deniega al cortafuegos acceso directo a Internet.

29.4.2. Opciones de control de acceso

Squid proporciona un sistema detallado para controlar el acceso al alterno. La configuración de dicho sistema es muy sencilla y completa mediante la implementación de ACL. Esto implica listas con reglas que se procesan de forma secuencial. Las listas ACL deben definirse antes de proceder a su uso. Algunas listas ACL, como all y localhost, ya existen. No obstante, la definición de una lista ACL no implica automáticamente su aplicación. Esto sólo ocurre con las reglas http_access.

acl <nombre_acl> <tipo> <datos>

Una lista ACL requiere al menos tres especificaciones para su definición. El nombre <nombre_acl> puede elegirse arbitrariamente. En <tipo>, seleccione entre la variedad de opciones diferentes que encontrará en la sección ACCESS CONTROLS (Controles de acceso) del archivo /etc/squid/squid.conf. La especificación de <datos> depende del tipo de ACL individual y también puede leerse desde un archivo, por ejemplo mediante nombres de hosts, direcciones IP o direcciones URL. A continuación encontrará algunos ejemplos sencillos:

 
acl misusuarios srcdomain .midominio.com 
acl profesores src 192.168.1.0/255.255.255.0 
acl alumnos src 192.168.7.0-192.168.9.0/255.255.255.0 
acl hora del almuerzo MTWHF 12:00-15:00 
http_access allow <nombre_acl>

http_access define quién puede utilizar el alterno y quién puede acceder a qué en Internet. Para que esto sea posible, deberá proporcionar listas ACL. localhost y all ya se han definido anteriormente y pueden permitir o denegar el acceso mediante los valores deny (Denegar) y allow (Permitir). Puede crear una lista con cualquier número de entradas http_access, que se procesarán de arriba a abajo y, dependiendo de lo que ocurra primero, permitirán o denegarán el acceso a la dirección URL respectiva. La última entrada siempre debe ser http_access deny all. En el siguiente ejemplo localhost (host local) tiene acceso a todo, mientras que a todos los demás hosts se les deniega el acceso completamente.

http_access allow localhost
http_access deny all

En otro ejemplo de uso de estas reglas, el grupo profesores siempre tiene acceso a Internet. El grupo alumnos sólo tiene acceso de lunes a viernes durante la hora del almuerzo.

 
http_access deny localhost 
http_access allow profesores 
http_access allow alumnos hora del almuerzo 
http_access deny all 

En beneficio de la legibilidad del archivo, la lista con las entradas http_access sólo debe introducirse en la posición designada en el archivo /etc/squid/squid.conf. Es decir, entre el texto

# INSERT YOUR OWN RULE(S) HERE TO ALLOW ACCESS FROM YOUR
# CLIENTS

y la última entrada

http_access deny all
redirect_program /usr/bin/squidGuard

Esta opción permite especificar un redireccionador como squidGuard, que permite bloquear las direcciones URL no deseadas. El acceso a Internet se puede controlar de forma individualizada para distintos grupos de usuarios mediante la autenticación de alternos y las listas ACL adecuadas. squidGuard es un paquete aparte que puede instalarse y configurarse por separado.

auth_param basic program /usr/sbin/pam_auth

Si los usuarios deben autenticarse en el alterno, defina un programa adecuado, como pam_auth. Al acceder a pam_auth por primera vez, el usuario verá una ventana de inicio de sesión en la que podrá introducir el nombre de usuario y la contraseña. Además, sigue siendo necesaria una lista ACL, por lo que sólo los clientes con un inicio de sesión válido podrán utilizar Internet:

acl password proxy_auth REQUIRED

http_access allow password
http_access deny all

El valor REQUIRED tras proxy_auth puede sustituirse con una lista de nombres de usuario permitidos o con la vía a dicha lista.

ident_lookup_access allow <nombre_acl>

Permite ejecutar una solicitud de identidad para todos los clientes definidos en la lista ACL para averiguar la identidad de cada usuario. Si incluye all en <nombre_acl>, la solicitud será válida para todos los clientes. Además, deberá haber un daemon de identidad en ejecución en todos los clientes. En Linux, instale el paquete pidentd. En el caso de Microsoft Windows, en Internet encontrará software gratuito disponible para su descarga. Para garantizar que sólo se permitan los clientes con una búsqueda de identidad correcta, defina la lista ACL correspondiente aquí:

acl identhosts ident REQUIRED

http_access allow identhosts
http_access deny all

En esta entrada también puede sustituir REQUIRED por una lista de nombres de usuario permitidos. El uso de ident puede ralentizar bastante el tiempo de acceso, dado que las búsquedas de identidad se repiten para cada solicitud.