root ou pas root

root ou pas root - Linux et OS Alternatifs

Marsh Posté le 14-10-2002 à 18:35:25    

Hellop
 
Dans la doc de pure-ftpd je suis tombé sur ça
 
On Linux systems, you will notice that the server is always running as root. This is intentional, and more secure that servers who are changing their effective uid (and only effective uid, they still have root privileges in fact, use ps -U to see what servers are really running as root) . We are using Linux kernel-specific tricks to drop privileges that "ps" can't show.
 
ba alors ca sert à rien de se faire chier à lancer un service en user à partir du moment ou il apparait quand même avec un "ps -U root" ?

Reply

Marsh Posté le 14-10-2002 à 18:35:25   

Reply

Marsh Posté le 14-10-2002 à 22:18:28    

c'est seulement le demon qui ecoute sur le port 21 qui tourne en root (port < 1024 oblige)
 
si tu as un client, il lance un thread qui s'en occupe et lui tourne en user

Reply

Marsh Posté le 15-10-2002 à 10:50:57    


Oui mais si c'est un thread alors il y a peut-être moyen  de remonter sur le demons en root, le deamon peut lire dans la mémoire du thread et donc interpreter le code en tant que user root ? (je part peut-etre en live... :) )
 

Reply

Marsh Posté le 15-10-2002 à 11:16:08    

Bon, il y a deux trucs :
 
- deja un serveur FTP doit, pour les connexions actives, pouvoir creer des sockets avec comme port d'origine, le port 20 (en fait port du ftp - 1). Ca a lieu apres l'authentification, donc pour que ce soit possible, il faut etre en root du debut a la fin (que ce soit dans le meme process ou un process separe) .
 
- En dehors de ca, Linux gere des capacites. C'est un peu comme des droits classiques, sauf que ca s'applique a des ressources bien particulieres. Quand pure-ftpd demarre, il dit en gros au noyau : bon, alors voila, je suis autorise a creer des sockets sur des ports privilegies, a mettre des options tcp et a utiliser chroot, RIEN D'AUTRE. Et des l'instant ou des capacites ont ete revoquees, on ne peut pas les recuperer par la suite. En gros meme si "ps" t'affiche "root", les process ont des droits encore plus limites qu'un utilisateur "nobody".


---------------
C'est en forgeant qu'on devient con comme un forgeron.
Reply

Marsh Posté le 15-10-2002 à 11:27:51    

Il y a un autre probleme avec des demons style serveur FTP qui ne tournent pas sous root. Un utilisateur avec le meme uid qu'une session FTP active peut envoyer des signaux.
 
Par exemple imagine que juste apres l'authentification, un process (donc pas root) doivent informer un autre process de ce qu'il vient de se passer (par exemple pour maintenir le ftpwho) . L'autre process (generalement le pere, qui s'occupe aussi d'accepter de nouvelles connexions) va attendre les quelques octets du fils qui vont l'informer sur l'utilisateur.
 
Et la, l'utilisateur en question, qui a un shell sur la machine, va envoyer au bon moment un signal STOP, URG, SEGV, etc. Le pere n'aura jamais ses infos et peut continuer a attendre => deni de service.
 
Sous Linux il y a moyen de rester root (donc les signaux venant d'utilisateurs non-root seront ignores), mais sans etre root au niveau des droits d'acces sur les fichiers. C'est un truc assez particulier qu'on ne retrouve pas sur les autres OS, ca a ete ecrit pour NFS a l'origine.
 
Pure-FTPd se sert de ce truc la. Mais cet appel systeme ne fonctionne que si l'on est root.
 
Bref, pour toutes ces raisons, sous Linux, Pure-FTPd me semble plus sur en root qu'en pas root.
 
Mais c'est assez specifique, il ne faut pas generaliser. Il n'y a malheureusement pas beaucoup d'autres softs qui se servent de ces trucs propres a Linux.

Reply

Marsh Posté le 15-10-2002 à 11:39:29    

[:wam]

Reply

Marsh Posté le 15-10-2002 à 11:46:25    


Merci Axey je vais pouvoir forwarder tout ca à Belis pour qu'elle nous fasse un petit cour la dessus dès la rentrée...  :benetton:

Reply

Marsh Posté le 15-10-2002 à 13:41:53    

Belle explication axey, merci

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed