Utilisateur pour faire tourner Apache

Le
pyfux
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é?
comment lancer Apache uniquement avec l'utilisateur www-data ?

Merci pour vos lumières!
PyFux


--
Pensez à lire la FAQ de la liste avant de poser une question :
http://wiki.debian.net/?DebianFrench

Pensez à rajouter le mot ``spam'' dans vos champs "From" et "Reply-To:"

To UNSUBSCRIBE, email to debian-user-french-REQUEST@lists.debian.org
with a subject of "unsubscribe". Trouble? Contact listmaster@lists.debian.org
Vos réponses
Trier par : date / pertinence
François Wendling
Le #8864491
--nextPart1808100.zfdpSqTziE
Content-Type: text/plain;
charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable
Content-Disposition: inline

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écuri té?


Je ne pense pas, dans la mesure ou ton processus lancé par root ne doit p as
ê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 pa r
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

--nextPart1808100.zfdpSqTziE
Content-Type: application/pgp-signature

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.2.5 (GNU/Linux)

iD8DBQBDOBeUc4e3qnWlduURAvZJAJ9kNnCSzCymV5SmrpDmWoxA2c1f/wCfZqyr
dtELNi4DU6ayK9bsb1SucOw =LDbc
-----END PGP SIGNATURE-----

--nextPart1808100.zfdpSqTziE--


--
Pensez à lire la FAQ de la liste avant de poser une question :
http://wiki.debian.net/?DebianFrench

Pensez à rajouter le mot ``spam'' dans vos champs "From" et "Reply-To:"

To UNSUBSCRIBE, email to
with a subject of "unsubscribe". Trouble? Contact
François Wendling
Le #8864501
--nextPart1808100.zfdpSqTziE
Content-Type: text/plain;
charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable
Content-Disposition: inline

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écuri té?


Je ne pense pas, dans la mesure ou ton processus lancé par root ne doit p as
ê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 pa r
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

--nextPart1808100.zfdpSqTziE
Content-Type: application/pgp-signature

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.2.5 (GNU/Linux)

iD8DBQBDOBeUc4e3qnWlduURAvZJAJ9kNnCSzCymV5SmrpDmWoxA2c1f/wCfZqyr
dtELNi4DU6ayK9bsb1SucOw =LDbc
-----END PGP SIGNATURE-----

--nextPart1808100.zfdpSqTziE--


--
Pensez à lire la FAQ de la liste avant de poser une question :
http://wiki.debian.net/?DebianFrench

Pensez à rajouter le mot ``spam'' dans vos champs "From" et "Reply-To:"

To UNSUBSCRIBE, email to
with a subject of "unsubscribe". Trouble? Contact
pyfux
Le #8864181
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 !

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










--
Pensez à lire la FAQ de la liste avant de poser une question :
http://wiki.debian.net/?DebianFrench

Pensez à rajouter le mot ``spam'' dans vos champs "From" et "Reply-To:"

To UNSUBSCRIBE, email to
with a subject of "unsubscribe". Trouble? Contact
François Wendling
Le #8863811
--nextPart4413157.AdX2enQXAY
Content-Type: text/plain;
charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable
Content-Disposition: inline

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 écou te
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.p id

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/p erl
test.cgi

