Martes 26 de Marzo, 2002 - Borrador 4a
Escrito por Daniel Barron, modificado por GB y traducido por Julian Coccia
DansGuardian es in filtro directo que se ubica entre el el cliente Web (web browser) y el Servidor Proxy Squid. Dansguardian acepta conexiones en el puerto 8080 y se conecta a squid en el puerto 3128. Por lo tanto, es importante que no haya otro servicio utilizando el puerto 8080.
Tambien se necesita un Servidor Web. El servicio Apache (httpd) que se incluye con RedHat 6.2 es perfecto y seria dificil encontrar un mejor servidor para tal efecto. El Servidor se usa para mostrar un script cgi escrito en perl que notifiaca al usuario en caso de haber un 'Acceso Denegado'.
Se necesitan tambien varias herramientas de desarrollo estandar como glibc, autoconf, gcc and make. Los usuarios de Debian tambien necesitaran zlib1g-dev. La instalacion predeterminada de Redhat 6.2 y muchas otras ya incluyen dichas herramientas, por lo que no necesitaria preocuparse por las mismas.
La mayoria del tiempo, durante la instalacion necesitara estar conectado como root o para usuarios experimentados, el proceso completo directamente puede efectuarse como root.
Asegurese de que todo lo mencionado previamente esta instalado y funcionando correctamente antes de proseguir.
Obviamente necesitara DansGuardian. Lo puede obtener aqui: DansGuardian, o en el sitio US mirror.
Es recomendable instalar desde el codigo fuente ya que siempre esta al dia. Sin embargo, hay paquetes pre-compilados para distintas distribuciones. A fines instructivos, esta guia detalla el proceso de instalacion desde el codigo fuente.
Si desea instalar DansGuardian en forma rapida y evitar los detalles de esta guia, no olvide que puede contar con la Guia de Instalacion Rapida.
1. Ponga DansGuardian-2.2.*.source.tar.gz en un area temporal y descomprima el archivo con tar -zxpf. Esto creara el sub-directorio DansGuardian-2.2.*.
DansGuardian usa el autoconf de gnu, auto-generando el archivo Makefile con el script "configure".
2. Ingrese al nuevo directorio con cd. Ejecute el script "configure" con la opcion de ayuda (./configure --help) para ver las opciones de configuracion (vea la tabla a continuacion).
opcion |
descripcion |
valor predeterminado |
bindir |
Donde se instalan los binarios o ejecutables | /usr/sbin/ |
sysconfdir |
Donde se instalan los archivos de configuracion y datos | /etc/dansguardian/ |
sysvdir |
Donde se instala el script de inicio | /etc/rc.d/init.d/ |
cgidir |
Ubicacion del directorio cgi-bin | /home/httpd/cgi-bin/ |
mandir |
Ubicacion de los manuales | /usr/man/ |
logdir |
Donde se crearan los archivos historicos (logs) | /var/log/dansguardian/ |
runas_usr |
El usuario de sistema corre como | nobody |
runas_grp |
El grupo del usuario del sistema es | nobody |
piddir |
Ubicacion del archivo de identificacion del proceso (pid) | /var/run/ |
3. Ejecute "configure" con las opciones deseadas. Por ejemplo vea la seccion Ejemplos de Scripts de Configuracion mas adelante.
Los usuarios de RedHat 6.2 y 7.0 users pueden usar las configuraciones predeterminadas. Los usuarios de RedHat 7.1 y 7.2 necesitaran especificar la opcion cgidir.
Usuarios de Solaris, OpenBSD y FreeBSD necesitaran ajustar casi todas las opciones en forma manual.
4. Modifique el archivo Makefile y verifique que todos los parametros son correctos. De no ser asi, ejecute el script nuevamente.
Si no esta familiarizado con archivos Makefile, saltee este paso.
5. Ejecute make para compilar DansGuardian (gmake en Solaris).
6. Ejecute make install para crear la estructura de directorios, instalar el programa y archivos en los directorios elejidos y ajustar los permisos en forma apropiada.
7. Ejecute make clean para eliminar los archivos no necesarios.
8. Cuando una pagina es denegada, DansGuardian redireccionara al usuario al script cgi perl en su servidor web, donde el usuario vera el reporte.
De esta forma es facil personalizar los mensajes que el usuario recibira. Este servidor no necesariamente tiene que correr en el mismo ordenador donde
corre el servicio DansGuardian. Sin embargo, de no estar en el ordenador local, tendra que enmendar o eliminar la linea que especifica la ubicacion del script perl en el archivo Makefile.
Para configurar la direccion del servidor web que mostrara la pagina con el reporte de error, modifique la variable accessdeniedaddress dentro del archivo dansguardian.conf (vea sysconfdir arriba). Para mas opciones de configuracion, vea la seccion Opciones Avanzadas
9. Por ultimo, debe configurar la rotacion de los archivos historicos (logs). La rotacion de los historicos evitara que el crecimiento desmedido de los historicos llene el sistema de archivos.
La mayoria de los servicios rotan sus historiales una vez por semana. Con DansGuardian, hay cinco archivos historicos: access.log, access.log.1,
access.log.2 ... y asi sucesivamente hasta 4. Todas las semanas, el archivo mas antiguo de los cinco es eliminado y los nombres de los demas archivos se incrementan en uno y un nuevo archivo access.log es creado.
El script Makefile copia el script de rotacion de historiales al directorio de configuracion. Es necesario entonces agendar la ejecucion de este proceso de la siguiente manera:
Ejecute crontab -e (como root) y agrege la siguente linea:
59 23 * * sat /etc/dansguardian/logrotation
Grabe el archivo. Esto agendara la rotacion a las 23:59 todos los sabados. Por supuesto, usted puede personalizar este parametro y modificar el script de rotacion como usted lo prefiera.
DansGuardian ya esta listo. Ahora puede iniciarlo simplemente ejecutando el binario (por ejemplo, escriba dansguardian y presione Retorno).
Puede detenerlo con dansguardian -q. O use el script provisto SysV(-like). Ejecute dansguardian -h
para ver otras opciones disponibles.
A continuacion vera algunos ejemplos de opciones para el script de configuracion para diferentes distribuciones:
FreeBSD
La ejecucion con los valores predeterminados deberia funcionar, siempre y cuando la instalacion de FreeBSD haya sido efectuada ubicando los programas en forma predeterminada.
./configure --cgidir=/usr/local/www/cgi-bin/ \
--sysconfdir=/usr/local/etc/dansguardian/ \
--sysvdir=/usr/local/etc/rc.d/ \
--bindir=/usr/local/sbin/ \
--mandir=/usr/local/man/
OpenBSD
La ejecucion con los valores predeterminados deberia funcionar, siempre y cuando la instalacion de OpenBSD haya sido efectuada ubicando los programas en forma predeterminada.
./configure --cgidir=/var/www/cgi-bin/ \
--sysconfdir=/usr/local/etc/dansguardian/ \
--sysvdir=/usr/local/etc/rc.d/ \
--bindir=/usr/sbin/ \
--mandir=/usr/share/man/
RedHat 6.2/7.0
Tambien es posible ejecutar "configure" (./configure) con los valores predeterminados.
RedHat 7.1/7.2
./configure --sysconfdir=/usr/local/etc/dansguardian/ \
--sysvdir=/etc/rc.d/init.d/ \
--cgidir=/var/www/cgi-bin/
Mandrake 7.2
./configure --mandir=/usr/share/man/
Mandrake 8/8.1
./configure --mandir=/usr/share/man/ \
--cgidir=/var/www/cgi-bin/
El usuario de sistema 'squid' puede tambien ser apropiado en lugar de 'nobody' cuando configure el valor del parametro "runas".
SuSE 7.2
./configure --runas_grp=nogroup \
--cgidir=/usr/local/httpd/cgi-bin/
SuSE 7.3
./configure --runas_grp=nogroup \
--cgidir=/usr/local/httpd/cgi-bin/ \
--sysvdir=/etc/init.d/
Solaris
Solo se ha testeado Solaris 8 (7/01). DansGuardian necesita la version GNU de make (gmake), y GCC version 2.95.3 (3.01
puede funcionar, pero no ha sido testeado todavia y por lo tanto, no recomendado).
Ambos gmake y GCC 2.95.3 estan incluidos en el Sistema Operativo en el "Companion CD", y por lo general se instalan en /opt/sfw/bin.
Para asegurar que existen en esta ubicacion, simplemente haga (in csh; la sintaxis de bash es diferente):
setenv PATH /opt/sfw/bin\:$PATH
Para compilar y configurar, haga:
./configure --bindir=/opt/dansguardian/sbin/ \
--sysconfdir=/opt/dansguardian/etc/ \
--sysvdir=/etc/init.d/ \
--cgidir=/var/apache/cgi-bin/ \
--mandir=/opt/dansguardian/man/ \
--logdir=/opt/dansguardian/log/
Despues de haber modificado cualquier archivo de configuracion, necesitara reiniciar DansGuardian. Para esto, ejecute el script sysv con la opcion "restart". Por ejemplo, para usuarios de Redhat ejecute en una terminal:
/etc/rc.d/init.d/dansguardian restart
o para OpenBSD:
/usr/local/etc/rc.d/dansguardian.sh restart
Ademas, ejecute dansguardian -q seguido por dansguardian.
Existe un archivo de configuracion principal, varias listas de frases prohibidas y una lista de excepciones. Las mismas se detallan de la siguiente manera:
Lista de nombre de usuario que no seran filtrados (para esto se necesita autenticacion basica o "ident").
Tambien puede usar combinaciones de frases, que de ser encontradas en una pagina, seran bloqueadas.
Este archivo contiene una lista de expresiones regulares (regexp) a ser bloqueadas. Para mas informacion sobre expresiones regulares, visite (en ingles) a href="http://www.opengroup.org/onlinepubs/7908799/xbd/re.html">este lugar.
Este archivo contiene una lista de sitios prohibidos. Si ingresa un nombre de dominio aqui, todo el sitio correspondiente al dominio sera bloqueado. Para bloquear partes especificas de un sitio, vea "bannedurllist". Ademas, si asi lo quisiera, puede bloquear todos los sitios con exepcion de los especificados en exceptionsitelist. Tambien puede bloquear sitios especificados con direcciones IP e incluir una coleccion de listas negras squidGuard. Para habilitar dichas listas, obtengalas en la seccion de extras. Simplemente ubique las listas donde lo crea apropiado y quite el comentario de las lineas correspondientes a las listas negras squidGuard al final del archivo bannedsitelist, verificando que las ubicaciones de los archivos son correctas. Para listas negras de URLs, modifique el archivo bannedurllist de manera similar.
Este archivo le permite bloquear partes especificas de un site en lugar del sito entero. Para bloquear un sitio entero, vea el archivo bannedsitelist. Para habilitar el bloqueo de listas negras squidGuard, necesita bajar las listas y modificar la seccion de listas negras squidGuard al final del archivo. (de la misma forma en que bannedsitelist se ha explicado anteriormente).
Para mas detalles e information sobre PICS, visite (en ingles) este sitio.
La seccion ICRA se explica por si misma. Un valor 0 significa que nada en esta categoria esta permitido, mientras que un valor 1 lo permite. Por ejemplo:
ICRAnudityartistic = 1
permite los desnudos artisticos. Para informacion mas detallada visite (en ingles) este sitio.
RSAC es una version antigua de ICRA. Estos valores varian de 0 (nada es permitido) pasando por 2 (valor predeterminado) hasta 4, que permite todo en la categoria. Para informacion mas detallada visite (en ingles) este sitio.
evaluWEB utiliza un sistema de calificacion similar a la sistema usado en Filmes Britanicos:
0 = U (Universal, para todas las edades)
1 = PG (Se recomienda la presencia de los padres)
2 = 18 (Solo para mayores de 18)
Similar a RSAC, pero contiene un rango mas amplio de categorias con valores desde 0 = filtrar todo hasta 9 = permitir todo. Para informacion mas detallada visite (en ingles) este sitio.
Vea evaluWEB. Para informacion mas detallada visite (en ingles) este sitio.
Otro sistema mas para calificacion. Vea (en ingles) este sitio para mas informacion.
La unica configuracion vital aqui es el valor de accessdeniedaddress . El mismo debe equivaler a la direccion URL (no la ubicacion fisica del archivo) del servidor Apache con el script perl de reporte de acceso denegado. Por lo general, Apache esta instalado en el mismo servidor Squid y DansGuardian. De asi desearlo, esta direccion puede ser cualquier pagina en cualquier servidor web.
Esta opcion especifica el numero de procesos a iniciar para aceptar conecciones. Esto puede evitar ataques de DoS afectando a un numero ilimitado de procesos. En sitios con mucho trafico, este valor deberia ser duplicado o triplicado.
Esta opcion registra en el archivo historico (log) informacion de 'debug' acerca de estados fork() y accept(), lo cual puede por lo general ser ignorado.
Estos estados son registran por syslog y es seguro configurarlo tanto en si o no ('on' u 'off').
Debemos asegurarnos que squid no permitira que ningun cliente web se conecte directamente, salteando a DansGuardian. Se asume que el acceso al puerto de Squid esta bloqueado via firewall o tables de IP (ipchains o iptables) y que la unica forma de acceder a Squid es atraves de DansGuardian. Esto se puede garantizar de varias maneras.
Puede modificar las reglas ACL para que solo 'localhost' tenga acceso. A continuacion se muestra un ejemplo en el archivo squid.conf:
# INSERT YOUR OWN RULE(S) HERE TO ALLOW ACCESS FROM YOUR CLIENTS # acl localnet src 192.168.42.0/255.255.255.0 http_access allow localnet http_access allow localhost http_access deny all
Note que se ha agregado el comentario # a ambas lineas que especifican 'localnet'. Por lo general la configuracion predeterminada de Squid solo permite acceso a localhost, por lo que puede que no necesite modificar esta configuracion.
Con autenticacion proxy, se torna un poco mas complejo. Sin DansGuardian en el archivo squid.conf, tenemos:
authenticate_program /usr/bin/smb_auth -W DOMAIN -U 192.168.0.2 acl domainusers proxy_auth REQUIRED http_access allow domainusers http_access deny allLo cual permite acceso a los usuarios autenticados desde cualquier lugar.
Sin embargo, tendria sentido dejar que el trafico SSL pase directo sin pasar por DansGuardian, pero al mismo tiempo evitar que el trafico a otros puertos saltee a DansGuardian. Por lo tanto, la seccion se veria de la siguiente forma:
authenticate_program /usr/bin/smb_auth -W DOMAIN -U 192.168.0.2 acl domainusers proxy_auth REQUIRED acl linuxserver src 192.168.0.1/255.255.255.255 acl ntserver src 192.168.0.2/255.255.255.255 http_access allow linuxserver http_access allow ntserver http_access allow domainusers localhost http_access allow CONNECT SSL_ports http_access deny allPor lo tanto para todo acceso web (SSL o no), el usuario necesita ser autenticado, pero SSL puede pasar en forma directa salteando DansGuardian. Tambien se le permite a los servidores NT y Linux saltear el filtrado accediendo a Squid directamente.
Asumiento que el servidor Linux que oficia de Web Proxy y servidor Web Intranet se encuantra en la direccion IP 192.168.0.1, y que en este mismo servidor se ha instalado DansGuardian aceptando conexiones en el puerto 8080.
El cliente web se configura especificando que el servidor proxy http esta en la IP 192.168.0.1 en el puerto 8080. Tambien puede especificar proxy para FTP a la misma direccion - se ha reportado que funciona. Eso es todo. Pero para mayor eficiencia, seria bueno especificar 'sin proxy' para la direccion local del apache - 192.168.0.1 en este caso. Si usted tiene un servidor DNS funcionando, puede especificar la direccion de su server local. Aunque yo prefiero no hacerlo.
Si prefiere que su comentario no sea publicado o si es de indole privada (por ejemplo para consultas de precios o comerciales) me puede escribir (en ingles) directamente a daniel arroba jadeb punto com.
Tambien puede obtener mas ayuda en el sitio de DansGuardian: dansguardian.org.
Sobre comentarios acerca de esta documento, envie un email (en ingles) a gb arroba dansguardian punto org o al traductor julian arroba coccia punto com