Instalación y configuración de Squid3

Hola a todos, hoy vamos a aprender a instalar y configurar Squid3 bajo Ubuntu. Squid3 es un programa con licencia GPL que implementa un servidor proxy y un demonio para web caché.

¿Servidor proxy?

Un servidor proxy es un programa informático o dispositivo con diversas funciones, entre las más habituales están:

  • Permitir conectarse a internet a una serie de equipos a través de una sola IP.
  • Filtrado de contenidos.
  • En el caso de los proxy-caché como Squid, almacenan una caché de páginas webs para que el acceso a ellas sea mucho más rápido.

Instalación

Vamos a instalar Squid3 en nuestra máquina, lo podemos hacer mediante Synaptic o mediante una consola. Nosotros vamos a hacerlo mediante la consola. Abrimos una y tecleamos:

sudo aptitude install squid3

Una vez instalado, abrimos /etc/squid3/squid.conf para habilitar una directiva. En el terminal tecleamos:

sudo gedit /etc/squid3/squid.conf

Bien, ya tenemos el archivo de configuración abierto, ahora pulsamos Control + F y buscamos “visible_hostname localhost“, obviamente sin comillas.

Una vez nos hemos situado en dicha directiva, la comentamos un un # al principio de la línea, y debajo de dicha línea añadimos lo siguiente:

visible_hostname A2PC37

¿Por qué A2PC37?

En mi caso pongo A2PC37 porque es el nombre de mi máquina, en el vuestro debéis poner el nombre de vuestro equipo. Para saber cuál es el nombre de vuestra máquina, tecleamos en un terminal:

hostname

Bien, ya tenemos la antigua línea comentada y la nueva línea añadida. Debe de quedar más o menos así:

Una vez tenemos lo anterior realizado, vamos a arrancar el servicio, en un terminal tecleamos:

sudo /etc/init.d/squid3 start

Nota: Es posible que nos de un fallo al iniciar el servicio, esto se debe a que el servicio ya está en ejecución, por lo que debemos cambiar start por restart en el comando anterior.

Configuración

Llegamos a la parte más interesante, la parte de configurar Squid 3. Supongamos que queremos configurar Squid3 de la siguiente manera:

  • Queremos 512 MB de caché en disco duro.
  • Vamos a cambiar los directorios de nivel 1 y de nivel 2.
  • Sólo vamos a permitir navegar de lunes a viernes de 16:40 a 22:50.
  • Sólo se permitirá el acceso desde la red 172.16.0.0/255.255.0.0.
  • Filtraremos el acceso a 3 páginas webs cualquiera.
  • Filtraremos el puerto para los mensajes de MSN

Muy bien, una vez tenemos definida nuestra hoja de ruta, vamos a la tarea.

Estableciendo los 512 MB de caché en disco y los niveles de directorios

Vamos ahora a establecer nuestra caché de disco, en este caso serán 512 MB. Debemos de abrir el archivo de configuración, de modo que en un terminal escribimos:

sudo gedit /etc/squid3/squid.conf

La directiva encargada de controlar la caché en disco se llama cache_dir. Debemos de buscarla en el archivo, y justo en la línea de abajo escribir:

cache_dir ufs /var/spool/squid3 512 8 64

A la directiva cache_dir le inidicamos el sistema de almacenamiento que va a usar, ufs es el más recomendable. /var/spool/squid3 es el directorio donde se almacenará la caché. 512 son los MB de caché que usaremos.8 y 64 son los directorios de nivel 1 y 2 respectivamente, estos directorios están ubicados en el directorio de la caché.

Estableciendo los días y horas de navegación

Vamos a crear nuestra primera regla ACL. Básicamente, una ACL es una definición de control de acceso en la que definiremos una serie de reglas. En este caso vamos sólo a permitir navegar una serie de días y en unas horas concretas.

Debemos buscar en /etc/squid3/squid.conf donde se encuentran las ACL. Será en esa zona donde definamos nuestras propias reglas, dicha zona presenta una serie de ACL por defecto y se encuentran próximas a la línea 600. Dicho esto, añadiremos la siguiente línea:

acl hora time MTWHF 16:40-22:50

A las acl tienen su propio nombre, en este caso es hora, el tipo de acl es time y los argumentos de time son los días y las horas

Definiendo la ACL para 172.16.0.0/255.255.0.0

Vamos ahora a definir una ACL que hará referencia a todos los equipos de la red 172.16.0.0/255.255.0.0. En el mismo fichero y justo debajo de la anterior línea escribimos:

