Está en la página 1de 9

lf235, System Administration: Configuración de un servidor Squid-Proxy Page 1 of 9

Hogar | Mapa | Indice | Busqueda

Noticias | Arca | Enlaces | Sobre LF


Este documento está disponible en los siguientes idiomas: English Castellano ChineseGB Deutsch Francais
Italiano Nederlands Russian Turkce
Convert to GutenPalm
or to PalmDoc

Configuración de un servidor Squid-Proxy

Resumen:

Linux se ha vuelto sinonimo de REDES. Esta siendo usado en hogares y


oficinas como servidor de archivos, de impresión, de correo, de
aplicaciones y ultimamente se ha incrementado su uso como servidor
Proxy.
por D.S. Oberoi
<ds_oberoi(at)yahoo.com> Un servidor proxy, facilita el acceso a Internet de varios usuarios al
mismo tiempo que están compartiendo una solo conexión a Internet. Un
Sobre el autor: buen servidor proxy también almacena (caching) pagínas web que le ha
D.S. Oberoi vive en Jammu, sido solicitadas, lo cual ayuda a ver esos datos desde un recurso local, en
India y actualmente tiene vez de estar bajando datos de la web y por consiguiente reduce el tiempo
problemas para conectarse a de acceso y uso del ancho de banda. Squid es un software que soporta
Internet debido a las tensiones proxy, hace cache de paginas web, de DNS y mantiene un registro
políticas. completo de todos los pedidos. Squid también esta disponible para
Windows-NT de Logi Sense.
Taducido al español por:
Miguel Espejo <mespejo(at) El objetivo de este articulo es proporcionarle una guía basica de
datatec.com.pe> configuración de un servidor proxy y algunas formas de proporcionar
acceso controlado a sus usuarios
Contenidos:

 Esta instalado Squid ?


 Configuración de Squid
 Contro de Acceso
(Access Control)
 Configuración del
Esta instalado Squid ?
cliente
 El uso del Control de El .rpm de squid viene con RedHat 7.1 y es instalado automaticamente
Acceso con la opción de Instalación en Red, puede verificar si esta instalado el
 Archivos de Log (Log siguiente comando:
Files)
rpm -q squid
 Métodos de
autenticación
 Referencias
 Formulario de Puede obtener la ultima version de Squid en Squid Homepage y en los
"talkback" para este mirrors Lista de mirrors. Squid puede ser instalado en el sistema

http://www.linuxfocus.org/Castellano/March2002/article235.shtml 5-11-07
lf235, System Administration: Configuración de un servidor Squid-Proxy Page 2 of 9

artículo operativo con el siguiente comando:

rpm -ivh squid-2.3.STABLE4-10.i386.rpm

Configuración de Squid
El trabajo y comportamiento de Squid es controlado por detalles de configuración determinados en su
archivo de configuración squid.conf, el cual usualmente se encuentra en el directorio etc/squid. El
archivo de configuración de Squid es bastante grande, paginas de paginas, pero tiene todas sus opciones
o parametros bien documentados.

Lo primer que tiene que ser editado es el parametro http_port, el cual especifica el puerto donde Squid
escuchará los pedidos de los clientes, por defecto Squid escucha los pedidos en el puerto 3128 pero esto
puede ser cambiado a un valor definido por el usuario. Ademas del valor del puerto, se puede determinar
la direccion ip de la maquina en la que se ejecuta el Squid; esto se puede cambiar a:

http_port 192.168.0.1:8080

Con la declaración anterior decimos que Squid esta "enlazado" a la dirección IP 192.168.0.1 y al puerto
8080. Se le puede asignar cualquier puerto, pero hay que asegurarse de que ninguna otra aplicación este
corriendo por el puerto a asignar. Con lineas de configuración similares se pueden asignar pedidos de
puertos de otros servicios.

Contro de Acceso (Access Control)


