Reverse Proxy à Wildcard¶
Principe¶
Le principe de cette manip' est de créer un proxy pour accéder aux antennes Wifi de façon sécurisée.
+--------+--------->[antenne1] +--------+ | apache |--------->[antenne2] | client |---->| (h2) |--------->[antenne3] +--------+ | |--------->[antenne4] +--------+--------->[antenne5]
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 *>)
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 :
*.tsf IN CNAME h2
Vérification :
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
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).
# 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
L'authentification est gérée dans le fichier /etc/apache2/.htdigest.
Pour ajouter un utilisateur :
# htdigest /etc/apache2/.htdigest ttnn nomutilisateur
Pour créer ce fichier, la première fois, il faut ajouter un paramètre -c.