Servidores Proxy

La manera ms sencilla de instalar el servidor Squid en nuestro sistema, es mediante una versin en RPM ya sea desde el CD de nuestra distribucin o desde por ejemplo nuestra seccin privada, ninguna versin anterior a la 2.4 STABLE1 se considera apropiada y lgicamente nosotros recomendamos instalar la versin estable ms reciente posible.

Para instalar una versin en RPM, simplemente tenemos que ejecutar como usuario root la siguiente orden:

rpm -i squid-2.4.STABLE6-6.7.3.i386.rpm

(El RPM indicado viene con la distribucin de RedHat 7-3 y es el que utilizaremos para realizar esta documentacin).

.Instalacin mediante cdigo fuente

Si no deseamos esperar a que salga la ltima versin en RPM y queremos instalar Squid desde el cdigo fuente, simplemente tenemos que descargar la versin ms actualizada desde www.squid-cache.org y descomprimirla mediante la orden:

tar -xzvf squid-2.5.STABLE2.tar.gz

Una vez descomprimido el paquete debemos de ejecutar el siguiente script con los siguientes parmetros:

./configure -prefix=/usr/local/squid

Esta orden permite especificar el directorio donde instalaremos Squid. Una vez realizada esta operacin se generan los ficheros Makefiles y libreras necesarias para compilar el cdigo.

Para compilar el cdigo fuente ejecutar la orden make all y posteriormente make install para instalar el software de Squid en nuestro sistema.

.Ejemplo de configuracin de sus directivas

En esta seccin se muestra un ejemplo de las directivas ms importantes que deberan de situarse descomentadas dentro del fichero squid.conf, para hacer funcionar el servidor Squid.

#Directivas para Proxy y cach
http_port 3128
cache_mem 16 MB
cache_dir ufs /var/spool/squid 100 16 256
maximum_object_size 4096 KB
cache_access_log /var/log/squid/access.log
reference_age 1 month
refresh_pattern . 0 20% 4320
ftp_user [email protected]
ftp_passive on

#Directivas para definir listas
acl password proxy_auth REQUIRED
acl redlocal src 192.168.0.0/255.255.255.0
acl adult url_regex www.sex microsoft

#Mnimas por defecto
acl all src 0.0.0.0/0.0.0.0.0
acl manager proto cache_object
acl localhost src 127.0.0.1/32
acl SSL_ports port 443 563 --> HTTPS, SNEWS
acl Safe_ports port 80 21 443 563 --> HTTP, FTP, HTTPS, SNEWS
acl Safe_ports port 70 210 1025-65535 --> GOPHER, WAIS, Rango puertos
acl Safe_ports port 280 488 --> HTTP-MGMT, GSS-HTTP
acl CONNECT method CONNECT

#Directivas para definir reglas sobre las listas
http_access allow adult password
http_access allow redlocal

#Mnimas por defecto
http_access allow manager localhost
http_access deny manager
http_access deny !Safe_ports
http_access deny CONNECT !SSL_ports
http_access deny all

#Otras directivas
no_cache deny adult
reply_body_max_size 4096 KB
cache_mgr [email protected]
authenticate_program /usr/lib/squid/ncsa_auth /etc/squid/squid-passwd

#Directivas para la jerarqua de caches
icp_port 3130
cache_peer 192.168.0.84 parent 3128 3130
cache_peer 192.168.0.90 sibling 3128 0

En el siguiente apartado se muestra una descripcin detallada con ejemplos de cada una de las directivas presentadas y en el orden en que se encuentran en esta pgina.

.Explicacin de las directivas

Una vez presentadas las directivas explicaremos su utilidad y funcionamiento para una mayor compresin de sus posibilidades.

Para el correcto funcionamiento de las directivas, se aconseja descomentarlas situndolas a la izquierda del todo.

.http_port (Asignar Puerto)

Permite especificar uno o varios puertos de escucha para el servidor Squid. Sus valores pueden ser: [direccin-IP:]puerto... tal como se muestra a continuacin.