La salida a Internet puede ser controlada en terminos de acceso por un intervalo de tiempo, cache,
acceso a un sitio en particular o a un grupo de sitios, etc...El control de acceso de Squid tiene 2
componentes diferentes, los elementos de ACL (Access Control List o Lista de Control de Acceso) y la
lista de acceso. De hecho la lista de acceso es la que permite o niega el acceso al servicio.

Unos cuantos tipos de elementos importantes de ACL en la siguiente lista:

src : Origen, Dirección IP de un cliente


dst : Destino, Dirección IP del servidor
srcdomain : Dominio Origen, nombre de dominio del cliente
dstdomain : Destino, Nombre de domino del server

time : Hora del día y día de la semana

url_regex : URL regular expression pattern matching

urlpath_regex: URL-path regular expression pattern matching, leaves out the protocol and
hostname

proxy_auth : Autenticación de usuario a traves de un proceso externo

http://www.linuxfocus.org/Castellano/March2002/article235.shtml 5-11-07
lf235, System Administration: Configuración de un servidor Squid-Proxy Page 3 of 9

maxconn : Número máximo de limite de conexiones de una dirección IP

Para aplicar los controles, primero tiene que definir el conjunto de ACLs y luego aplicar las reglas al
conjunto. El formato de una sentencia ACL es:

acl nombre_elemento_acl tipo_elemento_acl valores de_acl

Nota :

nombre_elemento_acl puede ser cualquier nombre definido por el usuario que se determine para
el elemento ACL .
No se puede repetir los nombres de los elementos ACL.
Cada ACL consiste en una lista de valores. Cuando se comparan, los múltiples valores usan un
OR logic. En otras palabras, un elemento ACL es igual cuando alguno de sus valores es
comparado positivamente.
No todo los elementos ACL pueden ser usados con todos los tipos de listas de acceso.

Los diferentes elementos ACL estan en diferentes líneas y Squid los combina en una lista.

Se dispone de un número de listas de acceso. Las que vamos a usar estan en la siguitente lista:

http_access: Permite que los clientes HTTP tengan salida por el puerto HTTP port. Esta es la lista
de control de acceso principal.
no_cache: Define el almacenamiento de las páginas solicitadas.

Una regla de una lista de acceso consiste en keywords como allow o deny; las cuales permiten o niegan
el servicio para un elemento ACL o para un grupo de elementos ACL.
Nota:

Las reglas son verificadas en el orden en el que fueron escritas y se dejan de verificar en cuanto la
regla coincida.
Una lista de acceso puede contener varias reglas.
Si ninguna de las reglas es igual, entonces la acción por defecto es hacer lo opuesto a la ultima
regla en la la lista, por eso es mejor ser explicito con la acción a realizar por defecto.
Todos los elementos de una entrada de acceso son comparados con un AND y ejecutados de la
siguiente manera.
http_access Action Sentencia1 AND Sentencia2 AND Sentencia OR.
http_access Action Sentencia3
Multiples sentencias http_access statements son comparadas con OR siempre que los los
elementos de entrada de accceso tengan un AND juntas.

Recuerde que las reglas son leídas de arriba hacia abajo siempre

De vuelta a la configuración

Por defecto Squid no permite ningún acceso a los clientes y los controles tienen que ser modificados
para ese proposito.Tiene que crear sus reglas para permitir el accceso. Edite el archivo squid.con e
ingrese las siguientes líneas debajo de la línea http_access deny all

acl mynetwork 192.168.0.1/255.255.255.0

http://www.linuxfocus.org/Castellano/March2002/article235.shtml 5-11-07
lf235, System Administration: Configuración de un servidor Squid-Proxy Page 4 of 9

http_access allow mynetwork

mynetwork es el nombre de acl y la siquiente linea es la regla aplicable a un acl en particular, por
ejemplo mynetwork. 192.168.0.1 se refiere a la red cuya mascara es 255.255.255.0. mynetwork
basicamente determina el nombre de un grupo de maquinas en la red y la regla permite el acceso a los
clientes. Los cambios anteriores junto con http_port http_port son mas que suficiente para poner Squid
en funcionamiento. Despues de los cambios Squid puede ser inicializado con el siguite comando.

