Vous êtes sur la page 1sur 7

Proxy : Créer un proxy avec Apache - Deimos.fr / Bloc... https://wiki.deimos.fr/Proxy_:_Cr%C3%A9er_un_proxy...

Proxy : Créer un proxy avec Apache


From Deimos.fr / Bloc Notes Informatique

Contents
▪ 1 Introduction
▪ 1.1 Scénario 1
▪ 1.2 Scénario 2
▪ 2 Installation
▪ 3 Configuration
▪ 3.1 Scénario 1
▪ 3.1.1 Debian
▪ 3.1.2 OpenBSD
▪ 3.1.3 PuTTY : Tunneling SSH
▪ 3.2 Scénario 2
▪ 3.2.1 Tomcat
▪ 3.2.2 Apache
▪ 4 Ressources

1 Introduction
Avec le mod_proxy d'Apache, il y a plusieurs cas d'utilisation. Je vais donc proposer
ici 2 scénarios.

1.1 Scénario 1
Alors voila ! je suis dans une école d'informatique où (comme dans beaucoup
d'écoles) seul le port 80 est ouvert et le cours n'est pas toujours intéressant.
Que faire donc pour pouvoir accéder a son serveur en SSH, jouer a world of warcraft
ou encore télécharger comme un porc sur la mule.
Et bein Uncle Tom l'a un super patern pour toi qui veux breaker les laws : le APACHE
MOD_PROXY PLATINUM EDITION !
Ici nous travaillons sur Debian (ouais mdame) mais la configuration est sensiblement
la même sur les autres system tant que vous utilisez le mod_proxy de Apache2

1.2 Scénario 2
Je souhaites ici rediriger un flux entrant sur mon port standard (80) vers une
application (sur la même machine ou non) en faisant de la réécriture d'URL.
L'avantage c'est qu'avec le mod_proxy, point besoin d'utiliser RewriteEngine & Co !
Le module proxy est capable de se charger d'une bonne partie de la réécriture et
notamment de cacher le numéro du port (pratique pour les applications tournant sur
tomcat).

1 of 7 10/3/23, 16:56
Proxy : Créer un proxy avec Apache - Deimos.fr / Bloc... https://wiki.deimos.fr/Proxy_:_Cr%C3%A9er_un_proxy...

2 Installation
aptitude

aptitude install apache2 apache2-utils apache2.2-common libapache2-mod-proxy-html

Then activate modules :

a2enmod

a2enmod proxy_connect
a2enmod proxy_http
a2enmod proxy_html

And restart Apache.

3 Configuration
3.1 Scénario 1
3.1.1 Debian

Tout d'abord nous allons configurer mod proxy en question. Voici mon fichier
"/etc/apache2/mods-available/proxy.conf" détaillé :

/etc/apache2/mods-available/proxy.conf

2 of 7 10/3/23, 16:56
Proxy : Créer un proxy avec Apache - Deimos.fr / Bloc... https://wiki.deimos.fr/Proxy_:_Cr%C3%A9er_un_proxy...

<IfModule mod_proxy.c>
#On autorise les requêtes de type proxy
ProxyRequests On
#On autorise le serveur à répondre à ces requêtes
ProxyVia On
#On autorise les requêtes proxy en destination du port 22, 80 et 443
AllowCONNECT 22
AllowCONNECT 80
AllowCONNECT 443
#On autorise le proxy à destination de n'importe quelle adresse
# (Pour restreindre qu'a une seule adresse il faut mettre quelque chose comme
#"<Proxy google.fr>" ou encore "<Proxy 88.191.31.151>")
<Proxy *>
# Nous allons restreindre l'accès par mot de passe
AllowOverride AuthConfig
AuthName "Proxy Auth"
AuthType Basic
# Le fichier htpasswd à utiliser
AuthUserFile /etc/apache2/.htpasswd-proxy
# seuls les utilisateurs authentifiés ont accès
Require valid-user
AddDefaultCharset off
Order deny,allow
Allow from all
</Proxy>
</IfModule>

