DansGuardian (http://dansguardian.org/) és una utilitat que té com a finalitat fer de filtre de continguts, treballa conjuntament amb SQUID (servidor proxy) APACHE2 (servidor WEB) i IPTABLES (talla focs de linux).
DansGuardian es situa entre el navegador WEB i el proxy. interceptant i modificant la comunicació entre tots dos. Es filtren les pàgines visitades, això té especial interès a la xarxa escolar.
DANSGUARDIAN disposa de un gran nombre d'arxiu que faciliten adaptar les característiques del filtre a les necessitats de la nostra xarxa escolar, personalitzant el servei.
Els navegadors de les estacions de la xarxa demanen pàgines WEB.
DANSGUARDIAN reb aquestes peticions, redireccionades des del proxy de la xarxa.
Un cop filtrades es presenten, o bé es denega la visutalització.
En el cas del nostre centre disposem d'una xarxa del projecte HEURA, del departament d'Ensenyament. En aquesta xarxa es disposa d'una VLAN DOCENT, per tal d'evitar haver de modificar la configuració dels switchs de la xarxa, disposarem d'una única xarxa 192.168.0.0/24, on es troben totes les estacions.
En altres xarxes es podria definir una subxarxa, que connectarà amb internet a través del servidor on es troba DANSGUARDIAN, que tindrà funcions de router. No és el nostre cas.
Internament el servidor passarà la comunicació de la placa eth1 a eth0
Per un correcte funcionament del sistema es necessita tenir instal·lats: SQUID, APACHE2, DANSGUARDIAN, IPTABLES.
Si heu seguit tot el protocol de la instal·lació del servidor de comunicacions POLARIS, ja està instal·lat el proxy SQUID, en cas contrari caldrà instal·lar-ho:
apt-get install squid3
apt-get install apache2 dansguardian iptables
Es configura les interfícies del servidor /etc/network/interfaces
# This file describes the network interfaces available on your system # and how to activate them. For more information, see interfaces(5). # The loopback network interface auto lo iface lo inet loopback # The primary network interface auto eth0 iface eth0 inet static address 172.16.10.3 netmask 255.255.255.0 network 172.16.10.0 broadcast 172.16.10.255 gateway 172.16.10.1 # dns-* options are implemented by the resolvconf package, if installed dns-nameservers 192.168.0.6 213.176.161.16 213.176.161.18 dns-search intracentre auto eth1 iface eth1 inet static address 192.168.0.6 netmask 255.255.255.0 network 192.168.0.0 broadcast 192.168.0.255 dns-nameservers 192.168.0.6 213.176.161.16 213.176.161.18 dns-search intracentre auto eth1:1 iface eth1:1 inet static address 192.168.0.4 network 192.168.0.0 netmask 255.255.255.0 broadcast 192.168.0.255 dns-nameservers 192.168.0.6 213.176.161.16 213.176.161.18 dns-search intracentre
Cal assegurar la següent configuració del servidor PROXY, per això cal modificar l'arxiu /etc/squid3/squid.conf:
acl localnet src 192.168.0.0/24 http_access allow localnet http_access allow localhost http_access deny all http_port 3128 cache_dir ufs /var/spool/squid 7168 16 256
La configuració actual de SQUID3 està recollida en aquest arxiu.
Cal habilitar el redireccionament de paquets, per això cal editar l'arxiu /etc/sysctl.conf, i descomentar les línies que habiliten el redireccionament de paquest per IPv4 i Ipv6:
net.ipv4.ip_forward = 1 net.ipv6.conf.all.forwarding = 1
Es farà una primera configuració de DANSGUARDIAN, posteriorment ja afinarem una mica més la seva configuració.
Cal editar l'arxiu /etc/dansguardian/dansguardian.conf.
# UNCONFIGURED - Please remove this line after configuration # Comentar aquesta línia loglocation = '/var/log/dansguardian/access.log' # lloc del log d'accessos a DANSGUARDIAN filterip = # màquina on es troba DANGUARDIAN filterport = 8080 # port del filtre del DANSGUARDIAN proxyip = 127.0.0.1 # adreça del PROXY proxyport = 3128 # port del PROXY languagedir = '/etc/dansguardian/languages' # carpeta dels idiomes language = 'spanish' # idioma de la seva interfície accessdeniedaddress = 'http://192.168.0.6/cgi-bin/dansguardian.pl' # servidor web
La configuració actual de DansGuardian està recollida en aquest arxiu.
En aquest punt de la instal·lació es pot verificar si DANSGUARDIAN està operatiu:
IPTABLES és el tallafocs que fa servir LINUX. Caldrà especificar algunes normes, i verificar el seu funcionament.
iptables -L -t nat | Mostra les regles que se apliquen, a la taula de la xarxa |
iptables -L | Mostra les regles que s'apliquen a altres taules del firewall. |
Per a la configuració de l'entorn de proves de vBox, les normes que ha aplicat han estat:
iptables -t nat -A POSTROUTING -s 10.23.67.0/24 -o eth0 -j MASQUERADE iptables -t nat -A PREROUTING -s 10.23.67.0/24 -p tcp --dport 80 -j REDIRECT --to-ports 8080 iptables -t nat -A POSTROUTING -s 169.254.0.0/255.255.0.0 -o eth0 -j MASQUERADE iptables -t nat -A PREROUTING -s 169.254.0.0/255.255.0.0 -p tcp --dport 80 -j REDIRECT --to-ports 8080 iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -o eth0 -j MASQUERADE iptables -t nat -A PREROUTING -s 192.168.0.0/24 -p tcp --dport 80 -j REDIRECT --to-ports 8080 iptables -t nat -A PREROUTING -i eth1 -p tcp --dport 80 -j REDIRECT --to-ports 8080
Tabla de rutas IP del núcleo Destino Pasarela Genmask Indic Métric Ref Uso Interfaz 192.168.0.0 0.0.0.0 255.255.255.0 U 1 0 0 eth0 192.168.0.0 0.0.0.0 255.255.255.0 U 2 0 0 eth1 10.23.67.0 0.0.0.0 255.255.255.0 U 0 0 0 pan1 169.254.0.0 0.0.0.0 255.255.0.0 U 1000 0 0 eth0 0.0.0.0 192.168.0.244 0.0.0.0 UG 0 0 0 eth0
Un cop aplicades aquestes regles, iptables -L -t nat ha donat aquesta resposta en el servidor vBox
Chain PREROUTING (policy ACCEPT) target prot opt source destination REDIRECT tcp -- 10.23.67.0/24 anywhere tcp dpt:www redir ports 8080 REDIRECT tcp -- link-local/16 anywhere tcp dpt:www redir ports 8080 REDIRECT tcp -- 192.168.0.0/24 anywhere tcp dpt:www redir ports 8080 REDIRECT tcp -- anywhere anywhere tcp dpt:www redir ports 8080 Chain OUTPUT (policy ACCEPT) target prot opt source destination Chain POSTROUTING (policy ACCEPT) target prot opt source destination MASQUERADE all -- 10.23.67.0/24 anywhere MASQUERADE all -- link-local/16 anywhere MASQUERADE all -- 192.168.0.0/24 anywhere
Es fa un redireccionament dels ports 80 i 3128, cap a DANSGUARDIAN, de manera que tant les crides al proxy, com les sortides directes a internet es filtran perl gestor de continguts
iptables -t nat -A PREROUTING -s 192.168.0.0/24 -p tcp -m tcp --dport 80 -j REDIRECT --to-ports 8080 iptables -t nat -A PREROUTING -s 192.168.0.0/24 -p tcp -m tcp --dport 3128 -j REDIRECT --to-ports 8080 iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -j MASQUERADE
Per tal de que en l'arrencada del servidor s'estableixin les regles que acabem de fixar a IPTABLES, cal fer els següents passos:
ln -s /etc/init.d/nat /etc/rc2.d/S60nat
Per tal de fer operatiu l'ús del filtre DANSGUARDIAN, a les màquines del centre, caldrà indicar a totes les màquines que facin servir l'adreça de la màquina que té el filtre, com a passarel·la d'internet. La millor opció serà modificar l'arxiu /etc/network/interfaces.
# The loopback network interface auto lo iface lo inet loopback # The primary network interface auto eth0 iface eth0 inet static address 192.168.0.115 netmask 255.255.255.0 network 192.168.0.0 broadcast 192.168.0.255 gateway 192.168.0.6
nameserver 192.168.0.4
L'últim pas d'aquest procés serà la configuració dels filtres que es faran servir, llocs web que estaran denegats o permesos, adreces IP que podran evitar el filtre, paraules que es filtraran i nivell de filtrat… També es po determinar un nivell de filtrat en funció d'un horari, creant uns duplicats dels llocs web no permesos i permesos i emprar cron, per activar un arxiu o un altre i reiniciar el servei.
Arxiu | Descripció |
bannedphraselist | conté una llista de frases prohibides. Les frases poden estar entre <>. Per defecte inclou una llista exemple en anglès. Les frases poden contenir espais. Es poden fer servir combinacions de frases, que si es roben en una pàgina seran bloquejades. |
bannedmimetypelist | conté una llista dels tipus MIME prohibits. Su una URL retorna un tipus MIME inclós a la llista, es bloquejarà. Per defecte es presenten alguns tipus MIME que seran bloquejats. |
bannedextensionlist | conté una llista d'extensió d'arxius no permeses. Si una URL termina amb alguna extensió de la llista, es bloquejarà. S'inclou un arxiu exemple on es mostra com denegar les extensions. |
bannedregexpurllist | conté una llista d'expressions regulars, que si es contenen a la URL seran bloquejades. |
bannedsitelist | conté la llista dels llocs prohibits. El noms de domini indicats es bloquegen en la sera totalitat. Si només es vol bloquejar marts d'un lloc web, cal fer servir l'arxiu bannedurllist. Per a bloquejar un lloc, però exceptuar algunes part, caldrà fer les indicacions oportunes a l'arxiu exceptionsitelist. Hi ha la possibilitat de descarregar-se llistes negres de llocs web i de URL i posar-les als arxius corresponents. Aquestes llistes es troben a http://dansguardian.org/?page=extras. |
bannedurllist | permet bloquejar parts específiques d'un lloc web. |
banneduserlist | Llista de noms d'usuaris que seran bloquejats. |
Arxiu | Descripció |
exceptionsitelist | conté una llista amb els noms de domini que no seran filtrats. És important tenir en compta que en el nom de domini no s'ha d'incloure http:// o www. |
exceptioniplist | conté una llista de les adreces IP de les màquines que no seran filtrades i per tant tindran accés lliure a tots els continguts. |
exceptionuserlist | llista dels noms d'usuaris que no seran filtrats, cas de fer servir el control d'accés per usuari. |
exceptionphraselist | llista de les frases que, si apareixen en una pàgina web, passaran el filtre. |
Donades les limitacions d'ample de banda de l'ADSL del centre, caldrà filtrar determinats WEB's que consumeixen un ample de banda gran, o determinades WEB que els alumnes no han de poder accedir en horari escolar.
Aquest filtre s'activarà en unes hores determinades i es desactivarà en finalitzar les classes.
L'estratègia que seguirem serà fer dos arxiu bannedsitelist, un amb els llocs limitats en horari escolar i un altre sense la limitació horària.
Mitjançant el cron del servidor es copiarà un o l'altre activant-se.
Amb gedit afegirem les línies corresponents a l'arxiu de llocs denegats. Enregistrarem els arxius amb els noms: bannedsitelist_HorariClasse i bannedsitelist_HorariNoClasse.
Crearem aquest codi en un arxiu que nomenarem DansGuardianLimitHorari.sh, donant-li permisos d'execució en una carpeta que crearem a root /root/procedimentsSH. Aquest procediment sobre escriu l'arxiu bannedsitelist, amb l'arxiu de filtre que es vol fer servir i es reinicia el servidor DANSGUARDIAN
#### # DansGuardianLimitHorari # # Aques procediment sobre escriu l'arxiu amb els llocs web denegats en horari de classe # # Cal passar dos paràmetres # $1 - Indicant el nom de l'arxiu que s'activarà: # aquests arxius poden ser: # bannedsitelist_HorariClasse # bannedsitelist_HorariNoClasse # # if [ $# -lt 1 ]; then echo "Necessites passar el nom de l'arxiu bannedsitelist que vols activar" echo " bannedsitelist_HorariClasse / bannedsitelist_HorariNoClasse" exit 1 fi # rm /etc/dansguardian/lists/bannedsitelist cp /etc/dansguardian/lists/$1 /etc/dansguardian/lists/bannedsitelist /etc/init.d/dansguardian restart echo "final del procediment"
Cal programar aquesta tasca a l'arxiu /etc/crontab Per aquesta finalitat inserirem aquestes línies a l'arxiu /etc/crontab
### # Control horari de dansguardian # 0 9 * * * 1,2,3,4,5 root /root/procedimentsSH/DansGuardianLimitHorari.sh bannedsitelist_HorariClasse 0 11 * * * 1,2,3,4,5 root /root/procedimentsSH/DansGuardianLimitHorari.sh bannedsitelist_HorariNoClasse 30 11 * * * 1,2,3,4,5 root /root/procedimentsSH/DansGuardianLimitHorari.sh bannedsitelist_HorariClasse 30 12 * * * 1,2,3,4,5 root /root/procedimentsSH/DansGuardianLimitHorari.sh bannedsitelist_HorariNoClasse 0 15 * * * 1,2,3,4,5 root /root/procedimentsSH/DansGuardianLimitHorari.sh bannedsitelist_HorariClasse 30 16 * * * 1,2,3,4,5 root /root/procedimentsSH/DansGuardianLimitHorari.sh bannedsitelist_HorariNoClasse