Proxy : méthodes de déploiement

 

Bonjour,

En entreprise, utiliser un proxy web devient quasiment obligatoire. Je ne reviendrais pas ici sur l’installation de ce proxy (ici : Squid) mais uniquement sur la méthode de déploiement sur les machines clientes.
A ce jour j’ai recensé 3 differentes méthodes pour diffuser un proxy. Chacune de ces méthodes a des points forts, des points faibles et des coûts différents.

 

Méthode 1 : Gateway
Cette méthode consiste à rediriger tout le trafic de la machine cliente sur le serveur hébergeant Squid. Il faudra dans ce cas autoriser le trafic à ressortir et rediriger le port 80 sur le port d’écoute de Squid. Dans ce cas on peut imaginer que le serveur est aussi un pare-feu. Cette méthode peut être utilisée dans les petites entreprises avec peu de trafic car elle nécessite un serveur passerelle qui peut coûter cher selon la charge qu’il doit subir.
Plus d’information

 

Méthode 2 : GPO/http_proxy
Pour cette méthode on utilisera les très connues GPO pour les postes clients windows et pour les clients GNU/Linux nous utiliserons les variables d’environnements $http_proxy,$https_proxy et aussi $no_proxy. Cette méthode implique que les windows soient inclus dans un domaine et d’avoir un accès sur les machines linux pour affecter les variables.
Plus d’information sur la variable http_proxy

 

Méthode 3 : wpad.dat et proxy.pac
Cette méthode correspond au mode « Détection automatique des paramètres du réseau » de Firefox. En gros le navigateur va chercher sur le réseau un fichier (wpad.dat) qui contient les paramètres d’utilisation du proxy. Cette méthode ne possède pas spécialement de point faible à part sa mise en place plus complexe. Par contre le fichier wpad.dat peut être paramétré de façon très pointue, permettant un filtrage accru.
Plus d’information sur le déploiement wpad

 

Ces méthodes peuvent être contournées par l’utilisateur (surtout si il est root sur sa machine) c’est pourquoi il ne faut pas oublier de couper le port 80 et 443 en provenance de votre réseau sur votre passerelle de sortie.

 

 

Proxy HTTP Apache2 avec mod_proxy

Que ce soit pour obtenir une adresse IP différente ou pour passer au travers des règles de filtrages de certains sites/firewalls,
vous pouvez avoir l’envie de faire transiter votre flux web par votre serveur Apache personnel.

Pour ceci nous allons créer un hôte virtuel dédié à cette usage, l’ouverture d’un proxy sans authentification étant extrêmement dangereuse car n’importe qui peut utiliser votre IP, nous allons donc recourir à une authentification de type HTTP/Basic pour en sécuriser l’accès.

Attention ici il n’est absolument pas question de chiffrer le flux HTTP, c’est une simple redirection de ce dernier vers un nouveau point de sortie, qui plus est les requêtes DNS sont toujours traitées par votre serveur DNS habituel, gardez donc à l’esprit que cette technique ne vous rends pas invisible, notamment vis à vis de votre réseau local.

J’ai choisi ici le port 443 pour héberger le service, tout d’abord parce que c’est un port qui est généralement toujours ouvert quelque soit l’endroit d’où l’on se connecte et ensuite car je n’ai pas de site HTTPS hébergé sur cette machine. A vous de faire votre choix pour ce paramètre.

Il vous faut dans un premier temps créer un fichier contenant les couples login/mot de passe avec la commande htpasswd :

htpasswd -c /etc/apache2/htpasswd username

On vas ensuite créer le fichier de configuration de notre vhost dans le dossier /etc/apache2/sites-available/proxy :

<VirtualHost *:443>

ServerName proxy.mydom.fr
DocumentRoot /var/www/proxyjail

ProxyRequests On
ProxyVia On

php_value engine off

<Proxy *>
AuthType Basic
AuthName « Restricted Area »
AuthUserFile /etc/apache2/htpasswd
require valid-user

Order deny,allow
Allow from all
</Proxy>

<Directory /var/www/proxyjail>
AllowOverride None
Options -All
</Directory>

</VirtualHost>

Certes notre virtual host ne vas normalement pas être utilisé pour délivrer du contenu HTML local — encore moins PHP ou un autre langage de scripting d’ou la presence de la ligne « php_value engine off  » — il est cependant obligatoire qu’il dispose d’un DocumentRoot. Utiliser /var/www comme DocumentRoot dans notre cas permettrait certainement à un utilisateur malveillant d’accéder à beaucoup de choses qu’il ne devrait pas.
Nous allons donc créer le dossier /var/www/proxyjail et s’en servir pour enfermer les utilisateurs du proxy à l’intérieur. ( Attention ici il n’est pas question de chroot ).

mkdir /var/www/proxyjail
chmod 744 /var/www/proxyjail
touch /var/www/index.html

Pour finir il suffit d’activer le vhost et de relancer apache

a2ensite proxy
apache2ctl configtest && /etc/init.d/apache2 restart

Il ne vous reste plus qu’à configurer votre navigateur pour qu’il utilise votre proxy et le tour est joué :
Configuration du proxy sous Firefox