Archives de catégorie : Informatique

Un proxy Open Source avec PfSense

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 :

https://www.digitalocean.com/community/tutorials/how-to-install-the-apache-web-server-on-ubuntu-20-04-quickstart-fr

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/

Lenteurs du serveur d’impressions Windows

Si vous rencontrez des lenteurs inexplicables entre le moment où vous lancez votre impression et celui où elle sort de l’imprimante. Je vous conseil de vérifier ce qui suit.

Voilà près de dix ans, j’ai rencontré ce problème dans l’entreprise pour laquelle je travaillais. Des délais de près de 10 minutes ont été observés pour qu’une impression soit sur le papier.

Nous avions cherchés du côté du réseau, de performance du serveur, des drivers, etc…

Nous avons fini par demander de l’aide auprès de notre support externe (Microsoft Gold Partner). Ils ont investigué sur les mêmes points que nous. Nous avons reçus des recommandations, dans l’ordre:

  • réinstaller tous les drivers sur le serveur
  • augmenter la mémoire du serveur
  • réinstaller les services d’impressions sur le serveur
  • réinstaller les drivers sur les postes clients
  • supprimer les imprimantes et les réinstaller sur le serveur
  • installer un nouveau serveur et réinstaller les imprimantes « from scratch »

Comme le serveur avait 16GB de mémoire, nous avons arrêtés les frais au deuxième point.

C’est alors que sur un forum obscure (nullement une référence officielle Microsoft), j’ai fini par trouver.

Et voilà qu’il y a deux semaines, le problème se représente dans l’entreprise dans laquelle je travaille actuellement. Au bout de quelques jours. Nous ouvrons un ticket auprès de notre support externe (je sens que je me répète). Heureusement, j’ai eu ce sentiment de « déjà vu », le temps de fouiller dans ma mémoire. Et bingo.

Les symptômes

  • Les utilisateurs se plaignent d’un délai déraisonnable pour obtenir leur impression.
  • le job d’impression reste dans la queue pendant plusieurs minutes.
  • L’impression est instantanée lorsque vous connecté l’imprimante en « direct » sur le poste de travail.
  • Vous ne trouvez aucun message d’erreur dans le journal d’événements.

Le remède

Le serveur d’impression Windows stocke les jobs d’impressions dans un répertoire de travail (%windir%\system32\spool\Printers).
Lorsque le print spooler se plante (ce qui n’arrive JAMAIS sous Windows), des fichiers de jobs fantômes restent dans ce répertoire.
Après le redémarrage du print spooler, le répertoire n’est pas vidés et à chaque nouvelle impression, notre ami Windows tente de faire quelque chose des jobs fantômes avant de traiter le job valide, ce qui introduit une attente de timeout sur chaque jobs corrompus.

Pour pallier à ceci, le print spooler doit être arrêté.
Lancer un terminal en mode administrateur.

net stop spooler

supprimer les fichiers dans le répertoire.

del %windir%\system32\spool\printers\* /q

Redémarrer le spooler

net start spooler

Conclusion

La première fois que j’ai rencontré le problème, c’était sous Windows 2003 et aujourd’hui, c’est sous Windows 2008 R2.

J’espère que cet article pourra vous aider.