[ Accueil ] [ Retour
à l'article ] Problème de filtrage Internet
http://www.profetice.org/comedu/article.php3?id_article=46 mardi 13 janvier 2004, par Benoît Thébaud
Fonctionnement du filtrage Internet sur ComeduEtape 1Lors de la demande par le navigateur (Internet Explorer, Firefox ou autre Opéra) d’un site Internet, le proxy Squid demande une authentification. Cette authentification est basée sur les logins et mots de passe stockés sur le serveur Linux lors de la création des utilisateurs (fichiers /etc/passwd et /etc/shadow). Dans 99,99 % des cas, le refus de l’identification à cette étape est due à une mauvaise saisie (ou parfois à la persistance dans le navigateur des coordonnées du dernier utilisateur qui a cru bon de cliquer dans la case "se souvenir du mot de passe" dans IE). Etape 2Squid "passe" ensuite la main à SquidGuard qui vérifie d’abord l’autorisation pa r classe (lien Autorisation Internet dans l’interface Comedu qui lit en fait les fichiers classes dans /usr/share/squidGuard-1.1.4/db2/users/). Si l’élève ou la classe ne sont pas autorisés, une page d’interdiction apparaît (Groupe du client Default, catégorie None). Etape 3SquidGuard vérifie ensuite les types de sites autorisés par classe (liste noire ou blanche, groupes Adult ....). Là encore une page d’interdiction apparaît si le site est interdit mais avec l’indication de la classe et de la catégorie interdite (adult ...). Deux autres cas de figure : squid est "tombé" suite à un trop gros nombre de connexions (rare mais arrive
parfois dans les grands établissements) : pas de demande d’authentification et
page d’erreur.
Paramétrage de SquidGuardSi après la demande d’authentification dans le navigateur Internet, les élèves ne se voient pas refuser les sites interdits, il y a de fortes chances que SquidGuard, le logiciel de filtrage, soit "en panne". En effet, le paramétrage de ce programme à travers Webmin est assez délicat et surtout ne comporte pas de contrôle d’erreurs. Ainsi si vous avez oublié une indication, le module de Webmin ne vous avertira pas mais SquidGuard ne fonctionnera plus. Pour vérifier ceci, faites apparaître les dernières lignes des logs en tapant cette commande dans une console sur le serveur ou à distance via Putty : tail /var/log/squidGuard/squidGuard.log et /ou tail /var/log/squid/squidGuard.log Si c’est le cas, vous devriez lire ces lignes : 2004-01-13 22:09:38 [4046] parse error in Il faut alors modifier le fichier /etc/squid/squidGuard.conf pour "réparer" les erreurs. le fichier squidGuard.conf original#---------------------------------------------------------------- # DO NOT MODIFY THIS FILE AS IT IS MODIFIED BY THE TEMPLATE #---------------------------------------------------------------- # SquidGuard CONFIGURATION FILE #---------------------------------------------------------------- # CONFIGURATION DIRECTORIES dbhome /usr/share/squidGuard-1.1.4/db2 logdir /var/log/squidGuard # TIME RULES: # abbrev for weekdays: # s = sun, m = mon, t =tue, w = wed, h = thu, f = fri, a = sat # SOURCE ADDRESSES: src profs { userlist user/profs } src eleves { userlist user/eleves } # DESTINATION CLASSES: dest adult { domainlist adult/domains urllist adult/urls expressionlist adult/expressions } ../.. dest violence { domainlist violence/domains urllist violence/urls expressionlist violence/expressions } # ACLs acl { eleves { pass none redirect http://127.0.0.1/cgi-bin/squidGuard.cgi?clientaddr=%a&srcclass=%s&targetclass=%t&url=%u } profs { pass !warez any redirect http://127.0.0.1/cgi-bin/squidGuard.cgi?clientaddr=%a&srcclass=%s&targetclass=%t&url=%u } default { pass none redirect http://127.0.0.1/cgi-bin/squidGuard.cgi?clientaddr=%a&srcclass=%s&targetclass=%t&url=%u } } le fichier squidGuard.conf après création des classesVoici le fichier après la création d’un groupe Interdits (Destination Groups) et de deux classes (sixa puis sixb) puis affectation à ces classes des droits "Any" sauf !violence ...etc. #---------------------------------------------------------------- # DO NOT MODIFY THIS FILE AS IT IS MODIFIED BY THE TEMPLATE #---------------------------------------------------------------- # SquidGuard CONFIGURATION FILE #---------------------------------------------------------------- # CONFIGURATION DIRECTORIES dbhome /usr/share/squidGuard-1.1.4/db2 logdir /var/log/squidGuard # TIME RULES: # abbrev for weekdays: # s = sun, m = mon, t =tue, w = wed, h = thu, f = fri, a = sat # SOURCE ADDRESSES: # COMEDU_FLAG src sixb { userlist user/sixb } src sixa { userlist user/sixa } src profs { userlist user/profs } src eleves { userlist user/eleves } # DESTINATION CLASSES: destination Interdits { domainlist Interdits.destdomainlist } dest adult { domainlist adult/domains urllist adult/urls expressionlist adult/expressions } ../.. dest violence { domainlist violence/domains urllist violence/urls expressionlist violence/expressions } # ACLs acl { eleves { pass none redirect http://127.0.0.1/cgi-bin/squidGuard.cgi?clientaddr=%a&srcclass=%s&targetclass=%t&url=%u } profs { pass !warez any redirect http://127.0.0.1/cgi-bin/squidGuard.cgi?clientaddr=%a&srcclass=%s&targetclass=%t&url=%u } default { pass none redirect http://127.0.0.1/cgi-bin/squidGuard.cgi?clientaddr=%a&srcclass=%s&targetclass=%t&url=%u } sixa { pass !in-addr !Interdits !adult !audio-video !forums !hacking !mail !proxy !redirector !warez !ads !aggressive !drugs !gambling !publicite !violence any redirect http://127.0.0.1/cgi-bin/squidGuard.cgi?clientaddr=%a&srcclass=%s&targetclass=%t&url=%u } sixb { pass !in-addr !Interdits !adult !audio-video !forums !hacking !mail !proxy !redirector !warez !ads !aggressive !drugs !gambling !publicite !violence any redirect http://127.0.0.1/cgi-bin/squidGuard.cgi?clientaddr=%a&srcclass=%s&targetclass=%t&url=%u } # COMEDU_FIN } Explication des modificationsIl faut toujours une correspondance entre les "SOURCE ADDRESSES" et les "ACLs". Ainsi pour la classe sixb : # SOURCE ADDRESSES: ../.. src sixb { userlist user/sixb } ../.. # ACLs acl { ../.. sixb { pass !in-addr !Interdits !adult !audio-video !forums !hacking !mail !proxy !redirector !warez !ads !aggressive !drugs !gambling !publicite !violence any redirect http://127.0.0.1/cgi-bin/squidGuard.cgi?clientaddr=%a&srcclass=%s&targetclass=%t&url=%u } Après correction, il faut redémarrer squid en mode console : service squid restart puis vérifier le bon fonctionnement de squidguard : tail /var/log/squidGuard/squidGuard.log Le résultat devrait être : 2004-01-13 22:22:57 [4135] squidGuard 1.1.4 started (1074028977.059) Les raisons de dysfonctionnement de SquidGuard peuvent être fort diverses mais sont généralement toujours liéés à une incohérence entre le fichier SquidGuard.conf et la réalité (classes créées puis supprimées un peu rapidement, manipulations "manuelles" des listes de sites ...etc). Par la suite, il est plus facile de surveiller le fonctionnement de SquidGuard dans Webmin en rajoutant dans Système-Analyse des Logs-Add a new system log la ligne /var/log/squidGuard/squidGuard.log avec l’indication Facilities positionnée à All. Il suffira ensuite de cliquer sur view pour lister les dernières lignes du fichier. [ Accueil ] [ Retour à l'article ] [ Haut ] |
||