[LinuxFocus-icon]
Hogar  |  Mapa  |  Indice  |  Busqueda

Noticias | Arca | Enlaces | Sobre LF
convert to palmConvert to GutenPalm
or to PalmDoc

[DSOberoi]
por D.S. Oberoi
<ds_oberoi(at)yahoo.com>

Sobre el autor:
D.S. Oberoi vive en Jammu, India y actualmente tiene problemas para conectarse a Internet debido a las tensiones políticas.

Taducido al español por:
Miguel Espejo <mespejo(at)datatec.com.pe>

Contenidos:

 

Configuración de un servidor Squid-Proxy

[squid]

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.

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 buen servidor proxy también almacena (caching) pagínas web que le ha sido solicitadas, lo cual ayuda a ver esos datos desde un recurso local, en vez de estar bajando datos de la web y por consiguiente reduce el tiempo de acceso y uso del ancho de banda. Squid es un software que soporta proxy, hace cache de paginas web, de DNS y mantiene un registro completo de todos los pedidos. Squid también esta disponible para Windows-NT de Logi Sense.

El objetivo de este articulo es proporcionarle una guía basica de configuración de un servidor proxy y algunas formas de proporcionar acceso controlado a sus usuarios



 

Esta instalado Squid ?

El .rpm de squid viene con RedHat 7.1 y es instalado automaticamente con la opción de Instalación en Red, puede verificar si esta instalado el siguiente comando:
rpm -q squid


Puede obtener la ultima version de Squid en Squid Homepage y en los mirrors Lista de mirrors. Squid puede ser instalado en el sistema 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:

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: 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_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)
 

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

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

Referencias

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

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
LinuxFocus.org

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

2002-05-07, generated by lfparser version 2.21