martes, 1 de julio de 2008

Práctica Final: Servidor Proxy con Squid

Bien, vamos a empezar y finalizar la práctica final de la asignatura de redes, que tenia absolutamente olvidada.
Usaré la versión de squid para Windows NT/XP/2000/2003, creo que también es compatible con Windows Vista, pero no lo he podido probar.
Lo primero sera descargarlo desde este enlace. Hay una lista con las diferentes versiones, recomendaria usar la versión estable más reciente. Para la guía he usado la 2.7 Standar.
Descargarás un zip, que deberas de descomprimir, es recomendable hacerlo en C:, quedaría una carpeta tal que así:



Entre las distintas carpetas, la que nos interesa es la "etc", ya que en ella se ecuentran los archivos de configuración de squid. Para modificar los parametros nada más simple que hacerlo con el bloc de notas de Windows, pero antes, y para que el programa squid tome dichos archivos debemos de eliminar la extensión .default, que tienen todos los archivos dentro de la carpeta etc.

Una vez hecho esto, abrimos el archivo squid.config. Es un archivo de texto bastante extenso, no os asusteis (aún).
Primero deberiamos definir donde y que tamaño tendra nuestra caché, dependera mucho de cuantos equipos tengamos conectados y que tipo de tráfico vamos a tener. Para ello buscamos las lineas

#Default:

# cache_dir ufs c:/squid/var/cache 100 16 256

Por defecto la caché se ubica en c:/squid/var/cache, si hubieramos instalado squid en otro lugar, o queremos la caché en otro disco cambiaremos la ruta.
El 100 indica el tamaño en MB de la caché, si queremos 1GB, pondremos 1024 y si queremos 10GB, pues pues 10240.
El 16 y el 256 indican la cantidad de subdirectorios de nivel 1 y 2 respectivamente que creara squid en su cache.
Descomentamos la linea quitando el simbolo "#" (esto lo haremos cada vez que queramos que squid lea un parámetro). quedando en mi caso:

cache_dir ufs c:/squid/var/cache 2048 16 256

Podemos definir el tamaño mínimo que tendrán los archivos de la caché de squid mediante la línea:

# minimum_object_size 0 KB

Es obvio que el tamaño viene dado en KB ( por archivo), asi mismo la linea:

# maximum_object_size 4096 KB

Esta línea hace justo lo contrario que la anterior, indica el tamaño máximo de los archivos en caché en kilobytes.

Las siguientes lineas son para cambia
r algoritmos de reemplazamiento de archivos en caché, crear registros sobre el uso de la caché opciones, comandos para mejorar el rendimiento de la caché etc... , no voy a entrar en ese tema, ya que extenderia la guia de forma "innecesaria", además viene comentado dentro del propio archivo y si tenemos en cuenta el uso que le voy a dar a squid, tampoco interesa en exceso.
Ahora vamos a asignar el puerto de escucha para nuestro proxy. Para ello buscaremos la línea :

http_port 3128

Por defecto viene descomentada la linea, si lo estuviera, quitad el comentario (sin "#" al principio de la línea).

Ahora buscaremos un grupo de "reglas", vienen ya predefinidas en Squid y activadas. Un pantallazo de las reglas que digo:



Empiezan por acl, acl en squid añade una regla de control de acceso, para saber más sobre su sintáxis y usos picha aquí.
Vamos a añadir una regla con el rango de direcciones de origen, como estamos en una subred (192.168.2.0 es el formato) la regla a añadir quedaria así:

acl red1 src 192.168.2.0/24


Para que se active, debemos de añadir debajo de la línea "http_access allow manager localhost" la siguiente línea:

http_access allow red1

¿que hemos hecho con esto? Pues basicamente, primero hemos definido un rango de direcciones de origen, y después hemos permitido que puedan acceder a internet mediante el proxy.

Para añadir reglas de control de acceso, también se puede hacer desde un archivo, en el cual podremos definir direcciones ip, nombres de dominios o extensiones de archivos. Para que sea más comodo podemos crear un archivo para cada tipo de restricción. Por ejemplo, si queremos que nuestros empleados no lean los diarios deportivos más leidos, pues creamos un archivo de texto llamado "webrest.txt" y añadimos las direcciones web que queremos restringir, por ejemplo:

www.marca.com
www.as.com
www.sport.es


También podemos añadir terminos que no pue
den contener en la dirección web como sex, chat, mp3, free etc. Quedando el archivo así:



Tambión podemos crear un archivo con extensiones prohibidas, como mp3, avi, reg... etc. Se crea de la misma forma que la anterior pero añadiendo $ al final de cada extensión, ejemplo:

.mp3$
.bat$
.exe$
.avi$
.mpeg$
.reg$

Guardamos este archivo como exten.txt, estos archivos se pueden guardar donde queramos, por comodidad lo hare en el subdirectorio etc del directorio squid.
Bien ahora vamos a añadir dichas restricciones a nuestra configuración, para ello nos dirigimos al apartado donde aparecen las "acl" y añadimos una línea justo debajo de la última, con el formato:

acl "nombre_regla" url_regex "ruta archivo"

Añadiendo en mi caso dos líneas que seria:

acl webrest url_regex c:/squid/etc/webrest.txt
acl exten url_regex c:/squid/etc/exten.txt

Ahora busquemos la línea con la regla "http_access allow red1" y añadimos una ! seguida del nombre la regla que queremos bloquear, si la quisieramos permitir, la añadimos sin el signo !. Si añadimos las 2 reglas, pero queremos que no se permitan los sitios y extensiones incluidos en ellas escribiremos:

http_access allow red1 !webrest !exten

Se pueden añadir excepciones, creando una archivo con los sitios que queramos, creando una regla acl con el formato anteriormente comentado, y añadiendo a la linea "http_access allow red1 !webrest !exten" "all" seguido del nombre de la regla. Esto permite que los sitios de confianza que cumpla alguna de las restricciones, puedan ser vistos.
Ejemplo:

http_access allow red1 !webrest !exten all permitido

Ahora debemos de añadir los servidores DNS necesarios para que Squid pueda traducir los nombres de los dominios en IPs. Para ello buscamos la línea:
# TAG: dns_nameservers

Buscamos el suguiente #Default y donde pone #none lo cambiamos por los 2 servidores dns que más nos gusten, se pueden escoger 2 de esta lista o cualquier otra que conozcais.
Con mis dos escogidos añado:

dns_nameservers 80.58.61.254 80.58.61.250

Ambas ips son de servidores de telefónica, se pueden escoger al gusto.


Ya hemos terminado con la configuración basica de nuestro proxy Squid. Ahora vamos a "instalar" el ejecutable con los nuevos parametros añadidos a su configuración. Para ello nos dirigmos a Inicio --> Ejecutar y escribimos:

C:/squid/sbin/squid -z

Notese que dependiendo de donde se instale, se escribirá una ruta u otra. Si no muestra errores es que lo hemos hecho bien.

Ahora tenemos que instalar el servicio squid. Para ello hacemos igual que con el anterior comando pero cambiando la -z por -i, quedando:

C:/squid/sbin/squid -i

Si nos dirigimos a Panel de control-> Herramientas administrativas--> Servicios. En la lista veremos el servicio "Squid" si pulsamos con el botón derecho sobre y elegimos Iniciar se iniciara el servicio.

Para empezar a usarlo, solo tenemos que configurar nuestro navegador. Tan solo tenemos que poner la ip de nuestro ordenador donde este funcionando el proxy y el puerto el 3128, que es el que hemos elegido para la escucha.

Con esto ya tenemos nuestro servidor proxy configurado y usable.

1 comentario:

L'Gianka dijo...

Kisiera saber cuanto de cache en disco debo asignar para unos 60 usuarios