Vous êtes sur la page 1sur 6

Squid : serveur mandataire (proxy)

Squid est un serveur mandataire, en anglais un proxy, entièrement


libre et très performant. Il est capable de gérer les protocoles FTP,
HTTP, HTTPS et Gopher. Il est généralement utilisé dans certaines
entreprises et universités pour des fonctions de filtrage d'URL ou
en tant que cache. Les pages Internet sont stockées localement ce
qui évite d'aller les recharger plusieurs fois et permet d'économiser
la bande passante Internet.

Installation
Installer le paquet squid.

Si après l'installation vous obtenez [fail] lors du démarrage de Squid, alors il faut simplement
spécifier le nom de la machine dans la configuration de Squid. Voir plus loin le chapitre Configuration.

Utilisation
Pour mettre en pratique Squid, il suffit simplement de configurer les navigateurs web client afin
d'utiliser un proxy, ayant pour adresse celle de la machine squid. Squid écoute par défaut sur le port
3128.

Il est également possible d'appliquer le proxy à l'ensemble des utilisateurs et logiciels des stations
clientes. Pour ce faire, configurez les propriétés de serveur mandataire d'Ubuntu afin que toutes les
connexions à Internet passent par le proxy :

1. Ouvrez l'outil de gestion des serveurs mandataire d'Ubuntu (Système → Préférences → Serveur
mandataire) ;
2. Dans l'onglet Configuration du serveur mandataire, cochez la case Configuration manuelle du
serveur mandataire. Puis :
o cochez éventuellement la case Utiliser le même serveur mandataire pour tous les
protocoles ;
o dans le champ Serveur mandataire HTTP, indiquez l'adresse localhost et le port 3128 ;
3. Appuyez sur le bouton Appliquer à l'ensemble du système… pour que cette configuration soit
appliquée à tous les utilisateurs de votre système Ubuntu.

Configuration
Par défaut Squid est configuré et fonctionnel. Cependant, on peut apporter quelques modifications afin
de l'optimiser ou mieux l'adapter à certain environnement.

Le fichier de configuration de Squid est /etc/squid/squid.conf ou /etc/squid3/squid.conf (selon


les versions). Pour toute configuration, éditer donc ce fichier.

• Penser à effectuer une sauvegarde de ce fichier avant toute modification : sudo cp


/etc/squid/squid.conf /etc/squid/squid.conf.bak. Effectuer l'opération inverse pour
restaurer le fichier.
• Après toute modification du squid.conf, redémarrer Squid :

Ubuntu 9.10 et antérieur


Pour l'activer après une fausse manipulation :

sudo /etc/init.d/squid start

Pour l'arrêter :

sudo /etc/init.d/squid stop

Ubuntu 10.04 et ultérieur

Pour l'activer après une fausse manipulation :

sudo service squid start

Pour l'arrêter :

sudo service squid stop


Pour le reconfigurer (à la place de stop et start ou restart qui prend du temps): sudo squid -k reconfigure

Voici quelques modifications utiles :

Autoriser les utilisateurs à utiliser le proxy

rechercher http_access deny all, décommenter la ligne et remplacer par

http_access allow all

Indiquer le nom de la machine

dans la partie TAG: visible_hostname, indiquer le nom de la machine comme suit :

visible_hostname nom_machine

Ne pas inclure l'adresse IP dans les requêtes HTTP

Pour ne pas inclure l'adresse IP ou le nom du système dans les requêtes HTTP, dans la partie TAG:
forwarded_for, décommenter et modifier la ligne comme suit :

forwarded_for off

Messages d'erreur en français

Dans la partie TAG: error_directory, décommenter et modifier la ligne comme suit :

error_directory /usr/share/squid/errors/fr

Droits de l'utilisateur de Squid

L'utilisateur proxy de Squid nécessite d'appartenir au groupe root pour bénéficier des droits nécessaires
sur les fichiers de log de Squid, afin de rendre l'authentification fonctionnelle :

Changer le propriétaire des fichiers log de Squid :

sudo chown -R proxy:root /var/log/squid


sudo chown -R proxy:root /var/run/samba/winbindd_privileged
Changer le groupe du cache de Squid :

Éditer le fichier /etc/squid/squid.conf,

Dans la partie TAG: cache_effective_group, décommenter la ligne et y mettre le groupe root :

cache_effective_group root

Redémarrer Squid :

sudo /etc/init.d/squid restart

Modification du cache de squid

Cache page web

Par défaut, le cache de Squid est activé, ce qui permet d'accélérer le chargement de certaines pages. La
taille par défaut est de 100 Mo (situé dans /var/spool/squid).

Pour changer sa taille, modifiez le fichier /etc/squid/squid.conf Trouvez la ligne:

# cache_dir ufs /var/spool/squid 100 16 256

Et décommentez-la. Vous pouvez changer la valeur 100 par ce que vous voulez (par exemple 200 pour
200 Mo): cache_dir ufs /var/spool/squid 200 16 256

Taille maximum de mémoire vive utilisée pour stocker du cache

cache_mem 16 MB

# Taille maximum des objets stockés dans le cache

maximum_object_size 15 MB

Cache DNS

Par defaut, squid est configuré pour garder 6 heures le cache DNS dont il a pu résoudre le nom et 5
minutes celui dont il n'a pas pu résoudre le nom DNS

Modification du temps de cache pour la résolution de nom "positive"; ex:

positive_dns_ttl 8 hours

Modification du temps de cache pour la résolution de nom "négative"; ex:

negative_ttl 4 minutes

Rendre squid transparent

Pour que squid fonctionne en proxy transparent, il faut ajouter à la fin du port de squid:

http_port 3128 transparent


Pour rendre le proxy transparent, il faut au préalable configurer iptables ou un autre pour qu'il fasse une
redirection vers le proxy
Webmin (administration via une interface web de Squid)
Webmin est un panel d'administration web pour votre serveur ou machine Linux. Il permet de gérer le
système, administrer les serveurs installés, etc.

Installation

Webmin n'étant pas dans les dépôts, il faut télécharger le fichier « .deb » d'installation de Webmin
depuis leur site :

cd /tmp
wget http://prdownloads.sourceforge.net/webadmin/webmin_1.400_all.deb

Installer les dépendances de webmin : libauthen-pam-perl, libio-pty-perl et libmd5-perl.

Puis installer le paquet téléchargé :

sudo dpkg -i /tmp/webmin_1.400_all.deb

Connexion

Pour administrer sa machine depuis Webmin, ouvrir un navigateur qui ne passe pas par ce proxy et y
taper l'adresse :

https://nom_machine:10000/

(nom_machine peut être remplacé par l'IP de la machine)

Vous pouvez vous y connecter avec vos identifiants/mots de passe habituels.

Administration de Squid

Pour administrer Squid, dérouler le menu servers puis Squid Proxy Server. Pour plus d'informations sur
le module d'administration de Squid, regarder directement la doc du site de Webmin (en).

Visionnement des logs

Trois principaux log viewers sont diponibles et consultables depuis Webmin : SARG, Calamaris et
Webalizer.

Au choix, installer l'un des paquets sarg calamaris webalizer.

Dans l'interface Webmin, vous pouvez configurer et générer des rapports Squid via :

• Calamaris : Servers → Squid Proxy Server → Calamaris Log Analysis.


• SARG : Servers → Squid Analysis Report Generator.
• Webalizer : Servers → Webalizer Logfile Analysis.

Webalizer nécessite un dossier, à indiquer dans Webmin, dans lequel il enregistrera les rapports générés.
Créer donc un dossier webalizer dans le dossier personnel :

mkdir ~/webalizer

Désinstallation
Pour supprimer cette application, il suffit de supprimer son paquet. La configuration de l'application sera
conservée ou supprimée selon la méthode de désinstallation que vous choisirez.

Applications associées
Beaucoup de logiciels sont complémentaires à Squid, et permettent de nouvelles fonctionnalités comme
le filtrage de contenu, le blacklisting …

SquidGuard

Installation

• Il suffit d'installer le paquet squidguard.

Installer les blacklists

• Télécharger la blacklist française


• Taper les commandes suivantes :

tar zxvf blacklists.tar.gz -C /var/lib/squidguard/db/


cd /var/lib/squidguard/db/
mv blacklists/* .
rm -rf blacklists

Configuration

• Editer le ficher /etc/squid/squid.conf (avec les droits d'administration)


• Ajouter les lignes suivantes :

redirect_program /usr/bin/squidGuard -c /etc/squid/squidGuard.conf


redirect_children 4

• Attention pour la version 2.6 de squid la synthaxe est legerement différente.

url_rewrite_program /usr/bin/squidGuard -c /etc/squid/squidGuard.conf


url_rewrite_children 15

• Ci-dessous un exemple de configuration de SquidGuard correspondant au réseau suivant :


o Adresses de type : 192.168.0.x
o Adresse du serveur proxy : 192.168.0.1
o Nom du serveur proxy : serveur
o Port d'écoute de Squid : 3128
o Stations autorisées à utiliser Internet : 192.168.0.50 et de 192.168.0.100 à
192.168.0.125

# /etc/squid/squidGuard.conf

dbhome /var/lib/squidGuard/db
logdir /var/log/squid

# Definition des sources :

src admin {
ip 192.168.0.1
}

src poste {
ip 192.168.0.50
}

src multipostes {
ip 192.168.0.100-192.168.0.125
}

# Definition de la base de données de filtrage utilisée


dest adult {
domainlist adult/domains
urllist adult/urls
}
dest publicite {
domainlist publicite/domains
urllist publicite/urls
}
dest warez {
domainlist warez/domains
urllist warez/urls
}
dest porn {
domainlist porn/domains
urllist porn/urls
}

# Definition des ACL

acl {
admin {
pass all
}

poste {
pass !porn !adult !publicite !warez all
redirect http://mon_serveur/interdiction.html
}

multipostes {
pass !porn !adult !publicite !warez all
redirect http://mon_serveur/interdiction.html
}

default {
pass none
redirect http://mon_serveur/interdiction.html
}
}

# pour admin tout est autorisé, pour poste et multipostes tout est autorisé sauf
porn adult publicite et warez
# "redirect http://mon_serveur/interdiction.html" correspond à la redirection du
client en cas d'accès refusé.

# FIN /etc/squid/squidGuard.conf #

• Redemarrer Squid

/etc/init.d/squid restart