DansGuardian
Présentation
DansGuardian est une extension pour Squid. DansGuardian est une extension puissante destinée à filtrer le contenu transitant entre l'Internet et la machine du client. DansGuardian se base sur un système de filtre par mots clés, néanmoins il est possible d'y coupler des listes noires de sites à bloquer.
Historique
DansGuardian est un script écrit en C++ compatible avec la plupart des distributions Linux. Développé principalement par Daniel Barron qui est également le créateur de DanGuardian, la communauté s'est agrandit avec l'adhésion de plusieurs personnes venant soutenir activement le développement du logiciel. Ainsi une première version de DansGuardian (v.0.5.0) dite alpha, c'est-à -dire stabilisée au niveau de la sécurité mais pouvant comporter quelques bogues mineures, est apparue le 14 janvier 2001. Dès lors, des correctifs ont été publiés au quotidient afin de corriger quelques bogues sur la version de base - modifier le code - ajouter de nouvelles fonctionnalités.
Fonctionnalités
DansGuardian peut être utilisé seul ou couplé avec un serveur proxy cache tel que Squid ou encore Oops. Le but de DansGuardian est d'analyser le contenu qui lui est soumis par les stations clientes afin d'en autoriser/refuser l'accès.
Methodes | Fichier de configuration / Description |
---|---|
Extension de fichier (.php, .mp3, ...) |
|
Adresse IP du serveur |
|
Mime Type de la page (audio/mpeg) |
|
Expression |
|
Domaine (wiki.ncad.fr) |
|
Url |
|
Regexp Url |
|
Regexp En-têtes HTTP client |
|
Tag PICS |
|
Virus, Code malicieux |
Oui > Option à activer dans le fichier de configuration du groupe |
Censure de termes/expressions |
|
Blocage des images |
Oui |
Notification e-mail |
Un serveur SMTP est requis.
Nombre d'alerte avant notification configurable dans le fichier de configuration du groupe, Interval de temps entre deux alertes configurable dans le fichier de configuration du groupe. |
Download |
n/a |
Upload |
n/a |
QoS (Qualité de Service) |
n/a |
Installation
Pré requis
Configuration logistique
Pour pouvoir installer et utiliser correctement DansGuardian votre serveur doit obligatoirement fonctionné sous Linux, FreeBSD, OpenBSD, NetBSD, Mac OS X, Solaris ou HP-UX.
Configuration de votre réseau
- Votre serveur doit être pourvu de deux cartes réseaux:
- Une carte ou sera connecté votre switch auquel sera relié les postes clients
- Une carte ou sera connecté le modem / routeur ADSL
- Une tel configuration nécessite l'installation du paquet dhcp3 pour l'attribution automatique des IPs de vos machines.
- Ou votre serveur doit être pourvu d'une carte réseau
- Configurer votre routeur pour n'autoriser que votre serveur à se connecter sur le net
- Les autres machines devront passé obligatoirement par votre serveur pour se connecter.
|
Dans le deuxième cas, il faudra désactiver le serveur dhcp de votre routeur et configurer manuellement les adresses IPs de vos stations de travail. |
Installation
Depuis un terminal de commande sous Ubuntu saisissez la commande suivante :
|
|
Pour Ubuntu vous pouvez également effectuer l'installation depuis la Logitech. |
L'installation achevée vous trouverez la totalité des fichiers de configuration du script dans le répertoire /etc/dansguardian/. Le répertoire contient l'ensemble des règles de filtrage ainsi que les fichiers de langue et deux fichiers de configuration. La configuration de DansGuardian s'organise ainsi :
- dansguardian.conf : fichier de configuration du script, ne gère pas le filtrage;
- dansguardianfX.conf : fichier de configuration du groupe fX ou X est un nombre entier correspondant au numéro du groupe.
Par défaut il existe un fichier de configuration de groupe qui est dansguardianf1.conf. C'est le groupe par défaut pour tous les utilisateurs. |
Configuration du fichier dansguardian.conf
Dans un premier temps il faut éditer trois lignes du fichier de configuration. Pour cela ouvrez le fichier /etc/dansguardian/dansguardian.conf. Dans ce fichier effectuez les modifications suivante :
- Commentez ou supprimez la ligne suivante :
UNCONFIGURED - Please remove this line after configuration
- Vérifiez le port sur lequel doit écouter Dansguardian :
filterport = 8080
- Indiquez le numéro de port du serveur Squid uniquement si vous souhaitez coupler DansGuardian avec Squid. Dans ce cas les requêtes soumises à Dansguardian sont transmissent à Squid.) :
proxyport = 3128
- Renseignez la langue dans laquelle doit être écrits les messages d'erreurs/informations
language = french
Une fois le fichier de configuration correctement édité, enregistrez les modifications puis fermez le fichier. Pour appliquer les modifications ouvrez une fenêtre de terminal puis exécutez la commande suivante :
|
|
Configuration du fichier dansguardianfX.conf
Organisation
Chaque fichier de configuration de groupe se nomme de la façon suivante : dansguardianfX.conf - avec X indiquant le numéro de groupe. Par défaut il existe déjà un fichier de configuration de groupe qui est dansguardianf1.conf.
Pour créer plusieurs groupes il suffit de copier ce fichier dans le répertoire /etc/dansguardian puis de le renommer dansguardianf2.conf par exemple.
Le fichier de configuration par défaut est associé aux répertoire /list qui contient l'ensemble des paramètres liés au dispositif de filtrage. Si vous créez plusieurs groupes, il sera nécessaire de copier également ce répertoire ainsi que l'intégralité de son contenu afin d'en affiner les réglages propres à chaque groupe.
ø Exemple :
- fichier dansguardianf1.conf avec le répertoire list;
- fichier dansguardianf2.conf avec le répertoire child;
Type de groupe
- Option du fichier : groupmode
- Valeurs possibles :
- 0 : bannit
- 1 : soumis aux règles de filtrage
- 2 : n'est soumis à aucunes règles de filtrage
Nom du groupe
- Option du fichier : groupname
- Valeur : <chaîne de caractères> par exemple child
Répertoire des filtres
- Bases pour le filtrage par nom de site
- listes blanches : exceptionsitelist = '/etc/dansguardian/lists/exceptionsitelist'
- listes noires : bannedsitelist = '/etc/dansguardian/lists/bannedsitelist'
- listes grises : greysitelist = '/etc/dansguardian/lists/greysitelist'
- Bases pour le filtrage par mots clés
- phrases interdites : bannedphraselist = '/etc/dansguardian/lists/bannedphraselist'
- phrases autorisées : exceptionphraselist = '/etc/dansguardian/lists/exceptionphraselist'
- termes censurés : contentregexplist = '/etc/dansguardian/lists/contentregexplist'
- importance des termes : weightedphraselist = '/etc/dansguardian/lists/weightedphraselist'
- Bases pour le filtrage des urls
- listes blanches : exceptionurllist = '/etc/dansguardian/lists/exceptionurllist'
- listes noires : bannedurllist = '/etc/dansguardian/lists/bannedurllist'
- listes grises : greyurllist = '/etc/dansguardian/lists/greyurllist'
- termes interdits : bannedregexpurllist = '/etc/dansguardian/lists/bannedregexpurllist'
- termes autorisés : exceptionregexpurllist = '/etc/dansguardian/lists/exceptionregexpurllist'
- termes censurés : urlregexplist = '/etc/dansguardian/lists/urlregexplist'
- Blocage par niveau PICS
- picsfile = '/etc/dansguardian/lists/pics'
Les termes censurés peuvent être remplacés par une autre chaîne de caractère. Dans le cas des url, ceci modifiera la requête effectuée par l'utilisateur qui sera néanmoins toujours soumise au serveur distant après modification. |
ø Exemple : Nous définissons la règle suivante dans le fichier urlregexplist :
"sex"->"ecole"
Lorsque l'utilisateur recherchera le terme sex dans Google, au lieu d'atteindre l'url suivante :
http://www.google.com/search?q=sex
il atteindra plutôt celle-ci :
http://www.google.com/search?q=ecole
Activer/Désactiver module filtrage des téléchargements
- Option du fichier : blockdownloads
- Description : Permet de contrôler le téléchargement de ressources depuis l'Internet en fonction de l'extension du fichier.
- Valeurs possibles :
- on : active l'option
- off : désactive l'option
- Bases de données du module à personnaliser :
- exceptionextensionlist = '/etc/dansguardian/lists/exceptionextensionlist'
- exceptionmimetypelist = '/etc/dansguardian/lists/exceptionmimetypelist'
- bannedextensionlist = '/etc/dansguardian/lists/bannedextensionlist'
- bannedmimetypelist = '/etc/dansguardian/lists/bannedmimetypelist'
- Autres dépendances
- exceptionfilesitelist = '/etc/dansguardian/lists/exceptionfilesitelist'
- exceptionfileurllist = '/etc/dansguardian/lists/exceptionfileurllist'
Si le module est activé, les listes blanches (mention exception au début du nom du fichier) sont prioritaires par rapport aux listes noires. |
ø Exemple :
- J'interdit le téléchargement de fichiers musicaux .mp3.
- Cependant je veux autoriser le téléchargement de ce type de média depuis le site musiclegal.tld. Dans ce cas j'ajoute le nom du site au fichier exceptionfilesitelist.
Activer/Désactiver module filtrage par niveau PICS
- Option du fichier : enablepics
- Valeurs possibles :
- on : active l'option
- off : désactive l'option
- Bases de données du module à personnaliser :
- /etc/dansguardian/lists/pics
Activer/Désactiver module filtrage de l'en-tête HTTP
- Option du fichier : n/a
- Valeurs possibles : n/a
- Bases de données du module à personnaliser :
- headerregexplist = '/etc/dansguardian/lists/headerregexplist'
- bannedregexpheaderlist = '/etc/dansguardian/lists/bannedregexpheaderlist'
|
Pour désactiver ce module vous devez commenter toutes les lignes des deux fichiers de bases de données. |
le fichier headerregexplist permet de modifier les en-têtes. |
le fichier bannedregexpheaderlist permet de bloquer certaines en-têtes. |
Activer/Désactiver module anti-virus Clamav
Tous d'abord il faut décommenter la ligne :
contentscanner = '/etc/dansguardian/contentscanners/clamav.conf'
dans le fichier de configuration dansguardian.conf
Ensuite dans le fichier de configuration du groupe dansguardianfX.conf :
- Option du fichier : disablecontentscan
- Description : Pour scanner les pages à la recherche de virus
- Valeurs possibles :
- on : activer le module
- off : désactiver le module
- Option du fichier : infectionbypass
- Description : Autorise l'utilisateur à ignorer l'interdiction d'accès à la ressource pour cause d'infection virale
- Valeurs possibles :
- X : débloque l'accès temporairement durant X secondes
- 0 : interdit l'accès
- Option du fichier : infectionbypasserrorsonly
- Description : Ne pas effectuer de vérification si le média est corrompus
- Valeurs possibles :
- on : ne pas effectuer la vérification
- off : bloquer l'accès si le média ne peut être scanné
Blocage par mots clés
Le blocage par mots clés utilisent les bibliothèques d'expression que vous trouverez dans dossier /etc/dansguardian/lists/phraseslists/. Vous pouvez créer vos propre listes - pour cela vous devrez créer un nouveau fichier dans un dossier portant le nom de votre critère de blocage - ceci n'est pas obligatoire maiscela conservera l'organisation général du script - votre fichier devra être organisé comme suit :
< mot à bloquer >< points >
Le deuxième paramètre doit être une valeur comprise entre 1 et la valeur attribuée au paramètre naughtynesslimit. Ce paramètre peut être modifier dans le fichier de configuration situé dans /etc/dansguardian/dansguardianf1.conf.
Par exemple, nous prenons le cas des termes listés ci-dessous :
< sex > < 50 > < hard > < 30 >
Si la variable naughtynesslimit à pour valeur 50, la page contenant les termes sex et hard sera bloquée car la somme des points des deux termes fait 80, or 80 > 50. En revanche si notre variable a pour valeur 100, la page ne sera pas bloquée car 80 < 100.
Plus la valeur de la variable naughtynesslimit sera élevée et moins le filtrage sera exigeant - à adapter selon l'âge moyen des utilisateurs. |
Ajouter des listes noires
Dans le cas d'une configuration sans SquidGuard pour Squid
|
Ce cas de figure est adapté dans tous les cas de figure (avec ou sans Squid et son module SquidGuard). |
Nous vous conseillons l'utilisation des listes noires de l'Université des Sciences Sociales de Toulouse que vous pourrez retrouver ici . Vous disposez d'un dossier blacklist à la racine /etc/dansguardian/lists/. Dézippez dans ce dossier l'archive ainsi téléchargée.
Vous pouvez choisir l'emplacement de votre choix. Il faudra juste veiller à bien renseigner le path du fichier de base pour chaque liste. |
L'ajout d'une liste de site/url à un fichier de configuration dansguardian s'effectue grâce à la directive :
.Include<path vers fichier base>
ø Exemple : Je souhaite ajouter l'ensemble des sites figurants dans le fichier /etc/dansguardian/blacklists/adult/domains au fichier bannedsitelist. J'édite alors le fichier /etc/dansguardian/lists/bannedsitelist puis j'y ajoute la ligne suivante :
.Include</etc/dansguardian/blacklists/adult/domains>
Ensuite il faudra redémarrer DansGuardian avec la commande :
|
|
L'ensemble des sites contenues dans le fichier /etc/dansguardian/blacklists/adult/domains sont désormais bloqués.
Cette méthode est applicable pour toutes les listes (sites, url, expressions, ...) |
Dans le cas d'une configuration avec SquidGuard pour Squid
Si vous disposez déjà des bases de données pour SquidGuard, alors les listes noires/blanches sont sauvegardées dans le dossier /var/lib/squidguard/db. Il faudra donc veiller à bien renseigner le chemin absolut jusqu'à ces fichiers dans l'emploi de la directive .Include<path>
Personnaliser les pages d'erreurs/informations
Page de redirection sur interdiction
Cette page est appelée lorsque l'utilisateur tente d'accéder à un contenu qui a été détecté comme prohibé par DansGuardian. La page de redirection est stockée dans le répertoire /etc/dansguardian/languages/french/. Ce répertoire contient deux fichiers :
- template.html, qui est la page web de la page de redirection;
- message, qui est un fichier de correspondance entre le code d'erreur retourné par DansGuardian et sa signification retourné à l'utilisateur via
Ainsi pour modifier le design de la page de redirection de Dansguardian il faudra éditer le fichier template.html. Il est possible d'y inclure des variables qui renseigneront l'utilisateur sur les raisons qui l'ont amené à obtenir ce message d'erreur. Voici une liste de ces variables :
- -URL- : Retourne l'url qui est bloquée
- -REASONGIVEN- : Retourne la raison / motif du blocage - voir dans le fichier messages.
- -USER- : Retourne le nom de l'utilisateur si la connexion Internet nécessite au préalable des identifiants.
- -IP- : Retourne l'adresse IP de la machine cliente.
- -FILTERGROUP- : Retourne le groupe d'utilisateur auquel appartient l'utilisateur.
Quelques commandes utiles
- Démarrer DansGuardian
|
|
- Redémarrer DansGuardian
|
|
- Arrêter DansGuardian
|
|