Ce tutorial vous expliquera comment mettre en oeuvre derrière Apache 2 le script CGI Proxy qui peut vous servir aussi bien à surfer anonyme (désactivation de scripts pendant la navigation), à accéder aux serveurs web de machine situées dans un réseau local, à contrer la censure …
Installer simplement CGI Proxy (sans SSL)
Tout d’abord, vous devez avoir les logiciels suivants installés sur votre machine:
-un serveur sous Linux(çà devrait marcher sur tous les OS…)
-Apache2 (un autre serveur web devrait faire l’affaire mais je n’ai pas testé…)
-Perl
Des commandes comme :
#apt-get install perl apache2
devrait plus ou moins régler les choses sur Debian et les Debian-like…
Pour la suite de l’article, je suppose que vous utilisez une distribution Debian Sarge.
Dirigez vous vers /etc/apache2/sites-available
#cd /etc/apache2/sites-available
Créez un nouveau site web, disons que vous avez le nom de domaine test.fr, créez ainsi le sous domaine cgiproxy.test.fr :
#vim cgiproxy.test.fr
et insérez les lignes suivantes :
ServerAdmin admin@test.fr
DocumentRoot /var/www/cgiproxy.test.fr
ServerName cgiproxy.test.fr
ErrorLog /var/log/apache2/cgiproxy.test.fr.error.log
CustomLog /var/log/apache2/cgiproxy.test.fr.access.log common
AddHandler cgi-script .cgi
<Directory /var/www/cgiproxy.test.fr>
AllowOverride FileInfo AuthConfig Limit
Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec
Order allow,deny
Allow from all
Options +ExecCGI
</Directory>
</VirtualHost>
Pour que ce nouveau site soit fonctionne, n’oubliez de faire un lien symbolique de cette configuration dans /etc/apache2/sites-enabled :
#cd /etc/apache2/sites-enabled
#ln -s /etc/apache2/sites-available/cgiproxy.test.fr
et de bien sûr créer le répertoire désigné dans votre configuration:
#mkdir /var/www/cgiproxy.test.fr
On redémarre Apache2 pour que la configuration soit prise en compte :
#/etc/init.d/apache2 restart
Petite note pour ceux qui n’ont pas de nom de domaine ou ne sachant pas comment créer un site sous Apache 2 :
Vous avez sans doute dans /etc/apache2/sites-available un site (fichier de configuration) qui s’appelle 000-default, qui pointe vers des fichiers dans /var/www : vous pouvez aussi bien l’utiliser en adaptant cet article (chemins et sites)
Rendez vous dans /var/www/cgiproxy.test.fr et téléchargez le script CGI CGI Proxy :
#wget http://www.jmarshall.com/tools/cgiproxy/releases/cgiproxy.2.1beta15.tar.gz
Pour avoir la dernière version, veuillez consulter le site officiel CGI Proxy
On décompresse l’archive ainsi récupérée :
#tar xvzf cgiproxy.2.1beta15.tar.gz
Et si tout s’est bien passé, en dirigeant son navigateur vers http://cgiproxy.test.fr/nph-proxy.cgi on doit avoir le formulaire de saisie d’URL de CGI Proxy !
Si toutefois cela ne fonctionne pas, n’hésitez pas à laisser un commentaire à cet article, mais commencez par vérifier :
-que vos chemins sont bons
-que vous n’avez pas renommé nph-proxy.cgi en quelquechose.cgi (il faut impérativement que le nom du fichier commence par nph-)
-que le script est exécutable :
#chmod +x nph-proxy.cgi
Installer CGI Proxy en mod ssl :
Un peu plus difficile cette fois-ci, cette partie de l’article s’adresse aux personnes ayant déjà mis en place des sites Apache2 en mod_ssl.(un jour j’écrirai un article pour l’expliquer !).
Pour faire simple, et rapide, inspirez vous de mon fichier de configuration :
ServerAdmin admin@cgiproxy.test.fr
DocumentRoot /var/www/cgiproxy.test.fr
ServerName cgiproxy.test.fr
ErrorLog /var/log/apache2/cgiproxy.test.fr.error.log
CustomLog /var/log/apache2/cgiproxy.test.fr.access.log common
AddHandler cgi-script .cgi
SSLEngine On
SSLCertificateFile /etc/apache2/ssl/apache.pem
SSLProxyEngine On
<Directory /var/www/cgiproxy.test.fr>
AllowOverride FileInfo AuthConfig Limit
Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec
DirectoryIndex nph-protected.cgi
AuthUserFile /var/www/cgiproxy.test.fr/.htpasswd
AuthName « Welcome to Protected Site »
AuthType Basic
Require valid-user
Options +ExecCGI
</Directory>
</VirtualHost>
Un peu d’explication !
<VirtualHost *:443>
vous permet de déclarer un serveur virtuel écoutant sur le port 443 (https par défaut)
AddHandler cgi-script .cgi
permet à Apache 2 de lancer le moteur d’interpréteur de CGI lorsque les fichiers demandés terminent par .cgi
DirectoryIndex nph-protected.cgi
indique à apache que le fichier index par défaut est : nph-protected.cgi (situé dans /var/www/cgiproxy.test.fr) lorsque qu’aucun nom de fichier est spécifié.
AuthUserFile
permet de mettre en place une sécuristation HTTP Basic (login/mot de passe demandé pour accéder à la ressource)
Liens
Le site de documentation d’Apache2
Le site officiel de CGI Proxy
un IMMENSE merci pour des explications aussi claires et efficaces.
Bonne continuation
Salut!
Merci pour ce tuto
J’ai un petit soucis; j’ai bien suivi la procédure mais lorsque je veux lancer le script dans un navigateur ce dernier lance le téléchargement du script et ne l’exécute pas :s ! J’ai pourtant bien fait le chmod…
Auriez-vous une idée sur ce probleme?
bonjour Cedwic,
ce problème me dit quelque chose : Apache 2 ne reconnait pas tes scripts en tant que tel.
tu as bien fait de vérifier qu’il était bien executable, ceci dit, es tu sur que les .cgi sont bien reconnus par Apache 2 en tant que script ?
çà doit se jouer au
AddHandler cgi-script .cgi
, bref il faut qu’Apache 2 sache que c’est un script (par défault il traite le fichier comme une page à télécharger)bon courage,
Merci pour ta réponse
J’ai pourtant bien rajouter la ligne « AddHandler cgi-script .cgi .pl » sans succès..
J’ai testé un « hello world » avec l’extension .pl qui lui s’exécute sans problème.
J’arrive pas à voir d’ou vient le probleme…
j’ai le souvenir d’avoir eu un problème du genre…
as tu renommé le script ? si oui, renomme le avec le nom original et l’extension originale…
bon courage
En fait cela venait du fait que je prenait la version 2.0.1 (stable) de cgiproxy.
Il faut prendre la dernière version, la 2.1 beta15
Merci pour ce tuto!
slut j hbite a tunis j pas recu a trouve une solution pour accede a les site ferme
Question à 2 francs (où euros) n’est il pas possible de réaliser la même chose directement sur son espace perso freebox ce qui permet de ne pas utiliser de server(on passe par le server free)???
Salut,
encore faudrait il que l’espace perso de free te laisse exécuter des scripts perl CGI; ou alors essaie de trouver une solution de proxy écrite en PHP, mais autant que je me souvienne, beaucoup de choses en PHP sont limitées par Free… la liberté, c’est d’administrer son dédié !