Squid Linux
Squid Linux
SQUID es un servidor proxy de Linux, aunque también tiene versiones para Windows, un
servidor proxy es un servido intermediario que según las necesidades que tengamos,
podemos configurar como proxy cache, proxy web filtering y/o proxy transparente, en esta
ocasión configuraremos un servidor proxy SQUID con solo cache, que es un tipo de proxy
que permite mejorar la navegación en internet al guardar las paginas que son cargadas y
solamente cargar las ultimas actualizaciones de las mismas.
PASO 1:
#cd /etc/squid
#gedit squid.conf
Para empezar, vamos a configurar el puerto en el que nuestro servidor proxy escuchara
las peticiones de los clientes, squid por default configura el puerto 3128, pero podemos
escoger cualquier puerto libre, para mi caso lo dejare en el puerto por defecto asi:
Figura 1.1
Figura 1.2
Continuamos con la configuración del directorio donde se almacenara la cache, junto con
el tamaño y los directorios y subdirectorios que tendrá así:
Figura 1.2
En este caso /var/spool/squid, es la ruta donde se almacenara la cache, pero podemos
ponerla en cualquier ruta; 150 es el tamaño de la cache de squid, 16 es el numero de
directorios que contendrá el squid con 256 niveles subordinados cada uno.
PASO 2:
Ahora pasamos a editar las acl que vamos a crear, debe haber una regla por cada acl,
porque de lo contrario no será valido, para dichas acls, se hacen necesarios los siguientes
parámetros:
Acl= lista de control de acceso, no puede faltar en ninguna acl que creemos
Src= parámetro que indica que ese es el origen del que se harán las peticiones al proxy
Figura 2.1
Ahora pasaremos a la configuración del acceso a internet, para lo cual se hace necesario
el parámetro http_access, seguido del tipo de permiso (allow/deny) y el nombre de la acl
que vamos a permitir o denegar(en mi caso red_sena y sena)
Figura 2.2
Ahora crearemos una lista de acceso del tipo time donde configuraremos los días y el
horario del uso de internet para los usuarios de la red, es asi como tenemos los siguientes
parámetros:
M = lunes
T= martes
W= miércoles
H= jueves
F= viernes
A= sábado
S= domingo
Figura 2.3
Luego debemos permitir que nuestras acls sean moduladas por nuestra acl “navegar”,
debemos configurarla así:
Figura 2.4
Debemos tener en cuenta comentar las dos anteriores reglas que creamos, pues si las
dejamos descomentadas no habrá la regulación de tiempo, esto debido a que el SQUID
toma las reglas en orden descendente en el archivo de configuración, en este punto las
dos acl que tengo configuradas tienen autorizado salir a través del proxy solo hasta las 8
pm.
Figura 2.6
Así, tendremos que solo las direcciones IP dentro de ese archivo tendrán salida a internet
a través de nuestro servidor proxy.
PASO 3
Ahora pasaremos a bloquear direcciones url con squid, para esto creamos una acl con el
nombre que deseemos, en mi caso url_no_permitidas, y le damos el parámetro url_regex,
para que squid tenga en cuenta que es para regisros de url y que no los debe cargar, y
como origen le ponemos la ruta de un archivo donde estarán todas nuestras urls
bloqueadas asi:
Figura 3.1
Dentro de este archivo (url_bloqueadas), deberán estar todas las páginas de internet que
no deseemos, como por ejemplo http://www.playboy.com, o algo por el estilo, para lo cual Con formato: Fuente de párrafo
predeter., Fuente: (Predeterminado)
cada vez que alguien quiera acceder a dicha pagina le dará un error de acceso denegado +Cuerpo
así:
Con formato: Sin subrayado, Color de
fuente: Automático
Figura 3.2
Con esto garantizamos que el segmento de red, o el equipo que configuramos en la acl,
tendrán acceso a internet.
PASO 4
Squid nos permite configurar reglas para que no se permita descargar determinados tipos
de archivos, por ejemplo doc, pdf, mp3, entre otros, para esto se configura la siguiente acl
y la regla de control de acceso, debemos tener en cuenta que para que aplique esta regla
debemos colocarla antes de las demás reglas de control de acceso, al igual que la de las
url bloqueadas:
Figura 4.1
Debemos tener en cuenta que cada extensión debe ir siempre con el símbolo $ después
de ser especificada, de lo contrario no funcionara, asi tenemos que para que no puedan
descargar música la solución seria configurar, en esta misma acl, mp3$, y en general con
todas las extensiones de video y audio.
Figura 4.2
PASO 5
Puede suceder que en una empresa, debido al tamaño de la red, se necesiten varios
servidores proxy, esto debido a la necesidad de redundancia, es aquí donde aparecen los
llamados servidores padres y hermanos, los cuales son una especie de zonas de
transferencia entre servidores para que, si nuestro servidor esta configurado como hijo,
entonces busque el parent para saber si hay algo denegado o permitido desde el proxy
parent, esto se hace mediante el parámetro cache_peer; y para evitar que se hagan
búsquedas directas a internet, solo es necesario el parámetro never_direct allow all, que
hace que la búsqueda se haga primero hacia el servidor parent.
Figura 5.1
PASO 6
Los delay pools son una opción de control del ancho de banda máximo permitido para las
descargas en nuestra red, esta opción nos permite que para ciertos tamaños de archivos
a descargar, el ancho de banda de la descarga sea regulado por el servidor proxy, esto
para evitar congestiones de trafico innecesario en la red, pues así, podemos permitir que
en una empresa los usuarios descarguen, por ejemplo, un sistema operativo completo,
pero con un ancho de banda mínimo para la misma.
Figura 6.1
Lo primero que configuramos son las acl para los delay pools, en este caso configuramos
dos acls las cuales son:
Esta acl nos permite que las descargas en nuestra red no sean restringidas.
Esta acl nos permite especificar las extensiones de los archivos a los cuales queremos
controlar en su ancho de banda de descarga, es asi como las extensiones que aparecen
aquí se pueden ampliar a todas las que deseemos(avi, flv, mp4, etc) no se restringen los
html, gif y jpg debido a que no consumen mucho ancho de banda.
Figura 6.4
En la siguiente línea configuraremos el numero de delay pools que vamos a usar y definir,
en este caso vamos a definir dos delay pools.
Figura 6.5
El siguiente parámetro, delay_class 1 2, significa que usaremos para el delay pool numero
1, un delay pool clase 2.
Clase 2
Este es un Delay clase 1 con un 256 Delay Pools clase 1 subordinados a este. En inglés
técnico un aggregate bucket y 256 individual buckets. En nuestra abstracción un tanque
principal y 256 tanques secundarios alimentados por el tanque principal. Con este Delay
es posible controlar el canal que usan 256 clientes.
¿Cómo se asigna el canal a cada cliente? Squid asume que su LAN es una LAN clase C y
usa los últimos 8 bits del número IP del cliente para identificarlo y manejarlo en su
individual bucket correspondiente. En la práctica solo se pueden controlar 253 clientes
descontando la dirección de red, la dirección de broadcast y la dirección del proxy. Note
que aquí se empiezan a enredar las cosas: es muy diferente hablar de un cliente, un host
y un usuario. Squid puede tener 230 clientes en una red de 600 hosts (equipos) y unos
700 usuarios. Jamás confunda estos conceptos aunque pueden ser equivalentes
dependiendo de la situación.
Clase 3
Este es un Delay Pool clase 1 con 256 Delay Pools clase 2 subordinados a este. En ingles
técnico un aggregate bucket, 256 network buckets, y 65,536 individual buckets. Está
orientado para manejar la asignación de ancho de banda en redes clase B. los bits 17 a
24 del número IP identifican la red y los bits 17 a 32 el cliente.
Es asi como nuestra línea de configuración de delay_class para el delay pool numero 1
queda así:
Figura 6.6
El siguiente parámetro es para deshabilitar los buckets que no se desea utilizar, es así
como resulta la línea siguiente, es de notarse que el parámetro delay_parameters se
configura de manera diferente para cada uno de los delay pools que vamos a utilizar, en
este caso dejaríamos el delay clase 1 del delay 1, sin limites, osea sin ningún bucket
configurado, para mayor información, diríjanse aquí.
Figura 6.7
Lo siguiente en nuestro primer delay pool, y también lo ultimo para el primero es el
parámetro delay Access, el cual es un parámetro para definir, mediante las acls que
creamos antes, cuales acceden por el delay y cuales no, la sintaxis es delay_access id
allow acl name|deny acl name
Figura 6.8
Basicamente, para el delay 2 los parámetros son los mismos, lo único que cambian son
un par de reglas que explicare a continuación:
Figura 6.9
En esta línea definimos el control del ancho de banda en bytes por segundo, dando asi
como resultado que, por ejemplo, 5000 es la máxima tasa de descarga que se permitirá
cuando un archivo exceda 150000 bytes de tamaño, lo mismo sucede con el
5000/120000, solo que el primer parámetro es para toda la red, y el segundo es para host
independientes.
Este segmento de regla es para permitir al delay 2 el uso de la acl day, donde
configuramos el horario de modulación para las descargas, dando como resultado que en
las dos primeras líneas de la siguiente imagen se permita el uso de dicha acl, en ambas
líneas se le permite porque como podemos ver, en la segunda línea aparece “deny !
deny”, el “!”, significa que se deniegue a todo lo que sigue menos a lo que se encuentre
detrás de este símbolo, y finalmente, la tercer línea, que significa que a la acl
magic_words2, se le permita el uso del delay 2.
Con formato: Sin subrayado, Color de
fuente: Automático
Figura 6.11