martes, 3 de febrero de 2009

Instalación y configuración de Squid (Ubuntu)

¡Hola! En este tutorial aprenderemos a manejar Squid, ¿Que es Squid? Squid es un programa el cual contiene un servidor proxy y un demonio para web cache.
La descarga se puede realizar desde synaptic o desde el terminal, yo prefiero el terminal.
Entramos en este e introducimos:
sudo aptitude install squid3

Una vez descargado e instalado Squid tendremos que editar ficheros, para mas seguridad recomiendo hacer una copia de seguridad del fichero el cual editemos.

En este caso vamos a trabajar sobre el fichero:
/etc/squid/squid.conf


Ahora para que Squid funcione debemos incluir en la directiva visible_hostname el nombre de nuestro equipo. ¿Que no sabes cual es el nombre de tu equipo? No te preocupes utilizando el siguiente comando en el terminal te lo mostrara:
hostname

La directiva debería de quedar así:


Una vez modificado el archivo reiniciaremos el servidor para ello usamos:
sudo /etc/init.d/squid3 restart


Ahora vamos a modificar desde mozilla firefox para que utilize nuestro servidor proxy ya instalado, para ello dentro de mozilla hacemos clic a editar/preferencias/avanzadas/red/configuracion y señalamos sobre la opcion de configuración proxy manual.
En la casilla que pone Proxy HTTP pondremos nuestra ip o 127.0.0.1 para hacer referencia a nosotros mismos.
En el puerto pondremos 3128, y señalamos la casilla de usar el mismo proxy para todos los protocolos como muestro a continuación.



Con esto ya tendremos el servidor listo.
Ahora vamos a cambiar algunos parametros de Squid, para ello nos vamos al fichero de configuración nombrado anteriormente.
  1. Queremos que solo use 250 MB de caché en disco.
  2. Sólo podran acceder a internet desde las IP 172.16.0.0/16
  3. Sólo se podra acceder en horario de lunes a viernes de 16:40 a 23:00
  4. No se permitira el acceso a las siguientes páginas (www.tuenti.com, www.youtube.com, www.marca.com)
  5. No se podran acceder a los puertos: 4661, 4662, 4672
¡Manos a la obra!

Para el primer paso tendremos que modificar la directiva cache_dir en la cual deberemos introducir:

Tipo: sistema de almacenamiento que vamos a usar en este caso (ufs)
Directorio: ruta de la caché /var/spool/squid3
Mbytes: tamaño de la cache en MB
L1: numero de directorios en primer nivel (16)
L2: numero de subdirectorios de segundo nivel (256)

Quedaría así:
cache_dir ufs /var/spool/squid3 250 16 256

Para las siguiente reglas habra que poner en todas ellas:
acl (nombre de la regla) nombre función (delimitaciones)

Segunda regla:

Solo podran acceder ciertas ips, para ello deberemos poner como acl:
acl ips src 172.16.0.0/16


Tercera regla:
Solo se puede entrar en un tramo horario:
acl horario time MTWHF 16:40-23:00


Cuarta regla:
No se podran utilizar ciertas páginas web:
acl pgweb dstdomain www.tuenti.com www.marca.com www.youtube.com


Quinta y ultima regla:
No se pondran utilizar algunos puertos:
acl puertos port 4661 4662 4672


Con esto lo que estamos haciendo es dar un nombre a la regla. Ahora vamos realmente a las restrincciones:

El orden en el que hay que introducir las reglas es muy importante, ya que si coincide con una de las reglas a las otras limitaciones no les hace caso.

Vamos al lío:

Antes de empezar os explico las reglas basicas:


Deny: Deniega el accesso a todos los usuarios con respecto a la regla.
Deny !: Deniega el accesso a todos los usuarios lo contrario de lo que ponga la regla.
Allow:Permite el accesso a todos los usuarios con respecto a la regla

En primer lugar pondremos el horario, ya que si intentan conectarse a otro tramo horario del permitido no lo dejaran para ello hacemos:
http_access deny !horario

Con esto decimos que no permita la conexion a todas aquellas horas y dias que no sean las que estan inscritas en la regla.

Despúes he puesto la restrinción de los puertos:
http_access deny puertos

Así no permitimos que se usen esos puertos.

A continuación he escrito la regla para la restrinción de las páginas web
http_access deny !pgweb


Con esta regla permitimos el accesso a todas las páginas que sean distintas de las inscritas en la regla.

Y por ultimo restringimos el accesso a internet a todos los usuarios que no esten en un rango especifico:
http_access allow ips

Con esto decimos que solo permitimos el acceso a las ips inscritas en la regla.

Y yo he creado otra regla para mas seguridad, es esta:
http_access deny All


Esto sirve para no permitir hacer nada con respecto a internet a ningun usuario.

Una vez creado todas las reglas debería quedar así:



Ahora reiniciaremos el servidor:
sudo /etc/init.d/squid3 restart


Vamos a probar si funciona, intentaremos conectarnos por ejemplo "marca" que era una de las páginas restringidas:



Vemos como nos deniega el accesso, ¿Pero nos permitira el acceso a las demas páginas? Vamos a comprobarlo por ejemplo con mi blog:



Y si, nos funciona, bueno espero que os sea de utilidad. ¡Hasta la proxima!

1 comentarios:

ISC.Esteban Rodriguez dijo...

Hola Buenos dias, Excelente trabajo, pocos tutoriales en que se usa Squid3 nada mas un par de dudas si instalo desde synaptic o tengo que compilarlo ya que almenos el 2.7 de ubuntu no trae la opcion del proxy transparente, y he batallado con la compilacion y pues me gustaria que agregaras la opcion de transparente al squid 3, espero tener una respuesta pronto, y gracias por la sencilles del manual