Squid,
(Calamar) precisamente por esta su forma, su característica
principal viene explicada como distribuidor de uno a varios, fue
esencialmente diseñada para trabajar en entornos Unix pero tiene
versiones especiales para otros Sistemas Operativos, incluido M$.
Posee una amplia variedad de potencialidades, desde acelerar un
servidor web, guardar en caché peticiones repetidas a DNS y otras
búsquedas; servir a un grupo de gente que comparte recursos de la
red; hasta dar seguridad filtrando el tráfico. Comparativas técnicas
muestran que su rendimiento supera a soluciones de software
propietario, como M$ Proxy Server©
o Netscape Proxy Server©.
Ejemplos de uso tienen que
ver con necesidades de una pequeña o mediana empresa en la que se
quiere compartir el servicio de Internet con todas las computadoras
institucionales a través de una computadora servidor que permita
controlar la navegación y las descargas, así como también mejorar
la rapidez de la navegación. De ser necesario es útil también como
un Firewall básico, pero se tomar los resguardos del caso.
I. CARACTERÍSTICA DE
SQUID
Squid guarda localmente
información solicitada previamente para que, en su uso futuro, ésta
sea atendida inicialmente por el servidor local, evitando accesos
repetidos a servidores distantes; entre sus muchas características
importantes, las siguientes son algunas de ellas:
I.1. Proxy y Caché
Es un Proxy que soporta
peticiones http, https y ftp para atender a computadoras que
requieren acceder a Internet, complementariamente provee la
funcionalidad como caché especializado que guarda localmente las
páginas consultadas históricamente por los usuarios; con esta
capacidad incrementa la velocidad de acceso a información web y ftp
que está fuera de la red interna.
I.2. Proxy para SSL
Es compatible con SSL
(Secure Socket Layer), capacidad por la que también acelera las
transacciones cifradas, y puede ser configurado con amplios controles
de acceso sobre las peticiones de los usuarios.
I.3. Caché
transparente
Proxy transparente, Squid
puede configurarse para enrutar las conexiones dentro del proxy sin
configuración alguna por parte del cliente, y sin que el propio
cliente sepa de su existencia. Squid utiliza por defecto (default) el
puerto “3128” para escuchar las peticiones de los usuarios
(clientes), aunque es posible hacer que lo haga por cualquier otro
puerto disponible, incluso por puertos simultáneos.
I.4. Control de acceso
ACL
Proporciona un entorno
para el establecimiento de reglas de control de acceso (denominadas
ACL por sus siglas en inglés), lo cual posibilita determinar
políticas de acceso en forma centralizada, simplificando el control
y la gestión de la red.
I.5. Cacheador de
memoria
Cuando un usuario solicita
por ejemplo una página web en Internet, esta se almacena en el caché
de memoria de la computadora del usuario (cliente), y en caso de que
otro usuario solicite la misma página web, el Squid le enseñará la
página que se encuentra ya almacenada en el caché en lugar de
volver a descargarlo desde Internet. Esta capacidad logra incrementar
la velocidad de navegación pues los objetos ya están en el caché
además de optimizar la utilización del ancho de banda.
II. INSTALACIÓN
Inicialmente debemos
determinar la dimensión y el uso que le daremos a este servidor
Proxy. Si solamente queremos usarla como un Proxy normal bastará
simplemente con una computadora regular, no se hace necesario una
computadora servidor; pero si lo que se necesita es un Proxy
cacheador que ayude a mejorar la velocidad de navegación de los
usuarios en tu red, si se hace recomendable recurrir a una
computadora servidor.
Última versión
Squid en su última
versión está en la 3, se encuentra disponible libremente en los
repositorios de las principales distribuciones de GNU/Linux.
Requisitos
Este Proxy debe tener al
menos dos (2) tarjetas de red (mejor si son de las misma marca y
modelo), una para atender su conexión “externa” eth0 (con
la computadora o el dispositivo de enlace con el distribuidor del
servicio de Internet) y otra tarjeta de red eth1 (192.168.0.1)
para enlazarse con la red “interna” a través de un Switch con
las computadoras de los usuarios (clientes internos: PC1, PC2, PC3,
…, PCN), vea el siguiente esquema:
Fuente del gráfico: Software Libre + Programación
Para ejecutar la
instalación, basta con tener una conexión regular a internet y
escribir el siguiente comando en consola:
#
apt-get update
#
apt-get upgrade
#
apt-get install squid3
Con esta instalación,
todo el tráfico entrante por la tarjeta de red eth0 (IP que provee
el servicio de Internet del ISP) cuyo origen es la red local
(192.168.0.0/24) y destino cualquier IP con puerto «80», se
redirigirá al puerto «3128», con esto se hará que todo el tráfico
del puerto 80 sea controlado por Squid.
II.1. Post instalación
Squid proporciona un
archivo de configuración que se encuentra en la dirección
/etc/squid3/squid.conf, ejecutaremos en este archivo la configuración
post instalación:
II.1.1.
Puerto de escucha
Primero
debe definir el puerto por donde squid va a escuchar las peticiones
de los usuarios, por defectos (default) es el 3128, (aunque esto
puede modificarse usando el puerto 8080 que también es muy común
como puerto para el servicio de caché Internet): entonces en el
archivo /etc/squid3/squid.conf:
#
Default: http_port 3128
Hay
que descomentar esta linea, y para no tener más problemas dejarlo
asi:
http_port
3128
II.1.2.
Memoria cache
Por
lo ya definido anteriormente, es importante determinar que cantidad
de memoria se le dará al “cache”, por default es 8 MB, No
debe exceder el 50% de la Memoria RAM (sabiendo que no solo esta directiva utiliza memoria RAM), pero en nuestro caso se
recomienda modificar a:
cache_mem 64 MB
II.1.3.
Espacio en disco duro
Determinar
que cantidad de espacio quiere reservar en el disco duro para el
caché de memoria (físico), por defecto, Squid almacena 100 MB, lo
cual es para una red pequeña, para ampliar el espacio basta con
modificar la linea de cache_dir de la siguiente forma:
#
cache_dir ufs /var/spool/squid3 100 16 256
cache_dir
ufs /var/spool/squid3 500 16 256
II.2.
Configuración en clientes de mi red local
Finalmente
en cada uno de los navegadores (browser) de los usuarios clientes de
mi red local (192.168.0.0/24) debemos configurar básicamente dos
cosas:
- La dirección IP del proxy es la «192.168.0.1»
- El puerto donde trabaja Squid, que es el «3128»
II.2.1.
Navegador Mozilla en Guindous
Como
ejemplo específico, en una de mis computadoras locales CLIENTES debo
ir al Menu «Editar/Preferencias», entrar en la opción
«Avanzadas/Network» y en «Configuración» poner el Proxy Manual
de la Siguiente Forma:
* Dirección IP de nuestro servidor proxy, la «192.168.0.1» * Puerto, el «3128» por donde trabaja Squid.
Luego
de aceptar estos cambios, procedemos a navegar y verificar el acceso
a Internet.
II.2.2.
Computadoras locales con GNU/Linux
Para
entornos GNU/Linux, de manera permanente, basta con declarar la
variable automáticamente en cada login de la siguiente manera:
mandinux@SECTIONE:~$
echo 'export http_proxy="http://192.168.0.1:3128/"'
>> ~/.profile
Con
esto insertamos la declaración en el archivo profile
del cliente o usuario de mi red local y cada que inicie su sesión
iniciará el trabajo del proxy Squid automáticamente.
NOTA.-
Tenga cuidado que es una «'» comilla simple para abrir y cerrar la
sentencia export,
y un par de «''» comillas dobles que encierran la dirección IP
y el puerto de Squid.
III. LISTAS DE CONTROL
ACL
Estas listas de control
ACL determinan:
- Quienes accederán a través de Squid y quienes no
- A que paginas podrán entrar y a cuales no
El Proxy Squid por defecto
tiene una configuración mínima, a partir de la cual se puede hacer
los cambios necesarios.
III.1. Cómo generar las listas
En el archivo
/etc/squid3/squid.conf,
después de la ultima linea que existe, ponemos los cambios a Squid.
Para determinar quienes
tienen acceso a este, se determina una “LISTA”, que identifica a
las computadoras que pueden acceder, la llamaremos “mired”.
acl
mired src 192.168.0.0/255.255.0.0
Computadora
de la red 192.168.0.y
Que
tenga mascara 255.255.255.255
III.1.1. Lista de rangos
Esto
debe ser puesto o editado en la configuración base del
archivo
“/etc/squid3/squid.conf”
Permitir
al servidor local para usar Squid
http_access
allow localhost
Permite
acceso a la “lista” denominada “mired” y que debemos crear
externamente en “/etc/squid3/mired"
http_access
allow mired
Denegar
el permiso a otras máquinas.
http_access
allow mired http_access deny all
III.1.2.
Lista con archivo externo negros
La “Lista” listanegra se define asi
en el archivo
“/etc/squid3/squid.conf” y requiere
la creación de un archivo externo
en
“/etc/squid3/negros":
acl
listanegra src "/etc/squid3/negros"
El
contenido del archivo “negros” quedaría así:
192.168.0.1
192.168.0.2
192.168.0.3
192.168.0.4
192.168.0.5
Y se
lo usa de la siguiente manera:
Permitir
al servidor local para usar Squid
http_access
allow localhost //
Así debe quedar en el archivo
“/etc/squid3/squid.conf”
Permite
acceso a “lista” mired y niega a listanegra
http_access
allow mired !listanegra //
Así debe quedar en el archivo
“/etc/squid3/squid.conf”
Denegar
el permiso a otras máquinas.
http_access
deny all // Así
debe quedar en el archivo
“/etc/squid3/squid.conf”
III.1.3.
Lista con archivo externo ofensivos
Lista
que permite o no el acceso a paginas web con ciertas palabras en su
contenido, se la define así:
acl
ofensivos url_regex "/etc/squid3/prohibidos"
El
archivo “prohibidos” que creamos en /etc/squid3/prohibidos tiene
palabras que consideramos ofensivas, tenga cuidado de ser específico
pues puede correr el riesgo de limitar mucho las páginas a las que
si puede acceder:
sexo
playboy
xxx
porno
Y se
lo usa de la siguiente manera:
Acceso
para la “lista” mired y denegado para la “lista” ofensivos en
el archivo
/etc/squid3/squid.conf
http_access
allow localhost
http_access
deny ofensivos
http_access
allow mired
http_access
deny all
III.1.4.
Denegar acceso de un Dominio
Solamente
como ejemplo, denegaremos un Dominio conocido como facebook.com, para
ello debe editarse la configuración base del archivo
“/etc/squid3/squid.conf”:
En el
lugar donde se encuentre las siguientes lineas en mayúsculas deben
editarse las lineas correspondientes a «acl» y «http_access»,
donde creamos intranet con origen en nuestra red local (interna
192.168.0.0/24) y el dominio de Facebook, respectivamente; hasta que
quede como sigue:
#INSERT YOUR OWN RULE(S) HERE TO ALLOW ACCESS FROM YOUR
CLIENTES:
acl intranet src 192.168.0.0/24
acl dominio1 dtsdom_regex facebook.com
http_access deny dominio1
http_access allow intranet
NOTA.-
El orden en las sentencias http_access es muy importante.
III.2. Reiniciar el
daemon
Para activar los cambios
que se hacen mientras hacemos pruebas, es necesario reiniciar el
demonio, cada vez que se los haga escriba y ejecute el siguiente
comando:
/etc/init.d/squid3
restart
Edmundo Morales Ariñez
Max Morales Escobar
–------------------------------------------------------------------
Squid Web Proxy Cache,
http://www.squid-cache.org/
Wikipedia: Proxy,
http://es.wikipedia.org/wiki/Proxy
Comentarios
Publicar un comentario
Agradecemos tus comentarios.