http_port 3128 80
http_port 192.168.0.87:3128

La segunda lnea especifica la direccin IP de la mquina donde se encuentra el Proxy. Si queremos que Squid escuche en el puerto 80, debemos de tener en cuenta que los servidores web como Apache utilizan este puerto por defecto y por tanto deberemos de asignarle uno diferente.

.cache_mem (Tamao para la cach en memoria)

Permite indicar la cantidad ideal de memoria RAM como mximo para almacenar cach de objetos en trnsito, objetos Hot y objetos negativamente almacenados en la cach.

Los datos de estos objetos se almacenan en bloques de 4KB. Cache_mem especifica un lmite ideal en el tamao total de bloques acomodados, donde los objetos en trnsito tienen mayor prioridad, es decir que el resto de objetos la podrn usar hasta que sea requerida.

En el supuesto caso que el objeto en trnsito requiera una memoria mayor a la especificada se exceder para satisfacer la peticin, a continuacin se muestra un ejemplo.

cache_mem 16 MB

Si el servidor tiene como mnimo 128 MB de RAM es aconsejable indicar este valor.

.cache_dir (Tamao y directorio para la cach fsica)

Permite indicar la cantidad de memoria fsica mxima para almacenar cach en el disco duro, es decir cuanto espacio almacenar de objetos de Internet. Sus valores pueden ser: tipo directorio tamao numero_subdir numero_niveles, tal como se muestra a continuacin.

cache_dir ufs /var/spool/squid 100 16 256

El numero 100 corresponde a 100MB como espacio mximo para almacenar cach, el 16 son el numero de subdirectorios que contendr el directorio principal (en este caso /var/spool/squid) y el 256 significa el numero de niveles para cada subdirectorio. En caso de especificar un tamao mximo inferior al espacio real disponible, el servidor Squid se bloquear.

.maximum_object_size (Tamao mximo para cacheados)

Permite especificar en kilobytes el tamao mximo de los objetos que se pueden cachear, es decir, los objetos ms grandes del tamao indicado no sern cacheados, a continuacin se muestra un ejemplo.

maximum_object_size 4096 KB

En el ejemplo se han indicado 4MB como tamao mximo de objetos en la cach.

.cache_access_log (Log de peticiones y uso de la cach)

Permite definir en que fichero Squid debe guardar una lista de las peticiones que va recibiendo, con la informacin de la pgina que se ha consultado y si sta ha sido facilitada desde la cach o desde el servidor web, a continuacin se muestra un ejemplo.

cache_access_log /var/log/squid/access.log

Squid presenta ms directivas para definir donde registrar sus logs, a continuacin se muestran las siguientes dos que pueden ser de mayor utilidad.

cache_log /var/log/squid/cache.log
Informacin general sobre el comportamiento de la cach
cache_store_log /var/log/squid/store.log
Muestra que objetos son ejecutados des de la cach y hasta cuando sern guardados.

.reference_age (Tiempo mximo en la cach)

Permite especificar el tiempo mximo que puede permanecer un objeto en la cach sin que se acceda a l, transcurrido ese tiempo ser borrado.

Squid el objeto que ha estado mas tiempo sin ser accedido lo calcula dinmicamente con el fin de ser borrado segn el espacio disponible en la cach. Sus valores pueden ser: time-units, tal como se muestra a continuacin.

reference_age 1 year
reference_age 3.5 days
referense_age 2 hours

.refresh_pattern (Factor para pginas sin caducidad)

Permite especificar que fecha en minutos deben de tener los documentos que su servidor no estableci una cabecera Expires indicando su caducidad.

Sus valores pueden ser: expresin_regular mn porcentaje mx, tal como se muestra a continuacin.

refresh_pattern -i \.gif$ 14400 70% 43200
refresh_pattern ^ftp: 1440 20% 10080
refresh_pattern . 0 20% 4320

