Liens conseillés

Squid

Installation

Entrons dans le vif du sujet. La configuration réseau fonctionne, Webmin est installé et mis à jour. Il est trés utilisé dans cet exemple mais ce n'est absolument pas absolument indispensable.

Dans notre cas, la configuration se fait avec Squid 2.4. Attention, c'est important car suivant la version utilisée beaucoup de choses peuvent changer dans le fichier de configuration.

gruselle:/etc# apt-get install squid
Reading Package Lists... Done
Building Dependency Tree... Done
The following NEW packages will be installed:
squid
0 packages upgraded, 1 newly installed, 0 to remove and 0 not upgraded.
Need to get 684kB of archives. After unpacking 2334kB will be used.
Get:1 ftp://ftp.fr.debian.org stable/main squid 2.4.6-2 [684kB]
Fetched 684kB in 16s (40.6kB/s)
Preconfiguring packages ...
Selecting previously deselected package squid.
(Reading database ... 47133 files and directories currently installed.)
Unpacking squid (from .../squid_2.4.6-2_i386.deb) ...
Setting up squid (2.4.6-2) ...
Creating squid spool directory structure
2003/05/23 16:26:05| Creating Swap Directories
Starting proxy server: squid.

gruselle:/etc#

Comme on peut le constater, une fois installé, Squid démarre tout seul.

gruselle:/etc# ps aux | grep [s]quid
root 571 0.0 1.8 3824 1124 ? S 16:26 0:00 /usr/sbin/squid -D -sYC
proxy 574 0.8 8.2 8468 5068 ? S 16:26 0:03 (squid) -D -sYC
gruselle:/etc#

Effectivement, il tourne. Mais notre objectif est encore loin d'être atteint. Squid utilise par défaut par défaut le port 3128. Nous faisons donc un test avec un navigateur du LAN pour l'utiliser.

La configuration par défaut ne fonctionne pas. (Ce qui est par ailleurs préférable, comparé à un logiciel qui ouvrirait tout le système par défaut

Configuration minimale

Comme Webmin est bien installé, mis à jour et tout, et que le module pour squid est bien présent, utilisons-le :

Les ACL (Access Control Lists) permettent de définir des conditions sur les IPs, les ports, le contenu de certains textes, et j'en passe. Si vous voulez tout savoir sur les diverses ACL de Squid, ne comptez pas sur moi, comptez plutôt sur la documentation officielle.

Les restrictions indiquent quoi faire lorsque ces conditions sont vérifiées. On autorise ou on interdit en fonction d'une ACL ou d'un groupe d'ACLs, le sens de "restriction" est donc à prendre avec un peu de recul, une restriction pouvant être une autorisation. La première "restriction" vérifiée est la bonne, d'où l'importance de l'ordre dans lequel elles sont placées.

Sans faire une analyse détaillée, nous voyons que dans la configuration par défaut, seul "localhost" peut utiliser le proxy (Allow localhost). Il nous faut donc faire intervenir la notion de réseau local.

Créer une ACL représentant le LAN

Nous sélectionnons dans la liste déroulante "Client Address" et cliquons sur "Create New ACL" :

Nous pouvons définir une étendue, ou toute une classe, comme c'est le cas dans l'exemple. Notre LAN fonctionne avec la classe 192.168.0.0.

Save...

Une nouvelle ligne est apparue dans la liste des ACLs, appelée"Localnet"
Nous allons maintenant sur "Add proxy restriction, choisissons "Allow" et sélectionnons "LocalNet" dans la liste "Match ACLs".

Save...

Enfin, au moyen des flèches de la colonne de droite, nous montons cette nouvelle restriction juste au dessus de "Deny all"

N'oublions pas de faire un "Apply changes", et refaisons un essai :

Ca marche !

Bien entendu, l'idée de faire plutôt "Allow all" est une mauvaise idée. Si votre proxy a un pied dans l'Internet (s'il est installé sur la passerelle), vous risquez un proxy ouvert, avec tous les usages pervertis que l'on peut en faire...

A ce niveau, nous avons une première configuration qui fonctionne. Le fichier squid.conf a cette allure :

hierarchy_stoplist cgi-bin ?
acl QUERY urlpath_regex cgi-bin \?
no_cache deny QUERY
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 SSL_ports port 443 563 10000
acl Safe_ports port 80
acl Safe_ports port 21
acl Safe_ports port 443 563
acl Safe_ports port 70
acl Safe_ports port 210
acl Safe_ports port 1025-65535
acl Safe_ports port 280
acl Safe_ports port 488
acl Safe_ports port 591
acl Safe_ports port 777
acl Safe_ports port 901
acl purge method PURGE
acl CONNECT method CONNECT
acl LocalNet src 192.168.0.0/255.255.255.0
http_access allow manager localhost
http_access deny manager
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 allow LocalNet
http_access deny all
icp_access allow all
log_fqdn on