lunes, 26 de mayo de 2008

Squid con el uso combinado de ACL

Introducción

Squid es un popular programa de software libre que implementa un servidor proxy y un demonio para caché de páginas web, publicado bajo licencia GPL. Tiene una amplia variedad de utilidades, desde acelerar un Servidor Web, guardando en caché peticiones repetidas a DNS y otras búsquedas para un grupo de gente que comparte recursos de la red, hasta caché de web, además de añadir seguridad filtrando el tráfico. Está especialmente diseñado para ejecutarse bajo entornos tipo Unix.

Ha sido desarrollado durante muchos años y se le considera muy completo y robusto. Aunque orientado a principalmente a HTTP y FTP es compatible con otros protocolos como Internet Gopher. Implementa varias modalidades de cifrado como TLS, SSL y HTTPS.

ACL comúnmente llamado Lista de Control de Acceso (del inglés Access Control List), se refiere a una lista de reglas que detallan puertos de servicio o nombres de dominios (de redes) que están disponibles en una terminal u otro dispositivo de capa de red, cada uno de ellos con una lista de terminales y/o redes que tienen permiso para usar el servicio. Tanto servidores individuales como routers pueden tener ACLs de redes. Las listas de acceso de control pueden configurarse generalmente para controlar tráfico entrante y saliente y en este contexto son similares a un cortafuegos.


Instalación desde consola

Como de costumbre, para instalar los paquetes necesarios abrimos un terminal y tecleamos:

sudo apt-get install squid

Y a esperar a que finalice la instalación.


Configurando nuestro servidor proxy

El archivo de configuración de squid, lo encontramos en /etc/squid/squid.conf

Nota: Antes de editar el archivo de configuración, hacemos una copia de seguridad del archivo con el siguiente comando:

sudo cp /etc/squid/squid.conf /etc/squid/squid.conf.original

Para editar el archivo una vez creado la copia escribimos sudo kate /etc/squid/squid.conf

Tras esta aclaración, podíamos comenzar por ejemplo:
  • configurar 250 MB de nuestro disco duro, para la memoria caché que usará squid;
Una vez abierto el archivo, debemos Pulsar el botón (1), nos aparecerá un pequeña ventana de búsqueda donde buscaremos este código (2) Y luego añadimos tal como se aprecia en la imagen el texto (3)


  • Creación de ACL para permitir acceso a los PC's de nuestra red
La creación de nuevos elementos en nuestra ACL tiene 2 pasos importantes.

1º Declarar las ACL
2º Permitirle el acceso o denegarselo

1º Nos dirigimos a la línea 2.490 y encontraremos algo como la siguiente imagen, la linea de rojo es la que debemos introducir para crear una regla en nuestra lista.



* acl: especifica la creación de un nuevo elemento en la lista.
* mired: es el nombre que le he ponemos al nuevo elemento de la lista.
* src: especifica el tipo de acl (dirección origen de una conexión en formato IP/máscara).
* 192.168.1.0/255.255.255.0: dirección de nuestra red (1ª dirección).
* 192.168.1.70/255.255.255.255: dirección de nuestro equipo (2ª dirección).

2º Nos dirigimos más o menos a la línea 2.625 y buscamos # INSERT YOUR OWN RULES(S) HERE... Justo debajo, debemos incluir nuestras reglas, en este punto es donde realmente damos acceso o lo denegamos según nos convenga.




Incluimos http_access seguido de allow o deny, permitir o denegar respectivamente, seguido del nombre de la acl.
  • Restricciones de uso dependiendo de la hora, o día de la semana
1º Agregamos la línea siguiente con la información necesaria

acl tiempoLibre time MTWHF 00:01-17:00

* acl: especifica la creación de un nuevo elemento en la lista.
* tiempoLibre: es el nombre que le he ponemos al nuevo elemento de la lista.
* time: especifica el tipo de acl (permite especificar una franja horaria concreta dentro de una semana).
* MTWHF: Abreviaturas de los días de la semana donde:
S - Sunday (domingo)

M - Monday (lunes)

T - Tuesday (martes)

W - Wednesday (miércoles)

H - Thursday (jueves)

F - Friday (viernes)

A - Saturday (sábado)


* 8:20-15:30 : 8:20 es la hora de comienzo, y las 15:30 es la hora de finalización. La hora de comienzo debe ser menor que la hora de finalización.

2º Debajo del anterior http_acces introducimos lo siguiente para bloquear el acceso en ese intervalo de tiempo.

http_access deny tiempoTrabajo

  • Crear reglas ACL para denegar paginas web
1º Agregar acl pagBlokeadas dstdomain www.pagina1.es www.pagina2.com www.pagina3.net

Y 2º http access deny pagBlokeadas

Reinicio del servidor proxy

Como bien sabemos, para que los cambios tengan efecto, debemos reiniciar el servidor de la siguiente forma:

sudo /etc/init.d/squid restart

o en su defecto:

sudo /etc/init.d/squid stop
sudo /etc/init.d/squid start

Configurar el navegador

Todo esto no tiene sentido, si no configuramos nuestro navegador web para que acceda a través de squid, para ello, si usamos el Mozilla Firefox, nos dirigimos a Editar -> Preferencias y una vez dentro..


Pulsamos la pestaña de Avanzado (1), luego en Conexión (2) , y nuevamente sobre Preferencias (3). Se nos abrirá otra ventana, en la cual debemos seleccionar...

Configuración manual del proxy, y luego introducir la dirección IP de dicho servidor, y el puerto a usar, y como squid usa por defecto el puerto 3128 será ese el que pongamos, como se muestra en la siguiente imagen.


Ya solo quedaría aceptar todos los cambios para que nuestro navegador pase por el squid

Probando desde Firefox que todo funciona como es debido

Antes de hacer la comprobación, me gustaría mostrar 1 capturasdel archivo de configuración de squid dividido horizontalmente, la primera la parte superior del archivo contiene la lista de control de acceso, y la parte inferior información respecto a las solicitudes aceptadas y bloqueadas.

(Aún sin terminar)

Bibliografía

http://es.wikipedia.org/wiki/Squid

http://es.wikipedia.org/wiki/ACL

http://www.linuxparatodos.net/portal/staticpages/index.php?page=19-0-como-squid-general

No hay comentarios: