Control Parental con Squid, DansGuardian y  SARG


Edwind Richzendy Contreras Soto <Richzendy[at]gmail[dot]com>
blog: http://www.Richzendy.org

*Sustituye el [at] por el simbolo @ y el [dot] por un punto

 v0.1, 9 de Septiembre del 2007
Este mini HowTo, no pretende ser una guia completa sobre estas 3 herramientas, ya que cada una tiene muchisima tela que cortar, simplemente esta guia relatara la manera de fusionarlas para lograr una función en especifico de ellas, debe estar claro que si desea un documento más detallado o una aplicación diferente a la tratada acá, debe referirse a otra documentación ( incluida la documentación propia de cada una de estas herramientas ), además debo indicar que se pueden usar otros tipos de proxys y probablemente se obtenga el mismo resultado e incluso estas herramientas no son la unica manera de implementar un filtro de contenido, por último aclaro que no me hago responsable de lo que hagas con  tus /dev/hands asi que te recomiendo conectes tu /dev/brain al intentar hacer algo de lo que acá se explica. 
 

Indice

Que es un control parental?
Que es Squid?
Que es DansGuardian?
Que es SARG?
Escenario
Recomendaciones para la instalación de paquetes
Instalación de Squid
Instalación de DansGuardian
Instalación de SARG
Post-Configuración y uso del Control Parental
Personalización y mantenimiento de Dansguardian
Consideraciones finales
Direcciones Útiles
Copyleft




Que es un control parental?

    Un control parental como su nombre lo indica, literalmente es "control ejercido por los padres", sin embargo acá se ve aplicado directamente a las aplicaciones que pueden permitirle a los padres ejercer control sobre lo que ven sus hijos a través de Internet, Internet es una tecnologia de muy reciente creación por lo cual cualquier persona que tenga hijos con edad para usar una computadora probablemente poco conocimiento tenga de que acciones tomar para controlar el uso de este.

    El Internet es una amplia fuente de conocimiento pero por lo general este se encuentra desatado y sin control y así como encontramos una fuente inmensa de conocimiento, cultura, educación y noticias, tambien encontramos cosas realmente dañinas para un niño, cosas que a su edad probablemente no este preparado para asimilar, tales como: pornografía, sitios violentos, sitios de uso de lenguaje violento y sin moderación, sitios con imágenes impactantes, sitios con virus, sitios de chat sin moderación, sitios de pishing y muchas otras cosas más.

Que es Squid?

    Squid es un programa que sirve de proxy, es decir, hace cache de las páginas visitadas. Al navegar a través de internet Squid va grabando el contenido de las páginas web que visita ( texto, imágenes, css, etc ...) y lo almacena en el disco duro para que la proxima vez que alguien visite esa página, el navegador usara dicha cache y en vez de volverla a descargar desde internet, la verá mucho más rapido ya que algunas cosas ya las ha descargado y se tienen grabadas en el disco duro.

    Por lo general Squid se aprovecha mejor como cache para toda una red, en donde hay varios clientes, sin embargo no hay ninguna limitante para que pueda ser usado en un computador personal ( como por ejemplo el que se tratará acá ).

Que es DansGuardian?

    DansGuardian es un programa que permite hacer un filtrado del contenido que se visita en internet a través del navegador, este programa en especifico, es uno de los más completos en su estilo ya que no se basa simplemente en listados de sitios bloqueados, si no que también puede evaluar el contenido de algún sitio web basado en palabras claves y expresiones regulares ( incluso de imágenes ), además su personalización y/o configuración esta basada en archivos de texto plano, lo que facilita enormemente el trabajar con esta herramienta.

Que es SARG?


    SARG es una aplicación que genera estadisticas en formato html usando como datos los logs de Squid, de toda la navegación realizada a través del proxy en un intervalo de tiempo, es una de las herramientas más completas en ese sentido.

Escenario:

    Tenemos un computador personal en la casa, la cual usa Fedora GNU/Linux como sistema operativo y es usado por varios miembros de la casa (incluidos varios niños y menores de edad ) cada uno con su cuenta de usuario, con acceso a internet, sin embargo no se tiene ningún tipo de supervisión por parte de un adulto en las horas en que navegan los niños y adolescentes.

    Se desea poder controlar en lo posible lo que ellos pueden ver a través de internet, a su vez poder tener registro de lo que navegan para posteriormente evaluar en que gastan su tiempo cuando estan usando el computador.

    Sobre todo se desea que la solución basada en Squid+DansGuardian+SARG sea segura e infranqueable para que realmente pueda cumplir su cometido, es decir, que el usuario o el grupo de ellos que se planea controlar, no puedan tener manera de saltarse la restricción impuesta.

Recomendaciones para la instalación de paquetes:

    Todas las instrucciones de ahora en adelante se harán pensando en que el usuario esta usando fedora como distribución de GNU/Linux, sin embargo el lector de este how to, podrá aplicar todos los pasos a su distribución propia si conoce su manejador de paquetes y la forma de instalar estos, de todas maneras se harán algunas pequeñas referencias para las personas que usan ubuntu o debian, como por ejemplo en vez de usar "yum install" deben usar su equivalente "apt-get install" ó "aptitude install".

    A pesar de que en este how to se mayoritariamente la consola de comandos, se recomienda altamente si el lector no es un usuario avanzado o no tiene experiencia con la consola que use el equivalente de herramientas gráficas que permiten la mismas funciones, por ejemplo si se es usuario de fedora, use pupplet o yumex para instalar y remover paquetes o si se es usuario de ubuntu o debian use synaptic o gdebi. Si se quiere editar un archivo  en vez de usar vim o nano como editores de texto use gedit, kwrite o kate.

Instalación de Squid:

    Abrir un terminal como root y escribir:

[root@andromeda ~]# yum install squid

    Este comando te instalará la versión más reciente de Squid disponible en los repositorios de fedora, luego de esto el paquete se encuentra instalado y preconfigurado adecuadamante para el uso que necesitamos, asi que por los momentos no necesitamos editar su archivo de configuración.

    Si deseas probar que Squid esta funcionando, solo ejecute el siguiente comando para iniciarlo:

 [root@andromeda ]# service squid start

Nota 1: Si usa ubuntu o debian use el comando: /etc/init.d/squid start
Nota 2: Si usas ubuntu,debian o suse deberás editar el archivo /etc/squid/squid.conf para agregar la linea visible_hostname y de argumento
colocas el nombre de la máquina ( si no sabes cual es, ejecuta el comando hostname ), ejemplo visible_hostname localhost.localdomain
    Y luego configure su navegador para que navegue a través del proxy, si usa firefox, ejecute en el menú "Editar -> Preferencias y en la ventana que se abre dar click en el botón de "Avanzado", luego en la pestaña de "red" -> Conexión y le da click en el botón "Configuración", en donde debe seleccionar la opción "Configuración manual del proxy"; Donde dice "Proxy HTTP:" coloca la dirección del proxy, que para nosotros sera localhost y el puerto será el 3128 que es el de defecto de squid, aceptas, cierras y pruebas si puedes navegar normalmente en internet.

Instalación de DansGuardian:

    DansGuardian por los momentos aún no es parte de los repositorios oficiales de fedora, desconozco los motivos, sin embargo puedes instalarlo via yum si tienes los repositorios de dries configurados ( es la mejor manera si se quiere tener las últimas actualizaciones del programa ), yo prefiero instalarlo a mano, ya que este paquete no pide ninguna dependencia importante que yo sepa, para instalarlo ejecuta el siguiente comando:

[root@andromeda ]# rpm -Uvh http://ftp.belnet.be/packages/dries.ulyssis.org/fedora/fc7/i386/dries/RPMS/dansguardian-2.8.0.6-1.2.fc7.rf.i386.rpm

