Alejandrox

Blog personal de Alejandro Meroño Hernández

Filtra contenidos de páginas web con Squid y Squidguard  

squidguard.png

Squid es el servidor proxy más popular y extendido entre las diferentes distribuciones basadas en GNU/Linux. Un proxy es un servidor cuyo objetivo es la centralización del tráfico entre Internet y una red local, de esa forma, cada uno de los ordenadores de la red local no tiene necesidad de disponer de una conexión directa a Internet. Además, también se utiliza para controlar los accesos no permitidos desde Internet hacia la red local o viceversa.

Podemos usar Squid para prohibir el acceso a determinadas páginas web, lo cual puede venir bien en determinadas situaciones. En el instituto en el que trabajo, por ejemplo, utilizamos Squid para bloquear el acceso a páginas con contenido “inadecuado”: páginas pornográficas, violentas…

Ya escribí hace unos meses un pequeño artículo sobre Squid: Squid y las listas de control de acceso. En él hablaba de Squid, de las listas de control de acceso, y mostraba varios ejemplos de configuración. En esta entrada me voy a centrar exclusivamente en el filtrado de contenidos de páginas web.

Lo que haremos en primer lugar será bloquear el acceso a determinadas páginas web dependiendo de la URL introducida en la barra de direcciones del navegador. Para ello crearemos un fichero con una serie de palabras claves, como por ejemplo, sex, porn, xxx…. y prohibiremos el acceso a todas aquellas páginas que contengan estas palabras en el nombre de dominio.

Antes de crear este fichero instalaremos Squid en el ordenador que hará de proxy. Para instalar Squid en Ubuntu abrimos la consola (Aplicaciones/Accesorios/Terminal) y escribimos:

  • sudo apt-get install squid

A continuación creamos el fichero con las palabras claves. En la consola escribimos:

  • sudo gedit /etc/squid/palabras_no_permitidos

En el fichero que se abre escribimos las palabras (una por línea). Por ejemplo:

  • sex
  • porn
  • xxx

Y cerramos el fichero guardando los cambios. De esta manera hemos creado un fichero en el directorio /etc/squid llamado palabras_no_permitidas. Cuando terminemos de configurar Squid no podremos acceder a páginas con direcciones del tipo:

  • www.loqueseaxxx.com
  • www.pornloquesea.com
  • www.loqueseasex.com

A continuación editamos el fichero de configuración de Squid escribiendo en la consola:

  • sudo gedit /etc/squid/squid.conf

Borramos todo el contenido del fichero y escribimos lo siguiente:

  • visible_hostname nombre_equipo
  • acl all src 0.0.0.0/0.0.0.0
  • http_port 8080
  • acl no_permitidos url_regex “/etc/squid/palabras_no_permitidas”
  • http_access deny no_permitidos

Tras visible_hostname tendremos que poner el nombre de nuestro equipo. Tras http_port pondremos el puerto de escucha del proxy (en el ejemplo 8080)

A continuación reiniciamos squid escribiendo:

  • sudo /etc/init.d/squid restart

Tan sólo nos queda configurar el navegador de cada uno de los equipos de nuestra red para que accedan a Internet a través del proxy. En Mozilla Firefox, por ejemplo, debemos ir a Editar/Preferencias/Avanzado/Red/Configuración. Seleccionamos a continuación “Configuración manual del proxy” e introducimos la IP y puerto de escucha del proxy.

squid_proxy2_.png

Tras esto ya podremos probar el funcionamiento del proxy. Abrimos el navegador de cualquier ordenador de nuestra red y escribimos por ejemplo:

  • www.loqueseaxxx.com

Debe aparecer entonces una página como la siguiente:

bloqueo_squid2.png

SquidGuard

Aunque Squid incorpora el filtrado de páginas que hemos visto, este método es muy limitado, por lo que podemos incrementar sus funciones mediante el paquete SquidGuard. SquidGuard es un plugin para Squid que incrementa sus funciones y usa una base de datos con miles de direcciones web clasificadas en grupos (pornografía, violencia, publicidad…). Veamos a continuación cómo instalar y configurar SquiGuard en Ubuntu

Para instalar SquidGuard en Ubuntu abrimos el terminal y escribimos:

  • sudo apt-get install squidguard

A continuación editamos el fichero de configuración de Squid:

  • sudo gedit /etc/squid/squid.conf

y añadimos las siguientes líneas:

  • http_access allow all
  • redirect_program /usr/bin/squidGuard -c /etc/squid/squidGuard.conf

Esta última línea es necesaria para conectar Squid con SquidGuard.
Además eliminaremos las líneas que pusimos anteriormente:

  • acl no_permitidos url_regex “/etc/squid/palabras_no_permitidas”
  • http_access deny no_permitidos

