HSC
Network Security Consulting Agency Since 1989 - Specialized in Unix, Windows, TCP/IP and Internet
Text mode: access to the page content
Hervé Schauer Consultants
You are here: Home > Resources > Tips > Restreindre l'usage des programmes suid à certains utilisateurs
Go to: HSC Trainings
Télécharger le catalogue des formations
Search:  
Version française
   Services   
o Skills & Expertise
o Consulting
o ISO 27001 services
o Audit & Assessment
o Penetration tests
o Vunerability assessment (TSAR)
o Forensics
o ARJEL
o Training courses
o E-learning
   Conferences   
o Agenda
o Past events
o Tutorials
   Resources   
o Thematic index
o Tips
o Lectures
o Courses
o Articles
o Tools (download)
o Vulnerability watch
   Company   
o Hervé Schauer
o Team
o Job opportunities
o Credentials
o History
o Partnerships
o Associations
   Press and
 communication
 
 
o HSC Newsletter
o Bulletin juridique HSC
o Press review
o Press releases
o Publications
   Contacts   
o How to reach us
o Specific inquiries
o Directions to our office
o Hotels near our office
|>|Restreindre l'usage des programmes suid à certains utilisateurs  

by Renaud Deraison (04/12/2000)




Restreindre l'usage des progs suid à certains utilisateurs
-------------------------------------------------------------------------------
Renaud Deraison <deraison@nessus.org>


La plupart des exploits locaux se font grace à un bug dans un programme
suid. Cette brève explique comment acceuillir des utilisateurs en lesquels
on a une confiance extremement modérée.


On peut appliquer cette méthode à des serveurs "en consultation libre" tels
que des bornes internet dans des bibliothèques, ou toute machine qui herberge
les shells de personnes potentiellement hostiles.



1. Le principe
--------------

Le principe de base c'est que sur une machine "monsieur tout le monde"
ne doit pas pouvoir utiliser de programme suid (a l'exception peut etre
de X dans le cas de bornes d'accès internet, et encore, il est possible
de faire lancer X à root avec xdm)

On va donc créer un groupe "suid" qui contiendra la liste des utilisateurs
pouvant executer de tels programmes

Une autre méthode est décrite en annexe mais n'a jamais été testée. Je vous
engage à lire les deux avant de faire quoi que ce soit.

2. Création du groupe
---------------------

Il suffit de rajouter une ligne dans /etc/group. Chez moi, on a :
[renaud@paris renaud]$ grep suid /etc/group
suid:*:65532:root,renaud,mathieu

Soit : de tous les utilisateurs de la machine, seuls root, renaud et mathieu
ont le droit d'executer des programmes avec privileges. 


3. Changement de mode des programmes
------------------------------------

Pour chaque programme suid root :
	- on le fait appartenir au groupe "suid"
	- on fait un chmod 4750 sur le programme


Soit :

# cat << EOF > /tmp/script
ls -l $1
chgrp suid $1
chmod 04750 $1
EOF

# chmod 0755 script
# find / -perm +4000 -exec /tmp/script {} \; > liste_des_progs_modifies
# rm /tmp/script

Le fichier "liste_des_progs_modifes" nous sert de fichier de log, au cas
ou l'on veuille tout restaurer dans son état original.


4. Les exceptions
-----------------

Certains programmes doivent etre laissés en libre accès à tous. Cela dépend
de vos besoins mais le plus souvent ce sera :

	. passwd
	. X


On pourrait imaginer créer un groupe x11users et chgpasswd pour les utilisateurs
ayant le droit d'utiliser X ou pouvant changer leur mot de passe. Dans
le cas d'un poste en accès public par exemple, je créerais un compte
"guest", sans mot de passe, dont le seul groupe sera x11users.



5. Conclusion
-------------

Cette protection ne suffit absolument pas, mais permet de dormir un peu
mieux la nuit ...



A. Annexe : autre méthode
-------------------------

Les programmes sgid restent sans protection avec la méthode 
décrite ici.

J'ai pensé, pour pallier à ce problème, à une autre solution que je n'ai 
hélas jamais mis en pratique.

L'idée serait de créer un repertoire /priv en mode 0750, appartenant
au groupe suid, et dy déplacer tous les binaires suid/sgid du système,
en faisant un script tel que :

	
	cp -a $1 /suid/
	rm $1
	ln -s /suid/$1 $1
	

Et de l'appliquer aux résultats de find +perm 4000 et +perm 3000.

De ce fait, tous les programmes sensibles du système se retrouvent dans
/priv, qui n'est lisible que par un nombre restreint de personnes. On
peut ensuite augmenter la granularité de cette selection, en faisant
/priv/suid_root, /priv/sgid_kmem, etc, etc... et donner les permissions
aux bons utilisateurs en fonction de cela. 
Si quelqu'un tente cette solution, je serais heureux d'avoir des
retours d'experience quand à son efficacité et sa simplicité d'administration.





Last modified on 30 Mars 2006 at 19:28:04 CET - webmaster@hsc.fr
Mentions légales - Information on this server - © 1989-2013 Hervé Schauer Consultants