Nous créons ensuite le fichier "htpasswd" (e.g. pour l'utilisateur toto)

htaccess

htaccess -c /etc/apache2/.htpasswd-proxy toto

Il ne reste plus qu'a charger les modules

cd /etc/apache2/mods-enabled/
ln -s ../mods-available/proxy.load .
ln -s ../mods-available/proxy.conf .
ln -s ../mods-available/proxy_connect.load .
ln -s ../mods-available/proxy_http.load .

Puis redémarrer apache2

/etc/init.d/apache2 restart

3.1.2 OpenBSD

Sous OpenBSD, pas d'installation particulière à faire puisqu'Apache est installé de

3 of 7 10/3/23, 16:56
Proxy : Créer un proxy avec Apache - Deimos.fr / Bloc... https://wiki.deimos.fr/Proxy_:_Cr%C3%A9er_un_proxy...

base. Il suffit juste d'ajouter ceci dans la conf :

/var/www/conf/httpd.conf

<VirtualHost _default_:3128>

# General setup for the virtual host


DocumentRoot /var/www/htdocs
ServerName mufasa.deimos.fr
ServerAdmin deimos@deimos.fr
ErrorLog logs/error_log
TransferLog logs/access_log

# SSL Engine Switch:


# Enable/Disable SSL for this virtual host.
SSLEngine off

<IfModule mod_proxy.c>
ProxyRequests On
ProxyVia On
<Directory proxy:*>
Order deny,allow
Allow from all
</Directory>
</IfModule>

</VirtualHost>

Puis redémarrez le service :

apachectl stop
apachectl start

Là clairement, tout le monde y a accès, veillez à rajouter un peu de sécurité tout de


même.

Personnellement, mon Apache est bindé sur un port que seul le réseau local et les
personnes connectées en VPN peuvent accéder.

3.1.3 PuTTY : Tunneling SSH

Bon c'est super on a un beau proxy mais comment en tirer pleinement profit.
Nous allons utiliser PuTTy afin de nous simplifier la vie, car c'est un des rare client
SSH multiplateforme qui offre toutes les fonctions dont nous avons besoin :
Tunneling + Proxy HTTP

Le principe est le suivant :

1. Etablir une connexion SSH sur le port 22


2. Passer par se serveur proxy qui autorise la connexion sur le port 22
3. Grace a SSH nous établissons des tunnels cryptés locaux qui redirigent vers
différents services
4. Nous accédons aux services sur le localhost grâce aux tunnels

4 of 7 10/3/23, 16:56
Proxy : Créer un proxy avec Apache - Deimos.fr / Bloc... https://wiki.deimos.fr/Proxy_:_Cr%C3%A9er_un_proxy...

Voici comment je configure mon client putty pour pouvoir jouer a World Of Warcraft.

{Menu "Session"}

▪ Host Name : <serveur SSH de destination>


▪ Port : 22

{Menu "Proxy"}

▪ Proxy type : HTTP


▪ Proxy hostname : <adresse du serveur proxy>
▪ Port : 80
▪ Username : <nom d'utilisateur créé dans le htpasswd>
▪ Password : <password de ce user>

{Menu "SSH / Tunnels"}

▪ Local Ports accept connections from other hosts : ON


▪ Source port : <port local a ouvrir> (ex. 3724)
▪ Destination : <ip : port du service que l'on veut forwarder> (ex.
eu.logon.worldofwarcraft.com:3724)

cliquer sur "add" pour en ajouter d'autres ex. 5900:vnc ; 143:imap ; 25:smtp (pour
WoW, il ne faut pas oublier celui ci)

Source port : "6112"


Destination : "80.239.185.41:6112"

That's good ! ca veut dire "c'est bon" en anglais ... pour World Of Warcraft, il ne reste
plus qu'a modifier le fichier "realmlist.wtf" et mettre

set realmlist localhost

Comme dirait une célèbre philosophe : "Et c'est parti pour le show !"

3.2 Scénario 2
Je vais prendre le cas ici un outil "myapp" tournant sur Tomcat, port 8080. J'ai donc
besoin dans un premier temps de dire à Tomcat qu'il va se faire "proxifier", puis je
vais avoir a mettre en place la partie proxy sur Apache.

3.2.1 Tomcat

Sur la partie serveur, il va falloir aller modifier le connecteur de l'application en


question pour lui ajouter les paramètres proxy :

/etc/tomcat6/server.xml

5 of 7 10/3/23, 16:56
Proxy : Créer un proxy avec Apache - Deimos.fr / Bloc... https://wiki.deimos.fr/Proxy_:_Cr%C3%A9er_un_proxy...

<Connector port="8080" protocol="HTTP/1.1"


connectionTimeout="20000"
URIEncoding="UTF-8"
redirectPort="8443"
proxyName="myapp.mycompany.lan" proxyPort="80"/>

On indique à Tomcat que notre site sera accessible depuis myapp.mycompany.lan sur
le port 80.
Vous pouvez redémarrez votre tomcat maintenant.

3.2.2 Apache

On va activer le module proxy :

/etc/apache2/mods-enabled/proxy.conf

<IfModule mod_proxy.c>

# If you want to use apache2 as a forward proxy, uncomment the


# 'ProxyRequests On' line and the <Proxy *> block below.
# WARNING: Be careful to restrict access inside the <Proxy *> block.
# Open proxy servers are dangerous both to your network and to the
# Internet at large.
#
# If you only want to use apache2 as a reverse proxy/gateway in
# front of some web application server, you DON'T need
# 'ProxyRequests On'.

ProxyRequests Off
ProxyPreserveHost On
<Proxy *>
AddDefaultCharset off
Order deny,allow
Allow from all
#Allow from .example.com
</Proxy>

# Enable/disable the handling of HTTP/1.1 "Via:" headers.


# ("Full" adds the server version; "Block" removes all outgoing Via: headers)
# Set to one of: Off | On | Full | Block
ProxyVia On

</IfModule>

Puis le configurer pour notre site en question. Nous utiliserons ici un VirtualHost
pour notre applicatif :

/etc/apache2/sites-enabled/my_app

<VirtualHost myapp.mycompany.lan:80>
ServerName http://myapp.mycompany.lan
ServerAlias myapp.mycompany.lan
ServerAdmin deimos@deimos.fr
DocumentRoot /mnt/myapp/datas/www
ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
LogLevel warn
ServerSignature On

ProxyPass / http://localhost:8080/

6 of 7 10/3/23, 16:56
Proxy : Créer un proxy avec Apache - Deimos.fr / Bloc... https://wiki.deimos.fr/Proxy_:_Cr%C3%A9er_un_proxy...

ProxyPassReverse / http://localhost:8080/

<Location />
Order allow,deny
Allow from all
</Location>
</VirtualHost>

La partie ProxyPass permet de dire ou doit rediriger le proxy. Ici le proxy apache et
tomcat tournent sur la même machine, c'est pourquoi les URL pointent sur le
localhost.

Il ne reste plus qu'a redémarrer Apache et votre service initialement disponible à


cette adresse :
http://myapp.mycompany.lan:8080/
sera disponible à :
http://myapp.mycompany.lan/

4 Ressources
http://httpd.apache.org/docs/2.0/mod/mod_proxy.html

Retrieved from "https://wiki.deimos.fr


/index.php?title=Proxy_:_Créer_un_proxy_avec_Apache&oldid=10666"

▪ This page was last modified on 29 March 2012, at 07:16.


▪ Content is available under Attribution - Pas d’Utilisation Commerciale - Partage
dans les Mêmes Conditions 3.0 non transposé unless otherwise noted.

7 of 7 10/3/23, 16:56

Vous aimerez peut-être aussi