service squid start

Nota :
Squid también puede ser inicializado automaticamente en el momento de arranque habilitandolo ya sea
con ntsysv o setup (System Service Menu)(esto funciona en RedHat, para hacerlo en Debian, puede usar
el comnado update-rc <nombre del servicio>).

Despues de cada cambio en el archivo configuración, debe de parar e iniciar de nuevo el proceso del
Squid, para que dichos cambios entren en vigencia. esto se hace puede hacer con los siguientes
comandos:

service squid restart o


/etc/rc.d/init.d/squid restart

Configuración del cliente


Dado que el pedido del cliente será colocado en un puerto en particular del servidor proxy, la maquina
del cliente tiene que ser configurada para el mismo proposito. Se da por sentado que estas maquinas ya
estan conectadas a la LAN (Con direcciones IP validas) y que se puede hacer ping desde ellas hacia el
servidor Linux.

Para Internet Explorer

Vaya al Herramientas -> Opciones de Internet


Seleccione el tab Conexiones y haga click en Configuración de Red
Marque la casilla Servidor Proxy e ingrese la direccion del servidor proxy y el puerto por
donde son atendidos los pedidos (el número de puerto que configuro en http_port)

Para Netscape Navigator

Vaya a Editar -> Preferencias -> Avanzados -> Proxies.


Seleccione Configuración manual del proxy
Haga click en el boton Ver &
Ingrese la dirección del servidor proxy y el puerto por donde son atendidos los pedidos (el número
de puerto que configuro en http_port)

http://www.linuxfocus.org/Castellano/March2002/article235.shtml 5-11-07
lf235, System Administration: Configuración de un servidor Squid-Proxy Page 5 of 9

El uso del Control de Acceso


Las regla y controls de Acceso múltiple ofrecen una forma flexible de controlar el acceso de los clientes
a Internet. A continuación algunos ejemplos de la reglas mas usados comunmente.

Allowing selected machines to have access to the Internet

acl allowed_clients src 192.168.0.10 192.168.0.20 192.168.0.30

http_access allow allowed_clients


http_access deny !allowed_clients

Esto permite que solo salgan a internet las pcs cuya IPs son 192.168.0.10, 192.168.0.20 and
192.168.0.30, el resto ( que no están en la lista) no tienen salida a Internet

Restringir la salida a Internet durante un periodo de tiempo

acl allowed_clients src 192.168.0.1/255.255.255.0

acl regular_days time MTWHF 10:00-16:00


http_access allow allowed_clients regular_days
http_access deny allowed_clients

Esto permite que todos los clientes en la red 192.168.0.1 de lunes a viernes de 10:00 am a 4:00
pm.

Múltiples horas de accceso para diferentes clientes

acl hosts1 src192.168.0.10

acl hosts2 src 192.168.0.20


acl hosts3 src 192.168.0.30
acl morning time 10:00-13:00
acl lunch time 13:30-14:30
acl evening time 15:00-18:00
http_access allow host1 morning
http_access allow host1 evening
http_access allow host2 lunch
http_access allow host3 evening
http_access deny all

La regla anterior permitira que el host1 tenga acceso tanto en la mañana como en la tarde;
mientras que el host2 y host3 solo tendran acceso durante la hora del almuerzo y en la tarde

http://www.linuxfocus.org/Castellano/March2002/article235.shtml 5-11-07
lf235, System Administration: Configuración de un servidor Squid-Proxy Page 6 of 9

respectivamente.

Nota:
Todos los elementos de una entrada de acceso comparados juntos con un AND y ejecutados de la
siguiente manera

http_access Acción sentencia1 AND sentencia2 AND sentenciaN OR.

