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.
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:
- 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
- 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
- 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
- bannedphraselist: Este archivo mantiene una lista de frases a ser baneadas.
- 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)
- bannedsitelist: Cual dirección ip o dominio que coloquemos aca será bloqueado inmediatamente ( no es necesario colocar www. ó http:// )
- 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
- banneduserlist:
Este archivo puede contener un listado de usuarios del proxy baneados,
solo es util si tenemos autenticación de usuarios en el proxy.
- 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 ).
- 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.
- 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.
- 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.
- 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 ).
- exceptionuserlist: Cualquier usuario que coloques acá no será afectado por el filtro de contenido.
- 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.
- greyurllist: Parecido a greysitelist pero en vez de ser a un sitio completo es a un área de el, definido por un url.
- 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
- 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:
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:- http://www.zensur.freerk.com/index-es.htm#1.1 | Como evitar la censura en Internet
- http://linsec.ca/bin/view/Main/DansGuardian | Tutorial de DansGuardian en Ingles
- http://dansguardian.org/downloads/DG2.9.7.1_Squid_Slackware_10.2.pdf | Tutorial en Castellano de DansGuardian en pdf
- http://dansguardian.org/?page=documentation | Documentación sobre DansGuardian en el sitio oficial del mismo
- http://mirrors.evis.net.ph/dansguardian/downloads/detailedinstallation2-spanish.html | Otra guia de DansGuardian en Castellano
- http://tech.groups.yahoo.com/group/dansguardian/ | Grupo de discusión a través de lista de correo de DansGuardian
- http://www.squid-cache.org/ | Sitio oficial de Squid
- http://bulma.net/impresion.phtml?nIdNoticia=441 | Tutorial sobre Squid en castellano
- http://www2.idesoft.com/squid/manual.php | Otro Tutorial sobre Squid
- http://sarg.sourceforge.net/pt-sarg.php | Sitio oficial de SARG
- http://ferrolmoda.com/ficheros/final/sarg/sarg-0.1-es-ES.pdf | Tutorial sobre SARG en castellano en formato pdf
- http://www.cantv.net/ciencia/seguridadeninternet/control_parental_info.asp | Control Parental ( Link Informativo )
- 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.