Contrôler les accès

Pour contrôler tout ce qui passe par votre serveur proxy, vous pouvez utiliser ce que l'on appelle les ACL (Access Control List). Les ACL sont des règles que le serveur applique. Cela permet par exemple d'autoriser ou d'interdire certaines transactions.

On peut autoriser ou interdire en fonction du domaine, du protocole, de l'adresse IP, du numéro de port, d'un mot, on peut aussi limiter sur des plages horaires.

La syntaxe d'une ACL est la suivante :

acl              aclname           acltype             string[string2]
http_access      allow|deny        [!]aclname

acltype peut prendre comme valeur :

src (pour la source) : indication de l'adresse IP du client sous la 
    forme adresse/masque. On peut aussi donner une plage d'adresses 
    sous la forme adresse_IP_debut-adresse_IP_fin
dst (pour la destination) : idem que pour src, mais on vise 
    l'adresse IP de l'ordinateur cible.
srcdomain : Le domaine du client
dstdomain : Le domaine de destination.
url_regex : Une chaîne contenu dans l'URL  
   (on peut utiliser les jokers ou un fichier).
urlpath_regex : Une chaîne comparée avec le chemin de l'URL 
   (on peut utiliser les jokers).
proto : Pour le protocole.

Exemple 1 : Interdire l'accès à un domaine : supposons que nous souhaitions interdire l'accès à un domaine (par exemple le domaine pas_beau.fr). On a donc

acl            veuxpas         dstdomain         pas_beau.fr
http_access    deny            veuxpas
http_access    allow           all     # On accepte tout

La dernière ligne ne doit exister qu'une fois dans le fichier squid.conf.

Exemple 2 : interdire l'accès aux pages contenant le mot jeu.

acl            jeu            url_regex            jeu
http_access    deny            jeu
http_access    allow           all      

Attention url_regex est sensible aux majuscules/minuscules. Pour interdire JEU, il faut aussi ajouter JEU dans votre ACL. Il n'est pas besoin de réécrire toute l'ACL. On peut ajouter JEU derrière jeu en laissant un blanc comme séparation (cela correspond à l'opérateur logique OU).

On peut placer un nom de fichier à la place d'une série de mots ou d'adresses, pour cela donner le nom de fichier entre guillemets. Chaque ligne de ce fichier doit contenir une entrée.

Exemple 3 : utilisation d'un fichier

# URL interdites
acl          url_interdites  url_regex "/etc/squid/denied_url"
http_access  deny            url_interdites

Des produits associés à Squid (redirecteurs) permettent un contrôle plus simple. SquidGuard, par exemple, permet d'interdire des milliers de sites. Le site d'information est référencé plus loin dans la rubrique “ liens ”. Pensez, si vous utilisez SquidGuard, à configurer la ligne suivante dans le fichier squid.conf :

redirect_program /usr/local/squid/bin/SquidGuard 

Exemple 4 : pour contrôler qui a le droit d'utiliser votre cache, créez une ACL du type :

acl             si_OK        src    192.168.0.0/255.255.0.0
http_access     allow        localhost    
http_access     allow        site_OK
http_access     deny         all