Projet

Général

Profil

ReverseProxyWildcard » Historique » Version 3

Fabien Dupont, 23/04/2013 23:55

1 1 Fabien Dupont
h1. Reverse Proxy à Wildcard
2 1 Fabien Dupont
3 1 Fabien Dupont
h2. Principe
4 1 Fabien Dupont
5 1 Fabien Dupont
Le principe de cette manip' est de créer un proxy pour accéder aux antennes Wifi de façon sécurisée.
6 1 Fabien Dupont
7 1 Fabien Dupont
<pre>
8 1 Fabien Dupont
9 1 Fabien Dupont
                +--------+--------->[antenne1]
10 1 Fabien Dupont
 +--------+     | apache |--------->[antenne2]
11 1 Fabien Dupont
 | client |---->|  (h2)  |--------->[antenne3]
12 1 Fabien Dupont
 +--------+     |        |--------->[antenne4]
13 1 Fabien Dupont
                +--------+--------->[antenne5]
14 1 Fabien Dupont
15 1 Fabien Dupont
</pre>
16 1 Fabien Dupont
17 2 Fabien Dupont
Explication :
18 2 Fabien Dupont
19 2 Fabien Dupont
* Une requête arrive vers http://unchiffre.tsf.tetaneutral.net/quelquechose
20 2 Fabien Dupont
* Apache vérifie une authentification de type digest
21 2 Fabien Dupont
* Elle est réécrite en http://172.31.31.unchiffre/quelquechose
22 2 Fabien Dupont
* Apache interroge http://172.31.31.unchiffre/quelquechose puis sert le résultat au client au tranvers du reverse proxy (<Proxy *>)
23 2 Fabien Dupont
24 1 Fabien Dupont
h2. Configuration du DNS
25 1 Fabien Dupont
26 1 Fabien Dupont
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.
27 1 Fabien Dupont
28 1 Fabien Dupont
Dans bind, pour la zone tetaneutral.net, il faut ajouter :
29 1 Fabien Dupont
30 1 Fabien Dupont
<pre>
31 1 Fabien Dupont
*.tsf                       IN  CNAME h2
32 1 Fabien Dupont
</pre>
33 1 Fabien Dupont
34 1 Fabien Dupont
Vérification :
35 1 Fabien Dupont
36 1 Fabien Dupont
<pre>
37 1 Fabien Dupont
palomino# host pouetpouetpouet.tsf.tetaneutral.net
38 1 Fabien Dupont
pouetpouetpouet.tsf.tetaneutral.net is an alias for h2.tetaneutral.net.
39 1 Fabien Dupont
h2.tetaneutral.net has address 91.224.149.152
40 1 Fabien Dupont
h2.tetaneutral.net has IPv6 address 2a01:6600:8081:9800::1
41 1 Fabien Dupont
</pre>
42 1 Fabien Dupont
43 1 Fabien Dupont
h2. Configuration côté apache
44 1 Fabien Dupont
45 2 Fabien Dupont
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.
46 1 Fabien Dupont
47 2 Fabien Dupont
Par exemple, une requête vers http://42.tsf.tetaneutral.net/ sera réécrite en http://172.31.31.42/ puis « reverse proxyfiée ».
48 2 Fabien Dupont
49 2 Fabien Dupont
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).
50 2 Fabien Dupont
51 2 Fabien Dupont
<pre>
52 2 Fabien Dupont
# cat /etc/apache2/sites-available/tsf.tetaneutral.net 
53 2 Fabien Dupont
<VirtualHost *:80>
54 2 Fabien Dupont
	ServerAdmin webmaster@localhost
55 2 Fabien Dupont
	ServerName 1.tsf.tetaneutral.net
56 2 Fabien Dupont
	ServerAlias *.tsf.tetaneutral.net
57 2 Fabien Dupont
58 2 Fabien Dupont
	<Location />
59 2 Fabien Dupont
		AuthType Digest
60 2 Fabien Dupont
		AuthName "ttnn"
61 2 Fabien Dupont
		AuthBasicProvider file
62 2 Fabien Dupont
		AuthUserFile /etc/apache2/.htdigest
63 2 Fabien Dupont
		Require valid-user
64 2 Fabien Dupont
	</Location>
65 2 Fabien Dupont
66 2 Fabien Dupont
	ProxyRequests off
67 2 Fabien Dupont
	<Proxy *>
68 2 Fabien Dupont
		Order deny,allow
69 2 Fabien Dupont
		Allow From all
70 2 Fabien Dupont
	</Proxy>
71 2 Fabien Dupont
72 2 Fabien Dupont
	RewriteEngine on
73 2 Fabien Dupont
74 2 Fabien Dupont
	RewriteCond %{http_host}/%{request_uri} ^([0-9]+)\.tsf\.tetaneutral\.net/(.*)$
75 2 Fabien Dupont
	RewriteRule (.*)    http://172.31.31.%1/%2 [p]
76 2 Fabien Dupont
77 2 Fabien Dupont
	CustomLog /var/log/apache2/tsf.tetaneutral.net-access.log combined
78 2 Fabien Dupont
</VirtualHost>
79 2 Fabien Dupont
# ln -sv /etc/apache2/site-available/tsf.tetaneutral.net /etc/apache2/site-enabled/
80 2 Fabien Dupont
# /etc/init.d/apache2 reload
81 2 Fabien Dupont
</pre>
82 2 Fabien Dupont
83 3 Fabien Dupont
L'authentification est gérée dans le fichier /etc/apache2/.htdigest.
84 3 Fabien Dupont
85 3 Fabien Dupont
Pour ajouter un utilisateur :
86 3 Fabien Dupont
87 3 Fabien Dupont
<pre>
88 3 Fabien Dupont
# htdigest /etc/apache2/.htdigest ttnn nomutilisateur
89 3 Fabien Dupont
</pre>
90 3 Fabien Dupont
91 3 Fabien Dupont
Pour créer ce fichier, la première fois, il faut ajouter un paramètre -c.