Forum |  HardWare.fr | News | Articles | PC | Prix | S'identifier | S'inscrire | Aide | Shop Recherche
470 connectés 

  FORUM HardWare.fr
  Linux et OS Alternatifs
  réseaux et sécurité

  Squid/SquidGuard ne filtre pas google

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Squid/SquidGuard ne filtre pas google

n°1403640
jeremyto
Posté le 13-05-2017 à 15:53:38  profilanswer
 

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 :
  1. apt-get update && apt-get upgrade -y


 
Installer Squid et SquidGuard :

Code :
  1. apt-get install -y squid3 squidguard


 
Sauvegarde du fichier squid.conf

Code :
  1. 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 :
  1. 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 :
  1. acl SSL_ports port 443
  2. acl Safe_ports port 80  # http
  3. acl Safe_ports port 21  # ftp
  4. acl Safe_ports port 443  # https
  5. acl Safe_ports port 70  # gopher
  6. acl Safe_ports port 210  # wais
  7. acl Safe_ports port 1025-65535 # unregistered ports
  8. acl Safe_ports port 280  # http-mgmt
  9. acl Safe_ports port 488  # gss-http
  10. acl Safe_ports port 591  # filemaker
  11. acl Safe_ports port 777  # multiling http
  12. acl CONNECT method CONNECT
  13. http_access deny !Safe_ports
  14. http_access deny CONNECT !SSL_ports
  15. http_access allow localhost manager
  16. http_access deny manager
  17. http_access allow localhost
  18. http_access deny all
  19. http_port 3128
  20. coredump_dir /var/spool/squid3
  21. refresh_pattern ^ftp:  1440 20% 10080
  22. refresh_pattern ^gopher: 1440 0% 1440
  23. refresh_pattern -i (/cgi-bin/|\?) 0 0% 0
  24. refresh_pattern .  0 20% 4320


 