acl equipos_permitidos src 172.16.0.0/255.255.0.0

Esto agrupa a todas las direcciones IP de dicha red.

Definiendo la ACL de las 3 páginas webs que vamos a restringir

Esta parte es bastante curiosa, la parte del filtrado de contenidos. Aquí vamos a poner ejemplo de cómo filtrar 3 páginas webs cualquiera, en nuestro ejemplo vamos a filtrar:

Vamos a añadir una ACL para cada página web, de modo que en el mismo fichero de configuración de Squid y debajo de la anterior línea escribimos:

acl elhacker dstdomain www.elhacker.net
acl escepticos dstdomain www.arp-sapc.org
acl elpais dstdomain www.elpais.com

Esto define las ACL para cada nombre de dominio.

Definiendo la ACL del puerto del MSN

Para completar el uso de las ACL, vamos a filtrar el acceso al MSN, para ellos vamos a cerrar el puerto que este tipo de programas usa para la mensajería instantánea, dicho puerto es 1863. La nueva ACL se debe ubicar debajo de la última, y será esta:

acl msn port 1863

Con esto definimos el puerto que queremos filtrar.

Así quedarán todas nuestras ACL una vez definidas. Vamos ahora a crear las directivas http_access que manejarán nuestras ACL.

Creando las directivas http_access

Esta es una parte muy importante, ya que las reglas http_access deben de estar en el orden adecuado. Squid las interpreta de abajo arriba, por lo que primero debemos definir las reglas que deniegan algo, y después las que permiten. Nuestro orden va a ser el siguiente:

http_access deny !hora
http_access deny msn
http_access deny elhacker
http_access deny escepticos
http_access deny elpai
shttp_access allow equipos_permitidos

En primer lugar denegamos el acceso a lo contrario de lo que habiamos definido en hora, se lo indicamos con un ! delante del nombre, que en informática significa una negación. En la siguiente línea denegamos msn, así nadie podrá usar ningún programa de mensajería instantánea que se comunique por ese puerto. En la tercera, cuarta y quinta denegamos las webs y finalmente en la sexta línea, permitimos los equipos que se van a conectar.

Habría sido mucho más fácil definir las webs en una sola ACL, pero por cuestiones de claridad informativa no lo he hecho así. Si quisiéramos hacerlo de esa forma, nuestra ACL sería la siguiente:

acl paginas dstdomain www.elhacker.net www.arp-sapc.org www.elpais.com

Vamos a ubicar las directivas http_access

Las http_access las vamos a insertar en una zona en concreto de nuestro fichero de configuración, para llegar a esa zona, buscamos INSERT YOUR OWN en el fichero. Esta búsqueda nos llevará aproximadamente a la línea 650.

Ahí será la zona en la que insertaremos nuestras http_access, lo haremos de la siguiente forma:

Una vez añadidas las http_access, guardamos el fichero y reiniciamos el servicio.

sudo /etc/init.d/squid3 restart

Esta operación puede tardar unos segundos, una vez tenemos el servicio correctamente reiniciado, pasamos a configurar Mozilla Firefox para usar nuestro proxy.

Configurando Firefox para usar nuestro proxy

Vamos ahora a indicarle a Mozilla Firefox que use nuestro proxy, para ello abrimos una nueva ventana de nuestro navegador y nos vamos a Editar, Preferencias, en la ventana que se nos abre nos vamos a la ficha Avanzado, dentro de esta nos vamos a Red, y dentro de Red pulsamos en el botón Configuración.

La ventana que se nos abre, la rellenamos de la siguiente forma:

Pulsamos Aceptar y en teoría, ya tenemos todo listo. Vamos a probarlo.

Entrando en http://www.elpais.com

Esto es lo que ocurrirá al intentar entrar en una de las páginas que hemos restringido.

Acceso denegado.

Entrando a http://www.google.es en una hora no permitida

Vamos a intentar entrar a Google en una hora que no esté permitida, nos diría esto:

