TP Squid/SquidGuard : Filtrage Web et Configuration Proxy

Telechargé par Candidat TSSR
TP Squid/SquidGuard
Fabrice Prigent
March 5, 2021
1 Constatation
1.1 Hypoth`eses de travail
Pour les besoins du TP nous supposerons que
les PC des ´etudiants tournent avec un OS de type Linux debian (Ubuntu accept´e),
que le r´eseau des ´etudiants est le 192.168.60.0/24,
que le poste du professeur est le 192.168.60.35,
1.2 Objectifs
A partir d’un navigateur se connecter `a http://dsi.ut-capitole.fr/hidden/test (le test ne marcherait pas bien en
HTTPS) ou sur le serveur du professeur http://192.168.60.35. On constate alors l’information ”User-Agent” :
qui indique le nom et la version du navigateur et le nom et la version de l’OS. Cette information, utile, va nous
donner l’occasion de voir ce qui peut ˆetre fait par un relai applicatif.
2 Squid
2.1 Installation
L’installation du relai proxy squid est assez simple (nous supposons utiliser squid3, mais dans la toute derni`ere
debian, c’est squid 4, qui est d´enomm´e ”squid” tout court)
apt-get install squid3
On suivra les ´eventuels probl`emes avec les commandes :
tail /var/log/squid/cache.log
tail /var/log/syslog
Ensuite, on va cr´eer
un squid.conf all´eg´e des commentaires pour pouvoir facilement le modifier, et qui est le fichier de config-
uration du squid
un squid.conf.distrib qui servira de r´ef´erence pour retrouver des options ineressantes mais plus tard.
cd /etc/squid3
# On cree une copie sous le nom squid.conf.distrib
cp squid.conf squid.conf.distrib
# On enleve les commentaires, puis on ne prend que les lignes avec 2 caracteres
cat squid.conf|grep -Pv '^#'|grep -P '..'> squid.conf.new
cp squid.conf.new squid.conf
On peut alors lancer le squid
service squid start
1
Dans le cas o`u l’on utilise la machine virtuelle, il sera n´ecessaire d’autoriser le r´eseau, o`u se trouve la machine
cliente (la machine physique), `a utiliser le squid local. Dans le fichier squid.conf on va donc ajouter une d´efinition
d’ACL, puis utiliser cette d´efinition. Il sera important de bien choisir l’ordre dans lequel on va placer les acl et
leur utilisation.
acl local_clients src 192.168.60.0/24
...
http_access allow local_clients
2.2 V´erification
Pour v´erifier que la configuration est correcte et avoir la raison et la localisation des erreurs :
squid -k check
2.3 Utilisation
Utiliser ce proxy pour se connecter `a Internet. Pour ce faire : dans le navigateur Firefox (la proc´edure est
l´eg`erement diff´erente pour Internet Explorer ou pour Chrome), allez dans les menus suivants
Pr´ef´erences / Connexion / configuration locale du proxy
Host : 127.0.0.1 (si nous utilisons le proxy local)
Host : 192.168.60.xxx (si nous utilisons le proxy de la machine virtuelle)
Port : 3128
Utiliser le mˆeme proxy pour tous les protocoles
HTTP web classique;
SSL HTTPS;
FTP FTP (en fait le navigateur contacte le proxy en HFTP, c’est le proxy qui parle en FTP);
Gopher Ancien protocole qui est l’ancˆetre du WWW;
Socks L’utilisation du proxy d´esactive l’utilisation du SOCKS. C’est l’un ou l’autre. Donc, ne
mettez rien dans cette ligne.
On teste `a nouveau http://dsi.ut-capitole.fr/hidden/test ou http://192.168.60.35
On voit alors apparaitre 2 lignes suppl´ementaires :
Via : qui va indiquer le proxy que nous utilisons (avec la version)
X-Forwarded-For : qui va indiquer pour qui nous faisons le proxy,dans le cas pr´esent 127.0.0.1, mais, si
l’on offre le service pour une autre machine, on verra son IP apparaitre (192.168.60.xxx par exemple).
On constate aussi l’apparition dans le r´epertoire /var/spool/squid de fichiers qui correspondent `a chacun
des ´el´ements consult´es grˆace `a l’utilisation de la commande :
du -ka /var/spool/squid|grep '/var/spool/squid/../../.'
Les probl`emes potentiels
Les iptables peuvent ˆetre trop restrictives et bloquer l’acc`es
Il faut penser `a lancer le squid (service squid start)
Le suivi des journaux est pr´ecieux pour l’analyse d’´eventuelles difficult´es
2.4 Modification des informations
Comment faire disparaitre ou modifier les informations en trop ? Les informations proviennent des en-tˆetes
que fournit le navigateur. On peut en dissimuler certaines, tout en sachant que plusieurs d’entre elles ne sont
fournies que dans des cas particuliers tels que une phase d’authentification, une r´ecup´eration ”sous condition”,
etc.
2
2.4.1 Suppression des en-tˆetes
Pour effacer une en-tˆete on interdit son acc`es. On va donc, dans le fichier /etc/squid/squid.conf, rechercher
la chaine ”header access” pour trouver le paragraphe correspondant et lire l’explication. On ajoute alors les
directives suivantes pour effacer les en-tˆetes :
request_header_access User-Agent deny all
request_header_access Via deny all
request_header_access X-Forwarded-For deny all
On relance alors le squid par
service squid reload
Les informations User-Agent, Via et X-Forwarded-For n’apparaissent plus lors du test
http://dsi.ut-capitole.fr/hidden/test
2.4.2 Remplacement des en-tˆetes
Modifions d´esormais les en-tˆetes au lieu de simplement les effacer. On va ajouter la ligne suivante (en effet pour
modifier un en-tˆete il faut l’interdire avant)
request_header_replace User-Agent Mozilla 7.0/ Firefox 12.0 Linux Fedora youpala 23.8
On relance alors le squid par
service squid reload
L’information User-Agent r´eapparait mais modifi´ee
3 Squidguard
Comment renforcer le filtrage des urls ? Squid est en effet capable de filtrer des destinations, mais avec une
ligne par url `a bloquer, lignes qui seront analys´ees une par une `a chaque demande, cela va ˆetre tr`es long.
Squidguard permet de le faire plus efficacement grˆace `a l’utilisation d’une base de donn´ees berkeleyDB.
3.1 Installation du logiciel
On installe squidGuard
apt-get install squidguard
Une fois ceci fait, on signale `a squid d’utiliser squidGuard. Pour cela, on modifie /etc/squid3/squid.conf
url_rewrite_program /usr/bin/squidGuard
3.2 Configuration du logiciel
La configuration doit se faire avant l’installation des bases de donn´ees. Le fichier de configuration est, en g´en´eral,
/etc/squidGuard/squidGuard.conf La configuration par d´efaut est utilisable, mais sans filtrage. On garde le
dbhome tel quel.
On garde les lignes src telles quelles, car nous utiliserons le fonctionnement par d´efaut (source defaut), on
modifie par contre les d´efinitions de destinations
dest adult {
# On remarque que le repertoire dest
# est ajoute a la configuration par defaut
domainlist dest/adult/domains
urllist dest/adult/urls
# Si l'on souhaite une redirection non transparente
redirect 302:http://www.vatican.va
# Si l'on souhaite une redirection transparente, mais
# legerement buggee sur certains sites
#redirect http://www.vatican.va
# Si l'on souhaite une redirection transparente adaptee au contexte
3
#redirect http://www.univ-perp.fr/cgi-bin/squidguard.cgi?client-address=\%a
# On peut aussi ne pas faire de redirection par destination
}
dest malware {
domainlist dest/malware/domains
urllist dest/malware/urls
redirect http://www.vatican.va
}
Puis on applique
acl {
default {
# On refuse les sites adultes et les malwares, on accepte le reste
pass !adult !malware all
# On fournit une url de redirection par defaut.
redirect http://www.google.fr
}
}
3.3 Les bases de filtrage
On rapatrie une base de filtrage et on l’installe.
cd /var/lib/squidguard/db
wget http://dsi.ut-capitole.fr/blacklists/download/blacklists.tar.gz
# On decompacte, un repertoire blacklists est alors cree
tar zxvf blacklists.tar.gz
# On cree un lien symbolique pour garder la notion de dest
ln -s blacklists dest
# Pour accelerer le traitement (mais en reduisant considerablement le nombre de domaines filtres)
cd dest/adult
cp domains domains.originel
echo "playboy.com" >domains
echo "sex.com" >>domains
echo "lesitequevousvoulezajouter.com" >> domains
chown proxy:proxy domains
La structure des fichiers textes contenant la liste est cr´ee. Squidguard peut fonctionner tel quel (il recompil-
era les bases en m´emoire au d´emarrage), mais cela ralentira consid´erablement tout d´emarrage ou red´emarrage.
Il faut donc cr´eer (compiler) les bases de donn´ees avant le lancement.
Il faudra prendre la pr´ecaution d’arrˆeter le squid avant, si on veut que la compilation soit rapide.
service squid stop
/usr/bin/squidGuard -P -d -b -C all
chown -R proxy:proxy /var/lib/squidguard/db
service squid start
Cette commande va compiler les bases de donn´ees qui sont utilis´ees dans le squidGuard.conf. Comme la
commande a ´et´e faite par root, les fichiers domains.db et urls.db lui appartiennent, il faut changer le propri´etaire.
On peut alors relancer le squid.
Reste alors `a tester, `a partir du navigateur l’url http://www.playboy.fr qui va se transformer en http://www.vatican.va.
4 Ouvrir `a l’ext´erieur
4.1 Ouvrir les iptables
On accepte de fournir le service `a l’ext´erieur, et pour cela on va ins´erer une r`egle iptables
iptables -A INPUT -p tcp --dport 3128 --sport 1024:65535 -s 192.168.10.0/24 -j ACCEPT
4
4.2 Ouvrir squid
Pour ouvrir le squid filtrant `a l’ext´erieur, il faut autoriser cet acc`es qui est ferm´e par d´efaut. Pour cela, on va
rechercher http access dans le fichier /etc/squid3/squid.conf puis d´efinir une acl sur les clients autoris´es.
acl clients_autorises src 192.168.60.0/24
On applique alors cette acl `a la restriction http access (ATTENTION `a l’ordre des http access)
http_access allow clients_autorises
http_access deny all
4.3 Ouvrir squidGuard
Une fois ceci fait, on va s’occuper des restrictions squidGuard : d´efinition de src
src clients_autorises {
ip 192.168.60.0/24
}
5 Proxy Transparent
Le but est d’intercepter les communications web, pour les envoyer vers le squid. Mais en TP, on ne peut le faire
que pour le 127.0.0.1.
5.1 V´erifier l’utilisation transparente
Il va falloir v´erifier l’utilisation transparente. Pour cel`a, avant de mettre en place la redirection, il nous faudra
avoir les en-tˆetes que g´en`ere les proxys. On va donc d´efaire ce que nous avons fait jusqu’`a pr´esent.
R´eactiver l’en-tˆete Via
R´eactiver l’en-tˆete X-Forwarded-For
D´esactiver l’utilisation du proxy sur le navigateur
Relancer squid
V´erifier si tout se passe bien
5.2 Modifier le comportement de squid
Squid ne peut traiter de la mˆeme mani`ere les requˆetes ”normales” et les requˆetes transparentes. Pour cela on
cr´ee une ”instance” sur un port diff´erent (suggestion : le port 3132). Dans le fichier /etc/squid/squid.conf, on
ajoute la ligne.
http_port 3132 transparent
On ajoute ensuite dans squidGuard.conf `a l’acl clients autorises la ligne
ip 127.0.0.1/8
Puis on relance le squid avec service squid reload
5.3 Modifier le comportement des iptables
Le but est d’intercepter les paquets `a destination du web pour les rediriger vers le processus squid. La syntaxe
ci-dessus est valable pour le TP.
# On evite les bouclages avec le squid, en disant que l'utilisateur
# squid peut sortir directement
iptables -A OUTPUT -t nat -m owner --uid-owner 13 -j RETURN
iptables -A OUTPUT -t nat -p tcp --dport 80 --sport 1024:65535 \
-j REDIRECT --to-ports 3132
5
1 / 6 100%
La catégorie de ce document est-elle correcte?
Merci pour votre participation!

Faire une suggestion

Avez-vous trouvé des erreurs dans l'interface ou les textes ? Ou savez-vous comment améliorer l'interface utilisateur de StudyLib ? N'hésitez pas à envoyer vos suggestions. C'est très important pour nous!