WebFilter/fr

From SME Server
Revision as of 21:39, 3 January 2023 by Gieres (talk | contribs)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigationJump to search



webfilter
NeedImage.svg
webfilter logo
MaintainerUnnilennium
Urlhttp://www.squidguard.org/
Category

filtering

Tags squidproxycachefilterhttphttps

The rpm summary indicates:

Mainteneur

Daniel B.
Firewall Services
mailto:daniel@firewall-services.com

Version

Devel 10:
smeserver-webfilter
The latest version of smeserver-webfilter is available in the SME repository, click on the version number(s) for more information.


Contrib 10:
squidGuard
The latest version of squidGuard is available in the SME repository, click on the version number(s) for more information.


Contrib 10:
squidclamav
The latest version of squidclamav is available in the SME repository, click on the version number(s) for more information.


fws

Description

Cette contribution apporte 3 nouvelles fonctionnalités au proxy squid et fournit une interface pour en contrôler la plupart :

De nombreuses catégories de noms de domaine et d'URL mises à jour chaque nuit depuis le site de l'Université de Toulouse (vous pouvez obtenir plus d'informations sur ces listes ici), en français). Il suffit de choisir les catégories que vous souhaitez bloquer. Vous pouvez également configurer une liste d'adresses IP qui ne seront pas soumises au filtrage, une liste noire locale et liste blanche.

Lorsque cette fonction est activée, tout le trafic web sera analysé avant d'être envoyé au client.

  • Log des requêtes dans une base de données MySQL

Toutes les requêtes passant par Squid sont journalisées dans une base de données, ce qui rend l'analyse plus facile. Il n'y a pas d'interface pour consulter ces journaux, mais vous pouvez utiliser votre client MySQL préféré pour voir quels domaines sont les plus visités, l'utilisateur qui utilise toute votre bande passante, etc ...

Cette contribution peut remplacer Dansguardian si vous avez des besoins simples en terme de filtrage. Elle est vraiment facile à configurer, mais également moins puissante. Dansguardian filtre le contenu (il scanne le contenu des pages pour déterminer si elle doit être bloquée ou non), alors que squidGuard ne regarde que l'URL par exemple.

Captures d'écrans

webfilter panel webfilter panel

Installation

yum install --enablerepo=smecontribs smeserver-webfilter

Pour installer la contribution, exécutez simplement les commandes suivantes :

yum install smeserver-extrarepositories-fws  smeserver-extrarepositories-epel -y
signal-event yum-modify
yum --enablerepo=epel --enablerepo=fws install smeserver-webfilter
signal-event http-proxy-update
expand-template /etc/httpd/conf/httpd.conf
sv t /service/httpd-e-smith
first install fws and epel repo

Pour installer la contribution, exécutez simplement les commandes suivantes :

yum --enablerepo=epel --enablerepo=fws install smeserver-webfilter
signal-event http-proxy-update
expand-template /etc/httpd/conf/httpd.conf
sv t /service/httpd-e-smith

Vous pouvez à présent avoir accès à la nouvelle interface de contrôle dans le gestionnaire du serveur. Lors de votre premier accès, vous remarquerez que la liste des catégories est vide. Cliquez seulement sur le bouton Enregistrer en bas de la page, attendez quelques minutes et recommencez (la liste est vide car les categories n'ont pas encore été téléchargées).

A présent, vous devriez être en mesure d'activer le filtrage d'URL et le filtrage AV, ainsi que les categories que vous souhaitez bloquer. La première configuration peut prendre plusieurs minutes, il est possible que vous obteniez par conséquent une erreur de délais d'attente dépassé. Ceci est normal, car les bases de données Squidguard doivent être compilées. Cependant, après cette première manipulation, vos prochaines configurations devraient être beaucoup plus rapides.

Logithèques et filtrage AV

Quand le filtrage AV est activé, le moteur de l'antivirus remplace le UserAgent du client par le sien, ce qui peut empêcher l'accès à certains sites, comme l'appStore pour iOS ou le Google Play pour Android. Pour régler ce problème, rajouter simplement ces lignes dans la liste blanche :

clients.google.com
android.clients.google.com
*.phobos.apple.com

Une fois dans la liste blanche, ces sites ne seront plus soumis au scan antivirus.

Personnalisation de la liste des catégories

Les listes des catégoies sont de simples fichiers texte stockés dans /var/squidGuard/blacklists. Chaque catégorie étant un dossier contenant un fichier domains et un urls. Chaque catégorie apparaîtra dans le paneau du gestionnaire du serveur, sauf si elle est listée dans la clé DisabledCategories. Vous pouvez voir les catégories desactivées avec la commande :

db configuration getprop squidguard DisabledCategories

Cela vous permet de cacher certaines catégories inutiles.

La configuration par defaut met à jour toutes les catégories chaque nuit. Cette mise à jour est lancée par la tâche cron /etc/cron.daily/squidGuard qui appelle le script /etc/e-smith/events/actions/squidguard-update-databases. Si vous ne voulez pas des mises à jour automatiques de ces listes, vous pouvez désactiver cette fonctionnalité :

db configuration setprop squidguard AutoUpdate disabled

Vous pouvez ajouter vos propres catégories. Si elles n'existent pas encore, elles ne seront pas supprimées ou modifiées par la mise à jour automatique.

Page « Accès refusé »

La configuration par défaut redirige les accès refusés sur la page https://sme.domain.tld/squidGuard/cgi-bin/blocked.cgi avec des paramètres variés (Adresse IP, Nom d'utilisateur, Groupe, Categorie, etc ...). Le nom d'utilisateur ne sera pas affiché (remplacé par -) si l'authentification Squid est désactivée (ce qui est le cas par défaut). Si vous activez l'authentification Squid (avec un templates-custom), vous serez en mesure d'afficher le nom d'utilisateur. L'inconvénient est que vous aurez à configurer tous vos navigateurs à utiliser Squid comme serveur mandataire, car l'authentification n'est pas compatible avec le proxy transparent.

Vous pouvez personnaliser la page d'accès refusé, pour commencer, copiez la page par defaut :

cp -a /usr/share/squidGuard/cgi-bin/blocked.cgi /usr/share/squidGuard/cgi-bin/custom.cgi

Maintenant, vous pouvez éditer cette nouvelle page en fonction de vos besoins. Ensuite, il vous faut selectionner cette nouvelle page dans la configuration :

db configuration setprop squidguard RedirectURL \
http://hostname.systemname.com/squidGuard/cgi-bin/custom.cgi?clientaddr=%a&clientname=%n&clientuser=%i&clientgroup=%s&targetgroup=%t&url=%u
signal-event http-proxy-update

Journaux MySQL

La journalisation des accès dans la base MySQL est assurée par un démon indépendant appelé squid-db-logd. Il surveille le journal des accès Squid et Squidguard en temps réel, l'analyse et enregistre les entrées dans la base squid_log. Dans cette base de données, la table access_log liste tous les accès tandis que la deny_log ne liste que les accès bloqués. Cette fonctionnalité peut nécessiter beaucoup d'espace disque. Sur un serveur à forte charge, vous pouvez facilement atteindre 3 Go/mois seulement pour la base de données (et plus pour les dumps quand vous sauvegardez votre serveur). Pour limiter l'espace nécessaire, une tâche cron permet de supprimer les entrées les plus anciennes. La configuration par défaut conserve un an de journaux. Vous pouvez modifier ce réglage avec la commande suivante (la valeur par defaut est de 365 jours) :

db configuration setprop squid-db-logd Retention 180

Si vous souhaitez désactiver complétement cette fonction, vous pouvez stoper ce service :

db configuration setprop squid-db-logd status disabled
sv d /service/squid-db-logd

Voici quelques exemple de requêtes :

  • Obtenez les 30 sites les plus visités :
echo "SELECT DOMAIN,COUNT(DOMAIN) AS occurances FROM access_log GROUP BY DOMAIN ORDER BY occurances DESC LIMIT 30;" | mysql squid_log
  • Obtenez les 10 categories les plus bloquées :
echo "SELECT category,COUNT(category) AS occurances FROM deny_log GROUP BY category ORDER BY occurances DESC LIMIT 10;" | mysql squid_log
  • Obtenez toutes les pages consultées par le client 192.168.7.50 le 12 Oct 2012 entre 22h00 et 23h00 et exportez le resultat dans /tmp/result.csv
echo "SELECT date_day,date_time,url,username INTO OUTFILE '/tmp/result.csv' FIELDS TERMINATED BY ','
OPTIONALLY ENCLOSED BY '"' ESCAPED BY '\\' LINES TERMINATED BY '\n'
FROM access_log WHERE client_ip='192.168.7.50' AND date_day='2012-10-08' AND date_time>'22:00:00' AND date_time<'23:00:00';" mysql squid_log

Désinstallation

Pour désinstaller cette contribution, exécutez les commandes suivantes :

yum remove squidGuard squidclamav
expand-template /etc/squid/squid.conf
squid -k reconfigure
expand-template /etc/httpd/conf/httpd.conf
sv t /service/httpd-e-smith

Et pour supprimer toutes traces :

rm -rf /var/log/squid-db-logd
rm -rf /var/log/squidGuard
rm -f /home/e-smith/db/mysql/squid_log.dump
echo "drop database squid_log;" | mysql
rm -rf /var/squidGuard
rm -f /etc/squid/squidGuard.conf
rm -f /etc/squidclamav.conf

Bogues

Merci de faire parvenir les problèmes à la section SME-Contribs sur bugzilla en sélectionnant le composant smeserver-webfilter ou en utilisant ce lien.


Un aperçu des problèmes en cours pour cette contribution figure ci-dessous :

IDProductVersionStatusSummary (5 tasks)
12731SME Contribs11.0CONFIRMEDInstall fails - -needs "httpd-filesystem"
12307SME Contribs10.0UNCONFIRMEDProblem activating url filtering and category filtering smeserver-webfilter
12065SME Contribs10.0IN_PROGRESSupdate to httpd 2.4 syntax and add systemd changes for SME10 [smeserver-webfilter]
11978SME Contribs10.0IN_PROGRESSimport to SME10 (smeserver-webfilter)
10199SME Contribs9.1UNCONFIRMEDproblemi con WebFiltering

Journal des modifications

Seules les versions publiées dans smecontrib sont listées ici.