Par conséquent il n'y a pas là de probléme de sécurité majeur, da ns 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écu rité?
>
> Je ne pense pas, dans la mesure ou ton processus lancé par root ne do it
> pas être utilisé par les clients (tu dois avoir ta directive StartS ervers
> 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

--nextPart4413157.AdX2enQXAY
Content-Type: application/pgp-signature

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.2.5 (GNU/Linux)

iD8DBQBDOSBHc4e3qnWlduURAlK3AJ9/ZXpYtEBJuhPXUQGTOFyXTtsxjACePbXv
2XDPpFs5wuAjUnQ5DTb0tss =Tqzc
-----END PGP SIGNATURE-----

--nextPart4413157.AdX2enQXAY--


--
Pensez à lire la FAQ de la liste avant de poser une question :
http://wiki.debian.net/?DebianFrench

Pensez à rajouter le mot ``spam'' dans vos champs "From" et "Reply-To:"

To UNSUBSCRIBE, email to
with a subject of "unsubscribe". Trouble? Contact
pyfux
Le #8863671
> 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




Dans votre exemple, le process thhtpd de PID 5836 est effectivement
lancé par www-data. Donc tout les scripts php/perl et autres cgi auront
les droits de l'utilisateur www-data.
Parfait. Configuration ok.

Mais dans mon exemple, sur mon pc, le _process apache en écoute_ sur le
port 80 est un process lancé par root !

ps aux | grep apache
root 1665 0.0 1.1 10660 4328 ? S Sep26 0:00
/usr/sbin/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 0.0.0.0:80 0.0.0.0:* LISTEN 1665/apache

Mais après étude avec la commande:
watch 'echo "connexion TCP/IP:"; netstat -npev --inet; echo "process:";
ps aux | grep apache; echo "Programmes en écoute:"; netstat -lpe --inet '
Il semble que les process qui répondent aux commandes HTTP GET soit ceux
lancé par www-data. Donc, y a pas de souci.

Je "comprends" que le process 1665/apache en écoute sur le port 80
redirige la demande sur un processus lancé par www-data. Es-ce juste?

PyFux, l'empêcheur de tourner sous root


--
Pensez à lire la FAQ de la liste avant de poser une question :
http://wiki.debian.net/?DebianFrench

Pensez à rajouter le mot ``spam'' dans vos champs "From" et "Reply-To:"

To UNSUBSCRIBE, email to
with a subject of "unsubscribe". Trouble? Contact
Baptiste Mathus
Le #8863661
Selon pyfux

Je "comprends" que le process 1665/apache en écoute sur le port 80
redirige la demande sur un processus lancé par www-data. Es-ce juste?

PyFux, l'empêcheur de tourner sous root


C'est ça. Et redisons le, c'est simplement parce qu'il est strictement
impossible de faire autrement puisqu'aucun autre utilisateur que root n'aurait
le droit de se binder sur un port inférieur à 1024.

Donc, apache se lance root, se binde au port 80 et se forke aussitôt pour
répondre aux requêtes (et pour chaque requête qui arrive, c'est un fork ou un
thread qui est créé, tiens pendant que j'y pense ?).

Comme les processus enfants d'un processus héritent des descripteurs de
fichiers, ils peuvent écrire dedans.

Je ne sais pas précisément comme fonctionne apache, mais la description
ci-dessus ne doit pas être très éloignée du fonctionnement réel.

@++


--
Baptiste <Batmat> Mathus
Baptiste at Mathus point org
http://batmat.net
---------
You want to use GNU/Linux or Windows ?
You want to spend time or money ?


--
Pensez à lire la FAQ de la liste avant de poser une question :
http://wiki.debian.net/?DebianFrench

Pensez à rajouter le mot ``spam'' dans vos champs "From" et "Reply-To:"

To UNSUBSCRIBE, email to
with a subject of "unsubscribe". Trouble? Contact
Frédéric Bothamy
Le #8863601
* Baptiste Mathus
Selon pyfux >
> Je "comprends" que le process 1665/apache en écoute sur le port 80
> redirige la demande sur un processus lancé par www-data. Es-ce juste?
>
> PyFux, l'empêcheur de tourner sous root
C'est ça. Et redisons le, c'est simplement parce qu'il est strictement
impossible de faire autrement puisqu'aucun autre utilisateur que root n'aurait
le droit de se binder sur un port inférieur à 1024.

Donc, apache se lance root, se binde au port 80 et se forke aussitôt pour
répondre aux requêtes (et pour chaque requête qui arrive, c'est un fork ou un
thread qui est créé, tiens pendant que j'y pense ?).



Cela dépend de la version d'Apache que tu installes : pour Apache1, je
crois que ce sont des forks systématiquement (et même des forks par
anticipation). Pour Apache2, il y a différents paquets qui fournissent
différentes implémentations/stratégies : les apache2-mpm-* (cf. le
descriptif de chacun des paquets).


Fred

--
Comment poser les questions de manière intelligente ?
http://www.gnurou.org/documents/smart-questions-fr.html
Comment signaler efficacement un bug ?
http://www.chiark.greenend.org.uk/~sgtatham/bugs-fr.html


--
Pensez à lire la FAQ de la liste avant de poser une question :
http://wiki.debian.net/?DebianFrench

Pensez à rajouter le mot ``spam'' dans vos champs "From" et "Reply-To:"

To UNSUBSCRIBE, email to
with a subject of "unsubscribe". Trouble? Contact
Publicité
Poster une réponse
Anonyme