Anuncios
Publicado en Internet, Proxy, Seguridad, Squid, Tutoriales, Ubuntu
43 comments on “Instalación y configuración de Squid3
  1. yulibeth dice:

    me parece muy interesante tu pequeño manual, aun no le comprobado si sale bien pero de antemano te digo que me gusta.

    espero que me sirva de mucho.
    bye

  2. Víctor dice:

    Muy buen tuto, testeado y funcionando. Pero tengo una consulta si quiero que el squid utilice todo el disco y utilizo raid 5 como arreglo de disco (cuando se llenen aumentare de capacidad) tengo que colocar el valor del disco a mano o hay alguna forma de que lo reconozca por dafault. Y en la parte de: 512 8 64, 512 es el tamaño de disco, pero 8 y 64 que son hay otros valores, cuales recomiendan.

  3. victor dice:

    Buenas una pregunta, en squid hay una opcion que era reference_age donde colocabas el tiempo que deseabas que duraran las paginas en el cache, pero en squid3 no veo esa opcion, por favoy ayuda. Necesito que el squid3 le almacene cache de max 1 o 2 meses.

    • Samuel dice:

      Hola Víctor, 8 y 64 es el número de directorios que va a tener la caché de disco. 8 directorios principales, enumerados en hexadecimal, y dentro de cada uno, 64 directorios también enumerados en hexadecimal.

      Los valores se pueden cambiar y para reconstruir la estructura de directorios de la caché, puedes teclear en una consola:

      sudo squid -k parse

      Un saludo.

      • amilcar dice:

        amigo necesito que me ayudes para saber como puedo restringir un usuario que navegue una cantidad x de horas en un mes?

  4. elmismo09 dice:

    Para que cada vez que inicie la computadora como hacer para que arranque automáticamente squid3
    Gracias

  5. paul mora dice:

    Hola gracias me ayuda mucho soy nuevo en esto pero una pregunta en el squid3? hay una forma de digamos darle una velocidad de navegacion o en pocas palabras modificar el ancho de banda para cada usuario? seria genial si lo explicaras a tu estilo… se comprende al 100

  6. […] The busiest day of the year was 20 de diciembre with 164 views. The most popular post that day was Instalación y configuración de Squid3. […]

  7. Muchas gracias por el tutorial, me sirvio, excepto que no puedo entrar a http://www.gmail.com no se por que lo bloquea el squid 😦 alguna idea.

  8. Edwin Guzman dice:

    Que desmadre espero me ayuden aca, tengo una duda ¿por que configuras el navegador mozilla si es transparente el squid? y otra mi ip para salir o conectar a mi router es 192.168.1.10 que llegaria a ser mi WAN y el 192.168.2.1 es mi red local, no lo configure dhcp por que no me asignan o mi server simplemente no sale a internet. ahora en mis equipos de red local por mas que configure todo me lei todos los manuales y aun asi no puedo hacer que se conecten a internet revise todo todo iptables, probe ips o que ips debo de poner a mis terminales ejemplo de una terminal conectada a este servidor 192.168.2.22
    255.255.255.0
    192.168.2.1
    DNS: 192.168.1.10
    dns2: 192.168.1.1
    Que estoy haciendo mal?
    que alguien me ayude. ojo tengo dos ETH0 y ETH1 en mi servidor proxy
    el servidor si se conecta pero mis terminales no.

  9. juan dice:

    pero realmente te funciona con esa configuración??

    Haz una prueba, intenta entrar en una página de las permitidas haber que sudece!

  10. darlingm16 dice:

    Hola, muchas gracias! tengo una duda que me urge resolver, como puedo combinar las reglas de tal forma que se me bloqueen ciertas paginas para ciertas ip específicas?? me funciona bien si lo que quiero es bloquear unas paginas en toda la red o bien si quiero bloquear todo a una ip en particular, pero la combinación no me funciona, me funcionaba bien en squi pero no en squid3, no entiendo por qué. De antemano gracias por la ayuda que me puedas dar!!!

  11. Anany dice:

    hola necesito ayuda x favor tengo un squid3 en modo consola y ya llevo mas de 2 semanas que intento configurarlo pero la verdad no me queda intente usar tu manual pero sige sin escuchar peticiones y siempre me marca error en los puertos que le asigno para escuhar de antemano gracias si me puedes orientar

  12. koke dice:

    hola necesito ayuda como vaciar la memoria cache si esta se llena y provoca el lag entre las maquinas que usan el internet por lo mismo

    • Samuel dice:

      Hola Koke, para hacer eso que dices tienes que vaciar los directorios temporales de caché. Eso se hace de una forma muy simple.

      Primero paramos el servicio de Squid: sudo /etc/init.d/squid3 stop
      Ahora borramos los directorios de la caché: sudo rm -rf /var/spool/squid
      Reconstruimos la esctructura de directorios: sudo squid3 -z
      Arrancamos Squid: sudo /etc/init.d/squid3 start

      Y listo 😉

  13. Sebastian dice:

    Hola Samuel, te hago una consulta. Tengo configurado squid3 de forma transparante en la empresa y estoy muy conforme con el bloqueo de paginas y el registro de navegacion.

    Me esta volviendo loco el tema del CACHE. Con las paginas web no tengo problema, pero me gustaria que me devuelva del CACHE los arhivos que descargo .exe .zip .rar etc y las actualizaciones de windows y no me funciona, descargo el mismo archivo varias veces y siempre va a buscarlo a internet.

    Te adradeceria si podes darme una mano con esto

    Saludos

    • Samuel dice:

      Hola Sebastián, según tengo entendido Squid sólo cachea páginas web y archivos relacionados con estas (.jpg, .png, .js …) así que dudo que puedas hacer eso que dices…

      Puedes probar a aumentar la memoria RAM dedicada a Squid y ampliar el espacio en disco reservado a Squid, a ver si de esa forma te mantuviese las actualizaciones, pero lo dudo.

      Un saludo 🙂

  14. alfredo dice:

    se puede configurar por medio web?

  15. st0rmt4il dice:

    De lujo!.. podrias explicar como hacemos para bloquear las https?

    Alguna regla especifica?

    Soy nuevo en el tema y pues disculpa quizas si la pregunta estuvo de mas..

    Saludos!

    • Samuel dice:

      Hola, para bloquear las webs https tendrías que bloquear el puerto 443, que es el puerto SSL usado por el protocolo HTTP para las webs seguras. Para ello declaras una ACL así:

      acl puerto443 port 443

      Y después deniegas el acceso a dicho puerto mediante:

      http_access deny puerto443

      Hay que tener cuidado al cerrar este puerto, ya que muchas webs lo usan, como por ejemplo Gmail, Outlook, BBVA, La Caixa, etc.

      Un saludo 🙂

  16. Alviro dice:

    Muchisimas gracias por el tuto, me sirvio muchisimo!

  17. yani dice:

    Tengo montado un squid3 en mi empresa pero tengo serias dudas en cuanto al orden de las reglas, algunas reglas las defino y no se aplican creo que es un problema de orden,me gustaria mucho que me explicaran mejor esta parte en que orden se aplican.
    una muestra de las reglas:
    http_access allow manager localhost
    http_access deny manager
    http_access allow block_ports admins ip_permitidos
    http_access deny !Safe_ports
    http_access deny CONNECT !SSL_ports
    http_access allow Cuba password
    http_access allow InternetAccess
    http_access allow localhost
    http_access deny all

    • Samuel dice:

      Hola yani, en primer lugar, perdón por la tardanza en responder. Primero debes poner las reglas que deniegan algo, y después las que permiten. Estoy viendo alguna contradicción como por ejemplo, en la primera línea permites que manager se conecte, y en la segunda le deniegas el acceso.

      Un saludo.

  18. oscar mendez dice:

    buen dia samuel, oye necesito que me orientes un poco por que soy nuevo en linux y estoy tratando de configurar el squid3para permitir acceso total a 3 equipos y denegar el acceso a 3 mas y que solo puedan navegar en ciertas paginas; la cosa es que ya e aprendido a permitirles y a denegarles el acceso, pero cuando los equipos restringidos visitan esas paginas que les permiti no se cargarn completamente; por ejemplo: si yo permito youtube no se carga completamente el contenido de la pagina. que crees que tenga que configurar aparte de lo que ya e configurado. saludos

    NOTA: si les permito acceso total no tengo ningun problema en navegar
    NOTA:solo cree una lista de urls permitidas y les di acceso en los http access
    NOTA:tengo instalado ubuntu 12.04

    • Samuel dice:

      Hola Óscar, ¿podrías poner por aquí las ACL que has creado y el orden de las reglas http_access? Eso que me comentas es probable que se deba a que muchas webs, cargan contenidos desde otras.

      Por ejemplo, sabemos que YouTube es propiedad de Google. Imagínate que permites el uso de YouTube, pero no el de Google. YouTube, en cualquiera de sus páginas, quizás tenga algún recurso alojado en Google y lo enlaza en su código fuente. Así que si por ejemplo, Google está restringido, YouTube no podrá cargar todo el contenido que requiera. No se si me he explicado.

      Espero tu respuesta. Un saludo 😉

  19. oscar mendez dice:

    ok aqui lo tienes y aprovecho para comentarte que la idea de bloquear el servicio en algunas maquinas, es por que es satelital y solo se cuenta con 200 megas aproximados diarios para navegar y algunos empleados descargar cosas y se acaban los 200 megas en menos de medio dia, y despues de que se acaban los megas ya no se puede navegar para checar cosas de la empresa, ni correos ni nada

    acl localnet src 192.168.11.0/24 # Red de Prueba
    acl computadoras src “/etc/squid3/computadoras_equipos_restricciones/computadoras.txt”
    acl permitidos url_regex “/etc/squid3/computadoras_equipos_restricciones/permitidos.htm”

    # INSERT YOUR OWN RULE(S) HERE TO ALLOW ACCESS FROM YOUR CLIENTS
    #
    http_access allow localhost
    http_access allow permitidos
    http_access deny all

    ESTO ES LO QUE CONTIENE LA ACL “COMPUTADORAS”
    192.168.11.2
    192.168.11.3
    192.168.11.4

    ESTO ES LO QUE CONTIENE LA ACL “PERMITIDOS”
    google.com
    youtube.com
    hotmail.com
    live.com

    ojala y pudieras ayudarme de antemano gracias y saludos

    NOTA: si consideras que es el codigo fuente te pido humildemente que me ayudes para saber de donde saco eso o a que se refiere ese termino

  20. oscar mendez dice:

    se me olvido comentarte que por el momento solo me interesa que se pueda navegar en el correo de yahoo en esas computadoras que tienen restringido el servicio. saludos

    • Samuel dice:

      Hola Óscar, en primer lugar perdón por tardar en responder pero ando algo liado.

      Yo te aconsejo que crees una acl para las webs que quieres permitir en lugar de referenciarlas en un archivo .htm. Por ejemplo:

      acl permitidos dstdomain google.com youtube.com hotmail.com live.com

      Una vez creada esa acl, prueba a poner las reglas http_access de esta forma.

      http_access deny !permitidos
      http_access allow localhost
      http_access deny all

      De esta forma denegarías a todos los equipos de la red excepto localhost (que intuyo que es el tuyo) el acceso a LO CONTRARIO (!) de lo que haya en la acl permitidos. Es decir, deniegas el acceso a todas las webs excepto a google.com, youtube.com, hotmail.com y live.com.

      Así que si algún día necesitases que tus empleados accediesen a otra web, bastaría con añadirla a la acl permitidos.

      No lo he probado, pero juraría que funciona. Haz la prueba y me cuentas 😉

      Un saludo.

  21. Noe Frutero dice:

    Buscaba modificar el caché y aquí lo encontré, gracias.

    • Samuel dice:

      Me alegro, Noe 🙂

      • ernesto dice:

        hola samuel nesecito poner un anuncio de acceso denegado al squid y no se donde ponerlo que salga con algo como una pantalla en rojo o en negro con mi nombre y debas cosas que ponga cuando quieran acceder a alguna pagina web me ayudas…
        mi correo es ernestomitnick@gmail.com

      • Samuel dice:

        Combina Squid con Dansguardian 😉 Esa es la clave. Dansguardian provee de plantillas HTML personalizables, ahí podrás poner las advertencias que precises cuando alguien intente acceder a un sitio no autorizado 🙂

  22. Hola Samuel, tengo conectadas 35 computadoras al servidor proxy, todas tiene que entrar al mismo tiempo a una pagina de internet donde hay que logear una sesión en linea. Algunas entran correctamente y otras se logean con usuarios repetidos. Estopasa cuando se conectan atreves del pproxy.

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión /  Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión /  Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión /  Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión /  Cambiar )

Conectando a %s

Sobre mi…

Soy Técnico en Explotación de Sistemas Informáticos y Técnico Superior en Administración de Sistemas Informáticos en Red. Actualmente estudiando el Grado de Ingeniería Informática en la Universidad de Córdoba (España).

Enamorado de la ciencia en general y de la computación en particular.

Música: Heavy, Rock, Celta, New Age, Electrónica, etc...
Libros:Isaac Asimov, Richard Dawkins, Stephen Hawking, Carl Sagan...

Estoy interesado en la programación de videojuegos. Políticamente de izquierdas, escéptico y ateo. En definitiva, mala gente.

Sígueme en Twitter

Introduce tu dirección de correo electrónico para seguir este Blog y recibir las notificaciones de las nuevas publicaciones en tu buzón de correo electrónico.

Únete a otros 24 seguidores

Usa Linux Mint
The Bit Developer Box
A %d blogueros les gusta esto: