Houla !Voici le troisième article sur le serveur proxy Squid, qui se concentre sur le peaufinage de l’installation et la résolution de problèmes, notamment le blocage de certains sites. Dans la configuration actuelle, Squid gère les connexions HTTP aussi bien que les connexions HTTPS, mais l’installation n’a pas encore d’utilité concrète.

Nous aborderons par la suite des configurations pratiques au quotidien comme la surveillance du trafic web du réseau local et le filtrage des sites web indésirables. Avant d’aller plus loin, il nous faut régler quelques points de détail.

Les sites qui posent problème

Dans l’ensemble, notre proxy transparent fonctionne très bien pour l’écrasante majorité des sites. L’ensemble du trafic web du réseau local est intercepté par le proxy et inscrit dans /var/log/squid/access.log. Or, vous aurez probablement remarqué des problèmes avec certains sites web. Ou plus généralement tout ce qui nécessite une connexion sur le port 443. Comme la synchronisation d’un stockage réseau OwnCloud, par exemple :

Blocage OwnCloud

De manière similaire, certains sites de banques, de trading ou de monnaies virtuelles ne fonctionnent pas avec notre certificat auto-signé. Ce qui n’est d’ailleurs pas plus mal.

La solution pragmatique consiste ici à créer des exceptions pour les quelques domaines qui posent problème, de manière à ce qu’ils passent à travers le serveur proxy.

Définir les exceptions au niveau de Squid

AstuceAprès une première tentative quelque peu compliquée au niveau du pare-feu – et que je ne détaillerai pas ici – j’ai reçu un mail de Yuri Voinov qui est inscrit comme moi à la mailing list de Squid, et qui m’a fourni une solution simple, élégante et fonctionnelle pour définir des exceptions au niveau de la configuration de Squid. Je tiens à le remercier ici.

Dans le fichier /etc/squid/squid.conf, éditer les règles SSL comme ceci :

# SSL-Bump & exception list
acl DiscoverSNIHost at_step SslBump1
acl NoSSLIntercept ssl::server_name_regex "/etc/squid/no-proxy.txt"
ssl_bump peek DiscoverSNIHost
ssl_bump splice NoSSLIntercept
ssl_bump bump all

Les URLs à exclure du traitement figurent dans le fichier /etc/squid/no-proxy.txt. Pour la syntaxe, on utilisera le cas échéant les expressions régulières POSIX classiques :

# Académie de Montpellier
ac\-montpellier\.fr
# Actalians
actalians\.fr
# AGI Lease 
agi\-lease\.fr
# Binance
binance\.com
# Bitfinex
bitfinex\.com
# BitMEX
bitmex\.com
# OwnCloud Microlinux
cloud\.microlinux\.fr
...

AstuceCette solution présente une série d’avantages techniques, notamment le fait que les sites définis comme exception apparaissent quand-même dans les logs de Squid. On la préférera donc au traitement en amont dans le pare-feu.

Une fois qu’on a pris en compte la nouvelle configuration de Squid, le problème est résolu et la connexion s’effectue sans problèmes :

Exception Squid

Centraliser la liste des exceptions

Si l’on a plusieurs serveurs proxy transparents à gérer, ce n’est peut-être pas une mauvaise idée de centraliser ces informations. On partira du simple principe qu’un domaine qui pose problème dans le réseau d’un client particulier posera le même problème chez tous les autres. Pour éviter de se retrouver avec des fichiers no-proxy.txt vaguement redondants et qui fleurissent à droite et à gauche comme de la mauvaise herbe, on peut ranger ce fichier dans un dépôt Gitlab. Voilà à quoi cela ressemble dans ma configuration :

# cd /etc/squid/
# git clone git@gitlab.com:kikinovak/no-proxy.git
Cloning into 'no-proxy'...
remote: Enumerating objects: 12, done.
remote: Counting objects: 100% (12/12), done.
remote: Compressing objects: 100% (8/8), done.
remote: Total 12 (delta 0), reused 0 (delta 0), pack-reused 0
Receiving objects: 100% (12/12), done.
# ls no-proxy/
no-proxy.txt  README.md

À partir de là, il suffira d’ajuster le chemin vers le fichier no-proxy.txt dans la configuration de Squid :

# SSL-Bump & exception list
acl DiscoverSNIHost at_step SslBump1
acl NoSSLIntercept ssl::server_name_regex "/etc/squid/no-proxy/no-proxy.txt"
ssl_bump peek DiscoverSNIHost
ssl_bump splice NoSSLIntercept
ssl_bump bump all

La suite au prochain numéro, où nous utiliserons Squid pour surveiller le trafic web local.


La rédaction de cette documentation demande du temps et des quantités significatives de café espresso. Vous appréciez ce blog ? Offrez un café au rédacteur en cliquant sur la tasse.

 

Catégories : Serveur

0 commentaire

Laisser un commentaire

Emplacement de l’avatar

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *