[ Accueil ] [ Fonctionnement ] [ Squid ] [ + sur squid ] [ SquidGuard ] [ + sur SquidGuard ]
Un PII 300 MHz, 64 Mo de RAM et 2 G0 de disque dur devraient suffire pour un réseau d'une centaine de postes. La machine de test s'appelle "eros". Elle est indépendante du routeur NAT.
Rien n'empêche cependant d'installer Squid/SquidGuard sur la même machine que le routeur NAT, ça simplifiera même les choses si l'on souhaite rendre le proxy transparent.
Nous supposons que vous êtes sorti victorieux d'une installation de la "Woody", que votre configuration réseau fonctionne, que vous avez installé (et mis à jour) Webmin et qu'il fonctionne aussi. Nous allons beaucoup l'utiliser, bien que ce ne soit pas absolument indispensable.
Une fois que l'on a compris comment se dépatouiller avec le fameux "dselect", autant l'utiliser. Sinon, apt-get install fait aussi l'affaire.
Debian Woody stable installe squid 2.4. C'est important, parce que beaucoup de choses peuvent changer dans le fichier de configuration, suivant la version utilisée. Mandrake 9.1 fournit la version 2.5 et les "tags" du fichier de configuration ne sont pas tous identiques entre les deux versions.
eros:/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. eros:/etc#
Comme vous le voyez, on l'installe et il démarre tout seul.
eros:/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 eros:/etc#
Effectivement, il tourne. N'y aurait-il rien de plus à faire ? Vérifions tout de suite, squid utilise par défaut le port 3128. Configurons donc un navigateur du LAN pour l'utiliser et essayons un URI au hasard...
C'était trop beau... Il faudra déjà mettre les mains dans le cambouis. Notez qu'il vaut mieux une configuration qui interdise trop qu'une configuration qui, par défaut, autorise trop, comme font certains...
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.
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