Servidores Proxy

La manera m�s sencilla de instalar el servidor Squid en nuestro sistema, es mediante una versi�n en RPM ya sea desde el CD de nuestra distribuci�n o desde por ejemplo nuestra secci�n privada, ninguna versi�n anterior a la 2.4 STABLE1 se considera apropiada y l�gicamente nosotros recomendamos instalar la versi�n estable m�s reciente posible.

Para instalar una versi�n 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 distribuci�n de RedHat 7-3 y es el que utilizaremos para realizar esta documentaci�n).

.�Instalaci�n mediante c�digo fuente

Si no deseamos esperar a que salga la �ltima versi�n en RPM y queremos instalar Squid desde el c�digo fuente, simplemente tenemos que descargar la versi�n m�s 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 par�metros:

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

Esta orden permite especificar el directorio donde instalaremos Squid. Una vez realizada esta operaci�n se generan los ficheros Makefiles y librer�as necesarias para compilar el c�digo.

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

.�Ejemplo de configuraci�n de sus directivas

En esta secci�n se muestra un ejemplo de las directivas m�s importantes que deber�an 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

#M�nimas 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

#M�nimas 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 jerarqu�a 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 descripci�n detallada con ejemplos de cada una de las directivas presentadas y en el orden en que se encuentran en esta p�gina.

.�Explicaci�n de las directivas

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

Para el correcto funcionamiento de las directivas, se aconseja descomentarlas situ�ndolas 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: [direcci�n-IP:]puerto... tal como se muestra a continuaci�n.

http_port 3128 80
http_port 192.168.0.87:3128

La segunda l�nea especifica la direcci�n IP de la m�quina 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 (Tama�o para la cach� en memoria)

Permite indicar la cantidad ideal de memoria RAM como m�ximo para almacenar cach� de objetos en tr�nsito, objetos Hot y objetos negativamente almacenados en la cach�.

Los datos de estos objetos se almacenan en bloques de 4KB. Cache_mem especifica un l�mite ideal en el tama�o total de bloques acomodados, donde los objetos en tr�nsito tienen mayor prioridad, es decir que el resto de objetos la podr�n usar hasta que sea requerida.

En el supuesto caso que el objeto en tr�nsito requiera una memoria mayor a la especificada se exceder� para satisfacer la petici�n, a continuaci�n se muestra un ejemplo.

cache_mem 16 MB

Si el servidor tiene como m�nimo 128 MB de RAM es aconsejable indicar este valor.

.�cache_dir (Tama�o y directorio para la cach� f�sica)

Permite indicar la cantidad de memoria f�sica m�xima para almacenar cach� en el disco duro, es decir cuanto espacio almacenar de objetos de Internet. Sus valores pueden ser: tipo directorio tama�o numero_subdir numero_niveles, tal como se muestra a continuaci�n.

cache_dir ufs /var/spool/squid 100 16 256

El numero 100 corresponde a 100MB como espacio m�ximo 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 tama�o m�ximo inferior al espacio real disponible, el servidor Squid se bloquear�.

.�maximum_object_size (Tama�o m�ximo para cacheados)

Permite especificar en kilobytes el tama�o m�ximo de los objetos que se pueden cachear, es decir, los objetos m�s grandes del tama�o indicado no ser�n cacheados, a continuaci�n se muestra un ejemplo.

maximum_object_size 4096 KB

En el ejemplo se han indicado 4MB como tama�o m�ximo 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 informaci�n de la p�gina que se ha consultado y si �sta ha sido facilitada desde la cach� o desde el servidor web, a continuaci�n se muestra un ejemplo.

cache_access_log /var/log/squid/access.log

Squid presenta m�s directivas para definir donde registrar sus logs, a continuaci�n se muestran las siguientes dos que pueden ser de mayor utilidad.

cache_log /var/log/squid/cache.log
Informaci�n 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 ser�n guardados.

.�reference_age (Tiempo m�ximo en la cach�)

Permite especificar el tiempo m�ximo 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 din�micamente con el fin de ser borrado seg�n el espacio disponible en la cach�. Sus valores pueden ser: time-units, tal como se muestra a continuaci�n.

reference_age 1 year
reference_age 3.5 days
referense_age 2 hours

.�refresh_pattern (Factor para p�ginas 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: expresi�n_regular m�n porcentaje m�x, tal como se muestra a continuaci�n.

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

El valor correspondiente a la expresi�n regular debe de contener la especificaci�n del objeto bas�ndose en la direcci�n (URL) de la petici�n o un "." para indicar el resto. En los ejemplos se muestra como especificar cualquier objeto "gif" y cualquier petici�n "FTP".

El valor m�n corresponde a los minutos m�nimos 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 retenci�n de objetos no deseados como pueden ser los din�micos.

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 modificaci�n (la �ltima modificaci�n de un objeto se obtiene de la cabecera Last-Modified).

El valor m�x corresponde a los minutos m�ximos que un objeto podr� ser considerado como no caducado.

.�ftp_user (Acceso an�nimo para FTP)

Permite indicar el correo que debe usarse como contrase�a para acceder de forma an�nima a un servidor FTP. Esto es �til si se desea acceder a servidores que validan la autenticidad de la direcci�n de correo especificada como contrase�a, a continuaci�n se muestra un ejemplo.

ftp_user [email protected]

.�Requerir autentificaci�n por contrase�a

Hasta el momento hemos visto mediante las directivas acl y http_access como controlar el acceso seg�n el origen de la petici�n o seg�n el destino. En este apartado aprovechando tambi�n estas directivas mostraremos como conseguir que independientemente de la m�quina que se utilice se requiera introducir un nombre de usuario y una contrase�a en el cliente para poder acceder a trav�s del Proxy.

  1. Crear el fichero que contendr� los usuarios y sus contrase�as 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 contrase�as.
    htpasswd /etc/squid/squid-passwd nombre_usuario

    La orden nos pedir� introducir su contrase�a correspondiente. El nombre de usuario es l�gicamente 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 secci�n: Explicaci�n 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 dem�s.
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 autenticaci�n.
http_access allow redlocal --> Permitimos el acceso a las IP's de la red.
http_access deny all --> Denegamos el acceso a los dem�s.

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

COMPARTE ESTE ARTÍCULO

COMPARTIR EN FACEBOOK
COMPARTIR EN TWITTER
COMPARTIR EN LINKEDIN
COMPARTIR EN WHATSAPP
SIGUIENTE ARTÍCULO