OVH Cloud OVH Cloud

Port 80

4 réponses
Avatar
Python-Fr
Bonjour,
je d=E9veloppe un serveur web, portable, et j'aimerais bien pouvoir le
"binder" au port 80 d'un pc sous Linux, sans pour autant le lancer avec
des privil=E8ges administrateur.
Je vois diff=E9rentes solutions =E0 ce probl=E8me, mais j'igore comment
les mettre en place...
- Soit un syst=E8me qui donne au script la permission de se connecter au
port 80.
- Soit une sorte de "proxy" s=E9curis=E9, lanc=E9 sous root sur le port 80
et qui retransmettrait tout =E0 mon serveur, sur un autre port.
- Soit utiliser mod_python pour passer par Apache (d=E9j=E0 en place)

Pouvez-vous m'aider =E0 mettre en oeuvre l'une de ces solutions, ou une
autre que je n'aurais pas envisag=E9e ?

Merci d'avance,

Hex

4 réponses

Avatar
Vincent Bernat
OoO En cette matinée pluvieuse du dimanche 06 novembre 2005, vers
10:17, "Python-Fr" disait:

- Soit une sorte de "proxy" sécurisé, lancé sous root sur le port 80
et qui retransmettrait tout à mon serveur, sur un autre port.


Cela se fait facilement avec iptables :

iptables -t nat -A PREROUTING -p tcp --destination-port 80
--destination ton.ip
-j REDIRECT --to-port 8080

Et une deuxième règle de ce genre avec "--destination 127.0.0.1".
--
I WILL NOT CREATE ART FROM DUNG
I WILL NOT CREATE ART FROM DUNG
I WILL NOT CREATE ART FROM DUNG
-+- Bart Simpson on chalkboard in episode BABF04

Avatar
Python-Fr
Vincent Bernat wrote:
OoO En cette matinée pluvieuse du dimanche 06 novembre 2005, vers
10:17, "Python-Fr" disait:

- Soit une sorte de "proxy" sécurisé, lancé sous root sur le port 80
et qui retransmettrait tout à mon serveur, sur un autre port.


Cela se fait facilement avec iptables :
Je ne connaissait pas cet outil qui semble plutôt intéressant...

Merci

iptables -t nat -A PREROUTING -p tcp --destination-port 80
--destination ton.ip
-j REDIRECT --to-port 8080
Par contre, j'ai une erreur et, ne connaissant pas l'outil, j'ignore

comment la résoudre:
# /sbin/iptables -t nat -A PREROUTING -p tcp --destination-port 80
--destination 62.193.217.125 -j REDIRECT --to-port 8080
iptables v1.2.9: can't initialize iptables table `nat': Table does not
exist (do you need to insmod?)
Perhaps iptables or your kernel needs to be upgraded.

Et une deuxième règle de ce genre avec "--destination 127.0.0.1".



Avatar
Hervé Cauwelier
- Soit un système qui donne au script la permission de se connecter au
port 80.


Ça s'appelle sudo sur Linux et FreeBSD. :-)

Par contre, il faut absolument après faire comme Apache ou Zope, que le
programme change le propriétaire du processus vers un sans droit
(www-data ou zope dans leur cas, ton compte pendant tes tests). Ça doit
être dans le module os ou plus probablement sys.

Mais de toute façon, pendant que tu développes, utilise un port
non-privilégié. Le port souvent utilisé est 8080.

- Soit une sorte de "proxy" sécurisé, lancé sous root sur le port 80
et qui retransmettrait tout à mon serveur, sur un autre port.


Bonne idée, c'est ce qu'on fait avec Zope derrière Apache par exemple.
Il y a beaucoup d'exemples.

- Soit utiliser mod_python pour passer par Apache (déjà en place)


Un bon exercice mais ton serveur web devient pour le coup... une
application web.

--
Hervé Cauwelier
http://www.oursours.net/

Avatar
Pierre Quentel
Bonjour,
je développe un serveur web, portable, et j'aimerais bien pouvoir le
"binder" au port 80 d'un pc sous Linux, sans pour autant le lancer avec
des privilèges administrateur.
Je vois différentes solutions à ce problème, mais j'igore comment
les mettre en place...
- Soit un système qui donne au script la permission de se connecter au
port 80.
- Soit une sorte de "proxy" sécurisé, lancé sous root sur le port 80
et qui retransmettrait tout à mon serveur, sur un autre port.
- Soit utiliser mod_python pour passer par Apache (déjà en place)

Pouvez-vous m'aider à mettre en oeuvre l'une de ces solutions, ou une
autre que je n'aurais pas envisagée ?

Merci d'avance,

Hex



Pour configurer Apache en mode proxy et tout renvoyer vers un serveur
qui tourne sur le port 8080 tu peux modifier le fichier httpd.conf de
cette façon :

- dans la section Dynamic Shared Object (DSO), décommenter les lignes

LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_http_module modules/mod_proxy_http.so

- ailleurs dans la section Main server configuration, ajouter les lignes
suivantes :

ProxyRequests On
ProxyPass / http://localhost:8080/
ProxyPassReverse / http://localhost:8080/

et définir les autorisations:

<Proxy *>
Order allow,deny
Deny from none
Allow from all
</Proxy>

Voilà, ça devrait suffire

Pierre