Introduction
Extrait de Wikipédia
https://www.classicistranieri.com/fr/articles/s/e/r/Serveur_mandataire.html
Un serveur mandataire ou proxy (de l’anglais) est un serveur informatique qui a pour fonction de relayer des requêtes entre un poste client et un serveur. Les serveurs mandataires sont notamment utilisés pour assurer les fonctions suivantes :
- mémoire cache ;
- la journalisation des requêtes (« logging ») ;
- la sécurité du réseau local ;
- le filtrage et l’anonymat.
L’utilité des serveurs mandataires est importante, notamment dans le cadre de la sécurisation des systèmes d’information.
Ce tuto va vous permettre de créer un proxy avec filtrage et logging.
Nous allons utiliser PfSense comme base de travail.
A l’installation de base, nous allons ajouter les packages :
- Squid
- SquidGuard
- LightSquid
Prérequis
- Une machine x86 physique ou virtuelle avec une interface réseau
- un serveur DNS
- un serveur DHCP
- un firewall
Installation
Je vous invite à télécharger l’ISO de PfSense sur le site : https://www.pfsense.org/download/
PfSense peut être installé sur une machine physique ou sur une machine virtuelle.
Pour ma part, il sera installé sur VWMware ESXi 6.5.
A présent, nous allons pouvoir passer via l’interface Web de management de PfSense via http://<IP>
Pour Configurer PfSense et installer les packages nécessaires au fonctionnement du proxy.
Configuration de Squid
Configuration de SquidGuard
SquiGuard est un « add-on » pour Squid qui va vous permeetre d’effectuer du filtrage basé sur des blacklists/whitelists.
J’utilise la blacklist de L’Université de Toulouse.
https://dsi.ut-capitole.fr/blacklists/
Configuration de LightSquid
LightSquid va vous permettre de faire du reporting sur les accès Squid.
Configuration manuelle du proxy
Les écrans ci-dessous sont propres à Linux
Vous avez 2 possibilités:
- La configuration manuelle du proxy
- par l’ajout de l’URL du serveur WEB hébergeant votre fichier de configuration
Configuration automatique du proxy
Fichier PAC et WPAD
Introduction
Pour déployer automatiquement l’adresse de votre proxy, nous allons créer un un fichier proxy.pac.
Extrait de Wikipédia
https://fr.wikipedia.org/wiki/Fichier_.PAC
Le navigateur va chercher ce fichier PAC en priorité. Les URL qu’il contient peuvent être configurées manuellement, ou déterminées automatiquement par le WPAD (Web Proxy Autodiscovery Protocol (en)1).
Un fichier PAC contient une fonction en JavaScript appelée « FindProxyForURL(url, host) ». Cette fonction retourne une chaîne de caractères avec une ou plusieurs spécifications (règles) sur la façon d’y accéder. Ces règles amènent le navigateur web à utiliser un serveur proxy particulier ou à se connecter directement.
Prérequis
Un fichier proxy.pac doit être déployer à travers un serveur web.
Perso, j’utilise un serveur Apache.
Voici un lien pour vous aider à installer un serveur Apache sous Ubuntu :
Pour l’extension .pac soit prise en charge par votre serveur Web Apache, il faut ajout un fichier .htaccess contenant :
AddType application/x-ns-proxy-autoconfig .pac
Dans le répertoire contenant votre fichier proxy.pac
Créez, également, un symbolic link wpad.dat vers votre fichier proxy.pac. Exemple:
ln -s /var/www/html/proxy.pac /var/www/html/wpad.dat
Exemple de fichier proxy.pac
function FindProxyForURL(url, host) { //Les adresses privées n'utilisent pas le proxy if (isInNet(host, "192.168.0.0", "255.255.0.0")) { return "DIRECT"; if (isInNet(host, "10.0.0.0", "255.0.0.0")) { return "DIRECT"; // les urls suffixées domain.local n'utilisent pas le proxy if (shExpMatch(url, "*.domain.local//*")) return "DIRECT"; } else { // définition du proxy pour l'http et l'https if (shExpMatch(url, "http:*")) return "PROXY 172.16.1.153:3128" ; if (shExpMatch(url, "https:*")) return "PROXY 172.16.1.153:3128" ; return "DIRECT"; } }
Propagation via DNS
Remarque: La propagation de la configuration wpad/pac via DNS/DHCP n’est valable que pour des machines Windows.
Pour propager votre configuration proxy via un serveur DNS.
Vous devez créer une entrée wpad soit un A pointant vers l’IP du serveur web hébergeant le fichier wpad/pac ou un CNAME pointant vers le FQDN du serveur web hébergeant le fichier wpad/pac.
wpad.mle. IN A 172.16.1.1
ou
wpad.mle. IN CNAME pacserver.mle.
Propagation par DHCP
La propagation par DHCP de la configuration WPAD est principalement supporté par Windows.
Vous devez configurer l’option 252 qui pointera vers l’URL de votre fichier wpad.dat. Exemple :
http://pacserver.mle/wpad.dat
Références
http://findproxyforurl.com
https://fr.wikipedia.org/wiki/Fichier_.PAC
https://www.pfsense.org/
Bonjour, je suis à la recherche de la configuration d’un fichier wpad.dat avec la suite pfsense/squid disposant d’une authentification locale, il me semble que dans votre exemple ceci ne soit pas spécifié, pouvez vous m’indiquer si vous utilisez une authentification ou si votre squid est en mode transparent ?
Cordialement.
Bonjour Alain,
Le fichier wpad/pac est utilisé pour définir dans quelles conditions le PC client va utiliser un proxy ou pas. L’authentification est propre au logiciel du proxy (Squid ou autre).
L’utilisation d’un fichier wpad/pac n’est pas obligatoire mais simplifie la gestion des proxies, par exemple, sur un portable, si vous définissez l’adresse IP/port de votre proxy dans les paramètres de votre PC, lorsque ce PC sera hors de votre réseau, il ne pourra pas accéder à Internet sans une modification de la configuration des paramètres Internet. Tandis que si vous utilisez un configuration via wpad/pac, comme le fichier ne sera pas disponible en dehors de votre réseau, le PC se connectera en direct sur Internet.
La configuration que je décris est pour un proxy « standard » avec une seule interface réseau qui nécessite, soit de définir manuellement le proxy dans les paramètres Internet du PC client ou l’utilisation d’un fichier de configuration wpad/pac. Ce mode permet de configurer l’authentification des utilisateurs.
Dans ce tuto, je n’ai pas abordé l’authentification.
Je vais ajouter un chapitre à ce sujet.
Remarque : la propagation automatique de la configuration wpad/pac via DNS/DHCP n’est valable que pour des PC sous Windows, les autres OS (OSX, Linux, Android) nécessite que le chemin du script soit spécifié dans la configuration proxy de la machine.
Un proxy transparent doit avoir 2 interfaces réseaux, une pour le LAN et une pour le WAN, vous allez utilisé Pfsense comme firewall/routeur et proxy transparent, car tout le trafic HTTP/HTTPS va devoir passer là. Du côté client, aucune configuration n’est nécessaire. Mais pas contre, il n’est pas possible d’activer l’authentification.
J’espère que mon explication est claire.