UPJV - IUT Amiens
LP RGI
Système

TD - Le Proxy

C. Drocourt
cyril.drocourt AT
u-picardie DOT fr

Points de cours abordés  :

– Principe,
– Avantages/Inconvénients,
– Fonctionnement,
– Les types HTTP : HTTP Proxy, SOCKS, Winsock, ...,
– Reverse Proxy,
– Les acteurs,

Exercice 1 : Proxy client HTTP - SQUID

1 - Installez SQUID,
2 - Configurez SQUID pour autoriser toutes les IPs du réseau local,
3 - Démarrez le service et vérifiez en paramétrant le navigateur internet pour qu'il utilise le Proxy,
4 - Tentez de tapez le nom DNS d'un site pour vérifier que Squid vous retourne une erreur,
5 - Ajoutez des règles de filtrage pour interdire le site "facebook",
6 - Testez cette règle à partir de votre machine,
7 - Nous allons maintenant de configurer SQUID en tant que "Transparent Proxy", pour cela il faut activer les options suivantes :
http_port 3128 transparent
8 - Vous allez ensuite ajouter la règle iptables suivante : (pensez ensuite à sauvegarder les règles)
iptables -t nat -A PREROUTING -i virbr0 -p tcp --dport 80 -j REDIRECT --to-port 3128
9 - Sous Ubuntu, a l'aide d'un CURL essayer une requête sur un site distant,

Exercice 2 : Proxy Serveur HTTP - Apache et Mod_Proxy

En vous inspirant de l'extrait suivant, vous allez créer un VirtualHost appelé win.lprgiXX.u13.org qui fera une requête vers le serveur HTTP de votre machine virtuelle Ubuntu.
<VirtualHost _default_:80>
    ServerName appserver.societe.com
    ServerAlias appserver.societe.com
    <IfModule mod_proxy.c>
        ProxyRequests Off
        ProxyPass / http://192.168.0.10/
        ProxyPassReverse / http://192.168.0.10/
    </IfModule>
</VirtualHost>

Exercice 3 : Proxy Serveur HTTP - Apache et Mod_Proxy

Il est heureusement possible de filtrer les requêtes traversant le proxy HTTP en utilisant encore les règles de réécritures. En vous inspirant des règles du cours, vous allez filtrer les requètes, et interdire l'accès à tous les fichiers ".txt".
Pour vérifier, vous aurez créer un fichier à la racine de votre site web sous Ubuntu nommé "test.txt".

Exercice 4 : Traitement du flux http

1 – Sur votre VM Ubuntu, vous allez créer la page suivante "index.html" :
<html><body>
<img src="http://192.168.122.10/image.jpg"><br />
Bonjour
</body></html>
2 – Vous allez placer une image dans le "DocumentRoot" nommée image.jpg,
3 – Tentez d'accéder à votre site depuis le nom DNS vm.XX.lprgi.u13.org, alors ?
4 – Tentez d'accéder à votre site depuis un autre ordinateur, alors ?
5 – Installez le paquet "mod_proxy_html",
6 – A l'aide de la directive "ProxyHTMLURLMap" vous allez régler le problème dans le fichier de configuration du VirtualHost associé, (il faudra d'abord positionner la Directive ProxyHTMLEnable On)

Il sera peut être nécessaire de faire les modifications suivantes, à savoir modifier le fichier /etc/httpd/conf.modules.d/00-proxyhtml.conf :
# This file configures mod_proxy_html and mod_xml2enc:
LoadModule xml2enc_module modules/mod_xml2enc.so
LoadModule proxy_html_module modules/mod_proxy_html.so

# Here's the declaration for W3C HTML 4.01 and XHTML 1.0

ProxyHTMLLinks  a       href
ProxyHTMLLinks  area        href
ProxyHTMLLinks  link        href
ProxyHTMLLinks  img     src longdesc usemap
ProxyHTMLLinks  object      classid codebase data usemap
ProxyHTMLLinks  q       cite
ProxyHTMLLinks  blockquote  cite
ProxyHTMLLinks  ins     cite
ProxyHTMLLinks  del     cite
ProxyHTMLLinks  form        action
ProxyHTMLLinks  input       src usemap
ProxyHTMLLinks  head        profile
ProxyHTMLLinks  base        href
ProxyHTMLLinks  script      src for

# To support scripting events (with ProxyHTMLExtended On),
# you'll need to declare them too.

ProxyHTMLEvents onclick ondblclick onmousedown onmouseup \
        onmouseover onmousemove onmouseout onkeypress \
        onkeydown onkeyup onfocus onblur onload \
        onunload onsubmit onreset onselect onchange

        RequestHeader unset Accept-Encoding
        ProxyHTMLCharsetOut *