SquidGuard
Présentation
SquidGuard est un module pour le serveur proxy Squid. Ce module ajoute des fonctionnalités avancées en matière de filtrage basé sur une liste noire de sites web à bloquer et une liste blanche de sites à ignorer.
Installation
Prérequis
Vous devez disposez du serveur proxy Squid installé - fonctionnel et mis à jour sur votre machine avant de pouvoir commencer l'installation. Le cas échéant reportez vous à l'article Squid.
Installation
SquidGuard
Depuis les dépôts synaptic ou dans une fenêtre de terminal tapez la commande suivante :
|
|
Listes filtrage
Des listes comportant un grand nombre de catégories de sites web sont disponibles gratuitement et tenues à jour par l'université de l'académie de Toulouse.
Configuration
Le fichier de configuration est présent dans le dossier /etc/squid/squidguard.conf. Ce dernier permet de renseigner des règles de filtrage selon divers critères comme :
- l'adresse ip de la machine cliente,
- l'utilisateur exécutant la requête
- l'heure d'exécution de la requête
- le contenu consulté
Définition de quelques répertoires
Par défaut il faut préciser dans le fichier de configuration, les répertoires d'accès :
- Aux logs de SquidGuard (logdir)
- Aux bases de données des blacklistes (dbhome)
- Exemple :
dbhome /var/lib/squidguard/db logdir /var/log/squid
Définition des listes
Ensuite - dans le cadre de l'installation, au préalable, des listes - il faudra définir les règles de filtrage. Ces règles de filtrage sont définies à l'aide des entrées dest :
dest nom_de_la_liste { domainlist repertoire de la liste des domaines depuis /var/lib/squidguard/db. urllist repertoire de la liste des urls depuis /var/lib/squidguard/db. redirect adresse de redirection en cas de consultation d'un site présent dans les listes. log spcécifie un répertoire de log dans /var/log/squid enregistrant tous les sites de la catégorie qui ont été visités ou bloqués. }
Ici, les listes n'ont aucune attribution particulière du type liste noire ou liste blanche. Elles sont simplement définies. |
- Exemple : voici les acls respectives aux listes noires de l'Universite de Toulouse :
dest adult { domainlist adult/domains urllist adult/urls redirect http://error.ncad.fr/warning.php?reason=Site-pour-adulte } dest agressif { domainlist agressif/domains urllist agressif/urls redirect http://error.ncad.fr/warning.php?reason=Site-agressif } dest astrology { domainlist astrology/domains redirect http://error.ncad.fr/warning.php?reason=Site-astrologue } dest audio-video { domainlist audio-video/domains urllist audio-video/urls redirect http://error.ncad.fr/warning.php?reason=Contenu-Multimedias } dest blog { domainlist blog/domains urllist blog/urls redirect http://error.ncad.fr/warning.php?reason=Blog-site-personnel } dest cleaning { domainlist cleaning/domains urllist cleaning/urls redirect http://error.ncad.fr/warning.php?reason=Site-securite-informatique } dest dangerous_material { domainlist dangerous_material/domains urllist dangerous_material/urls redirect http://error.ncad.fr/warning.php?reason=Site-armes } dest dating { domainlist dating/domains urllist dating/urls redirect http://error.ncad.fr/warning.php?reason=Site-rencontre } dest drogue { domainlist drogue/domains urllist drogue/urls redirect http://error.ncad.fr/warning.php?reason=Drogue } dest filehosting { domainlist filehosting/domains urllist filehosting/urls redirect http://error.ncad.fr/warning.php?reason=Plateforme-multimedia } dest financial { domainlist financial/domains redirect http://error.ncad.fr/warning.php?reason=Finance } dest forums { domainlist forums/domains urllist forums/urls redirect http://error.ncad.fr/warning.php?reason=Forums } dest gambling { domainlist gambling/domains urllist gambling/urls redirect http://error.ncad.fr/warning.php?reason=Jeux-hasard } dest games { domainlist games/domains urllist games/urls redirect http://error.ncad.fr/warning.php?reason=Jeux-et-online } dest hacking { domainlist hacking/domains urllist hacking/urls redirect http://error.ncad.fr/warning.php?reason=Hacking } dest liste_bu { domainlist liste_bu/domains urllist liste_bu/urls redirect http://error.ncad.fr/warning.php?reason=Education-national } dest malware { domainlist malware/domains urllist malware/urls redirect http://error.ncad.fr/warning.php?reason=Malware } dest marketingware { domainlist marketingware/domains redirect http://error.ncad.fr/warning.php?reason=Marketing-special } dest mixed_adult { domainlist mixed_adult/domains redirect http://error.ncad.fr/warning.php?reason=Contenu-reserve-adult } dest mobile-phone { domainlist mobile-phone/domains redirect http://error.ncad.fr/warning.php?reason=Telephonie-Mobile } dest phishing { domainlist phishing/domains redirect http://error.ncad.fr/warning.php?reason=Phishing } dest publicite { domainlist publicite/domains urllist publicite/urls redirect http://error.ncad.fr/warning.php?reason=Publicites } dest radio { domainlist radio/domains urllist radio/urls redirect http://error.ncad.fr/warning.php?reason=Media-Radio } dest redirector { domainlist redirector/domains urllist redirector/urls redirect http://error.ncad.fr/warning.php?reason=Redirecteur } dest sect { domainlist sect/domains redirect http://error.ncad.fr/warning.php?reason=Sect } dest sexual_education { domainlist sexual_education/domains urllist sexual_education/urls redirect http://error.ncad.fr/warning.php?reason=Education-sexuel } dest shopping { domainlist shopping/domains redirect http://error.ncad.fr/warning.php?reason=Shopping } dest tricheur { domainlist tricheur/domains urllist tricheur/urls redirect http://error.ncad.fr/warning.php?reason=Tricherie } dest warez { domainlist warez/domains urllist warez/urls redirect http://error.ncad.fr/warning.php?reason=Warez } dest violence { domainlist violence/domains urllist violence/urls redirect http://error.ncad.fr/warning.php?reason=Site-violent } dest webmail { domainlist webmail/domains urllist webmail/urls redirect http://error.ncad.fr/warning.php?reason=Webmail }
|
Adaptez la variable redirect - ici elles redirigent vers les pages d'erreurs NCad Network dédiées pour SquidGuard. |
Définition de groupes d'utilisateurs
La création de groupes d'utilisateurs permet d'appliquer un ensemble de règles à des utilisateurs appartenant à un même groupe. Ceci évite de définir manuellement les autorisations pour chacun des utilisateurs.
Ici seront utilisées les entrées src pour nommer la règle - et user pour énumérer le(s) utilisateur(s) appartenant au groupe ainsi défini.
- Exemple : Nous voulons créer trois groupes utilisateurs : enfant, adolescent et adulte.
src adolescent { user benjamin cecile nicolas } src adulte { user pierre lucien said } src enfant { user maxime terence }
|
Ne fonctionne uniquement si Squid est configuré pour demander des logs d'authentification à ses utilisateurs. Sinon voir Squid. |
Dans le cas où Squid n'est pas configuré pour demander des identifiants de connexion lors de l'accès à Internet des usagers, il est possible de créer des groupes selon l'adresse IP du poste informatique client. La syntaxe des règles reste similaire.
- Exemple : Réseau composé de trois sous-réseaux, un pour les élèves, le second pour la salle des professeurs et le troisième pour l'administration de l'établissement.
src eleve { ip 10.0.0.0/24 } src professor { ip 10.0.1.0/24 } src admin { ip 10.0.2.0/24 }
Note :
- le groupe élève est définis par toutes les machines dont l'adresse IP est comprise entre 10.0.0.1 et 10.0.0.255.
- le groupe professor est définis par toutes les machines dont l'adresse IP est comprise entre 10.0.1.1 et 10.0.1.255
- le groupe admin est définis par toutes les machines dont l'adresse IP est comprise entre 10.0.2.1 et 10.0.2.255.
On peut aussi spécifier l'adresse IP de chacune des machines pour les réseaux de petite envergure :
src enfants { ip 192.168.1.20 192.168.1.21 192.168.1.22 } src parents { ip 192.168.1.10 192.168.1.11 }
Définition des règles de filtrage
Les règles de filtrage seront définies dans une acl globale. Cette dernière énumère les différentes règles de filtrage dont se sert le proxy pour autoriser ou non les utilisateurs à se connecter à Internet mais aussi pour définir le niveau de filtrage de ces derniers.
Par défaut l'acl permet à tous les utilisateurs de se connecter au proxy sans pour autant être filtré. Cette règle se présente comme ceci :
acl { default { pass all } }
Pour appliquer une règle de filtrage il suffit de modifier la ligne contenant pass all. Ainsi, si l'on veut comparer le trafic internet et en particulier les sites consultées aux listes nommées plus haut adult et mixed-adult, il suffit d'adapter la règle :
acl { default { pass !adult !mixed-adult all } }
Cette règle ci-dessus précise que tout utilisateur se connectant à internet et dont le site spécifié n'appartient pas à ceux spécifiés dans les listes nommées adult et mixed-adult seront autorisés à accédé au contenu. Le paramètre !in-addr spécifie qu'il est interdit d'accéder à un site à partir de l'adresse IP de l'hôte.
Définition de règles de filtrage de groupe
A partir des groupes définis précédement, il est possible de créer des règles de filtrage propre à chacun de ces groupes. Dans notre exemple nous définirons :
- le groupe adolescent qui peut accéder à tous les sites sauf : adult agressif astrology dangerous_material dating drogue forums gambling games hacking malware marketingware mixed_adult mobile-phone phishing publicite redirector sect tricheur warez violence.
- le groupe adulte qui peut accéder à tous les sites sauf : adult agressif astrology dangerous_material drogue gambling hacking malware marketingware phishing publicite sect tricheur warez violence.
- le groupe admin qui peut accéder à tous les sites sauf : adult agressif astrology dangerous_material drogue gambling hacking malware marketingware phishing publicite sect tricheur warez violence.
- Exemple :
acl { default { pass none redirect http ://error.ncad.fr/disable.php?reason=Utilisateur-inconnu } adolescent { pass !adult !agressif !astrology !dangerous_material !dating !drogue !forums !gambling !games !hacking !malware !marketingware !mixed_adult !mobile-phone !phishing !publicite !redirector !sect !tricheur !warez !violence all } adult { pass !adult !agressif !astrology !dangerous_material !drogue !gambling !hacking !malware !marketingware !phishing !publicite !sect !tricheur !warez !violence all } admin { pass !adult !agressif !astrology !dangerous_material !drogue !gambling !hacking !malware !marketingware !phishing !publicite !sect !tricheur !warez !violence all } }
|
Ne fonctionne uniquement si Squid est configuré pour demander des logs d'authentification à ses utilisateurs. Sinon voir -> Squid. |
Dans le cas des groupes définis selont l'adresse IP de la machine cliente :
- le groupe eleve qui peut accéder à tous les sites sauf : adult agressif astrology dangerous_material dating drogue forums gambling games hacking malware marketingware mixed_adult mobile-phone phishing publicite redirector sect tricheur warez violence.
- le groupe professor qui peut accéder à tous les sites sauf : adult agressif astrology dangerous_material drogue gambling hacking malware marketingware phishing publicite sect tricheur warez violence.
- le groupe admin qui peut accéder à tous les sites sauf : adult agressif astrology dangerous_material drogue gambling hacking malware marketingware phishing publicite sect tricheur warez violence.
- Exemple :
acl { default { pass none redirect http ://error.ncad.fr/disable.php?reason=Utilisateur-inconnu } eleve { pass !adult !agressif !astrology !dangerous_material !dating !drogue !forums !gambling !games !hacking !malware !marketingware !mixed_adult !mobile-phone !phishing !publicite !redirector !sect !tricheur !warez !violence all } professor { pass !adult !agressif !astrology !dangerous_material !drogue !gambling !hacking !malware !marketingware !phishing !publicite !sect !tricheur !warez !violence all } admin { pass !adult !agressif !astrology !dangerous_material !drogue !gambling !hacking !malware !marketingware !phishing !publicite !sect !tricheur !warez !violence all } }
Débloquer un site
Il peut s'avérer nécessaire de débloquer un site web, dans la mesure ou ce dernier ne correspond pas ou plus au critère qui l'on conduit a être bloqué. pour cela il y a deux manière de débloquer un site web :
- soit en créant un fichier de différence ou seront répertorié les domaines à bloquer/débloquer,
- soit en créant une nouvelle liste de filtrage.
Fichier de différence
Les fichiers de différences sont propre à chacune des listes chargés sur squidGuard. La synthaxe de ce fichier est semblable aux autres fichier de squidGuard à la diffèrence près ou chacun des sites répertorié devra comporter le signe + ou - selon qu'il faut le supprimer de la liste ou l'ajouter à la liste. Ce fichier doit être nommé domains.diff et placé dans le répertoire de la liste à mettre à jour.
- Par exemple : Nous avons le site bloquer.com répertorié dans la liste Malware. Nous souhaitons débloquer ce site et bloquer en revanche le site jesaispas.fr.
Voici la synthaxe du fichier :
- bloquer.com + jesaispas.fr
Le fichier doit être nommé domains.diff et placer dans la liste Malware. Pour prendre en compte les modifications il suffit de tapez les lignes de commandes suivantes :
|
|
|
Le fichier domains.diff sera effacé dès une mise à jour ultérieure des listes. |
Liste blanche
Cette méthode consiste à créer une nouvelle liste dans le système. Cette liste comporte l'ensemble des sites à débloquer et sera charger en tant que liste blanche pour tous les groupes d'utilisateur.
|
Les listes blanches sont prioritaires sur les listes noires. |
Exemple de fichier de configuration
Voici le fichier de configuration final :
# # CONFIG FILE FOR SQUIDGUARD # dbhome /var/lib/squidguard/db logdir /var/log/squid # ------------------------------------------------------------ # Definition des listes # ------------------------------------------------------------ dest adult { domainlist adult/domains urllist adult/urls redirect http ://error.ncad.fr/warning.php?reason=Site-pour-adulte } dest agressif { domainlist agressif/domains urllist agressif/urls redirect http ://error.ncad.fr/warning.php?reason=Site-agressif } dest astrology { domainlist astrology/domains redirect http ://error.ncad.fr/warning.php?reason=Site-astrologue } dest audio-video { domainlist audio-video/domains urllist audio-video/urls redirect http ://error.ncad.fr/warning.php?reason=Contenu-Multimedias } dest blog { domainlist blog/domains urllist blog/urls redirect http ://error.ncad.fr/warning.php?reason=Blog-site-personnel } dest cleaning { domainlist cleaning/domains urllist cleaning/urls redirect http ://error.ncad.fr/warning.php?reason=Site-securite-informatique } dest dangerous_material { domainlist dangerous_material/domains urllist dangerous_material/urls redirect http ://error.ncad.fr/warning.php?reason=Site-armes } dest dating { domainlist dating/domains urllist dating/urls redirect http ://error.ncad.fr/warning.php?reason=Site-rencontre } dest drogue { domainlist drogue/domains urllist drogue/urls redirect http ://error.ncad.fr/warning.php?reason=Drogue } dest filehosting { domainlist filehosting/domains urllist filehosting/urls redirect http ://error.ncad.fr/warning.php?reason=Plateforme-multimedia } dest financial { domainlist financial/domains redirect http ://error.ncad.fr/warning.php?reason=Finance } dest forums { domainlist forums/domains urllist forums/urls redirect http ://error.ncad.fr/warning.php?reason=Forums } dest gambling { domainlist gambling/domains urllist gambling/urls redirect http ://error.ncad.fr/warning.php?reason=Jeux-hasard } dest games { domainlist games/domains urllist games/urls redirect http ://error.ncad.fr/warning.php?reason=Jeux-et-online } dest hacking { domainlist hacking/domains urllist hacking/urls redirect http ://error.ncad.fr/warning.php?reason=Hacking } dest liste_bu { domainlist liste_bu/domains urllist liste_bu/urls redirect http ://error.ncad.fr/warning.php?reason=Education-national } dest malware { domainlist malware/domains urllist malware/urls redirect http ://error.ncad.fr/warning.php?reason=Malware } dest marketingware { domainlist marketingware/domains redirect http ://error.ncad.fr/warning.php?reason=Marketing-special } dest mixed_adult { domainlist mixed_adult/domains redirect http ://error.ncad.fr/warning.php?reason=Contenu-reserve-adult } dest mobile-phone { domainlist mobile-phone/domains redirect http ://error.ncad.fr/warning.php?reason=Telephonie-Mobile } dest phishing { domainlist phishing/domains redirect http ://error.ncad.fr/warning.php?reason=Phishing } dest publicite { domainlist publicite/domains urllist publicite/urls redirect http ://error.ncad.fr/warning.php?reason=Publicites } dest radio { domainlist radio/domains urllist radio/urls redirect http ://error.ncad.fr/warning.php?reason=Media-Radio } dest redirector { domainlist redirector/domains urllist redirector/urls redirect http ://error.ncad.fr/warning.php?reason=Redirecteur } dest sect { domainlist sect/domains redirect http ://error.ncad.fr/warning.php?reason=Sect } dest sexual_education { domainlist sexual_education/domains urllist sexual_education/urls redirect http ://error.ncad.fr/warning.php?reason=Education-sexuel } dest shopping { domainlist shopping/domains redirect http ://error.ncad.fr/warning.php?reason=Shopping } dest tricheur { domainlist tricheur/domains urllist tricheur/urls redirect http ://error.ncad.fr/warning.php?reason=Tricherie } dest warez { domainlist warez/domains urllist warez/urls redirect http ://error.ncad.fr/warning.php?reason=Warez } dest violence { domainlist violence/domains urllist violence/urls redirect http ://error.ncad.fr/warning.php?reason=Site-violent } dest webmail { domainlist webmail/domains urllist webmail/urls redirect http ://error.ncad.fr/warning.php?reason=Webmail } # ------------------------------------------------------------ # Liste blanche (prioritaire) # ------------------------------------------------------------ dest localwhite { domainlist localwhite/domains urllist localwhite/urls } # ------------------------------------------------------------ # Restrictions horaires # ------------------------------------------------------------ # ------------------------------------------------------------ # Définition des groupes # ------------------------------------------------------------ src adolescent { user khermot dufossm } src adult { user cachelb picolod cachelp } src admin { user cacheln } # ------------------------------------------------------------ # Definition des règles de filtrage # ------------------------------------------------------------ acl { default { pass none redirect http ://10.0.0.100/error/disable.php?reason=Utilisateur-inconnu } adolescent { pass !adult !agressif !astrology !dangerous_material !dating !drogue !forums !gambling !games !hacking localwhite !malware !marketingware !mixed_adult !mobile-phone !phishing !publicite !redirector !sect !tricheur !warez !violence all } adult { pass !adult !agressif !astrology !dangerous_material !drogue !gambling !hacking localwhite !malware !marketingware !phishing !publicite !sect !tricheur !warez !violence all } admin { pass !adult !agressif !astrology !dangerous_material !drogue !gambling !hacking localwhite !malware !marketingware !phishing !publicite !sect !tricheur !warez !violence all } }