Projet

Général

Profil

ReverseProxyWildcard » Historique » Version 2

Version 1 (Fabien Dupont, 23/04/2013 23:30) → Version 2/5 (Fabien Dupont, 23/04/2013 23:50)

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 en mode proxy il doit réécrire les requêtes vers les adresses IP déduites de l'URL. mais en mode rewrite.

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
TODO
http://172.31.31.42/.