On Tuesday 27 September 2005 00:03, pyfux a écrit:
> Désolé, je ne suis pas entièrement satisfait de votre réponse. En effet,
>    la process 1665 lancé par root semble etre le seul process en écoute
> sur le port 80 !
>
> Cela signifie que le premier client se vera connecté avec le process
> apache lancé par root ? Je vous signale cela mais je vais faire des
> tests de connexions pour éclaircir ce mystère !
>
Hum, je crois ne pas avoir été clair dans mon précédent mail...

Le problème _n'est pas_ d'écouter un port en tant que root ! le réél problème 
de sécurité serait de lancer un script (ou n'importe quel exécutable) en tant 
que root : dans ce cas si le script a une faille de sécurité, il serait 
possible d'être root sur la machine.

Pour simplifier, le problème n'est pas la connexion mais l'excecution en tant 
que root.

Un petit exemple :

Voila ce que j'ai avec mon serveur web (thttpd, on n'est pas vendredi hein ;).
Sache que cela revient au même avec Apache , excepté que tu as 5 PID à 
www-data:

$ sudo netstat -lpe
[...]
tcp6       0      0 *:www                   *:*                     LISTEN     
root       8777       5836/thttpd
[...]

La socket a été ouverte par root mais comme tu le vois ci dessous, le 
processus appartient à www-data :

www-data  5836  0.0  0.1   2116   992 ?        Ss   08:21   
0:00 /usr/local/sbin/thttpd -C /etc/thttpd/thttpd.conf -i /var/run/thttpd.pid

Maintenant on imagine un client qui se connecte et qui lance un script CGI (
ici une boucle infinie pour que je puisse récupérer les info via ps aux)
Sous quel utilisateur va t-il être lancé... :

www-data  8413 88.7  0.3   4212  2668 ?        RN   11:50   0:03 /usr/bin/perl 
test.cgi

Par conséquent il n'y a pas là de probléme de sécurité majeur, dans la mesure 
ou www-data a des droits trés limités, contrairement à root ou ton 
utilisateur habituel.

J'espère que cette fois ci j'ai réussi à me faire comprendre :p

> Merci tout de même,
> PyFux
>
> ps aux | grep apache
> root      1665  0.0  1.1  10660  4328 ?        S    Sep26   0:00
> /usr/sbin/apache
> pyfux     1666  0.0  1.1  10792  4520 ?        S    Sep26   0:00
> /usr/sbin/apache
> pyfux     2028  0.0  1.1  10788  4516 ?        S    Sep26   0:00
> /usr/sbin/apache
> pyfux     2029  0.0  1.1  10792  4532 ?        S    Sep26   0:00
> /usr/sbin/apache
> pyfux     2030  0.0  1.1  10784  4508 ?        S    Sep26   0:00
> /usr/sbin/apache
> root      2934  0.0  0.1   1964   752 pts/0    R+   00:00   0:00 grep
> apache
>
> netstat -lnp --inet
> Connexions Internet actives (seulement serveurs)
> Proto Recv-Q Send-Q Adresse locale          Adresse distante        Etat
>         PID/Program name
> tcp        0      0 127.0.0.1:678           0.0.0.0:*
> LISTEN     1350/famd
> tcp        0      0 127.0.0.1:3306          0.0.0.0:*
> LISTEN     1226/mysqld
> tcp        0      0 0.0.0.0:111             0.0.0.0:*
> LISTEN     1007/portmap
> tcp        0      0 0.0.0.0:80              0.0.0.0:*
> LISTEN     1665/apache
> tcp        0      0 0.0.0.0:10000           0.0.0.0:*
> LISTEN     1456/perl
> tcp        0      0 255.255.255.255:25      0.0.0.0:*
> LISTEN     1442/exim4
> udp        0      0 0.0.0.0:10000           0.0.0.0:*
>         1456/perl
> udp        0      0 0.0.0.0:111             0.0.0.0:*
>         1007/portmap
>
> François Wendling wrote:
> > On Monday 26 September 2005 15:49, pyfux wrote:
> >>Bonjour la liste !
> >>
> >>voilà, les process Apache sur ma Debian/Sarge sont lancé avec différents
> >>utilisateurs!
> >>
> >>ps aux | grep apache
> >>
> >>root      1123  0.0  8.1 11004 4432 ?        S    15:32   0:00
> >>/usr/sbin/apache
> >>www-data  1136  0.0  8.1 11004 4440 ?        S    15:32   0:00
> >>/usr/sbin/apache
> >>www-data  1137  0.0  8.1 11004 4440 ?        S    15:32   0:00
> >>/usr/sbin/apache
> >>www-data  1138  0.0  8.1 11004 4440 ?        S    15:32   0:00
> >>/usr/sbin/apache
> >>www-data  1139  0.0  8.1 11004 4440 ?        S    15:32   0:00
> >>/usr/sbin/apache
> >>www-data  1140  0.0  8.1 11004 4440 ?        S    15:32   0:00
> >>/usr/sbin/apache
> >>
> >>Le process 4432 est lancé par root! C'est pas un problème de sécurité?
> >
> > Je ne pense pas, dans la mesure ou ton processus lancé par root ne doit
> > pas être utilisé par les clients (tu dois avoir ta directive StartServers
> > réglée à 5 et MinSpareServers aussi) : seuls les 5 pids fils sont
> > utilisés.
> >
> >>comment lancer Apache uniquement avec l'utilisateur www-data ?
> >
> > Ce n'est pas possible du moins pas facilement ;) : les 1024 premiers
> > ports doivent être _ouverts_ par root mais par contre ils peuvent
> > utilisés par d'autres utilisateurs (c'est le cas des serveurs IRC,FTP
> > etc.).
> >
> >>Merci pour vos lumières!
> >>PyFux

-- 
Site : http://frwendling.free.fr
GPG : gpg --keyserver www.keyserver.net --recv-keys 75A576E5

Attachment: pgp6lzv4ZaSlx.pgp
Description: PGP signature

Répondre à