Un servidor Proxy , es básicamente un programa que acepta peticiones de clientes para las URL, obtiene, y devuelve los resultados al cliente. Los Proxy se utilizan en redes en la que los clientes no tienen acceso directo a Internet, pero tienen que ser capaces de ver páginas Web y para la memoria caché de las páginas comúnmente solicitadas, de manera que si más de un cliente quiere ver la misma página, sólo tiene que ser una vez descargada.
Squid es el Proxy más popular servidor para sistemas Unix. Es libre y está disponible para su descarga desde www.squid-cache.org, y se incluye como paquete estándar con todas las distribuciones de Linux y muchos otros sistemas operativos. Squid soporta Proxy, caching y aceleración HTTP, y tiene un gran número de opciones de configuración para controlar el comportamiento de estas características.
2. Instalación y Configuración de Squid
Empezamos instalando squid y httpd:
# yum - y install squid httpd
Squid utiliza el fichero de configuración ubicado en la siguiente ruta:
/etc/squid/squid.conf, el cual podremos trabajar con nuestro editor preferido.
Antes de empezar a configurar algún servicio en Linux es recomendable hacer una copia del archivo de configuración que viene por defecto, esto lo hacemos de la siguiente manera:
# cp squid.conf squid.conf.original
Ahora pasamos a configurar squid.conf. Usamos algún editor vim, mcedit, etc. Entramos en la ruta absoluta del archivo de configuración:
# cd /etc/squid
# vim squid.conf
De acuerdo a las asignaciones hechas por IANA y continuadas por la ICANN desde el 21 de marzo de 2001, los Puertos Registrados recomendados para servidores intermediarios (proxies) pueden ser el 3128 y 8080 a través de TCP.
De modo predefinido Squid utilizará el puerto 3128 para atender a peticiones, sin embargo podemos especificar que lo haga en cualquier otro puerto disponible o bien que lo haga en varios puertos a la vez.
Si queremos darle mayor seguridad, vinculamos el servicio a una IP que solo se pueda acceder desde la red local. Si nuestro servidor tiene la dirección IP: 192.168.1.45, hacemos lo siguiente:
Este parámetro cache_mem establece la cantidad de memoria para:
-Objetos de transito
-Objetos frecuentemente utilizados (Hot).
Por defecto vienen 8 MB. Podemos especificar una cantidad mayor dependiendo de nuestras necesidades.
Si tenemos un servidor con al menos 128 MB de RAM, establecemos 16 MB como valor para este parámetro:
cache_mem 16 MB
Configurar: parámetro cache_dir
Establecemos que tamaño deseamos que tenga el caché en el disco duro para Squid. De modo predefinido Squid utilizará un caché de 100 MB, de modo que encontramos la siguiente línea:
cache_dir ufs /var/spool/squid 100 16 256
Podemos incrementar el tamaño del caché según nuestra necesidad.
Mientras más caché tengamos, más objetos se almacenarán en éste y por lo tanto se utilizará menos ancho de banda. Por ejemplo establecemos un caché de 10000 MB:
cache_dir ufs /var/spool/squid 10000 16 256
Los números 16 y 256 significan que el directorio del caché contendrá 16 directorios subordinados con 256 niveles cada uno. No es necesario modificar estos números.
De modo predefinido, si algo ocurre con el caché, como por ejemplo que muera el proceso, se enviará un mensaje de aviso a la cuenta webmaster del servidor. Puede especificarse una distinta si acaso de considere conveniente.
cache_mgr webmaster@redlinux.com
Controles de Acceso
Es necesario establecer Listas de Control de Acceso que definan una red o bien ciertos equipos en particular. A cada lista se le asignará una Regla de Control de Acceso que permitirá o denegará el acceso a Squid.
* Listas de Control de Acceso
La sintaxis para una lista de control de acceso por lo general es la siguiente:
acl [nombre de la lista] src [lo que compone la lista]
Si deseamos establecer una lista de control de acceso que abarque a toda la red, tenemos que definir la dirección IP correspondiente a la red y la máscara de sub-red.
Por ejemplo:
Mi red: 192.168.1.0 (nuestra red local) Máscara de sub-red: 255.255.255.0
acl mired src 192.168.1.0/255.255.255.0
También podemos especificar una Lista de Control de Acceso especificando un fichero que contenga una lista de direcciones IP. Por ejemplo un grupo de IPs de los jefes.
Primero creamos el fichero dentro de la ruta de Squid:
# cd /etc/squid
# touch jefes
Editamos el fichero e ingresamos las direcciones IP:
# vim jefes
acl jefes src “/etc/squid/jefes”
Reglas de Control de Acceso
La sintaxis básica es la siguiente:
http_access [deny o allow] [lista de control de acceso]
Ahora un ejemplo con la Lista de Control de Acceso jefes definida anteriormente:
http_access allow jefes
También podemos definir reglas haciendo uso de la expresión ! que significa no. Por ejemplo: Dos listas de control de acceso una denominada jefes (acceso a Squid), y mired (sin acceso). Aquí establecemos que solo la lista jefes tendrá acceso a squid excepto todo lo que comprenda a mired.
http_access allow jefes !mired
Esto tipo de reglas se aplican cuando tenemos un grupo de IP dentro de un rango de red
al que se debe permitir acceso, y otro grupo dentro de la misma red al que se debe denegar el acceso.
Aplicando Listas y Reglas de Control de Acceso
Ahora vamos a ver algunos casos donde podemos aplicar listas y reglas de control de acceso.
Ejemplo:
Si tenemos una red 192.168.1.0/255.255.255.0, si se desea definir toda la red local, utilizaremos la siguiente línea en la sección de Listas de Control de Acceso:
acl mired src 192.168.1.0/255.255.255.0
Ahora la sección de listas de control de acceso deberá quedar más o menos del siguiente modo:
# Recommended minimum configuration:
acl all src 0.0.0.0/0.0.0.0
acl manager proto cache_object
acl localhost src 127.0.0.1/255.255.255.0
acl mired src 192.168.1.0/255.255.255.0
Ahora procedemos a aplicar la regla de control de acceso:
http_access allow mired
Ahora la sección de reglas de control de acceso deberá quedar más o menos del siguiente modo:
#
# INSERT YOUR OWN RULE(S) HERE TO ALLOW ACCESS FROM YOUR CLIENTES
#
La regla http_access allow mired permite el acceso a squid a la Lista de Control de Acceso denominada mired, la cual está conformada por 192.168.1.0/255.255.255.0. Lo que significa que cualquier maquina desde 192.168.1.1 hasta 192.168.1.254 podrá acceder a Squid.
Iniciado Squid
Una vez que terminamos de configurar Squid, ejecutamos por primera vez la siguiente instrucción:
# service squid start
Si necesitamos reiniciar el servicio para ejecutar algún cambio de configuración, hacemos:
# service squid restart
Para que Squid se inicie de manera automática cada vez que iniciemos el sistema, hacemos:
# chkconfig squid on
Restricción de Páginas Web Indebidas
Denegar el acceso a ciertos sitios de red permite hacer un uso más racional del ancho de banda. El proceso es simple, y consiste en denegar el acceso a nombres de dominio o direcciones Web que contengan patrones en común.
Definiendo patrones comunes
Debemos de generar una lista que contenga las direcciones Web y palabras utilizadas en nombres de ciertos dominios.
Ejemplos:
http://www.sitioporno.com/
http://www.otrositioporno.com/
sitioindeseable.com
otrositioindeseable.com
napster
sex
porn
mp3
xxx
adult
warez
celebri
Se recomienda denegar la dirección web del sitio, así como también el dominio, tal como se indico en el ejemplo anterior
Estos dominios y palabras las ingresaremos dentro de una lista en la ruta:
/etc/squid/sitiosdenegados
Previamente deberíamos haber creado el fichero sitiosdenegados dentro de /etc/squid
Parámetros en /etc/squid/squid.conf
Una vez generado el fichero sitiosdenegados, también debemos definir una Lista de Control de Acceso que defina a dicho fichero y la denominaremos “sitiosdenegados”.
La línea correspondiente debería quedar así:
acl sitiosdenegados url_regex “/etc/squid/sitiosdenegados”
Debemos tener lo siguiente:
http_access allow mired !sitiosdenegados
Luego en squid.conf tendremos:
#
# INSERT YOUR OWN RULE(S) HERE TO ALLOW ACCESS FROM YOUR CLIENTES
#
http_access allow localhost
http_access allow mired !sitiosdenegados
http_access deny all
Para que se efectúen los cambios de configuración ejecutamos:
# service squid restart
Restricción de Archivos por su Extensión
Squid permite denegar el acceso a ciertos tipos de extensiones, lo que nos permite hacer
un uso más racional del ancho de banda. El funcionamiento es simple, y consiste en denegar el acceso a ciertos tipos de extensiones que coincidan con lo establecido en una Lista de Control de Acceso.
Definiendo elementos de la Lista de Control de Acceso
Primero debemos generar una lista que contenga las extensiones que vamos a denegar, esta lista la generamos dentro de /etc/squid.
Ejemplo:
\.avi$
\.mp4$
\.mp3$
\.mpg$
\.mpeg$
\.exe$
Esta lista debe ser guardada con todas las extensiones de fichero que consideremos pertinentes, la guardamos como /etc/squid/listaextensiones.
Debemos definir una Lista de Control de Acceso que a su vez defina al fichero /etc/squid/listaextensiones. Esta lista será denominada “listaextensiones”. Lo que debe quedar de la siguiente manera:
acl listaextensiones urlpath_regex “/etc/squid/listaextensiones”
Habiendo hecho esto, en la sección de Lista de Control de Acceso debemos tener:
http_access allow mired !sitiosdenegados !listaextensiones
Para que se efectúen los cambios de configuración reiniciamos Squid:
# service squid restart