*Nota 1: Si el link anterior le da error probablemente el link no esta disponible debido a que el paquete cambio de versión, simplemente navegue el repositorio en la siguiente dirección: http://ftp.belnet.be/packages/dries.ulyssis.org/fedora/fc7/i386/dries/RPMS/ y ubique a dansguardian allí, luego ejecute el comando rpm -Uvh con dicho link como argumento.
*Nota 2: El paquete si se encuentra en los repositorios de ubuntu y de debian, para instalarlo ejecuta "aptitude install dansguardian".


    Realmente DansGuardian, no ofrece ningún tipo de problema al momento de instalar en Fedora, ni necesita una post-configuración realmente importante por los momentos, luego de instalar SARG, procederemos a probar todo y a explicar el mantenimiento y post-configuración que requiere cada una de estas herramientas.

Instalación de SARG:

    Realmente SARG en su configuración más tradicional requiere de un webserver para poder funcionar, sin embargo esto no es obligatorio, ya que se pueden visualizar sus páginas webs directamente de forma local abriendolas desde un browser ( firefox ) como cualquier tipo de archivo, si se desea tener SARG para poder visualizar las estadisticas desde cualquier lado remotamente se debe instalar un webserver y se recomienda para ello lighttpd o thttpd ya que ambos son muy livianos y casi no consumen recursos además de ser ideales para servir páginas web que estan realizadas enteramente en html.

    Para instalar SARG, por comodidad usaremos el paquete en formato rpm construido para Fedora Core 6, no hay ningún inconveniente del tipo de vista tecnico que impida dicha acción, sin embargo debido a que SARG no está directamente empaquetado y mantenido por la comunidad de Fedora no tenemos una versión disponible en los repositorios oficiales para Fedora 7,  que es la versión actual de Fedora. Sin embargo si desea un paquete más actualizado y construido especificamente para su arquitectura y versión de Fedora, pueda agarrar el source rpm desde:

http://dag.wieers.com/rpm/packages/sarg/sarg-2.2.3-1.rf.src.rpm


    Y usar rpmbuild para generar su propio rpm, el proceso siguiente es opcional, recuerde que pare efectos de este how to, usaremos el rpm para Fedora Core 6.

[root@andromeda ]# rpm -ivh http://dag.wieers.com/rpm/packages/sarg/sarg-2.2.3-1.rf.src.rpm

[root@andromeda ]# rpmbuild -ba /usr/src/redhat/SPECS/sarg.spec

*Nota: Puede editar el archivo SPEC y cambiar la versión de Fedora y la arquitectura, de ser necesario, también debe disponer del paquete rpmbuild ( yum install rpm-build ).

    Luego instale el rpm que encontrara en algún directorio dentro de /usr/src/redhat/RPMS/

    Para instalar SARG ( el rpm de Fedora Core 6 ), simplemente ejecute el siguiente comando:

[root@andromeda ]# rpm -ivh http://ftp.belnet.be/packages/dries.ulyssis.org/fedora/fc6/i386/RPMS.dries/sarg-2.2.1-1.fc6.rf.i386.rpm

    Este rpm, viene realmente completo, el comando ejecutable es "sarg", deberá ejecutarlo cada vez que desee un reporte al instante, sin embargo sarg  en este rpm, contiene algunos archivos para el crontab, los cuales permiten a sarg hacer reportes, diarios, semanales y mensuales de las actividades de proxy.
    SARG, por los momentos no requiere ningún tipo de post-configuración, si se desea probar el funcionamiento de SARG, debe anteriormente haber navegado algo usando el proxy Squid, para tener algunos logs generados y ejececutar el siguiente comando:

[root@andromeda ]# sarg

    Luego simplemente colocamos la siguiente dirección en el navegador firefox: /var/www/sarg/ONE-SHOT/ y observaremos un pequeño reporte estadistico generado.

