Bonjour à tous, j'ai un peu du mal à faire fonctionner mon serveur Debian 8 avec Squid/SquidGuard sur un VPS OVH alors que j'avais réussi à le faire marcher il y a un mois sur un serveur local (sous VirtualBox).
Du coup je poste ici en faisant un appel à l'aide
Ce que je veux faire :
Mon projet à terme est de mettre en place un serveur VPS avec Debian 8 et Squid/SquidGuard qui permet de filtrer des ordinateurs de plusieurs médiathèques. Car actuellement, j'ai juste OpenDNS, des addons Chrome qui permettent cela mais je n'ai vraiment pas de visu sur ce que tout le monde fait, donc je ne peux pas vraiment savoir si quelqu'un désactive tout simplement un addon chrome (car il ne faut pas de password pour ça).
De plus, il me faut des enregistrements logs pour la gendarmerie en cas de problème (c'est la loi).
Voici les tutos sur lesquels je me suis appuyé :
- http://syskb.com/installer-proxy-s [...] -parental/
- https://memo-linux.com/installer-un [...] us-debian/
La configuration à terme
- Un serveur VPS sous OVH
- Une médiathèque A
- Une médiathèque B
- Une médiathèque C
- Liste de sites via l'académie de toulouse
- Forcing du safesearch dans les moteurs de recherche (histoire de ne montrer aucune image).
- Logs (avec un moyen de les lire facilement ?)
toute cette configuration fonctionnait en local lorsque j'avais fait des tests sur un Debian 8 sous VirtualBOX (avec des ip locales du coup)
Voici donc ma procédure lorsque j'ai eu accès au VPS :
Mise à jour de la distrib :
Code :
- apt-get update && apt-get upgrade -y
|
Installer Squid et SquidGuard :
Code :
- apt-get install -y squid3 squidguard
|
Sauvegarde du fichier squid.conf
Code :
- cp /etc/squid3/squid.conf /etc/squid3/squid.conf.back
|
Générer une configuration plus légère en supprimant les nombreuses (mais utiles) lignes de commentaire :
Code :
- cat /etc/squid3/squid.conf.back | egrep -v -e '^[[:blank:]]*#|^$' > /etc/squid3/squid.conf
|
Ensuite je me connecte au VPS via WinSCP et je récupère le fichier squid.conf.
Voici comment il se présente :
Code :
- acl SSL_ports port 443
- acl Safe_ports port 80 # http
- acl Safe_ports port 21 # ftp
- acl Safe_ports port 443 # https
- acl Safe_ports port 70 # gopher
- acl Safe_ports port 210 # wais
- acl Safe_ports port 1025-65535 # unregistered ports
- acl Safe_ports port 280 # http-mgmt
- acl Safe_ports port 488 # gss-http
- acl Safe_ports port 591 # filemaker
- acl Safe_ports port 777 # multiling http
- acl CONNECT method CONNECT
- http_access deny !Safe_ports
- http_access deny CONNECT !SSL_ports
- http_access allow localhost manager
- http_access deny manager
- http_access allow localhost
- http_access deny all
- http_port 3128
- coredump_dir /var/spool/squid3
- refresh_pattern ^ftp: 1440 20% 10080
- refresh_pattern ^gopher: 1440 0% 1440
- refresh_pattern -i (/cgi-bin/|\?) 0 0% 0
- refresh_pattern . 0 20% 4320
|
Je rajoute un nom acl et son adresse ip (l'ip publique de la médiathèque) :
Code :
- acl med1 src xx.xx.xx.x
|
Et l'autorisation qu'on lui donne :
Code :
- http_access allow med1
|
Masquer l’utilisation du proxy sur Internet :
Du coup voici comment le fichier se présente :
Code :
- acl SSL_ports port 443
- acl Safe_ports port 80 # http
- acl Safe_ports port 21 # ftp
- acl Safe_ports port 443 # https
- acl Safe_ports port 70 # gopher
- acl Safe_ports port 210 # wais
- acl Safe_ports port 1025-65535 # unregistered ports
- acl Safe_ports port 280 # http-mgmt
- acl Safe_ports port 488 # gss-http
- acl Safe_ports port 591 # filemaker
- acl Safe_ports port 777 # multiling http
- acl CONNECT method CONNECT
- acl med1 src xx.xx.xx.x
- http_access deny !Safe_ports
- http_access deny CONNECT !SSL_ports
- http_access allow localhost manager
- http_access deny manager
- http_access allow localhost
- http_access allow med1
- http_access deny all
- http_port 3128
- coredump_dir /var/spool/squid3
- refresh_pattern ^ftp: 1440 20% 10080
- refresh_pattern ^gopher: 1440 0% 1440
- refresh_pattern -i (/cgi-bin/|\?) 0 0% 0
- refresh_pattern . 0 20% 4320
- forwarded_for off
|
Et je renvoie le fichier squid.conf sur le VPS.
Je reboot squid3 :
Code :
- sudo /etc/init.d/squid3 restart
|
Du coup je peux tester de suite si cela marche en mettant l'ip du vps dans les options internet (proxy) d'un pc de med1 eoopzprizepirzpirzoprizop.fr (par exemple) dans chrome, et j'ai donc squid qui se montre.
Jusque là, tout va bien ça fonctionne.
Maintenant on va regarder du côté de squidguard pour les règles de filtrage.
Je télécharge la liste de toulouse et je décompresse :
Je copie tout dans la base de squidguard et je change les droits pour que squidguard (ou squid?) puisse y accéder :
Code :
- mv blacklists /var/lib/squidguard/db/
- chown -R proxy:proxy /var/lib/squidguard/db/
|
Changer la configuration de SquidGuard dans le fichier /etc/squidguard/squidGuard.conf
Dans l’exemple ci-dessous, tous les accès listés à des sites pornographiques seront bloqués pour tous les utilisateurs, on peut voir aussi que j'ai créer un groupe med1 avec l'ip de la mediatheque1, qui est bloquée aussi en porn. Je prépare le terrain pour pouvoir rajouter ensuite med2 med3 (au cas où si des régles de filtrages seraient différentes plus tard)
Mais aussi, je met en place le forcing safesearch dans les moteurs de recherche :
Code :
- dbhome /var/lib/squidguard/db
- logdir /var/log/squidguard
- src med1 {
- ip xx.xx.xx.xx
- }
- dest porn {
- domainlist blacklists/porn/domains
- urllist blacklists/porn/urls
- log pornaccesses
- }
- rew safesearch {
- s@(google..*/search?.*q=.*)@ &safe=active@i
- s@(google..*/images.*q=.*)@ &safe=active@i
- s@(google..*/groups.*q=.*)@ &safe=active@i
- s@(google..*/news.*q=.*)@ &safe=active@i
- s@(yandex..*/yandsearch?.*text=.*)@ &fyandex=1@i
- s@(search.yahoo..*/search.*p=.*)@ &vm=r&v=1@i
- s@(search.live..*/.*q=.*)@ &adlt=strict@i
- s@(search.msn..*/.*q=.*)@ &adlt=strict@i
- s@(.bing..*/.*q=.*)@ &adlt=strict@i
- log block.log
- }
- acl {
- med1 {
- pass !porn all
- redirect http://localhost/block.html
- }
- default {
- pass !porn all
- redirect http://localhost/block.html
- }
- }
|
Intégrer les blacklists dans SquidGuard
Code :
- squidGuard -C all
- chown -R proxy:proxy /var/lib/squidguard/db/
|
Ajouter la ligne suivante à la fin du fichier de configuration de Squid /etc/squid3/squid.conf (pour charger squidguard à chaque lancement de squid)
Code :
- url_rewrite_program /usr/bin/squidGuard -c /etc/squidguard/squidGuard.conf
|
tester la configuration de SquidGuard et Squid et générer les répertoires de cache :
Code :
- service squid3 stop
- squid3 -z
|
la il me dit :
Code :
- root@*****!~# kid1| Set Current directory to /var/spool/squid3
- kid1| Creating missing swap directories
- kid1| No cache_dir stores are configured
|
à ce moment là je ne sais pas si c'est normal (je ne suis pas trop balèse en linux)
Je redémarre squid :
Code :
- service squid3 restart
|
Un petit :
Code :
- chmod -R 770 /var/lib/squidguard/db/*
- chown -R proxy:proxy /var/log/squid3 /var/lib/squidguard /var/log/squidguard
|
je teste, le site youporn est bien bloqué (mais le message d'erreur n'est pas clair, il faut que je voit comment afficher autre chose.
Mais le gros problème, c'est que dans google image, les images porn sont affichées.
Comme ci mon code (à partir de "rew safesearch" dans squidguard.conf) ne fonctionnait pas
Pourtant, quand j'avais testé avec mon serveur local, ça fonctionnait, ça virait tous les termes dans les résultats google, et toutes les images google
Quelqu'un aurait une idée du pourquoi ?
J'ai tenté de formater le VPS et tout recommencer, ça fait le même problème (même en suivant d'autres tuto)
Message édité par jeremyto le 13-05-2017 à 16:11:23