Instalación Servidor Proxy Squid

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

Para mayores detalles puedes consultar en http://wiki.squid-cache.org/SquidFaq/SquidMemory

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/

Comentarios