Imagen de SARG
Post-Configuración y uso del Control Parental

    Bueno si hemos llegado a este punto sin ningún tipo de problema, ya debemos tener las 3 herramientas instaladas, las cuales no han llevado ningún tipo de configuración de parte nuestra, esto es debido a que los archivos de configuración que traen por defecto estas aplicaciones estan realizados para funcionar al menos para un entorno local, como el que planeamos darle acá, si deseamos que por ejemplo SARG nos muestre los reportes en castellano, o DansGuardian nos muestre la página de redirección ( o bloqueo ) en castellano, debemos editar dichos archivos, estos se encuentran en:
/etc/squid/squid.conf para Squid
/etc/dansguardian/dansguardian.conf para DansGuardian
/etc/sarg/sarg.conf para SARG ( en otras distribuciones puede estar en /etc/squid/ )

    Una de las cosas a tomar en cuenta en la post-configuración es la de no dejar el puerto del Squid y el de DansGuardian libres, o visibles desde el exterior ( Internet ), aunque no esten configurados para aceptar peticiones desde allí, para evitar esto, debemos agregar las siguientes linea al archivo de configuración del firewall, que se encuentra en /etc/sysconfig/iptables
-A RH-Firewall-1-INPUT -p tcp --dport 3128 -j DROP
-A RH-Firewall-1-INPUT -p tcp --dport 8080 -j DROP

Nota: Asegurate de colocar dicha linea antes de: -A RH-Firewall-1-INPUT -j REJECT --reject-with icmp-host-prohibited COMMIT

    Si usted no dispone de dicho archivo, generelo con una configuración minima, con el siguiente utilitario:

[root@andromeda ]# system-config-securitylevel

    Otra cosa a tener en cuenta, es que ahora el puerto para usar el proxy será el 8080, es decir el puerto del DansGuardian, ya que de esta manera estaremos usando el filtro de contenido, si seguimos usando el puerto 3128 el de defecto de Squid, nos estaremos saltando el filtro de contenido, por lo tanto modifique el puerto del proxy en la configuración del firefox.
    Así que debemos asegurarnos que los chicos de la casa, no intenten burlar el filtro de contenido al usar squid a través del puerto 3128 directamente, hay varias maneras de hacerlo, pero para mi, la más inmediata es evitar que ellos puedan modificar la configuración del firefox o generar un nuevo perfil de usuario en firefox, para esto, simplemente cambiamos la permisología y el dueño de dichos archivos:
Suponiendo que el usuario se llama fulanito

[root@andromeda ]# chown root:root /home/fulanito/.mozilla/firefox

[root@andromeda ]# chmod 775 /home/fulanito/.mozilla/firefox

El directorio donde se encuentra el perfil de firefox por lo general tiene un nombre aleatoreo, en mi caso:

[root@andromeda ]# chown root:root /home/fulanito/.mozilla/firefox/kht9gpwh.default/prefs.js

[root@andromeda ]# chmod 775 /home/fulanito/.mozilla/firefox/kht9gpwh.default/prefs.js

De esta manera el usuario no podrá modificar las configuraciones acerca del proxy, en el navegador firefox.

