Installation Proxy Squid + SquidGuard

Salut amis du pinguin !

Je suis en train d’essayer de mettre en place un proxy transparent avec Squid et SquidGuard dans ma boîte… et pfiou, ça fait 3 jours que j’arrive à pas grand chose…

Pour l’instant, avant même de parler de Proxy transparent, j’aimerais déjà faire fonctionner le filtrage… Mais j’ai essayé un million de combinaisons, mais Youporn s’affiche toujours :smiley:

J’ai installé squid et squidGuard par apt-get tout simplement
La base de données de squidguard a été installée comme ça

[quote]get ftp://ftp.univ-tlse1.fr/pub/reseau/cach … sts.tar.gz
tar zxvf blacklists.tar.gz -C /var/lib/squidguard/db/
cd /var/lib/squidguard/db
mv blacklists/* .
/usr/bin/squidGuard -C all
chown -R proxy: /var/lib/squidguard/db/[/quote]

Voici le contenu de mes fichiers de configuration
/etc/squid/squid.conf

acl all src all acl manager proto cache_object acl localhost src 127.0.0.1/32 acl to_localhost dst 127.0.0.0/8 0.0.0.0/32 acl localnet src 192.168.10.0/24 # RFC1918 possible internal network acl SSL_ports port 443 # https acl SSL_ports port 563 # snews acl SSL_ports port 873 # rsync 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 Safe_ports port 631 # cups acl Safe_ports port 873 # rsync acl Safe_ports port 901 # SWAT acl Safe_ports port 25 # SMTP acl Safe_ports port 587 # SSMTP acl purge method PURGE acl CONNECT method CONNECT http_access allow manager localhost http_access deny manager http_access allow localnet http_access allow purge localhost http_access deny purge http_access deny !Safe_ports http_access deny CONNECT !SSL_ports http_access allow localhost http_access deny all icp_access allow localnet icp_access deny all http_port 3128 hierarchy_stoplist cgi-bin ? access_log /var/log/squid/access.log squid refresh_pattern ^ftp: 1440 20% 10080 refresh_pattern ^gopher: 1440 0% 1440 refresh_pattern -i (/cgi-bin/|\?) 0 0% 0 refresh_pattern (Release|Packages(.gz)*)$ 0 20% 2880 refresh_pattern . 0 20% 4320 acl shoutcast rep_header X-HTTP09-First-Line ^ICY.[0-9] upgrade_http0.9 deny shoutcast acl apache rep_header Server ^Apache broken_vary_encoding allow apache extension_methods REPORT MERGE MKACTIVITY CHECKOUT hosts_file /etc/hosts coredump_dir /var/spool/squid #cache_dir ufs /var/spool/squid 1024 256 256 #cache_mem 128 MB #maximum_object_size 15 MB #delay_parameters 1 -1/-1 -1/-1 redirect_program /usr/bin/squidGuard -c /etc/squid/squidGuard.conf redirect_children 10

/etc/squid/squidGuard.conf

[code]dbhome /var/lib/squidguard/db
logdir /var/log/squidguard
src users {
ip 192.168.10.0/24
}

dest porn {
domainlist porn/domains
urllist porn/urls
}
acl {
users {
pass !in-addr !porn any
redirect http://www.google.fr
}
else {
pass none
redirect http://www.google.fr
}
}
[/code]

J’ai simplifié au max pour l’instant, j’aimerais déjà comprendre ce que je fais faux…

J’ai configuré le proxy sur un PC du réseau, le contenu Internet passe bien par le proxy, car j’ai des traces dans /var/log/squid/access.log

Quelqu’un pour m’aider ?
D’avance merci !

Bonsoir!

As-tu essayé de reconstruire la base de squidguard avec /usr/sbin/update-squidguard? (vérifie quand même que c’est le bon chemin parce que je te le donne de tête ^^

En parallèle fais un tail -f /var/log/squidguard/squidguard.log. (d’après ce que je vois sur ton fichier : directive logdir)

Dis nous ce qu’il en est par la suite :slightly_smiling:

Edit : pourquoi commentes-tu la ligne correspondant au cache?

L’as-tu construit ?

Salut merci de ta réponse

Je vais tester tout ça vendredi, je ne suis pas au bureau demain. Je te tiendrais informé !

Pas de problèmes. D’ailleurs, ce sont les trois lignes qu’il faut dé-commenter.

[quote]#cache_dir ufs /var/spool/squid 1024 256 256
#cache_mem 128 MB
#maximum_object_size 15 MB[/quote]

Essaye de voir si ton squid fonctionne bien avec un ACL qui bloc youporn.
Il me semble qu’il faut créer les bases squidGuard avec la commande squiguard -C all non ?

Il semblerait qu’il ai déjà effectué cette commande. /usr/sbin/update-squidguard construit également les db.

Par ailleurs, maintenant que je dis ça, je ne comprends pas pourquoi il y a deux commandes pour faire la même action… (à moins que je me trompe?)

Merci de toutes vos réponses

@chrOmy : J’ai commenté les lignes liées au cache car je trouvais que Squid + SquidGuard consommaient beaucoup de ressources (CPU à 100% et 2Go de RAM, ce qui me paraissait énorme, surtout qu’il n’y a à ce jour qu’un seul PC qui passe par le Proxy…), du coup j’ai testé des trucs pour essayer de comprendre… initialement je les ai rajouté ces lignes, donc c’était juste pour faire des tests, je les dé-commente de suite ^^

Alors effectivement en lançant les commandes que vous m’avez suggéré, je commence à avoir des débuts de réponse !

root@SRVPROXY:~# /usr/sbin/update-squidguard Rebuild SquidGuard database - this can take a while. [info] Reloading Squid configuration files. done.

root@SRVPROXY:~# tail -f /var/log/squidguard/squidGuard.log 2012-11-16 09:55:36 [6801] INFO: New setting: dbhome: /var/lib/squidguard/db 2012-11-16 09:55:36 [6801] INFO: New setting: logdir: /var/log/squidguard 2012-11-16 09:55:36 [6801] init domainlist /var/lib/squidguard/db/porn/domains 2012-11-16 09:55:36 [6798] init domainlist /var/lib/squidguard/db/porn/domains 2012-11-16 09:55:36 [6802] INFO: New setting: dbhome: /var/lib/squidguard/db 2012-11-16 09:55:36 [6802] INFO: New setting: logdir: /var/log/squidguard 2012-11-16 09:55:36 [6802] init domainlist /var/lib/squidguard/db/porn/domains 2012-11-16 09:55:36 [6803] INFO: New setting: dbhome: /var/lib/squidguard/db 2012-11-16 09:55:36 [6803] INFO: New setting: logdir: /var/log/squidguard 2012-11-16 09:55:36 [6803] init domainlist /var/lib/squidguard/db/porn/domains 2012-11-16 09:56:56 [6800] init urllist /var/lib/squidguard/db/porn/urls 2012-11-16 09:56:56 [6800] (squidGuard): FATAL: default acl not defined in configfile /etc/squid/squidGuard.conf 2012-11-16 09:56:56 [6800] ERROR: Going into emergency mode 2012-11-16 09:57:00 [6798] init urllist /var/lib/squidguard/db/porn/urls 2012-11-16 09:57:01 [6798] (squidGuard): FATAL: default acl not defined in configfile /etc/squid/squidGuard.conf 2012-11-16 09:57:01 [6798] ERROR: Going into emergency mode 2012-11-16 09:57:20 [6803] init urllist /var/lib/squidguard/db/porn/urls 2012-11-16 09:57:20 [6803] (squidGuard): FATAL: default acl not defined in configfile /etc/squid/squidGuard.conf 2012-11-16 09:57:20 [6803] ERROR: Going into emergency mode 2012-11-16 09:57:30 [6797] init urllist /var/lib/squidguard/db/porn/urls 2012-11-16 09:57:30 [6797] (squidGuard): FATAL: default acl not defined in configfile /etc/squid/squidGuard.conf 2012-11-16 09:57:30 [6797] ERROR: Going into emergency mode 2012-11-16 09:57:34 [6792] init urllist /var/lib/squidguard/db/porn/urls 2012-11-16 09:57:34 [6792] (squidGuard): FATAL: default acl not defined in configfile /etc/squid/squidGuard.conf 2012-11-16 09:57:34 [6792] ERROR: Going into emergency mode 2012-11-16 09:57:40 [6799] init urllist /var/lib/squidguard/db/porn/urls 2012-11-16 09:57:40 [6799] (squidGuard): FATAL: default acl not defined in configfile /etc/squid/squidGuard.conf 2012-11-16 09:57:40 [6799] ERROR: Going into emergency mode 2012-11-16 09:57:47 [6802] init urllist /var/lib/squidguard/db/porn/urls 2012-11-16 09:57:48 [6802] (squidGuard): FATAL: default acl not defined in configfile /etc/squid/squidGuard.conf 2012-11-16 09:57:48 [6802] ERROR: Going into emergency mode 2012-11-16 09:57:49 [6794] init urllist /var/lib/squidguard/db/porn/urls 2012-11-16 09:57:49 [6794] (squidGuard): FATAL: default acl not defined in configfile /etc/squid/squidGuard.conf 2012-11-16 09:57:49 [6794] ERROR: Going into emergency mode 2012-11-16 09:57:49 [6801] init urllist /var/lib/squidguard/db/porn/urls 2012-11-16 09:57:49 [6801] (squidGuard): FATAL: default acl not defined in configfile /etc/squid/squidGuard.conf 2012-11-16 09:57:49 [6801] ERROR: Going into emergency mode 2012-11-16 09:57:50 [6795] init urllist /var/lib/squidguard/db/porn/urls 2012-11-16 09:57:50 [6795] (squidGuard): FATAL: default acl not defined in configfile /etc/squid/squidGuard.conf 2012-11-16 09:57:50 [6795] ERROR: Going into emergency mode

Des idées ?

Encore merci

Ok. Tu as enlevé l’ACL “default”.

Remplaces else par default pour voir:

acl { users { pass !in-addr !porn any redirect http://www.google.fr } default{ pass none redirect http://www.google.fr } }

Me semble que ça devrait aller mieux.

:023 Maintenant quand je vais sous Youporn, je suis redirigé vers Google !!!

Impecc !

Il ne me reste plus qu’à faire fonctionner mon Proxy de manière transparente…

En gros, je vous explique mon infra, j’ai des idées sur comment faire, mais je ne suis pas sur…

J’ai un serveur VMware Esxi sur lequel tourne la VM Proxy sous Debian. J’ai 4 interfaces réseau sur ce serveur. Aussi, ce que je comptais faire, c’est connecter la patte WAN directement sur le serveur, faire un VLAN dans le switch VMware, affecter 2 interfaces réseau à ma VM Proxy une sur le LAN une sur le WAN, et router le tout

Admettons que Eth0 est sur le LAN et Eth1 sur le LAN, avez vous des idées pour faire ce que je viens de vous décrire ?

@+

Ouvres un nouveau fil, je pense que ce sera plus lisible et plus pratique :wink:

Penses à la coche verte si tout est résolu :slightly_smiling:

Bah disons que j’ai toujours les mêmes problèmes de ressources… rendant du coup la navigation Internet en passant par le proxy très longue…

Quelqu’un a une idée ?

Peut-être ton cache? Ça devrait au contraire améliorer la navigation -_-

Essaies de supprimer et recréer le cache de squid.

[code]# cd /var/spool/squid

service squid stop

rm -Rf /var/spool/squid/*

service squid start[/code]

Fais TRES attention à la commande rm -RF !

Edit : Pour les ressources, depuis toutes ces manips, as-tu rebooté au moins une fois? Parce que certaines commandes de générations de SquidGuard peuvent rapidement consommer énormément de ressources, peut-être qu’il y en a une qui tourne encore.

En fait, j’ai fait un

service squid stop killall -9 squidGuard service squid start

et c’est rentré dans l’ordre

Je me suis apercu que Squid consomme énormément de ressources au démarrage, pendant bien 5 à 10 minutes. J’imagine que c’est le temps qu’il traite la conf et les bases de données… Bref, au final ça va, ça me plait bien comme ça. Je ferme le ticket d’incident :stuck_out_tongue:

Merci à vous pour votre aide !

Désolé de réouvrir ce topic, mais j’ai encore un soucis

Je n’arrive pas à accéder aux IP “locales” de mon réseau. A savoir que, en passant par mon proxy, je n’arrive pas à accéder à une application web située sur un serveur. Par exemple : 192.168.10.211/mon_appli

quand j’essaie d’y accéder avec Chrome en HTTPS, j’ai un message qui me dit qu’il n’arrive pas à trouver la page.

Par contre, quand j’essaie d’accéder en HTTP, je suis redirigé par squidGuard vers ma page de blocage du proxy.

Voici mes fichiers de conf
squid.conf

root@SRVPROXY:~# cat /etc/squid/squid.conf
acl all src all
acl manager proto cache_object
acl localhost src 127.0.0.1/32
acl to_localhost dst 127.0.0.0/8 0.0.0.0/32
acl localnet src 192.168.10.0/24 # RFC1918 possible internal network
acl to_localnet dst 192.168.10.0/24
acl SSL_ports port 443          # https
acl SSL_ports port 563          # snews
acl SSL_ports port 873          # rsync
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 Safe_ports port 631         # cups
acl Safe_ports port 873         # rsync
acl Safe_ports port 901         # SWAT
acl Safe_ports port 25          # SMTP
acl Safe_ports port 587         # SSMTP
acl purge method PURGE
acl CONNECT method CONNECT
http_access allow manager localhost
http_access deny manager
http_access allow localnet
http_access allow purge localhost
http_access allow to_localnet
http_access allow to_localhost
http_access allow localhost
icp_access allow localnet
always_direct allow to_localnet
always_direct allow to_localhost
http_access deny CONNECT !SSL_ports
http_access deny !Safe_ports
http_access deny purge
http_access deny all
icp_access deny all
no_cache deny to_localnet
no_cache deny to_localhost
http_port 3128 transparent
hierarchy_stoplist cgi-bin ?
access_log /var/log/squid/access.log squid
refresh_pattern ^ftp:           1440    20%     10080
refresh_pattern ^gopher:        1440    0%      1440
refresh_pattern -i (/cgi-bin/|\?) 0     0%      0
refresh_pattern (Release|Packages(.gz)*)$       0       20%     2880
refresh_pattern .               0       20%     4320
acl shoutcast rep_header X-HTTP09-First-Line ^ICY.[0-9]
upgrade_http0.9 deny shoutcast
acl apache rep_header Server ^Apache
broken_vary_encoding allow apache
extension_methods REPORT MERGE MKACTIVITY CHECKOUT
hosts_file /etc/hosts
coredump_dir /var/spool/squid
cache_dir ufs /var/spool/squid 1024 256 256
cache_mem 128 MB
maximum_object_size 15 MB
delay_parameters 1 -1/-1 -1/-1
redirect_program /usr/bin/squidGuard -c /etc/squid/squidGuard.conf
redirect_children 10

squidGuard.conf

[code]root@SRVPROXY:~# cat /etc/squid/squidGuard.conf
dbhome /var/lib/squidguard/db
logdir /var/log/squidguard

src users {
ip 192.168.10.0/24
}

dest adult {
domainlist adult/domains
urllist adult/urls
log adult_access.log
}
dest dating {
domainlist dating/domains
urllist dating/urls
log dating_access.log
}
dest warez {
domainlist warez/domains
urllist warez/urls
log warez_access.log
}
dest ads {
domainlist ads/domains
urllist ads/urls
expressionlist ads/expressions
}
dest dangerous_material {
domainlist dangerous_material/domains
urllist dangerous_material/urls
log dangerous_material_access.log
}
dest gambling {
domainlist gambling/domains
urllist gambling/urls
log gambling_access.log
}
dest drugs {
domainlist drugs/domains
urllist drugs/urls
log drugs_access.log
}
dest sect {
domainlist sect/domains
urllist sect/urls
log sect_access.log
}
dest strong_redirector {
domainlist strong_redirector/domains
urllist strong_redirector/urls
log strong_redirector_access.log
}
acl {
users {
pass !in-addr !strong_redirector !dangerous_material !gambling !drugs !sect !ads !warez !dating !adult any
redirect http://localhost/index.html
}
else {
pass none
redirect http://localhost/index.html
}
default {
pass none
redirect http://localhost/index.html
}
}
[/code]

D’avance merci pour votre aide précieuse :stuck_out_tongue: !

Et si tu indiquais dans ton navigateur de ne pas utiliser de proxy pour les adresses locales?

je diffuse automatiquement les paramètres de proxy par DNS et DHCP…

Et tu ne peux pas rajouter une option qui éviterai de passer par le serveur proxy pour les adresses locales?

Parce que concrètement, tu n’as pas besoin d’y passer…

Oui c’est la piste que je suis en train d’explorer. En gros, j’ai un fichier wpad.dat qui contient mes règles d’accès au proxy. Ce fichier est automatiquement interrogé par les navigateurs qui eux mêmes sont configurés pour détecter automatiquement les paramètres de proxy.

Donc je pense qu’une règle dans ce fichier pourrait résoudre mes soucis, encore faut-il trouver laquelle !

Pour l’instant, il n’est pas très sexy mon fichier, mais je pensais qu’il fonctionnait… Preuve en est que non :smiley:

function FindProxyForURL(url, host) { if (isInNet(myIpAddress(), "192.168.10.0", "255.255.255.0")) return "PROXY 192.168.10.1:3128"; else return "PROXY 192.168.10.1:3128"; }

Je viens de voir sur wikipédia un exemple de règle qui a l’air parlant :

function FindProxyForURL(url, host) { // our local URLs from the domains below example.com don't need a proxy: if (shExpMatch(url,"*.example.com/*")) {return "DIRECT";} if (shExpMatch(url, "*.example.com:*/*")) {return "DIRECT";}

Peut-être peux-tu t’en inspirer?

Par contre il y a quelque chose que je trouve étrange dans ton script, c’est que quelque soit le résultat retourné par:

tu indiques le proxy.
Pourquoi faire un “if” si de toute façon tu appliques la même règle quelque soit le résultat?