A contiuación bajamos el archivo que contiene la base de datos con miles de direcciones web cuyo contenido queremos bloquear. Ese archivo se encuentra en la siguiente dirección: http://ftp.tdcnorge.no/pub/www/proxy/squidGuard/contrib/blacklists.tar.gz

Ese archivo lo tendremos que descomprimir en el directorio /var/lib/squidguard/db. Pero antes tendremos que abrir el terminal y escribir:

  • sudo chown -R nombre_usuario:grupo_usuario /var/lib/squidguard/db

donde nombre_usuario y grupo_usuario tendremos que cambiarlos por el nombre de usuario y grupo con el que ejecutamos squid. En mi caso, por ejemplo, tengo creado un usuario de nombre alex y grupo alex, que es con el que ejecuto squid. Así pues tendré que poner:

  • sudo chown -R alex:alex /var/lib/squidguard/db

Copiamos el fichero blacklists.tar.gz al directorio /var/lib/squidguard/db. Abrimos de nuevo el terminal y escribimos:

  • cd /var/lib/squidguard/db
  • tar xzvf blacklist.tar.gz

El segundo comando es el que descomprime en el directorio db el fichero que hemos descargado. Tras esto veremos que se ha creado un directorio, llamado blacklists, en el directorio db. Si accedemos a ese directorio veremos que hay una serie de directorios con nombres como ads, aggressive, drugs, porn….

A continuación editamos el fichero de configuración de SquidGuard:

  • sudo gedit /etc/squid/squidGuard.conf

y borramos lo que aparece tras las dos siguientes dos líneas:

  • dbhome /var/lib/squidguard/db
  • lodgir /var/log/squid

(estas dos líneas las dejamos)

Al final del fichero escribimos lo siguiente:

dest porn {

domainlist blacklists/porn/domains

urllist blacklists/porn/urls

}

acl {

default {

pass !porn all

redirect http://www.google.es

}

}

Y cerramos el fichero guardando los cambios.

Lo que hemos hecho de esta forma es prohibir el acceso a los dominios y URLs que se encuentran en los ficheros: porn/domains y porn/urls. Cada vez que se introduzca un dominio o IP en el navegador que se encuentre en uno de estos dos ficheros, Squid bloqueará el contenido de la página y nos redireccionará a www.google.es.

Para probarlo reiniciamos Squid:

  • sudo /etc/init.d/squid restart

y escribimos en el navegador una de las direcciones que aparecen en el fichero domains (por ejemplo, ladyboy.tv).

 

Si aparece la página de Google es que todo funciona correctamente.

squid_error2.png

Si no funciona es posible que haya algún problema con los permisos de usuarios. En este caso probaremos lo siguiente:

  • chmod 644 /etc/squid/squidGuard.conf
  • chmod -R 640 /var/lib/squidguard/db
  • chmod -R 644 /var/log/squid/
  • find /var/lib/squidguard/db -type d -exec chmod 755 \{\} \; -print
  • chmod 755 /var/log/squid

En cualquier caso siempre es recomendable mirar el contenido fichero /var/log/squid/squidGuard.log.

Podríamos hacer lo mismo para bloquear el acceso a páginas con contenido violento. Para ello tendríamos que abrir el fichero de configuración de SquidGuard y escribir:

dest violence {

domainlist blacklists/violence/domains

urllist blacklists/violence/urls

}

Y modificar la siguiente línea:

pass !porn all

por:

pass !porn !violence all

Y así con el resto de contenidos que queramos prohibir. Espero que os haya servido de ayuda.

Popularity: 6% [?]


Otras entradas que te pueden interesar



Esta entrada tiene

2 comentarios

Escrito por Alejandrox

Mayo 17th, 2008 at 11:48 am

Categoría: Ubuntu

2 comentarios en 'Filtra contenidos de páginas web con Squid y Squidguard'

Suscríbete a comentarios con RSS o TrackBack en 'Filtra contenidos de páginas web con Squid y Squidguard'.

  1. Excelente tutorial!
    Lo suficientemente explicado.

    Saludz!

    ram

    19 May 08 at 1:01 pm

  2. hola que tal, no puedo arrancar el sqidGuard realice todas las indicaciones.
    redirect_program /usr/bin/squidGuard -c /etc/squid/squidGuard.conf
    redirect_children 20

    con estas lineas no arranca tampoco el squid tenes idea que puede ser?
    desde ya muchas gracias y un abrazo a la familia
    claudio

    claudio

    18 Ago 08 at 4:24 pm

Deja un comentario