Personalización y mantenimiento de Dansguardian


    Ahora DansGuardian y las demás herramientas se encuentran listas para ser usadas, la configuración minima de DansGuardian ofrece cierto nivel de protección sin embargo a medida que lo estemos usando, nos daremos cuenta que necesita cierta personalización, a tal efecto explicaremos un poco como hacerlas.
    Dansguardian se compone de una serie de archivos de texto, en donde se especifica una serie de parametros que el toma en cuenta para hacer el bloqueo, dichos archivos estan plenamente documentados ( basta con abrirlos y leerlos ) y se encuentran dentro del directorio /etc/dansguardian , entre los cuales tenemos:
  1. bannedextensionlist: Este archivo contiene un listado de extensiones de archivos a ser bloqueadas, probablemente usted quiera comentar, las lineas correspondientes a archivos de documentos como .doc, .xls y .ppt
  2. bannediplist: Este archivo contiene un listado de direcciones ips a ser evitadas de usar nuestro proxy, debido a que estamos usando el mismo localmente, este archivo no lo utilizaremos
  3. bannedmimetypelist: Un truco muy común para saltarse las restricciones de bannedextensionlist es cambiando las extensiones de los archivos, pero si usamos los Mime Types de los archivos ( la metadata del archivo no cambia asi cambiemos la extensión ), no podrán saltar el filtro, si desea conseguir Mime Types para algún tipo de archivo en especifico revise el archivo /etc/mime.types
  4. bannedphraselist: Este archivo mantiene una lista de frases a ser baneadas.
  5. bannedregexpurllist: Este archivo es uno de los más importantes de DansGuardian, ya que permite bloquear sitios basado en expresiones regulares, una de ellas por ejemplo ( que no se encuentra allí ) para banear sitios de invite y azar es la siguiente: (poker|casino|kasino|poquer|blackjack)
  6. bannedsitelist: Cual dirección ip o dominio que coloquemos aca será bloqueado inmediatamente ( no es necesario colocar www. ó http:// )
  7. bannedurllist: En este archivo especificamos url's o direcciones en especifico de un sitio, el cual será baneado, pero dejando el resto el sitio intacto
  8. banneduserlist: Este archivo puede contener un listado de usuarios del proxy baneados, solo es util si tenemos autenticación de usuarios en el proxy.
  9. contentregexplist: Este archivo contiene algunas expresiones regulares más complejas, pero que no hacen que el sitio sea baneado, si no más bien reemplazan la expresión encontrada por otra cosa, frase o palabra   ( adentro hay un ejemplo interesante para remover pop-ups ).
  10. exceptioniplist: Este archivo debe contener un listado de direcciones ips ( de usuarios de una red LAN ), a las cuales el filtro de contenido no afectará, como estamos usandolo localmente, esta función no es útil.
  11. exceptionphraselist: Este archivo debe contener un listado de palabras que si son encontradas en el mismo sitio junto con alguna de bannedphraselist, el sitio no podrá ser baneado, por ejemplo si se consigue la palabra sex en el mismo sitio web que education o medical.
  12. exceptionsitelist: Acá se especificarán un listado de sitios webs, que no deberán ser baneados, probablemente quiera que cualquier sitio .edu ó .gob no sea bloqueado por el filtro de contenido.
  13. exceptionurllist: si se tiene algún sitio baneado completamente, podrás especificar acá un área en especifico de este, para que pueda ser visualizada ( manteniendo el ban al resto del sitio ).
  14. exceptionuserlist: Cualquier usuario que coloques acá no será afectado por el filtro de contenido.
  15. greysitelist: Es muy similar a exceptionsitelist, la unica diferencia es que exceptionsitelist desbanea un sitio por completo, en cambio greysitelist desbanea si el sitio se encuentra bloqueado directamente, pero deja que pueda ser analizado por DansGuardian en sistaxis de contenido. 
  16. greyurllist: Parecido a greysitelist pero en vez de ser a un sitio completo es a un área de el, definido por un url.
  17. pics: Esto habilita filtraddo de contenido de imágenes basado en sus colores RGB y determinando el nivel de desnudez de la imágen ( en caso de ser una persona ), por razones de rendimiento y que esta funcionabilidad esta considerada aún como experimental, desactivarla colocando el valor enablePICS = off
  18. weightedphraselist: En este archivo se expecifican las rutas a otros archivos en donde se encuentran listados de palabras y porcentajes de ponderación de ellas, debido a estos niveles DansGuardian encuentra conveniente banear o no cierta página, es decir si se encuentra la palabra sexo en una página web, esta no es baneada inmediatamente, debe repetirse cierto numero de veces en dicha página para que pueda ocurrir, esto evita que muchos sitios puedan ser baneados accidentalmente, es válido ir modificando estos valores según nuestra necesidad a medida que vamos usando el filtro de contenido.
    Como recomendación el archivo que más se usa es el de bannedsitelist, para mantener ordenados los sitios baneados  en este archivo se especifican las rutas a otros archivos de texto, los cuales son leidos ( dichos sitios son baneados directamente ), estos archivos pueden ser enriquecidos con tablas de sitios ya establecidas o blacklist ( que otras personas han recopilado ), de esta manera se agiliza el trabajo de DansGuardian, ya que este no tiene que "leer" cada página visitada, si no que ya cuenta con algunos listados ya pre-establecidos.

    Un sitio donde se pueden conseguir estos listados de archivos ( e incluso un script para actualizar el listado automáticamente ) o blacklist es:
http://urlblacklist.com/?sec=download


Consideraciones finales

    Podrán haber otras maneras de implementar un filtro de contenido con otros programas, incluso otras maneras de implementarlo con las herramientas acá descritas, si encuentra una mejor, por favor comparta y ayude a mejorar este pequeño manual.
	Si desea un mejor control de lo que hacen los usuarios de su computador, debería investigar la herramienta sabayon, la cual mezclada con gconf-editor
podrá ayudarlo a generar perfiles de usuario para gnome, puede conseguir información acerca de sabayon en los siguientes links:


http://www.gnome.org/projects/sabayon/

http://www.gnome.org/~seth/blog/sabayon

    Podrá encontrar información de las cadenas modificables de un perfil de gnome a través de gconf-editor en:

http://www.gnome.org/~bmsmith/gconf-docs/es/index.html

    No explicamos estas herramientas acá debido a que no es la finalidad de este documento, probablemente me anime a escribir algo sobre estas herramientas en el futuro.

    Si usted encuentra algún error ortografico, de sintaxis, desea hacer alguna corrección de este manual o simplemente quiere hacer una sugerencia, por favor no dude en comunicarse a mi correo electronico para hacermelo saber.

Direcciones útiles
:
  1. http://www.zensur.freerk.com/index-es.htm#1.1  | Como evitar la censura en Internet
  2. http://linsec.ca/bin/view/Main/DansGuardian | Tutorial de DansGuardian en Ingles
  3. http://dansguardian.org/downloads/DG2.9.7.1_Squid_Slackware_10.2.pdf | Tutorial en Castellano de DansGuardian en pdf
  4. http://dansguardian.org/?page=documentation | Documentación sobre DansGuardian en el sitio oficial del mismo
  5. http://mirrors.evis.net.ph/dansguardian/downloads/detailedinstallation2-spanish.html | Otra guia de DansGuardian en Castellano
  6. http://tech.groups.yahoo.com/group/dansguardian/ | Grupo de discusión a través de lista de correo de DansGuardian
  7. http://www.squid-cache.org/ | Sitio oficial de Squid
  8. http://bulma.net/impresion.phtml?nIdNoticia=441 | Tutorial sobre Squid en castellano
  9. http://www2.idesoft.com/squid/manual.php | Otro Tutorial sobre Squid
  10. http://sarg.sourceforge.net/pt-sarg.php | Sitio oficial de SARG
  11. http://ferrolmoda.com/ficheros/final/sarg/sarg-0.1-es-ES.pdf | Tutorial sobre SARG en castellano en formato pdf
  12. http://www.cantv.net/ciencia/seguridadeninternet/control_parental_info.asp | Control Parental ( Link Informativo )
  13. http://www.el-carabobeno.com/p_pag_not.aspx?art=a120907c07&id=t120907-c07 | Venezuela exige mediante decreto el uso de filtro de contenido en cibers
Copyleft:

    Puedes copiar parte o todo este tutorial en tu web site o donde quieras con la intención o fin que mejor te parezca, con tal que dejes el contenido tal cual como esta, si en planeas usar solo alguna parte, por favor en alguna parte menciona el link original de donde se puede descargar este documento para que las personas que lo lean puedan conseguir versiones actualizadas del mismo, con el debido credito de los autores y si lo usas, me sentiría agradecido de que me informaras al respecto, para tener una idea de la difusión de este material.