[ Présentation
| Squid (installation
de base , installation avec
squidguard ) | wwwoffle
( Caractéristiques , Installation , Configuration basique , Configuration avancée , Lancement automatisé , Utilisation) ]
Dernière modification 25 juillet 2006
Les proxy
Ce document est téléchargeable
(format pdf)
Configuration du réseau
Présentation
Un proxy (serveur mandataire en français) est un outil logiciel
permettant de sauvegarder les pages les plus fréquemment
visitées ou les dernières visitées pour qu'elles
s'affichent plus rapidement. SQUID est le proxy le plus
communément utilisé par les professionnels, il est
plutôt destiné pour une connexion permanente avec beaucoup
de machines, il a de plus besoin d'un serveur DNS pour fonctionner
(ça peut être celui du FAI), si vous passez en mode
off-line, vous ne pouvez plus accèder aux pages les plus
fréquemment visitées ou aux dernières
visitées même si elles ont été
sauvegardées, de même vous ne pourrez accèder aux
pages que vous mettez en ligne sur votre serveur Apache en intranet,
en
fait il peut être intéressant pour les utilisateurs d'ADSL.
SquidGuard
couplé à Squid
permet de rajouter un contrôle pour le surf à partir de
listes prédéfinies, c'est particulièrement
intéressant quand vous ne voulez pas que vos utilisateurs
surfent n'importe où.
WWWOFFLE au contraire vous permet d'accèder en mode
off-line à ces pages, il est plus destiné à un
usage de type poste isolé (ou petit réseau isolé)
avec une connexion intermittente.
Squid
Installation de base
ATTENTION squid a besoin d'un serveur DNS pour
fonctionner, cela peut être le serveur DNS du FAI ou un serveur DNS local.
Squid est disponible avec la Mandriva, package squid-2.X-STABLE
qui requiert l'installation de perl-Authen-Smb (sous ubuntu package squid).
Le fichier de configuration se trouve sous /etc/squid et a pour
nom squid.conf, le fichier est très long, rassurez vous
il n'y a que deux, trois trucs à rajouter ou à modifier
pour que ça fonctionne.
Vous pouvez modifier la taille du répertoire de cache de squid
en jouant sur le premier paramètre numérique de la
variable cache_dir, ici il est limité à 40Mo.
cache_dir ufs /var/spool/squid 40 16 256
Par défaut les erreurs de squid sont mailés
à l'utilisateur webmaster qu'il existe ou pas sur votre
système, pour mettre un autre utilisateur, modifier la variable cache_mgr,
pour ma part j'ai choisi l'utilisateur root comme destinataire.
cache_mgr root
Par défaut squid va chercher le nom du serveur DNS
dans le fichier /etc/resolv.conf vous pouvez
éventuellement définir des adresses IP de serveurs DNS
avec la variable dns_nameservers comme ceci :
dns_nameservers 10.0.0.1 192.172.0.2
Dans le cas où il n'y a pas de d'adresse de serveur DNS dans
votre fichier resolv.conf (cas d'attribution dynamique), je
vous conseille de rajouter cette ligne dns_nameservers
avec
les adresses IP de votre fournisseur d'accès
systématiquement sans quoi squid ne se lancera pas au
démarrage (pour connaitre les adresses IP, il suffit de se
connecter et d'éditer le fichier /etc/resolv.conf). Si
vous avez un server DNS
local, vous n'avez pas à activer cette ligne, dès
lors que vous avez un fichier resolv.conf
contenant
au moins la ligne
nameserver 127.0.0.1
Pour éviter les longs time out du à la
résolution d'adresse, modifiez la variable suivante
dns_timeout 2 minutes
Si vous voulez indiquer des secondes, mettre seconds
Maintenant on va définir les autorisations d'accès (ACL
Access Controls List), on va définir le réseau qui a
le droit d'accéder à votre système, ici c'est le
réseau privé d'adresse 192.168.13.0.
acl allowed_hosts src 192.168.13.0/255.255.255.0
On définit maintenant les autorisations d'accés HTTP,
on autorise uniquement les allowed_hosts qu'on a défini
précédemment.
http_access allow allowed_hosts
Voilà ce que ça donne au final sur ma Mandrake
pour les autorisations d'accés :
#Recommended minimum configuration:
acl all src 0.0.0.0/0.0.0.0
acl manager proto cache_object
acl localhost src 127.0.0.1/255.255.255.255
acl allowed_hosts src 192.168.13.0/255.255.255.0
acl to_localhost dst 127.0.0.0/8
acl SSL_ports port 443 563
acl Safe_ports port
80 # http
acl Safe_ports port
21 # ftp
acl Safe_ports port 443 563 # https, snews
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
(...)
#Recommended minimum configuration:
#
# Only allow cachemgr access from localhost
http_access allow manager localhost
http_access deny manager
# Deny requests to unknown ports
http_access deny !Safe_ports
# Deny CONNECT to other than SSL ports
http_access deny CONNECT !SSL_ports
# INSERT YOUR OWN RULE(S) HERE TO
ALLOW ACCESS FROM YOUR CLIENTS
# And finally deny all other access to this proxy
http_access allow localhost
http_access allow allowed_hosts
http_reply_access allow all
Pour lancer squid, il suffit maintenant de taper /etc/rc.d/init.d/squid
start
Si vous avez modifié /etc/squid/squid.conf, vous
pouvez faire prendre en compte les modifs, en tapant:
sous mandriva
/etc/rc.d/init.d/squid restart
sous ubuntu
/etc/init.d/squid restart
Maintenant vous pouvez configurer vos postes clients, en configurant
le browser pour qu'il se serve d'un proxy avec pour nom le nom de votre
poste Linux (défini dans c:/windows/hosts pour Win9X) et
pour port 3128 (port par défaut). Connectez vous sur le net, et
normalement ça devrait marcher.
ATTENTION Squid a nécessairement besoin d'un serveur
DNS pour pouvoir marcher, cela peut-être un serveur DNS local pour pouvoir
accéder à votre site web intranet ou le(s) serveur(s) DNS
du FAI.
Les clients peuvent maintenant être configurés pour
utiliser votre serveur comme proxy (port par défaut 3128).
[
Retour haut de la page]
Installation de squidguard
Sur une Mandriva et (k)ubuntu le package se nomme
squidGuard.
Pour une Mandriva
A l'installation on a les messages suivants
Préparation...
##################################################
1:squidGuard
#################################################
warning: user apache does not exist - using root
warning: group apache does not exist -
using root
warning: user apache does not exist -
using root
warning: group apache does not exist -
using root
#
WARNING !!! WARNING !!! WARNING !!!
WARNING !!!
Modify the following line in the
/etc/squid/squid.conf
redirect_program /usr/bin/squidGuard
-c /etc/squid/squidGuard.conf
Maintenant
sous
/etc/squid on
tape
cp squidGuard.conf.sample
squidGuard.conf
C'est le fichier
/etc/squid/squidGuard.conf
qu'on modifiera un peu plus loin. Maintenant vous pouvez utiliser la
liste noire des sites classées par catégorie (porno,
violence, ...) fournie par le package
squidGuard
qui se trouve sous
/usr/share/squidGuard-1.2.0/db
ou
récupérer des listes noires sur le net.
Dans le cas où on utilise une liste trouvée sur le net
(il n'y a rien à faire si vous utilisez la liste fournie par la Mandriva). Cette URL
http://www.squidguard.org/blacklist/
offre un certain nombre de listes. J'ai choisi celle entretenue par
l'université de Toulouse. Pour voir comment mettre à jour
régulièrement cette liste, c'est par
ici.
L'URL est la suivante
http://cri.univ-tlse1.fr/documentations/cache/squidguard_en.html#contrib
on y récupère un fichier
blacklists.tar.gz.
Vous pouvez
éventuellement préalablement sauvegarder les listes
d'origine comme ceci
cp -Rf /usr/share/squidGuard-1.2.0/db/
/usr/share/squidGuard-1.2.0/mdk
on décompresse l'archive dans le répertoire
db
préalablement créé
tar xvfz blacklists.tar.gz --directory
/usr/share/squidGuard-1.2.0/db
sudo tar xvfz blacklists.tar.gz --directory /var/lib/squidguard/db
On supprime quelques doublons originaux
cd
/usr/share/squidGuard-1.2.0/db/
rm -Rf ads adult aggressive audio-video drugs forums gambling hacking mail porn proxy publicite redirector violence warez
cd /usr/share/squidGuard-1.2.0/db/blacklists
mv * ..
rmdir /usr/share/squidGuard-1.2.0/db/blacklists
En tant que root on met à jour la base en tapant
squidGuard -c /etc/squid/squidGuard.conf -C all -d
/usr/share/squidGuard-1.2.0/db
Cela donne
2005-08-02 11:35:03 [3995] init iplist
/usr/share/squidGuard-1.2.0/db/privilegedsource/ips
2005-08-02 11:35:03 [3995] sourceblock privilegedsource missing active
content, set inactive
2005-08-02 11:35:03 [3995] init iplist
/usr/share/squidGuard-1.2.0/db/bannedsource/ips
2005-08-02 11:35:03 [3995] sourceblock bannedsource missing active
content, set inactive
2005-08-02 11:35:03 [3995] init iplist
/usr/share/squidGuard-1.2.0/db/lansource/lan
2005-08-02 11:35:03 [3995] sourceblock lansource missing active
content, set inactive
2005-08-02 11:35:03 [3995] init domainlist
/usr/share/squidGuard-1.2.0/db/porn/domains
2005-08-02 11:35:25 [3995] create new dbfile
/usr/share/squidGuard-1.2.0/db/porn/domains.db
2005-08-02 11:35:25 [3995] init urllist
/usr/share/squidGuard-1.2.0/db/porn/urls
2005-08-02 11:35:25 [3995] create new dbfile
/usr/share/squidGuard-1.2.0/db/porn/urls.db
2005-08-02 11:35:25 [3995] init expressionlist
/usr/share/squidGuard-1.2.0/db/porn/expressions
2005-08-02 11:35:25 [3995] init domainlist
/usr/share/squidGuard-1.2.0/db/adult/domains
(...)
2005-08-02 11:35:48 [3995] create new dbfile
/usr/share/squidGuard-1.2.0/db/publicite/domains.db
2005-08-02 11:35:48 [3995] init urllist
/usr/share/squidGuard-1.2.0/db/publicite/urls
2005-08-02 11:35:48 [3995] create new dbfile
/usr/share/squidGuard-1.2.0/db/publicite/urls.db
2005-08-02 11:35:48 [3995] init expressionlist
/usr/share/squidGuard-1.2.0/db/publicite/expressions
2005-08-02 11:35:48 [3995] init domainlist
/usr/share/squidGuard-1.2.0/db/violence/domains
2005-08-02 11:35:48 [3995] create new dbfile
/usr/share/squidGuard-1.2.0/db/violence/domains.db
2005-08-02 11:35:48 [3995] init urllist
/usr/share/squidGuard-1.2.0/db/violence/urls
2005-08-02 11:35:48 [3995] create new dbfile
/usr/share/squidGuard-1.2.0/db/violence/urls.db
2005-08-02 11:35:48 [3995] init expressionlist
/usr/share/squidGuard-1.2.0/db/violence/expressions
2005-08-02 11:35:48 [3995] init domainlist
/usr/share/squidGuard-1.2.0/db/banneddestination/domains
2005-08-02 11:35:48 [3995] domainlist empty, removed from memory
2005-08-02 11:35:48 [3995] init urllist
/usr/share/squidGuard-1.2.0/db/banneddestination/urls
2005-08-02 11:35:48 [3995] urllist empty, removed from memory
2005-08-02 11:35:48 [3995] init expressionlist
/usr/share/squidGuard-1.2.0/db/banneddestination/expressions
2005-08-02 11:35:48 [3995] init domainlist
/usr/share/squidGuard-1.2.0/db/advertising/domains
2005-08-02 11:35:48 [3995] domainlist empty, removed from memory
2005-08-02 11:35:48 [3995] init urllist
/usr/share/squidGuard-1.2.0/db/advertising/urls
2005-08-02 11:35:48 [3995] urllist empty, removed from memory
2005-08-02 11:35:48 [3995] squidGuard 1.2.0 started (1122975303.182)
2005-08-02 11:35:48 [3995] db update done
2005-08-02 11:35:48 [3995] squidGuard stopped (1122975348.995)
Maintenant sous
/usr/share/squidGuard-1.2.0/
on tape
chown -R squid:squid db
Pour une ubuntu
La base de données des URLs craignos se trouve sous
/var/lib/squidguard/db qui est totalement vide, il faut en
récupérer une sur le net. On peut en trouver un certain
nombre par ici Cette URL
http://www.squidguard.org/blacklist/. J'ai choisi celle entretenue par
l'université de Toulouse. Pour voir comment mettre à jour
régulièrement cette liste, c'est par
ici.
L'URL est la suivante
http://cri.univ-tlse1.fr/documentations/cache/squidguard_en.html#contrib
on y récupère un fichier
blacklists.tar.gz.
on décompresse l'archive dans le répertoire db
préalablement créé
sudo tar xvfz blacklists.tar.gz --directory /var/lib/squidguard/db
On place les répertoires au bon endroit
cd /var/lib/squidguard/db/blacklists
mv * ..
rmdir /var/lib/squidguard/db/blacklists
on met à jour la base en tapant
sudo squidGuard -c /etc/squid/squidGuard.conf -C all -d /var/lib/squidguard/db/
Cela donne
2006-07-24 18:43:34 [9859] sourceblock bannedsource missing active content, set inactive
2006-07-24 18:43:34 [9859] init domainlist /var/lib/squidguard/db/adult/domains
2006-07-24 18:44:04 [9859] create new dbfile /var/lib/squidguard/db/adult/domains.db
2006-07-24 18:44:05 [9859] init urllist /var/lib/squidguard/db/adult/urls
2006-07-24 18:44:05 [9859] create new dbfile /var/lib/squidguard/db/adult/urls.db
2006-07-24 18:44:05 [9859] init expressionlist /var/lib/squidguard/db/adult/expressions
2006-07-24 18:44:05 [9859] init domainlist /var/lib/squidguard/db/sexual_education/domains
2006-07-24 18:44:05 [9859] create new dbfile /var/lib/squidguard/db/sexual_education/domains.db
2006-07-24 18:44:05 [9859] init urllist /var/lib/squidguard/db/sexual_education/urls
2006-07-24 18:44:05 [9859] create new dbfile /var/lib/squidguard/db/sexual_education/urls.db
2006-07-24 18:44:05 [9859] init domainlist /var/lib/squidguard/db/mixed_adult/domains
2006-07-24 18:44:05 [9859] create new dbfile /var/lib/squidguard/db/mixed_adult/domains.db
2006-07-24 18:44:05 [9859] init domainlist /var/lib/squidguard/db/mobile-phone/domains
2006-07-24 18:44:05 [9859] create new dbfile /var/lib/squidguard/db/mobile-phone/domains.db
2006-07-24 18:44:05 [9859] init domainlist /var/lib/squidguard/db/phishing/domains
2006-07-24 18:44:05 [9859] create new dbfile /var/lib/squidguard/db/phishing/domains.db
2006-07-24 18:44:05 [9859] init domainlist /var/lib/squidguard/db/dangerous_material/domains
2006-07-24 18:44:05 [9859] create new dbfile /var/lib/squidguard/db/dangerous_material/domains.db
2006-07-24 18:44:05 [9859] init urllist /var/lib/squidguard/db/dangerous_material/urls
2006-07-24 18:44:05 [9859] create new dbfile /var/lib/squidguard/db/dangerous_material/urls.db
2006-07-24 18:44:05 [9859] init domainlist /var/lib/squidguard/db/audio-video/domains
2006-07-24 18:44:05 [9859] create new dbfile /var/lib/squidguard/db/audio-video/domains.db
2006-07-24 18:44:05 [9859] init urllist /var/lib/squidguard/db/audio-video/urls
2006-07-24 18:44:05 [9859] create new dbfile /var/lib/squidguard/db/audio-video/urls.db
2006-07-24 18:44:05 [9859] init domainlist /var/lib/squidguard/db/cleaning/domains
2006-07-24 18:44:05 [9859] create new dbfile /var/lib/squidguard/db/cleaning/domains.db
2006-07-24 18:44:05 [9859] init urllist /var/lib/squidguard/db/cleaning/urls
2006-07-24 18:44:05 [9859] create new dbfile /var/lib/squidguard/db/cleaning/urls.db
2006-07-24 18:44:05 [9859] init domainlist /var/lib/squidguard/db/forums/domains
2006-07-24 18:44:05 [9859] create new dbfile /var/lib/squidguard/db/forums/domains.db
2006-07-24 18:44:05 [9859] init urllist /var/lib/squidguard/db/forums/urls
2006-07-24 18:44:05 [9859] create new dbfile /var/lib/squidguard/db/forums/urls.db
2006-07-24 18:44:05 [9859] init expressionlist /var/lib/squidguard/db/forums/expressions
2006-07-24 18:44:05 [9859] init domainlist /var/lib/squidguard/db/hacking/domains
2006-07-24 18:44:05 [9859] create new dbfile /var/lib/squidguard/db/hacking/domains.db
2006-07-24 18:44:05 [9859] init urllist /var/lib/squidguard/db/hacking/urls
2006-07-24 18:44:05 [9859] create new dbfile /var/lib/squidguard/db/hacking/urls.db
2006-07-24 18:44:05 [9859] init domainlist /var/lib/squidguard/db/redirector/domains
2006-07-24 18:44:05 [9859] create new dbfile /var/lib/squidguard/db/redirector/domains.db
2006-07-24 18:44:05 [9859] init urllist /var/lib/squidguard/db/redirector/urls
2006-07-24 18:44:05 [9859] create new dbfile /var/lib/squidguard/db/redirector/urls.db
2006-07-24 18:44:05 [9859] init expressionlist /var/lib/squidguard/db/redirector/expressions
2006-07-24 18:44:05 [9859] init domainlist /var/lib/squidguard/db/reaffected/domains
2006-07-24 18:44:05 [9859] create new dbfile /var/lib/squidguard/db/reaffected/domains.db
2006-07-24 18:44:05 [9859] init domainlist /var/lib/squidguard/db/warez/domains
2006-07-24 18:44:05 [9859] create new dbfile /var/lib/squidguard/db/warez/domains.db
2006-07-24 18:44:05 [9859] init urllist /var/lib/squidguard/db/warez/urls
2006-07-24 18:44:06 [9859] create new dbfile /var/lib/squidguard/db/warez/urls.db
2006-07-24 18:44:06 [9859] init expressionlist /var/lib/squidguard/db/warez/expressions
2006-07-24 18:44:06 [9859] init domainlist /var/lib/squidguard/db/tricheur/domains
2006-07-24 18:44:06 [9859] create new dbfile /var/lib/squidguard/db/tricheur/domains.db
2006-07-24 18:44:06 [9859] init urllist /var/lib/squidguard/db/tricheur/urls
2006-07-24 18:44:06 [9859] create new dbfile /var/lib/squidguard/db/tricheur/urls.db
2006-07-24 18:44:06 [9859] init domainlist /var/lib/squidguard/db/agressif/domains
2006-07-24 18:44:06 [9859] create new dbfile /var/lib/squidguard/db/agressif/domains.db
2006-07-24 18:44:06 [9859] init urllist /var/lib/squidguard/db/agressif/urls
2006-07-24 18:44:06 [9859] create new dbfile /var/lib/squidguard/db/agressif/urls.db
2006-07-24 18:44:06 [9859] init expressionlist /var/lib/squidguard/db/agressif/expressions
2006-07-24 18:44:06 [9859] init domainlist /var/lib/squidguard/db/drogue/domains
2006-07-24 18:44:06 [9859] create new dbfile /var/lib/squidguard/db/drogue/domains.db
2006-07-24 18:44:06 [9859] init urllist /var/lib/squidguard/db/drogue/urls
2006-07-24 18:44:06 [9859] create new dbfile /var/lib/squidguard/db/drogue/urls.db
2006-07-24 18:44:06 [9859] init domainlist /var/lib/squidguard/db/gambling/domains
2006-07-24 18:44:06 [9859] create new dbfile /var/lib/squidguard/db/gambling/domains.db
2006-07-24 18:44:06 [9859] init urllist /var/lib/squidguard/db/gambling/urls
2006-07-24 18:44:06 [9859] create new dbfile /var/lib/squidguard/db/gambling/urls.db
2006-07-24 18:44:06 [9859] init domainlist /var/lib/squidguard/db/games/domains
2006-07-24 18:44:06 [9859] create new dbfile /var/lib/squidguard/db/games/domains.db
2006-07-24 18:44:06 [9859] init urllist /var/lib/squidguard/db/games/urls
2006-07-24 18:44:06 [9859] create new dbfile /var/lib/squidguard/db/games/urls.db
2006-07-24 18:44:06 [9859] init domainlist /var/lib/squidguard/db/publicite/domains
2006-07-24 18:44:06 [9859] create new dbfile /var/lib/squidguard/db/publicite/domains.db
2006-07-24 18:44:06 [9859] init urllist /var/lib/squidguard/db/publicite/urls
2006-07-24 18:44:06 [9859] create new dbfile /var/lib/squidguard/db/publicite/urls.db
2006-07-24 18:44:06 [9859] init expressionlist /var/lib/squidguard/db/publicite/expressions
2006-07-24 18:44:06 [9859] squidGuard 1.2.0 started (1153759414.809)
2006-07-24 18:44:06 [9859] db update done
2006-07-24 18:44:06 [9859] squidGuard stopped (1153759446.249)
Maintenant sous
/var/lib/squidguard/
on tape
chown -R proxy:proxy db
Suite de la configuration (pour Mandriva et ubuntu)
Voilà maintenant notre fichier de configuration
/etc/squid/squidGuard.conf
#----------------------------------------------------------------
# SquidGuard CONFIGURATION FILE
#----------------------------------------------------------------
# CONFIGURATION DIRECTORIES
dbhome /var/lib/squidguard/db
logdir /var/log/squidguard
# TIME RULES:
# abbrev for weekdays:
# s = sun, m = mon, t =tue, w = wed, h = thu, f = fri, a = sat
time workhours {
weekly s 09:30-12:00 13:00-19:00
weekly m 09:00-12:00 13:00-19:00
weekly t 09:00-11:00 12:00-19:00
weekly w 09:00-12:00 12:00-18:00
weekly h 09:00-13:00 13:00-18:00
weekly f 09:00-12:00 13:30-18:00
weekly a 08:20-13:00 13:30-19:00
}
time heure-gamins {
weekly smtwhfa 17:30 - 18:00
}
# SOURCE ADDRESSES:
src privilegedsource {
#iplist privilegedsource/ips
# liste des machines qui pourront
se connecter avec tous les droits
ip 192.168.1.11
}
src bannedsource {
#iplist bannedsource/ips
}
src lansource {
#iplist lansource/lan
# liste des machines qui pourront
se connecter avec droits limités
ip 192.168.26.100 192.168.26.50 192.168.1.12
}
# DESTINATION CLASSES:
dest adult {
domainlist adult/domains
urllist adult/urls
expressionlist adult/expressions
#redirect http://ohoarau.kervao.fr/interdit.htm
}
dest sexual_education {
domainlist sexual_education/domains
urllist sexual_education/urls
#redirect http://ohoarau.kervao.fr/interdit.htm
}
dest mixed_adult {
domainlist mixed_adult/domains
#redirect http://ohoarau.kervao.fr/interdit.htm
}
dest mobile-phone {
domainlist mobile-phone/domains
#redirect http://ohoarau.kervao.fr/interdit.htm
}
dest phishing {
domainlist phishing/domains
#redirect http://ohoarau.kervao.fr/interdit.htm
}
dest dangerous_material {
domainlist dangerous_material/domains
urllist dangerous_material/urls
#redirect http://ohoarau.kervao.fr/interdit.htm
}
dest audio-video {
domainlist audio-video/domains
urllist audio-video/urls
#redirect http://ohoarau.kervao.fr/interdit.htm
}
dest cleaning {
domainlist cleaning/domains
urllist cleaning/urls
#redirect http://ohoarau.kervao.fr/interdit.htm
}
dest forums {
domainlist forums/domains
urllist forums/urls
expressionlist forums/expressions
#redirect http://ohoarau.kervao.fr/interdit.htm
}
dest hacking {
domainlist hacking/domains
urllist hacking/urls
#redirect http://ohoarau.kervao.fr/interdit.htm
}
dest redirector {
domainlist redirector/domains
urllist redirector/urls
expressionlist redirector/expressions
#redirect http://ohoarau.kervao.fr/interdit.htm
}
dest reaffected {
domainlist reaffected/domains
#redirect http://ohoarau.kervao.fr/interdit.htm
}
dest warez {
domainlist warez/domains
urllist warez/urls
expressionlist warez/expressions
#redirect http://ohoarau.kervao.fr/interdit.htm
}
dest tricheur {
domainlist tricheur/domains
urllist tricheur/urls
#redirect http://ohoarau.kervao.fr/interdit.htm
}
dest agressif {
domainlist agressif/domains
urllist agressif/urls
expressionlist agressif/expressions
#redirect http://ohoarau.kervao.fr/interdit.htm
}
dest drogue {
domainlist drogue/domains
urllist drogue/urls
#redirect http://ohoarau.kervao.fr/interdit.htm
}
dest gambling {
domainlist gambling/domains
urllist gambling/urls
#redirect http://ohoarau.kervao.fr/interdit.htm
}
dest games {
domainlist games/domains
urllist games/urls
#redirect http://ohoarau.kervao.fr/interdit.htm
}
dest publicite {
domainlist publicite/domains
urllist publicite/urls
expressionlist publicite/expressions
#redirect http://ohoarau.kervao.fr/interdit.htm
}
# ACLs
acl {
privilegedsource {
# les machines
privilégiés ont doit à tout sauf à la pub
pass !publicite !phishing all
redirect http://olivier.funix.org/images/temp/interdit.htm
}
bannedsource {
pass none
redirect http://olivier.funix.org/images/temp/interdit.htm
}
lansource {
pass !adult !audio-video !agressif !cleaning !dangerous_material
!drogue !forums !gambling !games !hacking !mixed_adult !mobile-phone
!publicite !reaffected !redi
rector !sexual_education !tricheur !warez all
redirect http://olivier.funix.org/images/temp/interdit.htm
}
default {
pass none
redirect http://olivier.funix.org/images/temp/interdit.htm
}
}
On modifie maintenant le fichier de configuration de
squid /etc/squid/squid.conf pour faire
appel à
squidGuard
# TAG: redirect_program
#
Specify the location of the executable for the URL redirector.
#
Since they can perform almost any function there isn't one included.
#
See the FAQ (section 15) for information on how to write one.
#
By default, a redirector is not used.
#
#Default:
# none
redirect_program /usr/bin/squidGuard
-c /etc/squid/squidGuard.conf
On relance
squid
sous mandriva
/etc/rc.d/init.d/squid restart
sous ubuntu
/etc/init.d/squid restart
C'est fini
Maintenant si vous voulez mettre en place une authentification
basée sur vos utilisateurs, éditez le fichier
squid.conf rajoutez les lignes
auth_param basic program
/usr/lib/squid/ncsa_auth /etc/squid/users
auth_param basic children 5
Et au niveau des ACL
acl Users proxy_auth REQUIRED
http_access deny !Users
Créons le fichier
users
touch /etc/squid/users
Puis pour chaque utilisateur
/usr/local/apache/bin/htpasswd -b
/etc/squid/users olivier mot-de-passe-en-clair
Cela donne un fichier qui aura cette tête là
olivier:hSHTr8tdyLJh.
lena:LiIDffDc.jC4ow
...
A présent dans le fichier
squidGuard.conf
on pourra écrire
# SOURCE ADDRESSES:
src privilegedsource {
#iplist privilegedsource/ips
# liste des machines qui pourront
se connecter avec tous les droits
ip 192.168.13.100 192.168.13.50
# utilisateurs
privilégiés
user olivier veronique
}
(...)
src lansource {
#iplist lansource/lan
# liste des machines qui
pourront se connecter avec droits limités
ip 192.168.13.100 192.168.13.50
# utilisateurs droits
restreints
user benjamin julie
}
Relancez
squid
sous mandriva
/etc/rc.d/init.d/squid restart
sous ubuntu
/etc/init.d/squid restart
A présent au lancement du
navigateur une identification sera demandée.
Maintenant pour mettre à jour
régulièrement la liste entretenue par l'université
de Toulouse voilà un petit script à placer sous
/etc/cron.weekly pour qu'il soit
appelé toutes les semaines
script Mandriva
#!/bin/bash
# récupération du
fichier blacklists.tar.gz
cd /tmp
ftp -n <<**
open ftp.univ-tlse1.fr
user anonymous toto@free.fr
binary
cd
pub/unix/reseau/cache/squidguard_contrib
get blacklists.tar.gz
bye
**
# on met à jour le
répertoire blacklist
tar zxvf /tmp/blacklists.tar.gz --directory
/usr/share/squidGuard-1.2.0/db
cd /usr/share/squidGuard-1.2.0/db/blacklists
cp -Rf * ..
cd ..
rm -Rf /usr/share/squidGuard-1.2.0/db/blacklists
# on appelle squidGuard pour
qu'il
mette à jour la nouvelle liste
/usr/bin/squidGuard -c
/etc/squid/squidGuard.conf -C all -d /usr/share/squidGuard-1.2.0/db
# changement du propriétaire
chown -R squid:squid
/usr/share/squidGuard-1.2.0/db
# on relance squid
/etc/rc.d/init.d/squid restart
Le même adapté à une ubuntu
#!/bin/bash
# réupéation du fichier blacklist
cd /tmp
ftp -n <<**
open ftp.univ-tlse1.fr
user anonymous toto@free.fr
binary
cd pub/unix/reseau/cache/squidguard_contrib
get blacklists.tar.gz
bye
**
tar zxvf /tmp/blacklists.tar.gz --directory /var/lib/squidguard/db
cd /var/lib/squidguard/db/blacklists
cp -Rf * ..
cd ..
rm -Rf /var/lib/squidguard/db/blacklists
/usr/bin/squidGuard -c /etc/squid/squidGuard.conf -C all -d /var/lib/squidguard/db
chown -R proxy:proxy /var/lib/squidguard/db
/etc/init.d/squid restart
Proxy transparent
WWWOFFLE
Caractéristiques
Ces caractéristiques sont les suivantes:
En mode connecté :
- sauvegarde des pages pour une visualisation ultérieure
- sauvegarde de certaines pages qui ont été
modifiées
- mise en place de contrôle d'accès sur certaines pages
- contrôle des pages qui ne doivent pas être
sauvegardées
En mode non connecté :
- peut être configuré pour lancer une connexion pour les
pages non sauvegardées
- sélection des pages à sauvegarder à la prochaine
connexion
- contrôle des pages pouvant être visualisées en
mode off-line
Pour info wwwoffle marche très bien aussi sous
windows, pour plus d'info voir la page que
je lui ai consacré.
Installation
On récupérera wwwoffle à l'URL www.gedanken.demon.co.uk/wwwoffle/
. L'archive se présente sous la forme d'un tarball wwwoffle-2.8d.tgz
qu'on décompressera dans un répertoire de travail en
tapant :
tar xvfz wwwoffle-2.8e.tgz
Cela va nous créer un repertoire wwwoffle-2.8e. Dans
ce répertoire on tape
./configure --with-default-language=fr
--with-confdir=/etc/wwwoffle
On indique ici qu'on veut utiliser le français comme langue
par défaut, et que le fichier de conf se trouvera sous /etc/wwoffle
En tapant ./configure -help, vous aurez les options
nécessaires pour changer
- le port utilisé, par défaut c'est à localhost:8080
(pour info Squid utilise le port 3128), il n'y a pas de raison
de
changer cela,
- le répertoire d'installation des exécutables wwwoffle,
par défaut /usr/local/bin et /usr/local/sbin,
à changer éventuellement,
- le répertoire où seront sauvegardées les
pages, par défaut /var/spool/wwwoffle (attention
à
la taille de /var).
On tape maintenant :
make
NOTE Vous avez besoin du package flex pour compiler
Puis en tant que root
make install
ATTENTION: Si vous upgradez d'une ancienne version, il faudra taper
dans le répertoire wwwoffle-2.8d
./wwwoffle-2.8e/conf/upgrade-config.pl
/etc/wwwoffle/wwwoffle.conf
C'est pour upgrader le fichier de conf existant, en fait chez moi
ça n'a pas toujous marché au poil, il vaut mieux prendre
le fichier de conf exemple qu'on trouve sous wwwoffle-2.8e/conf et
l'adapter à sa config.
Configuration basique
On va éditer le fichier /etc/wwwoffle/wwwoffle.conf.
Pour modifier éventuellement le port d'Apache et de wwwoffle, vous avez la balise StartUp
StartUp
{
bind-ipv4
= 0.0.0.0
#bind-ipv6
= ::
http-port
= 8080
wwwoffle-port
= 8081
Dans un premier temps on ne va pas modifier grand chose, si votre
serveur s'appelle obelix et a pour adresse 192.168.13.11,
votre nom de domaine interne breizland.bz pour qu'il soit vu de
votre réseau interne vous devez rajouter :
LocalHost
{
localhost
127.0.0.1
obelix.breizland.bz
192.168.13.11
::ffff:127.0.0.1
ip6-localhost
::1
#### Example ####
# The server is on www.foo.com, with IP address 11.22.33.44.
# www.foo.com
# 11.22.33.44
}
Maintenant vous devez autoriser les machines de votre réseau
local à accéder au proxy wwwoffle en rajoutant :
AllowedConnectHosts
{
*.breizland.bz
#### Example ####
# Only allow connections from hosts in the foo.com domain.
# *.foo.com
}
Si vous avez des sites accessibles en intranet, vous pouvez
spécifier qu'ils ne soient pas "cachées"
(sauvegardées dans le cache). Si vos sites se terminent par
votre
nom de domaine interne, on mettra :
LocalNet
{
*.breizland.bz
#### Example ####
# The local domain is foo.com so don't cache any hosts in it.
# *.foo.com
}
ATTENTION si vous passez par le proxy de votre FAI (nom proxy.fai.fr,
port 3128 par exemple), vous devez modifier les lignes suivantes pour
lire :
Proxy
{
<http://*> proxy = proxy.fai.fr:8080
#### Example ####
# Use www.foo.com as a default http proxy server on port 8080
# Except for the foo.com domain which has no proxy.
# http://* = www.foo.com:8080
# *://foo.com = none
}
Configurons maintenant le navigateur. Pour Netscape
Edition->Preférences->Avancées, il faut d'abord
désactiver le cache, sélectionner Cache , puis au
niveau de Comparer le cache avec celui du réseau ,
choisissez Jamais. Toujours au niveau d'Avancées
choisissez maintenant Proxy, puis Configuration manuelle du
proxy, appuyez sur le bouton Afficher, pour les protocoles proxy
FTP, proxy Gopher, proxy HTTP, proxy de
sécurité, proxy WAIS mettez le nom du serveur
wwoffle
puis dans le champ port 8080, laissez les autres champs par
défaut puis OK et encore OK.
Pour Konqueror, Configuration, Configurer Konqueror, Serveur mandataire (proxy), cocher Utiliser un serveur de proximité,
cocher Configuration manuelle puisConfiguration, au niveau du champ HTTP saisissez http://votreserveurproxy, Port 8080, cliquez sur le petit
bouton à droite du champ Port,
puis OK.
On va maintenant lancer le proxy en lui disant de relire son fichier
de configuration :
wwwoffled -c /etc/wwwoffle/wwwoffle.conf
A noter les commentaires
wwwoffled[4535] Important: WWWOFFLE Demon Version 2.8h (with
zlib,without ipv6) started.
wwwoffled[4535] Warning: Running with root user or group privileges
is not recommended.
Voir plus bas, comment arranger cela. Connecter vous à
Internet. Une fois connecté, tapez
wwwoffle -online
Surfer normalement, déconnectez vous, puis taper
wwwoffle -offline
A présent en mode off-line, surfer sur les quelques pages que
vous venez de visiter, elles ont toutes été
sauvegardées, cliquer maintenant sur une de ces pages sur un
lien
non visité, une page de wwwoffle s'affiche vous disant
que la requête a été enregistrée, faites de
mêmes pour quelques autres liens. Reconnectez vous, puis une fois
connecté, tapez :
wwwoffle -online
Puis pour télécharger les pages que vous cherchiez
à accéder en mode off-line:
wwwoffle -fetch
Les pages seront ainsi sauvegardées et vous pourrez à
présent y accéder en mode off-line. Déconnectez
vous (en n'oubliant pas le wwwoffle -offline) et
réessayer.
NOTE Vous pouvez lancer le daemon en mode debug en tapant
simplement :
wwwoffled -d 6
Configuration avancée
La configuration basique peut suffire dans la plupart des cas, on peut
cependant aller plus loin. Si vous faites :
ps aux | grep wwwoffled
On se rencontre que c'est root le propriétaire du
daemon, c'est un peu génant dans la mesure où si wwwoffled
est bugué quelqu'un peut se retrouver root sur le
système, pour éviter cela, dans le fichier de
configuration
wwwoffle.conf au niveau des accolades StartUp, on
décommentera :
run-uid
= daemon
run-gid
= daemon
ATTENTION L'utilisateur daemon doit avoir les
droits d'écriture sur /var/spool/wwwoffle.
On peut indiquer à wwwoffle lors de la
récupération d'une page de ne pas récupérer
les images, pour cela vous disposez d'options de
récupération avec FetchOptions
FetchOptions
{
stylesheets = yes
images = yes
frames = yes
scripts = no
objects = no
webbug-images = yes
only-same-host-images = no
}
Les scripts correspondent au classe java par exemple. Pour
autoriser certaines personnes à se connecter au serveur wwwoffle,
vous disposez de AllowedConnectUsers avec la syntaxe du type :
olivier:motdepasse1
veronique:motdepasse2
S'il n'y a rien c'est que tout le monde est autorisé
dès lors qu'on est sur une machine autorisée (AllowedConnectHosts
)
AllowedConnectUsers
{
#### Example ####
# Only allow connections from this one user.
# andrew:password
}
On peut spécifier de ne pas sauvegarder certaines pages :
DontCache
{
# pour ne pas sauvegarder les .gz et les .zip
*://*/*.gz
*://*/*.zip
# pour ne pas sauvegarder les pages du domaine penthouse.com (!)
*://*.penthouse.com/
#### Example ####
# Don't cache any hosts in the barfoo.com domain.
# *://*.barfoo.com/
# Don't cache any gzipped or tar files.
# *://*/*.gz
# *://*/*.tar
# Don't cache any files from /volatile in the foo.com domain.
# *://*.foo.com/volatile/*
}
Pour que les utilisateurs ne puissent pas accéder à
certaines pages sauvegardées quand on est offline :
DontRequestOffline
{
#### Example ####
# Dont request any URLs at all when offline.
# *://*/
}
Au niveau de Purge, on peut voir que par défaut les
pages sont sauvegardées 28 jours pour changer cela, vous
disposez
de la variableage avec les variables w (week) pour semaine, m
(month) pour mois et y (year) pour année. Exemple : age =
4w correspond à 4*7=28 jours, qui est d'ailleurs la valeur par
défaut.
Pour faire le ménage pour que le cache ne dépasse pas
30Mo :
max-size = 30
Au niveau de StartUp, on peut spécifier un mot de
passe, celui ci va servir à ce qu'uniquement les personnes le
connaissant puissent modifier le fichier de config à partir d'un
navigateur (voir paragraphe Utilisation).
password =
mot-de-passe-en-clair
La syntaxe pour spécifier une URL est la suivante :
*://*
protocole quelconque, machine quelconque, port quelconque, chemin
quelconque, arguments quelconques
*://*/<path> protocole quelconque,
machine quelconque, port quelconque, chemin spécifié,
arguments quelconques (exemple *://*/pub comme ftp://ftp.lip6.fr/pub
ou http://www.yahoo.com/pub )
*://*/*? protocole quelconque,
machine quelconque, port quelconque, chemin quelconque, pas d'arguments
*://<host> protocole quelconque,
hôte spécifié, port quelconque, chemin quelconque,
arguments quelconques
<proto>:// protocole
spécifié, hôte, port, chemin et arguments
quelconques (exemple http:// ou ftp://)
<proto>://<host> protocole et
hôte spécifiés, chemin, port et arguments
quelconques (exemplehttp://www.yahoo.fr)
Lancement automatisé
Si squid est votre proxy habituel, vous n'êtes pas
obligé de le désactiver puisque les deux outils
n'utilisent pas le même port. Si vous voulez néanmoins le
désactiver pour cause de double emploi :
chkconfig --level 345 squid off
Pour un lancement automatique du daemon, on copiera le fichier
wwwoffled se trouvant sous ./wwwoffle-2.8e/contrib/redhat1 sous
/etc/rc.d/init.d :
cp ./wwwoffle-2.8e/contrib/redhat1/wwwoffled /etc/rc.d/init.d
Vérifier éventuellement les chemins dans ce fichier.
puis pour un lancement automatique à l'état de marche
3, 4 et 5, il suffit de taper :
chkconfig --level 345 wwwoffled on
Et pour un arrêt aux autres ordres de marche
chkconfig --level 0126 wwwoffled off
Pour lancer le daemon il suffit alors de taper :
/etc/rc.d/init.d/wwwoffled start
Pour le stopper :
/etc/rc.d/init.d/wwwoffled stop
Pour le relancer :
/etc/rc.d/init.d/wwwoffled restart
Pour connaître son état (en marche ou
arrêté)
/etc/rc.d/init.d/wwwoffled status
A chaque connexion on doit indiquer qu'on est online à
wwwoffle, de même qu'on doit lui indiquer qu'on n'est plus
online.
Pour cela on dispose des fichiers ip-up et ip-down se
trouvant sous /etc/ppp (sur une architecture de type RedHat/Mandrake).
Dans le fichier ip-up on rajoutera :
# On indique à wwwoffle qu'on passe en mode online
/usr/local/bin/wwwoffle -online -c /etc/wwwoffle/wwwoffle.conf
# On récupère les pages qui ont été
demandées pendant le mode offline
/usr/local/bin/wwwoffle -fetch -c /etc/wwwoffle/wwwoffle.conf &
Dans le fichier ip-down on rajoutera :
/usr/local/bin/wwwoffle -offline -c /etc/wwwoffle/wwwoffle.conf
A noter que pour le lancement du daemon et pour le passage
online/offline il existe un ensemble de scripts pour les distribs de
Linux les plus répandues sous ./wwwoffle-2.8e/contrib/redhat
redhat1 et redhat2.
Utilisation
Vous disposez d'une page de consultation de wwwoffle à
l'URL http://obelix.breizland.bz:8080/Welcome.html si obelix
est le nom de votre serveur proxy et breizland.bz votre nom de
domaine privé (ATTENTION saisissez exactement le
même
nom d'hôte que celui spécifié dans le fichier de
config au niveau de LocalHost ).
Une page de consultation en français apparaît, vous
pouvez voir son contenu en cliquant ici
(ATTENTION les liens ne sont pas opérationnels). A partir
de cette page vous avez dans l'ordre :
- la description du produit,
- l'index du cache, pour pouvoir entre autres :
* voir la liste de toutes les pages httpd
présentes
en cache,
* voir la liste des requêtes en attente,
* voir la liste des pages à surveiller (voir
si pages modifiées ou pas),
* voir la liste des pages visitées à
la dernière connexion,
- requête simple, pour spécifier une page à
récupérer,
- suivi d'une page, pour spécifier une page à surveiller,
- contrôle interactif, pour administrer wwwoffle
(édition du fichier de conf avec mot de passe),
- recherche dans le cache à partir de certains critères
grâce à ht://Dig (qu'il faut installer),
- liens divers dont la FAQ de wwwoffle,
- e-mail de l'auteur en cas de problèmes (à
rédiger en anglais) et listes de diffusion.
Vous avez la possibilité aussi de modifier en ligne le
fichier de config.
Les clients peuvent maintenant être configurés pour
utiliser votre serveur comme proxy (port par défaut 8080).