cabecera d-xl

Linux y el Proxy


Un proxy es una máquina que actúa de intermediario entre una red local e internet. Un proxy HTTP recibe peticiones de páginas web de un cliente (supongamos Cliente A). El proxy obtiene la página solicitada, se la devuelve al cliente que la pidió, y además la almacena en una caché. De esta forma, si el Cliente B pide la misma página, el proxy ya no tiene que salir a Internet para obtener la página, y se la devuelve desde la caché.

Las propias páginas web pueden indicar un periodo de validez, pasado el cual, el servidor proxy ya no devolverá la página de la caché sino realizará una nueva petición por Internet y actualizará la caché.

Las principales ventajas de un proxy son:

  • Velocidad: puesto que va almacenando las páginas en una caché, las siguientes peticiones de la misma página serán mucho más rápidas puesto que se realizan dentro de la red local y no hacia internet.
  • Seguridad: con una topología de red como la que muestra la imagen, los clientes no están directamente conectados a internet. De esta forma, no están visibles para posibles atacantes. Teniendo en cuenta este aspecto, es muy común que el servidor proxy actúe también como cortafuegos (firewall), lo cual veremos en el apartado siguiente.

A continuación vamos explicar cómo instalar Squid como servidor Proxy-cache. Vamos a basarnos en la última versión estable. Nos bajamos el tar.gz y lo descomprimimos en algún lugar (/tmp, por ejemplo):

$ tar zxvf squid-2.5.STABLE3.tar.gz -C /tmp

Entramos en el directorio anterior (cd /tmp/squid-2.5.STABLE3), configuramos, compilamos y como root lo instalamos:

$ ./configure --prefix=/usr/local/squid
$ make all
# make install

Ahora tendremos que editar el fichero /usr/local/squid/etc/squid.conf. Vamos a comentar algunas opciones:

  • cache_mem. Añada aquí la cantidad de memoria (memoria RAM) que será asignada al cache. Advertencia: Squid utiliza mucha mas memoria que este valor. Regla de Oro: Si tiene N megabytes libres para Squid, escriba N/3 aquí.
  • cache_dir /usr/local/squid/cache 100 16 256. Escriba aquí (primer numero, aquí 100) la cantidad de espacio en disco duro (en megabytes) que será asignada al cache.
  • acl, http_access, icp_access. Listas de Control de Acceso (Access Control Lists). Son importantes porque previenen que alguien utilice sin autorización sus recursos de red. Para llenar el ACL "allowed_hosts", use su dirección de red (por ejemplo 192.168.10.0) y su mascara de red (por ejemplo 255.255.255.0):

acl manager proto cache_object
acl localhost src 127.0.0.1/255.255.255.255
acl all src 0.0.0.0/0.0.0.0
acl allowed_hosts src 192.168.10.0/255.255.255.0
http_access deny manager all
http_access allow allowed_hosts
http_access deny all
icp_access allow allowed_hosts
icp_access deny all

  • cache_mgr. Aquí va la dirección de e-mail del administrador.
  • cache_effective_user. Si debe iniciar Squid como root, encuentre un usuario y grupo seguros para ejecutarlo antes de iniciar (generalmente "nobody" y "nogroup"). No use "root", por razones de seguridad.
  • visible_hostname. El nombre del host que promocionará con el cache.

Después de editar squid.conf según sus necesidades, ejecute Squid con las siguientes líneas de comando:

# /usr/local/squid/bin/squid -z
# /usr/local/squid/bin/squid

Verifique en el archivo cache.log (/usr/local/squid/logs/cache.log) que todo este bien. Nótese que el mensaje "WARNING: Cannot write to swap directory" es normal la primera vez que se ejecuta Squid.

Una vez Squid ha creado todos sus archivos (esto puede tomar mucho tiempo en algunos sistemas), pruébelo con un cliente web normal. Por defecto, Squid correrá en el puerto 3128.

Cuando tenga Squid funcionando desde la línea de comandos, puede configurar Linux para cargar Squid al iniciar el sistema, tal y como se explicó anteriormente en la sección Arranque y Parada.


Contacto