El valor correspondiente a la expresin regular debe de contener la especificacin del objeto basndose en la direccin (URL) de la peticin o un "." para indicar el resto. En los ejemplos se muestra como especificar cualquier objeto "gif" y cualquier peticin "FTP".

El valor mn corresponde a los minutos mnimos que un objeto que no dispone de una cabecera Expires (indicando su caducidad), pueda ser considerado como no caducado (fresco). El valor "0" se recomienda para que no se obligue la retencin de objetos no deseados como pueden ser los dinmicos.

El valor porcentaje sirve para especificar en aquellos objetos sin fecha de caducidad, cual ser su fecha, aplicando un porcentaje sobre su tiempo desde la ltima modificacin (la ltima modificacin de un objeto se obtiene de la cabecera Last-Modified).

El valor mx corresponde a los minutos mximos que un objeto podr ser considerado como no caducado.

.ftp_user (Acceso annimo para FTP)

Permite indicar el correo que debe usarse como contrasea para acceder de forma annima a un servidor FTP. Esto es til si se desea acceder a servidores que validan la autenticidad de la direccin de correo especificada como contrasea, a continuacin se muestra un ejemplo.

ftp_user [email protected]

.Requerir autentificacin por contrasea

Hasta el momento hemos visto mediante las directivas acl y http_access como controlar el acceso segn el origen de la peticin o segn el destino. En este apartado aprovechando tambin estas directivas mostraremos como conseguir que independientemente de la mquina que se utilice se requiera introducir un nombre de usuario y una contrasea en el cliente para poder acceder a travs del Proxy.

  1. Crear el fichero que contendr los usuarios y sus contraseas de forma encriptada.
    touch /etc/squid/squid-passwd
  2. Establecer permisos de lectura y escritura para Squid.
    chmod 600 /etc/squid/squid-passwd
    chown squid:squid /etc/squid/squid-passwd
  3. Dar de alta los usuarios con sus contraseas.
    htpasswd /etc/squid/squid-passwd nombre_usuario

    La orden nos pedir introducir su contrasea correspondiente. El nombre de usuario es lgicamente independiente a los que hay ya definidos en el sistema y la orden htpasswd est disponible en el paquete: apache-1.3.22 o superior.

  4. Definir en el fichero squid.conf que programa gestiona las autenticaciones (ver seccin: Explicacin de las directivas).
    authenticate_program /usr/lib/squid/ncsa_auth /etc/squid/squid-passwd
  5. Definir en el fichero squid.conf la lista acl correspondiente.
    acl password proxy_auth REQUIRED
  6. Aplicar reglas en el fichero squid.conf para quienes queramos que sean autenticados.
acl all src 0.0.0.0/0.0.0.0 --> Todas las IP's posibles
acl redlocal src 192.168.0.0/24 --> Red correspondiente a 192.168.0.*
http_access allow redlocal password --> Usuarios con esas IP's autenticarse
http_access deny all --> Denegamos el acceso a los dems.
acl all src 0.0.0.0/0.0.0.0 --> Todas las IP's posibles
acl redlocal src 192.168.0.0/24
acl adult url_regex www.sex.com erotic
http_access allow adult password --> Solo acceder a contenido adulto mediante 
previa autenticacin.
http_access allow redlocal --> Permitimos el acceso a las IP's de la red.
http_access deny all --> Denegamos el acceso a los dems.

Una vez hemos configurado nuestro servidor Proxy solo tenemos que realizar una peticin a un contenido prohibido y observaremos como nuestro navegador muestra una ventana para que nos autentiquemos.

COMPARTE ESTE ARTÍCULO

ENVIAR A UN AMIGO
COMPARTIR EN FACEBOOK
COMPARTIR EN TWITTER
COMPARTIR EN GOOGLE +
SIGUIENTE ARTÍCULO

¡SÉ EL PRIMERO EN COMENTAR!
Conéctate o Regístrate para dejar tu comentario.