DansGuardian

Sources:

http://wiki.contribs.org/Dansguardian

http://dansguardian.org

Introduction

Dansguardian est un proxy HTTP filtrant très puissant. Il ne se contente pas d'une liste noire (comme SquidGuard par exemple), mais est aussi capable d'analyser le contenu des pages, et d'en bloquer l'accès selon un nombre très important de critères. Une contrib pour SME est disponible.

Installation

Pas très compliqué:

yum --enablerepo=smecontribs install smeserver-dansguardian

Configuration

La configuration elle, est un peu plus velue:

Adresse de la page de blocage

La première chose à faire après avoir installé dansguardian est de configurer l'adresse de la page de blocage, ainsi que la langue. Ces réglages se trouvent dans le fichier de configuration principal de Dansguardian /etc/dansguardian/dansguardian.conf:

HOSTNAME=$(db configuration get SystemName) DOMAINNAME=$(db configuration get DomainName) sed -i -e "s|YOURSERVER.YOURDOMAIN|$HOSTNAME.$DOMAINNAME|g" -e "s|ukenglish|french|g" /etc/dansguardian/dansguardian.conf

Limite de pondération

Lorsque Dansguardian analyse le contenue des pages Web, il attribue une note à différents éléments (mots clefs, expression régulières etc...). Si la somme de ces notes dépasse la limite de pondération, alors l'accès à la page est bloqué. Par défaut, cette limite est de 50, ce qui est un peu faible, nous allons le remonter à 180 par exemple. Ce réglage se fait dans le fichier /etc/dansguardian/dansguardianf1.conf (qui correspond au groupe de filtrage par défaut. Nous verrons par la suite qu'il est possible de définir plusieurs groupes avec des limites de pondération différentes).

sed -i -e "s|naughtynesslimit = .*|naughtynesslimit = 180|g" /etc/dansguardian/dansguardianf1.conf

Filtrage AV

Dansguardian peut soumettre l'ensemble du trafic http (pas https bien évidemment) à un scanner AV (clamd). Pour l'activer:

Il faut d'abord faire pointer dansguardian sur la configuration de clamav (Dansguardian peut utiliser d'autres moteurs d'AV

sed -i -e "s|#contentscanner = '/etc/dansguardian/contentscanners/clamdscan.conf'|contentscanner = '/etc/dansguardian/contentscanners/clamdscan.conf'|" \ /etc/dansguardian/dansguardian.conf

Puis il faut configurer le plugin clamav, pour qu'il utilise le socket de clamd:

sed -i -e "s|clamdudsfile = .*|clamdudsfile = '/var/clamav/clamd.socket'|" \ /etc/dansguardian/contentscanners/clamdscan.conf

On pourra ensuite tester l'efficacité du scanner en essayant de télécharger le faux virus eicar sur http://www.eicar.org. Kaspersky fournit également une page de test d'antivirus: http://support.kaspersky.com/fr/viruses/avtest

Listes noires

Il est possible de rajouter une blacklist. Une très complète peut être télécharger depuis le site http://urlblacklist.com/?sec=download Cette blacklist doit être installée dans /etc/dansguardian/lists/blacklists

wget -O /tmp/bigblacklist.tar.gz "http://urlblacklist.com/cgi-bin/commercialdownload.pl?type=download&file=bigblacklist" tar xvzf /tmp/bigblacklist.tar.gz -C /etc/dansguardian/lists/

Cette archive contient plusieurs sous-répertoire correspondant à des catégories différentes (porno, warez, jeux etc...). Il suffit ensuite d'éditer les fichiers /etc/dansguardian/lists/bannedsitelist et /etc/dansguardian/lists/bannedurllist et de dé-commenter les catégories que l'on souhaite bloquer (le fichier contient des exemples assez explicites):

#Remove the # from the following and edit as needed to use a stock
#squidGuard/urlblacklist blacklists collection.
.Include</etc/dansguardian/lists/blacklists/adult/urls>
.Include</etc/dansguardian/lists/blacklists/aggressive/urls>
#.Include</etc/dansguardian/lists/blacklists/audio-video/urls>
#.Include</etc/dansguardian/lists/blacklists/chat/urls>
#.Include</etc/dansguardian/lists/blacklists/drugs/urls>
#.Include</etc/dansguardian/lists/blacklists/entertainment/urls>
#.Include</etc/dansguardian/lists/blacklists/frencheducation/urls>
.Include</etc/dansguardian/lists/blacklists/gambling/urls>
#.Include</etc/dansguardian/lists/blacklists/government/urls>
#.Include</etc/dansguardian/lists/blacklists/hacking/urls>
#.Include</etc/dansguardian/lists/blacklists/jobsearch/urls>
#.Include</etc/dansguardian/lists/blacklists/kidstimewasting/urls>
#.Include</etc/dansguardian/lists/blacklists/mail/urls>
#.Include</etc/dansguardian/lists/blacklists/news/urls>
.Include</etc/dansguardian/lists/blacklists/porn/urls>
#.Include</etc/dansguardian/lists/blacklists/proxy/urls>
#.Include</etc/dansguardian/lists/blacklists/publicite/urls>
#.Include</etc/dansguardian/lists/blacklists/redirector/urls>
#.Include</etc/dansguardian/lists/blacklists/violence/urls>
.Include</etc/dansguardian/lists/blacklists/virusinfected/urls>
.Include</etc/dansguardian/lists/blacklists/warez/urls>
# You will need to edit to add and remove categories you want

