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

 

 

Laisser un commentaire

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