Project

General

Profile

ReverseProxyWildcard » History » Version 3

Version 2 (Fabien Dupont, 04/23/2013 11:50 PM) → Version 3/5 (Fabien Dupont, 04/23/2013 11:55 PM)

h1. Reverse Proxy à Wildcard

h2. Principe

Le principe de cette manip' est de créer un proxy pour accéder aux antennes Wifi de façon sécurisée.

<pre>

+--------+--------->[antenne1]
+--------+ | apache |--------->[antenne2]
| client |---->| (h2) |--------->[antenne3]
+--------+ | |--------->[antenne4]
+--------+--------->[antenne5]

</pre>

Explication :

* Une requête arrive vers http://unchiffre.tsf.tetaneutral.net/quelquechose
* Apache vérifie une authentification de type digest
* Elle est réécrite en http://172.31.31.unchiffre/quelquechose
* Apache interroge http://172.31.31.unchiffre/quelquechose puis sert le résultat au client au tranvers du reverse proxy (<Proxy *>)

h2. Configuration du DNS

Le DNS doit être avoir un wildcard pour que toutes les requêtes vers un sous-domaine de tsf.tetaneutral.net doivent pointer vers le serveur web, ici c'est h2.

Dans bind, pour la zone tetaneutral.net, il faut ajouter :

<pre>
*.tsf IN CNAME h2
</pre>

Vérification :

<pre>
palomino# host pouetpouetpouet.tsf.tetaneutral.net
pouetpouetpouet.tsf.tetaneutral.net is an alias for h2.tetaneutral.net.
h2.tetaneutral.net has address 91.224.149.152
h2.tetaneutral.net has IPv6 address 2a01:6600:8081:9800::1
</pre>

h2. Configuration côté apache

En fait, apache n'est pas configuré qu'en mode proxy il doit réécrire les requêtes vers les adresses IP déduites de l'URL.

Par exemple, une requête vers http://42.tsf.tetaneutral.net/ sera réécrite en http://172.31.31.42/ puis « reverse proxyfiée ».

Un nouveau VirtualHost doit être ajouté à Apache. Il doit avoit pour nom (ServerName) un nom défini (ex: 1.tsf.tetaneutral.net) mais il peut avoir un alias acceptant des aliases (*.tsf.tetaneutral.net).

<pre>
# cat /etc/apache2/sites-available/tsf.tetaneutral.net
<VirtualHost *:80>
ServerAdmin webmaster@localhost
ServerName 1.tsf.tetaneutral.net
ServerAlias *.tsf.tetaneutral.net

<Location />
AuthType Digest
AuthName "ttnn"
AuthBasicProvider file
AuthUserFile /etc/apache2/.htdigest
Require valid-user
</Location>

ProxyRequests off
<Proxy *>
Order deny,allow
Allow From all
</Proxy>

RewriteEngine on

RewriteCond %{http_host}/%{request_uri} ^([0-9]+)\.tsf\.tetaneutral\.net/(.*)$
RewriteRule (.*) http://172.31.31.%1/%2 [p]

CustomLog /var/log/apache2/tsf.tetaneutral.net-access.log combined
</VirtualHost>
# ln -sv /etc/apache2/site-available/tsf.tetaneutral.net /etc/apache2/site-enabled/
# /etc/init.d/apache2 reload
</pre>

L'authentification est gérée dans le fichier /etc/apache2/.htdigest.

Pour ajouter un utilisateur :

<pre>
# htdigest
/etc/apache2/.htdigest ttnn nomutilisateur
</pre>

Pour créer ce fichier, la première fois, il faut ajouter un paramètre -c.
TODO