Squid : gestion whitelist et redirection URL

Boris HUISGEN
Boris HUISGEN

Pour faire suite à mon précédent article de configuration Squid, je vous présente ici la configuration dune whitelist afin de limiter les URL acceptées (vous pouvez aussi faire une liste de domaines) sur mon reverse proxy et la redirection des clients (redirection URL) depuis Squid.

Dans le premier cas, rien de bien compliqué, cela se joue sur deux ACL. Par la première, je vérifie les URL selon une liste dexpressions régulières regroupées dans un fichier texte et je bloque par une seconde ACL toutes celles ny figurant pas :

acl ALLOW_URL url_regex -i "/etc/squid/allow_url.txt"
[...]
http_access allow ALLOW_URL
http_access deny !ALLOW_URL
http_access allow all

Exemple de liste :

# more allow_url.txt

www.monsite.fr
media.monsite.fr/img/

Seconde étape, le reverse proxy doit rediriger les clients selon certaines URL, plus précisément selon certains paramètres en GET. Pour ce faire, Squid propose lemploi dun programme de redirection externe, dit redirecteur. Aucun redirecteur nest activé par défaut, il faut donc en écrire un. Le principe est assez simple : quelque soit le langage utilisé, lURL demandée est soumise en entrée et Squid attend en retour lURL ou lerreur HTTP à renvoyer au client. Ainsi si lURL est différente, le client est redirigé automatiquement. Dans le cas dune erreur, la chaîne est du type : 302:. Dernier point, le script ne doit pas rendre la main.

Pour ma part, jai fait le choix dun script Perl, étant donné que jai seulement besoin de rediriger sur un domaine unique. Si vous avez plusieurs tests à effectuer, je vous invite plutôt à vous tourner vers Squirm.

# more redirector.pl

#!/usr/bin/perl
#
# Boris HUISGEN <bhuisgen@hbis.fr>
#

$|=1;

while (<>)
{
    my @X = split;
    my $url = $X[0];

    if ($url =~ /^http:\/\/www\.monsite\.fr\/\?url=(.[^\?]*)/)
    {
        print "$1\n";
    }
    else {
        print "$url\n";
    }
}

# chmod +x redirector.pl

Le test du redirecteur peut se faire en console (sans toucher à squid) en saisissant au moins en premier paramètre lURL :

# perl redirector.pl

http://www.monsite.fr/?url=www.wikipedia.fr 127.0.0.1/- - GET
www.wikipedia.fr

Ici, le client est donc redirigé sur le site de Wikipédia.

Reste à activer le redirecteur dans la configuration Squid et à préciser le nombre dinstances à exécuter (10 est un bon début) :

redirector_program /etc/squid/redirector.pl
redirector_children 10

Fichier de configuration Squid : [download id=“2” ]

Boris HUISGEN
Boris HUISGEN
Blog owner
  • #squid