: ajouter mise à jour automatique de la blacklist

Configuration du proxy en mode transparent

C'est pas tout, mais maintenant que dansguardian est configuré, il faut qu'il soit utilisé. Pour l'instant, il faut que les clients spécifient manuellement le proxy dans leur navigateur (port 8080). Il est possible de l'utiliser de façon transparente:

/etc/init.d/dansguardian restart db configuration setprop squid TransparentPort 8080 Transparent yes db configuration setprop dansguardian portblocking yes expand-template /etc/squid/squid.conf squid -k reconfigure expand-template /etc/rc.d/init.d/masq /etc/rc.d/init.d/masq adjust

Il faut ensuite vérifier que:

le proxy fonctionne

le filtrage soit bien effectif (on peut regarder les logs d'accès /var/log/dansguardian/access.log)

Configuration de Squid (log l'adresse d'origine)

Maintenant que tout est en place, nos clients demandent à dansguardian une page, ce dernier transmet la requête à squid, qui récupère la page. Le problème, c'est que maintenant, pour squid, toutes les requêtes viennent de 127.0.0.1. Nous allons modifier cela pour que l'adresse d'origine apparaisse dans les logs (l'adresse d'origine pourra aussi être utilisée pour les ACL, mais attention, cette astuce utilise l'entête X-Forwarded-For, qui n'est pas très fiable car facilement forgeable):

mkdir -p /etc/e-smith/templates-custom/etc/squid/squid.conf cat <<"HERE" > /etc/e-smith/templates-custom/etc/squid/squid.conf/96xForwardedFor acl localhost src 127.0.0.1 follow_x_forwarded_for allow localhost forwarded_for off header_access X-Forwarded-For deny all HERE expand-template /etc/squid/squid.conf squid -k reconfigure

En bonus, la ligne header_access X-Forwarded-For deny all permet de supprimer l'entête X-Forwarded-For à la sortie de Squid, ainsi, les sites externes n'auront pas l'adresse IP d'origine de la requêtes.

Filtrage par IP

Dans la plupart des cas, le filtrage par défaut conviendra, mais dans d'autres cas, il faut pouvoir ajuster les paramètres de filtrage de façon différentes pour certaines personnes. Une des façon de reconnaître la personne à l'origine de la requête est d'utiliser une authentification sur Squid. Mais ce n'est pas très pratique, notamment car le mode transparent est incompatible avec l'authentification (il faudrait donc configurer le proxy en dur sur tout les postes).

Une autre méthode, moins fiable certes, mais beaucoup plus pratique, est d'utiliser l'adresse IP source de la requête.

Cela se déroule en plusieurs étapes:

Déclarer le nombre de groupes

Dansguardian doit connaitre le nombre total de groupe de filtrage. Ce paramètre s'inscrit dans le fichier principal /etc/dansguardian/dansguardian.conf. Par exemple:

sed -i -e "s|filtergroups = .*|filtergroups = 2|" /etc/dansguardian/dansguardian.conf cp -a /etc/dansguardian/dansguardianf1.conf /etc/dansguardian/dansguardianf2.conf

NOTE: pour chaque groupe existant, un fichier correspondant /etc/dansguardian/dansguardianfN.conf doit exister. On peut se baser sur le fichier primaire /etc/dansguardian/dansguardianf1.conf comme dans cet exemple.

Définir les groupes

Maintenant, il faut donner à dansguardian les critères de sélection du groupe. Puisque nous sommes partie pour utiliser l'adresse IP source, il faut:

activer le pluginq d'authentification par IP:

sed -i -e "s|#authplugin = '/etc/dansguardian/authplugins/ip.conf'|authplugin = '/etc/dansguardian/authplugins/ip.conf'|" \ /etc/dansguardian/dansguardian.conf

Définir les IP (ou plages d'IP) en éditant le fichier /etc/dansguardian/lists/authplugins/ipgroups

Configurer les paramètres de filtrage pour chaque groupe

Maintenant que nos requêtes sont classées dans le groupe qui va bien en fonction de la source, il ne reste plus qu'à personnaliser le fichier /etc/dansguardian/dansguardianfX.conf selon ne besoins.