Je rajoute un nom acl et son adresse ip (l'ip publique de la médiathèque) :

Code :
  1. acl med1 src xx.xx.xx.x


 
Et l'autorisation qu'on lui donne :  

Code :
  1. http_access allow med1


 
Masquer l’utilisation du proxy sur Internet :

Code :
  1. forwarded_for off


 
Du coup voici comment le fichier se présente :  

Code :
  1. acl SSL_ports port 443
  2. acl Safe_ports port 80  # http
  3. acl Safe_ports port 21  # ftp
  4. acl Safe_ports port 443  # https
  5. acl Safe_ports port 70  # gopher
  6. acl Safe_ports port 210  # wais
  7. acl Safe_ports port 1025-65535 # unregistered ports
  8. acl Safe_ports port 280  # http-mgmt
  9. acl Safe_ports port 488  # gss-http
  10. acl Safe_ports port 591  # filemaker
  11. acl Safe_ports port 777  # multiling http
  12. acl CONNECT method CONNECT
  13. acl med1 src xx.xx.xx.x
  14. http_access deny !Safe_ports
  15. http_access deny CONNECT !SSL_ports
  16. http_access allow localhost manager
  17. http_access deny manager
  18. http_access allow localhost
  19. http_access allow med1
  20. http_access deny all
  21. http_port 3128
  22. coredump_dir /var/spool/squid3
  23. refresh_pattern ^ftp:  1440 20% 10080
  24. refresh_pattern ^gopher: 1440 0% 1440
  25. refresh_pattern -i (/cgi-bin/|\?) 0 0% 0
  26. refresh_pattern .  0 20% 4320
  27. forwarded_for off


 
Et je renvoie le fichier squid.conf sur le VPS.
 
Je reboot squid3 :

Code :
  1. 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 :  

Code :
  1. wget http://dsi.ut-capitole.fr/blacklis [...] sts.tar.gz
  2. tar -zxvf blacklists.tar.gz


 
Je copie tout dans la base de squidguard et je change les droits pour que squidguard (ou squid?) puisse y accéder :  

Code :
  1. mv blacklists /var/lib/squidguard/db/
  2. 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 :
  1. dbhome /var/lib/squidguard/db
  2. logdir /var/log/squidguard
  3. src med1 {
  4.         ip xx.xx.xx.xx
  5. }
  6. dest porn {
  7.         domainlist blacklists/porn/domains
  8.         urllist blacklists/porn/urls
  9.         log pornaccesses
  10. }
  11. rew safesearch {
  12. s@(google..*/search?.*q=.*)@ &safe=active@i
  13.   s@(google..*/images.*q=.*)@ &safe=active@i
  14. s@(google..*/groups.*q=.*)@ &safe=active@i
  15.   s@(google..*/news.*q=.*)@ &safe=active@i
  16. s@(yandex..*/yandsearch?.*text=.*)@ &fyandex=1@i
  17.   s@(search.yahoo..*/search.*p=.*)@ &vm=r&v=1@i
  18. s@(search.live..*/.*q=.*)@ &adlt=strict@i
  19.   s@(search.msn..*/.*q=.*)@ &adlt=strict@i
  20. s@(.bing..*/.*q=.*)@ &adlt=strict@i
  21.   log block.log
  22. }
  23. acl {
  24.         med1 {
  25.                 pass !porn all
  26.    redirect http://localhost/block.html
  27.         }
  28.         default {
  29.                 pass !porn all
  30.                 redirect http://localhost/block.html
  31.         }
  32. }


 
Intégrer les blacklists dans SquidGuard

Code :
  1. squidGuard -C all
  2. 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 :
  1. 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 :
  1. service squid3 stop
  2. squid3 -z


 
la il me dit :  
 

Code :
  1. root@*****!~# kid1| Set Current directory to /var/spool/squid3
  2. kid1| Creating missing swap directories
  3. 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 :
  1. service squid3 restart


 
Un petit :  

Code :
  1. chmod -R 770 /var/lib/squidguard/db/*
  2. 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
mood
Publicité
Posté le 13-05-2017 à 15:53:38  profilanswer
 

n°1404043
fp31000
Posté le 20-05-2017 à 07:32:15  profilanswer
 

Bonjour,
 
C'est normal : HTTPS est chiffré de bout en bout, le squid ne voit rien hormis le nom de domaine que tu utilises, pas l'url complète (il te suffit de regarder les logs pour le constater : les HTTPS ne sont que sous la forme de ligne "CONNECT domaine". Donc comme Google est chiffré, tu n'as que 2 solutions :
   1) intercepter la communication et décrypter la communication (c'est possible, discrètement ou non, mais c'est un peu technique.. Voir sslbump dans squid)
   2) tu demandes gentiment à Google de t'aider.. Et en fait, ils avaient prévu de faire cela, en forçant le passage en mode "safesearch" non débrayable :
 
J'ai envoyé à l'auteur du tutoriel que tu as utilisé la réponse au problème, mais pour faire plus vite, la voici
 
===============================================================================
 
Je complèterai le tutoriel par une rubrique de plus : comment filtrer google et youtube (et bing) alors que c'est en https...
Pour faire simple : en HTTPS, squid ne voit QUE le nom de domaine. Pour filtrer les recherches google qui ne sont qu'en https, on va utiliser le mécanismes safesearch de google
 
Faites la chose suivante :
prenez le fichier

/etc/hosts

du linux qui embarque le squid (une autre manipulation est possible si vous contrôlez le serveur DNS, mais c'est touchy)
mettez dedans les lignes suivantes (attention, elles sont très nombreuses pour google, mais on peut se limiter, en France, aux 2 premières).
 

216.239.38.120 www.google.com www.google.fr
 
#  On peut continuer avec les 190 autres domaines de googlesearch
216.239.38.120 www.google.ad .... etc.
 
#  Je sépare les youtube pour la lisibilité
216.239.38.120 www.youtube.com m.youtube.com www.youtube.googleapis.com youtubei.googleapis.com www.youtube-nocookie.com
 
# On fait bing aussi
204.79.197.220 www.bing.com
 
# les IP présentées sont respectivement safesearch.google.com et strict.bing.com


 
 
hope this will help

n°1404044
jeremyto
Posté le 20-05-2017 à 11:23:25  profilanswer
 

Salut fp31000 merci pour ta réponse car je suis toujours dans la recherche.
 
En fait ce que tu me dis avec le fichier host, j'avais vu cette solution, mais pour la mettre sur chaque post, dans chacun de leur fichiers hosts (mais je voulais éviter cette pratique).  
Mais là tu me dis de le faire dans le host du serveur ! J'ai pas pensé à ça du tout. Je crois que je vais adopter cette solution merci (je vais tester).
 
Sinon oui, je peux toucher au règles DNS du compte OVH, mais c'est mieux de faire quoi ? le host ? ou les règles DNS sur OVH ?  
 
et d'ailleurs, pourquoi ça marche en local et non sur le VPS ?  
Quand tu dis "c'est normal", tu parles du fait que c'est normal que cela ne fonctionne pas sur un VPS ? (le code "rew safesearch" sur le squidguard.conf)
 
Autre chose du coup, tu penses savoir pourquoi quand c'est un site X en HTTP, le site est bien bloqué (avec le message de squid ou la redirection que j'aurai fait), alors qu'un site en HTTPS, çe me sort une erreur (mais bon c'est quand même bloqué, mais j'aurai préféré voir un message)
 
Merci !


Message édité par jeremyto le 20-05-2017 à 11:24:27
n°1404099
fp31000
Posté le 21-05-2017 à 20:57:05  profilanswer
 

Salut Jeremyto.
 
En fait je parlais du DNS résolveur (celui vers lequel pointent tes postes clients). A mon avis, fais du simple : fichier hosts.
 
"rew safesearch" marchait bien quand Google était en HTTP, mais en HTTPS, le squidguard ne voit pas l'url complète, il n'a pour travailler que le nom de domaine :
 
en HTTP : squid "voit"  
    - connexion vers www.google.fr
    - GET /q=gros nxxchons
    il peut "intercepter la requête" et la transformer en "GET /safesearch=strict&q=gros nxxchons pour l'envoyer à google.
 
en HTTPS : squid "voit
    - connexion vers la machine www.google.fr
    - puis : 010010110101010111010000101
    là, il ne peut rien du tout......
 
Pour le blocage en HTTPS, c'est exactement le même principe : le squidguard ne voit pas l'url, ni la page. Il ne peut donc pas la "remplacer" par une redirection (nous sommes dans une communication chiffrée). Donc squidguard renvoie au squid un simple "coupe la connexion", car le squid ne pourra pas "insérer" dans la communication un "redirect 302" vers ta page d'explication.
 
En reprenant l'exemple ci-dessous :
en HTTP : squid "voit"  
    - connexion vers www.google.fr
    - GET /q=gros nxxchons
    il peut alors "intercepter la requête" et faire une fausse réponse :"Response : Redirect 302 http://www.vatican.va"
 
en HTTPS : squid "voit
    - connexion vers la machine www.google.fr
    - puis : 010010110101010111010000101
    là, il peut fabriquer une réponse, mais il ne peut pas l'insérer dans le canal chiffré...
 
Hope this will help
 
 
 
 
 

n°1404119
jeremyto
Posté le 22-05-2017 à 15:13:13  profilanswer
 

Salut, DNS résolveur tu parles bien d'un simple fichier host qui se trouve dans le Debian du VPS ?  
 
Sinon tu sais pourquoi ça marche en local et non sur VPS ? (avec les mêmes codes)

n°1404167
fp31000
Posté le 24-05-2017 à 06:45:20  profilanswer
 

Salut Jeremyto
 
Non, je parle de l'installation d'un serveur Bind, unbound ou autre. avec en plus la mise en place de la fonctionnalité RPZ... Bref, du lourd, et inutile, dans ton cas, de t'en préoccuper. Utilise le serveur DNS d'OVH. Par contre le fichier /etc/hosts va être privilégié (par défaut) pour la résolution.
 
Si ce n'est pas le cas, il va falloir regarder du coté soit de nsswitch (plus ancien) soit nscd (plus récent)
 
dans /etc/nsswitch.conf tu dois avoir une ligne :
 
hosts:      files dns myhostname
 
hope this will help
 
 
 
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Linux et OS Alternatifs
  réseaux et sécurité

  Squid/SquidGuard ne filtre pas google

 

Sujets relatifs
squid et squidguard ?Squid, Squidguard & Pfsense... pb de blacklist
SquidGuard ne marche pas avec squidsquid/squidGuard
squid + squidguard surveiller ou vont les utilisateurSquid + SquidGuard = rien de bloqué.
Squid et squidguard[Squid + squidGuard] erreur : Too few redirector processes are running
squid/squidguard (debian) -> problème de transfert FTPsquid + ldap + squidguard
Plus de sujets relatifs à : Squid/SquidGuard ne filtre pas google



Copyright © 1997-2016 Hardware.fr SARL (Signaler un contenu illicite) / Groupe LDLC / Shop HFR