[ << ]
[ < ]
[ Sommaire ]
[ > ]
[ >> ]
6. Permissions de fichiers
Table des matières :
6.a. Lecture pour tous
Les utilisateurs normaux ne devraient pas avoir accès aux fichiers de
configuration ou de mots de passe. Un attaquant pourrait dérober les mots de
passe d'une base de données ou d'un site Internet et les utiliser pour
modifier, voire effacer des données. C'est pourquoi il est important que les
permissions des fichiers soient correctes. Si vous êtes certain qu'un fichier
n'est utilisé que par root, assignez-lui les permissions 0600 et assignez
au fichier l'utilisateur approprié avec chown.
6.b. Écriture pour tous les utilisateurs et tous les groupes
Exemple de code 2.1 : trouver des fichiers et répertoires accessibles en écriture pour tous |
# find / -type f \( -perm -2 -o -perm -20 \) \ -exec ls -lg {} \; 2>/dev/null >writable.txt
# find / -type d \( -perm -2 -o -perm -20 \) \ -exec ls -ldg {} \; 2>/dev/null >>writable.txt
|
Cela créera un long fichier contenant la liste des fichiers qui ont un droit
d'écriture pour tout le monde ou pour le groupe. Vérifiez les permissions et
éliminez les droits sur les fichiers qui sont accessibles en écriture par tout
le monde en exécutant la commande /bin/chmod o-w sur ces fichiers.
6.c. Les fichiers SUID/SGID
Les fichiers dont le bit SUID ou SGID est activé sont exécutés avec les
privilèges de l'utilisateur ou du groupe possédant ce fichier, et non
avec ceux de l'utilisateur qui exécute le fichier. Normalement, ces bits sont
utilisés sur des fichiers qui doivent fonctionner en tant que root pour
accomplir leur travail. Ces fichiers peuvent mener à une exploitation locale de
votre système avec les droits root s'ils contiennent des failles de sécurité.
Ceci est dangereux, et les fichiers avec des bits SUID ou SGID doivent être
évités à tout prix. Si vous n'utilisez pas ces fichiers, faites un chmod
0 dessus ou bien désinstallez les paquets qui ont généré ces fichiers.
(Vérifiez à quel paquet ils appartiennent avec la commande equery. Si
elle n'est pas déjà installée, faites emerge gentoolkit). Pour les
fichiers que vous utilisez, modifiez juste le bit SUID en faisant chmod
-s.
Exemple de code 3.1 : trouver des fichiers setuid |
# find / -type f \( -perm -004000 -o -perm -002000 \) \ -exec ls -lg {} \; 2>/dev/null >suidfiles.txt
|
Cette commande crée un fichier contenant la liste de tous les fichiers
SUID/SGID.
Exemple de code 3.2 : liste des binaires setuid |
/bin/su
/bin/ping
/bin/mount
/bin/umount
/var/qmail/bin/qmail-queue
/usr/bin/chfn
/usr/bin/chsh
/usr/bin/crontab
/usr/bin/chage
/usr/bin/expiry
/usr/bin/sperl5.6.1
/usr/bin/newgrp
/usr/bin/passwd
/usr/bin/gpasswd
/usr/bin/procmail
/usr/bin/suidperl
/usr/lib/misc/pt_chown
/usr/sbin/unix_chkpwd
/usr/sbin/traceroute
/usr/sbin/pwdb_chkpwd
|
Gentoo Linux ne contient pas beaucoup de fichiers SUID par défaut (cela dépend
de ce que vous avez installé). Vous pouvez néanmoins obtenir une liste
similaire à celle ci-dessus. La plupart de ces commandes ne devraient pas être
utilisées par des utilisateurs normaux et devraient donc être restreintes à
root. Désactivez le mode suid sur ping, mount, umount,
chfn, chsh, newgrp, suidperl, pt_chown et
traceroute en faisant chmod -s sur chacun de ces fichiers.
N'enlevez pas ce mode sur les fichiers su, qmail-queue ou
unix_chkpwd. Cela vous empêcherait de pouvoir faire des su ou
bien de recevoir des courriers. En modifiant ce bit (lorsque c'est
sécuritaire), vous enlevez la possibilité à un utilisateur normal (ou à un
attaquant) d'obtenir un accès root grâce à ces fichiers.
Les seuls fichiers en mode SUID que j'ai sur mon système sont su,
passwd, gpasswd, qmail-queue, unix_chkpwd et
pwdb_chkpwd. Mais, si vous utilisez X, vous en aurez sans doute
davantage, puisque X requiet l'accès privilégié qui lui est conféré par SUID.
6.d. Binaires SUID/SGID et liens non symboliques
Un fichier n'est considéré comme effacé qu'une fois qu'il n'y a plus de liens
pointant vers celui-ci. Cela peut sembler un peu étrange, mais regardez :
un fichier comme /usr/bin/perl n'est en fait qu'un lien vers
l'inode sur lequel les données sont sauvegardées. On peut créer le nombre de
liens qu'on veut vers ce fichier, et tant que tous n'auront pas été supprimés,
le fichier continuera d'exister.
Si vos utilisateurs ont accès à une partition qui n'est pas montée avec l'option
nosuid ou noexec (par exemple, si /tmp,
/home, ou /var/tmp ne sont pas des partitions
séparées) vous devez faire attention à ce que vos utilisateurs ne créent pas
de liens en dur vers des binaires SGID, pour qu'après une mise à jour avec
Portage, ils puissent continuer à avoir accès aux anciennes versions.
Attention :
si vous obtenez un avertissement de Portage à propos de liens en durs qui
resteraient, et que vos utilisateurs peuvent écrire sur une partition qui leur
permette d'exécuter des fichiers SUID/SGID, vous devez lire cette section
avec attention. L'un de vos utilisateur pourrait essayer de contourner votre
mise à jour pour garder une ancienne version d'un programme. Si vos utilisateurs
ne peuvent pas créer leurs propres fichiers SUID, ou qu'ils ne peuvent exécuter
de programmes qu'en utilisant un chargeur dynamique (partitions montées avec
l'option noexec), vous n'avez pas à vous inquiéter.
|
Note :
les utilisateurs n'ont pas besoin de pouvoir avoir un accès en lecture pour
créer un lien pointant vers celui-ci. Ils ont seulement besoin d'une permission
de lecture sur le répertoire qui le contient.
|
Pour vérifier de combien de liens un fichier dispose, vous pouvez utiliser la
commande stat.
Exemple de code 4.1 : la commande stat |
$ stat /bin/su
File: `/bin/su'
Size: 29350 Blocks: 64 IO Block: 131072 regular file
Device: 900h/2304d Inode: 2057419 Links: 1
Access: (4711/-rws--x--x) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2005-02-07 01:59:35.000000000 +0000
Modify: 2004-11-04 01:46:17.000000000 +0000
Change: 2004-11-04 01:46:17.000000000 +0000
|
Pour trouver les fichiers SUID ou SGID disposant de plusieurs liens, vous pouvez
utiliser find.
Exemple de code 4.2 : trouver les binaires SUID/SGID ayant plusieurs liens |
$ find / -type f \( -perm -004000 -o -perm -002000 \) -links +1 -ls
|
[ << ]
[ < ]
[ Sommaire ]
[ > ]
[ >> ]
Ce document est protégé par la licence Creative
Commons : Paternité - Partage des Conditions Initiales à
l'Identique 2.5.
|