Archives pour novembre, 2010

Squid : gestion whitelist et redirection URL

Pour faire suite à mon précédent article de configuration Squid, je vous présente ici la configuration d’une 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 d’expressions régulières regroupées dans un fichier texte et je bloque par une seconde ACL toutes celles n’y 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 l’emploi d’un programme de redirection externe, dit redirecteur. Aucun redirecteur n’est activé par défaut, il faut donc en écrire un.  Le principe est assez simple : quelque soit le langage utilisé, l’URL demandée est soumise en entrée et Squid attend en retour l’URL ou l’erreur HTTP à renvoyer au client. Ainsi si l’URL est différente, le client est redirigé automatiquement.  Dans le cas d’une erreur, la chaîne est du type : 302:<URL>. Dernier point, le script ne doit pas rendre la main.

Pour ma part, j’ai fait le choix d’un script Perl, étant donné que j’ai 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 l’URL :

# 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 d’instances à exécuter (10 est un bon début) :

redirector_program /etc/squid/redirector.pl
redirector_children 10

Fichier de configuration Squid : [Téléchargement introuvable]

Nano : activer la coloration syntaxique

L’éditeur de texte nano supporte comme tout autre éditeur la coloration syntaxique. Pour l’activer, vérifiez où sont stockées les templates de format (/usr/share/nano ou équivalent) et chargez-les dans votre fichier de préférence ~/.nanorc :

# more .nanorc
set autoindent
include "/usr/local/share/nano/nanorc.nanorc"
include "/usr/local/share/nano/c.nanorc"
include "/usr/local/share/nano/html.nanorc"
include "/usr/local/share/nano/patch.nanorc"
include "/usr/local/share/nano/man.nanorc"
include "/usr/local/share/nano/perl.nanorc"
include "/usr/local/share/nano/python.nanorc"
include "/usr/local/share/nano/java.nanorc"
include "/usr/local/share/nano/sh.nanorc"

Et voilà le rendu sur un fichier Perl :

Squid : bloquer les clients selon leurs User-Agent

En configuration proxy ou reverse-proxy, squid permet par le biais de ses ACL de filtrer les clients pour autoriser/bloquer leurs requêtes selon des points précis. Il peut alors être intéressant de bloquer les user agents non désirés, en les regroupant sous la forme d’une liste, à laquelle il va comparer la valeur fournie par chaque client. Etant donné que l’user agent peut ne pas être renseigné, une ACL  supplémentaire est nécessaire pour vérifier sa présence.

Voici la configuration que j’ai donc dû mettre en place :

acl HAS_USERAGENT browser ^.+$
acl BAD_USERAGENT browser -i "/etc/squid/bad_useragent.txt'

[...]

http_access deny !HAS_USERAGENT
http_access deny BAD_USERAGENT
http_access allow all

La liste des user agent bloqués est de ce type:

# more /etc/squid/bad_usergent.txt
# Misc
^C:
^Skype
^Notepad
^Wget
^ZmEu
woozweb-monitoring
^Shazam
^PS3Update-agent
^MailRuSputnik
^ebay_api
^PPTVUpdate
^EoAgence
^Facebook
^Shasta
^AOLToolbarMetric
^LineUp2
^DING
^ISUA
^android-sports
^sacore
^jupdate
^MPFv
^SCSDK
^DotMacKit
^Android-GData-Calendar
^Kontiki
^SeaPort
^Messenger
^Raptr
^Kontiki
^YahooMobileMessenger
^YahooMobileMail
^Windows-Update-Agent
^Windows-Media-Player
^Windows-RSS-Platform
^MSDW
Microsoft NCSI
^iTunes
^iPhoto
^GrowlHelperApp
^Apple-PubSub
^AppleSyndication
^AppleTV
^CaptiveNetworkSupport
^AntiVir
^AVGINET
^ZoneAlarm
^COMODO Internet Security
^Azureus
^MailRuSputnik
Haut de page