Las sentencias http_access multiples son comparadas con OR siempre y cuando los elementos de
las entradas de acceso esten siendo comparadas por un AND todas juntas, debido a esto la
sentencia :

http_access allow host1 morning evening

nunca trabajaría como tiempo morning evening (morning AND evening) (mañana Y tarde) y
nunca sería TRUE ( verdadero), y por consiguiente ninguna acción se llevaria a cabo.

Bloquear pagínas web

Squid puede evitar el acceso a direcciones de sites que contengan una palabra en particular, esto
puede ser implementado de la siguienta manera

acl allowed_clients src 192.168.0.1/255.255.255.0


acl banned_sites url_regex abc.com *()(*.com
http_access deny banned_sites
http_access allow allowed_clients

Lo mismo se puede usar para evitar en acceso a sitios con una palabar en particular, por ejemplo
dummy,

acl allowed_clients src 192.168.0.1/255.255.255.0


acl banned_sites url_regex dummy
http_access deny banned_sites
http_access allow allowed_machines

NO es practico listar todas las palabras o nombres de sites a lo que no desea que se tenga acceso,
esta información puede ser ingresada en un archivo, (por ejemplo sites_prohibidos.list en el
directorio /etc, y una ACL puede tomar la información de ese archivo para evitar el acceso a los
sitios prohibidos.

acl allowed_clients src 192.168.0.1/255.255.255.0


acl banned_sites url_regex "/etc/banned.list"
http_access deny banned_sites
http_access allow allowed_clients

Para optimizar el uso de Squid


Squid puede limitar el número de conexiones desde los clientes y esto es posible con en elemento
max_conn. para usar esta opción, se debe de habilitar el parametro client_db.

http://www.linuxfocus.org/Castellano/March2002/article235.shtml 5-11-07
lf235, System Administration: Configuración de un servidor Squid-Proxy Page 7 of 9

acl mynetwork 192.168.0.1/255.255.255.0


acl numconn maxconn 5
http_access deny mynetwork numconn

Note:

El ACL maxconn usa comparación menor-que (less-than). Esta ACL es ejecutada cuando el
número de conexiones es mayor que el especificado.Esta es la razón por la cual esta ACL, no es
usada con la regla http_access allow.

Almacenamiento de datos ( Cache )

La repuesta a los pedidos de los clientes, son almacenados inmediatamente, lo cual esta bien para
paginas estaticas, no hay necesidad de almacenar cgi-bin o Servlet y esto se puede evitar usando el
elemento de ACL no_cache ACL.

acl cache_prevent1 url_regex cgi-bin /?


acl cache_prevent2 url_regex Servlet
no_cache deny cache_prevent1
no_cache deny cache_prevent2

Crear tus propios mensajes de error


Es posible crear tus propios mensajes de error con una regla de denegar (deny) con la opción
deny_info. Los mensajes de error de Squid estan en el directorio /etc/squid/errors, este directorio
de errores puede ser configurado con la opción error_directory. Si desea puede personalizar el
contenido de los mensajes de error.

acl allowed_clients src 192.168.0.1/255.255.255.0


acl banned_sites url_regex abc.com *()(*.com
http_access deny banned_sites
deny_info ERR_BANNED_SITE banned_sites
http_access allow allowed_clients

En el ejemplo anterior, un mensaje especial se mostrará cada vez que los usuarios traten de
ingresar a los sitos con las palabras prohibidas, el nombre de archivo en la opción por ejemplo
ERR_BANNED_SITE debe de existir en el directorio de error. Este archivo de mensajes de error
debe de estar en formato HTML. Los ejemples listasdos arriba son solo unas cuantas de las
opciones y capacidad de la ACL,puede leer la FAQ en la pagnia de Squid, para obtener una
explicación mas extensa del uso de los elementos de ACL y otros elementos de acceso.

Archivos de Log (Log Files)


Todos los archivos de registro de actividad estan en el directorio /var/log/squid; estos archivos contienen
registros de cache, acceso y almacenamiento. El archivo access.log mantiene información acerca de los
pedidos de los clientes, actividad, y mantiene una entrada por cada consulta HTTP e ICMP realizada por
el servidor proxy, las IPs de los clientes, metodo de pedido, URL pedida, etc... La información de este

http://www.linuxfocus.org/Castellano/March2002/article235.shtml 5-11-07
lf235, System Administration: Configuración de un servidor Squid-Proxy Page 8 of 9

archivo puede ser usada para analizar la información de acceso. Muchos programas como sarg,
calamaris;, Squid-Log-Analyzer; estan disponibles para analizar estos datos y generar reportes en base a
usuariosm números IP, sitios visitados, etc...

El destino de esto archivos de registro puede ser cambiados con las siguientes opciones

cache_access_log para access.log


cache_log paracache.log
cache_store_log para store.log (Store manager)
pid_filename para el archivo de ID del proceso de Squid

Métodos de autenticación
La configuración por defecto de Squid permite que cualquier usuario tenga acceso sin necesidad de
realizar algún proceso de autenticación. Para autenticar a los usuarios, ( digamos que solo un grupo de
usuarios, desde cualquier maquina en la mi red puede entrar a Internet) Squid permite autenticación con
nombre de usuario y contraseña pero vía una aplicación externa, usando la ACL proxy_auth y
authenticate_program; se fuerza a un cliente a verificar nombre de usuario y contraseña antes de que
obtenga acceso a internet. Hay varios programas de autenticación disponibles que Squid puede usar :

LDAP : Usa Linux Lightweight Directory Access Protocol


NCSA : Usa un archivo estilo NCSA con username y password
SMB : Usa el server SMB server como SAMBA Windows NT
MSNT : Usa la autenticación de dominio de Windows NT
PAM : Usa Linux Pluggable Authentication Modules
getpwam : Usa el archivo de contraseñas de Linux.

Se necesita especificar el programa de autenticación que será usado especificando la opción


authenticate_program. Cercioresé de que el programa que va a usar para autenticación este instaldo y
funcionando.

El cambio en el archivo squid.conf debe de tener el pograma a usar para autenticación.

authenticate_program /usr/local/bin/pam_auth

acl pass proxy_auth REQUIRED


acl mynetwork src 192.168.0.1/255.255.255.0
http_access deny !mynetwork
http_access allow pass
http_access deny all

Esto usa el programa de autenticación PAM y todos los usuarios necesitan autenticarse antes salir a
Internet.

Opciones como authenticate_ttl y authenticate_ip_ttl también pueden ser usadas para cambiar el
comportamiento del proceso de autenticación, por ejemplo revalidar el usuario y su contraseña.

http://www.linuxfocus.org/Castellano/March2002/article235.shtml 5-11-07
lf235, System Administration: Configuración de un servidor Squid-Proxy Page 9 of 9

Referencias
Este articulo solo toca la punta del iceberg Squid, visite las siguientes paginas para obtener mayor
referencia.

Squid Home, www.squid-cache.org


Proyecto de documentación de Squid, squid-docs.sourceforge.net
visolve.com
For Proxy Authentication, home.iae.nl/users/devet/squid/proxy_auth

Formulario de "talkback" para este artículo


Cada artículo tiene su propia página de "talkback". A través de esa página puedes enviar un comentario
o consultar los comentarios de otros lectores
Ir a la página de "talkback"

Contactar con el equipo de LinuFocus


© D.S. Oberoi, FDL Información sobre la traducción:
LinuxFocus.org en --> -- : D.S. Oberoi <ds_oberoi(at)yahoo.com>
Pinchar aquí para informar de algún problema o en --> es: Miguel Espejo <mespejo(at)datatec.com.pe>
enviar comentarios a LinuxFocus

2002-05-07, generated by lfparser version 2.21

http://www.linuxfocus.org/Castellano/March2002/article235.shtml 5-11-07

También podría gustarte