| Mandrake Linux 8.2: Manuel de référence serveur | ||
|---|---|---|
| Page précédente | Chapitre 10. De la sécurité sous GNU/Linux | Page suivante |
Quelques minutes de préparation et de planification avant de mettre votre système en ligne peut vous aider à le protéger ainsi que les données qu'il contient.
Il ne devrait y avoir aucune raison pour que le répertoire « maison » d'un utilisateur y autorise l'exécution de programmes SUID/SGID. Utiliser l'option nosuid dans /etc/fstab pour les partitions en écriture par d'autres que root. vous pourrez aussi souhaiter utiliser nodev et noexec sur la partition des répertoires des utilisateurs, ainsi que sur /var, interdisant ainsi l'exécution de programmes, et la création de périphériques caractère ou bloc, qui ne devraient jamais être nécessaires de toute façon.
Si vous exportez des systèmes de fichier via NFS, assurez vous de configurer /etc/exports avec le plus de restrictions d'accès possibles. Cela signifie ne pas utiliser de caractères d'englobement (* ?) ni autoriser un accès pour root en écriture, et exporter en lecture seule chaque fois que c'est possible.
Configurez le umask de création de fichier des utilisateurs le plus restrictif possible, voir Paramètres umask.
Si vous montez des systèmes de fichier en utilisant un système de fichier réseau comme NFS, assurez vous de configurer /etc/exports avec des restrictions appropriées. Généralement, utiliser `nodev', `nosuid', et même `noexec', est désirable.
Fixer les limites du système de fichier, au lieu de le laisser illimité comme il est par défaut. Vous pouvez contrôler des limites par utilisateurs en utilisant le module de limites de ressources PAM et le fichier /etc/pam.d/limits.conf. Par exemple, les limites pour le groupe users pourraient ressembler à cela :
@users hard core 0 @users hard nproc 50 @users hard rss 5000 |
Cela interdit la création de fichiers « core », limite le nombre de processus à 50, et limite l'utilisation de la mémoire par utilisateur à 5Mo.
Vous pouvez aussi utiliser le fichier de configuration /etc/login.defs pour régler les mêmes limites.
Les fichiers /var/log/wtmp et /var/run/utmp contiennent les registres de connexion pour tous les utilisateurs de votre système. Leur intégrité doit être assurée, car ils peuvent être utilisé pour déterminer quand et d'où un utilisateur (ou un possible intrus est entré sur le système. Ces fichiers devraient aussi avoir des permissions en 644, sans affecter la marche normale du système.
Le bit « inaltérable » peut être utilisé pour empêcher l'effacement ou l'écrasement accidentel d'un fichier qui doit être protégé. Cela empêche aussi quelqu'un de créer un lien dur vers le fichier. Voir la page de man de chattr(1) pour plus d'information sur le bit « inaltérable ».
Les fichiers suid et SGID sur votre système présentent un risque potentiel de sécurité, et devraient être surveillés de près. Du fait que ces programmes donnent des privilèges particuliers aux utilisateurs qui les exécutent, il est nécessaire de s'assurer que des programmes non surs ne sont pas installés. Un coup favori des « crackers » est d'exploiter les programmes SUID-root, puis laisser un programme suid comme porte dérobée (backdoor) pour rentrer à nouveau plus tard, même si le trou original a été bouché.
Cherchez tous les programmes SUID/SGID sur votre système, et garder une trace de ce qu'ils sont, de sorte que vous puissiez vous rendre compte de tout changement, ce qui pourrait indiquer un intrus potentiel. Utilisez les commandes suivantes pour trouver tous les programmes SUID/SGID de votre système :
root# find / -type f \( -perm -04000 -o -perm -02000 \) |
Vous pouvez supprimer la permission suid ou SGID sur un programme suspect avec la commande chmod, puis changez la à nouveau si vous vous rendez compte que c'est absolument nécessaire.
Les fichiers en écriture non restreinte (world-writable), plus particulièrement les fichiers systèmes, peuvent être un trou de sécurité si un cracker obtient l'accès à votre système, et les modifie. De plus, les répertoires en écriture non restreinte sont dangereux, car ils autorisent à un cracker de créer ou effacer des fichiers à volonté. pour localiser de tels fichiers sur votre système, utilisez la commande suivante :
root# find / -perm -2 ! -type l -ls |
Les fichiers sans propriétaires peuvent aussi être un signe qu'un intrus est passé par là. Vous pouvez localiser les fichiers qui n'ont pas de propriétaire ou de groupe propriétaire grâce à la commande :
root# find / -nouser -o -nogroup -print |
Trouver les fichiers .rhosts devrait faire partie de vos devoirs d'administrateur système, car ils devraient être bannis de votre système Rappelez vous qu'un cracker n'a besoin que d'un compte ouvert pour avoir l'opportunité d'accéder au réseau entier. Vous pouvez localiser les fichiers .rhosts avec la commande :
root# find /home -name .rhosts -print |
Enfin, avant de changer les permissions de quelque fichier système, assurez vous que vous comprenez ce que vous faites, Ne changez jamais les permissions d'un fichier parce que cela semble être une manière facile pour que tout marche bien. Cherchez toujours à savoir pourquoi ce fichier à ces permissions avant de les modifier.
La commande umask peut être utilisée pour connaître le mode de création des fichiers par défaut sur votre système. C'est le complément octal du mode du fichier en question. Si les fichiers sont créés sans égard à leurs permissions, l'utilisateur pourrait donner des permissions en lecture ou en écriture par inadvertance à quelqu'un qui ne devrait pas avoir ces permissions. Généralement, les paramètres umask sont 022, 027, ou 077 (qui est le plus restrictif). Normalement, le umask est fixé dans /etc/profile, de sorte qu'il s'applique à tous les utilisateurs du système. le masque de création de fichiers peut être calculé en soustrayant la valeur souhaitée de 777. En d'autres termes, un umask de 777 implique que les fichiers nouvellement créés de contenir des permissions sans lecture, ni écriture, ni exécution pour tout le monde. Un masque de 666 implique que les fichiers nouvellement créés ont un masque de 111. Par exemple, vous pourriez avoir une ligne comme celle-ci :
# Fixer le umask utilisateur par défaut umask 033 |
![]() | Pour Mandrake Linux, il est juste nécessaire d'utiliser un umask de 002. Cela est dû au fait que la configuration de base utilise un groupe par utilisateur. |
Il est important de vous assurer que vos fichiers système ne sont pas ouverts à des modifications accidentelles des utilisateurs et des groupes qui ne devraient pas faire de maintenance système.
UNIX différencie le contrôle d'accès aux fichiers et répertoire selon trois critères : propriétaire, groupe, et autres. Il y a toujours un seul propriétaire, un nombre quelconque de membres du groupe et tous les autres.
Une explication rapide des permissions sous UNIX :
Propriété - Quels utilisateurs et groupes ont le contrôle des paramètres de permission du noeud et du parent du noeud
Permissions - Bits susceptibles d'être mis ou enlevés pour permettre un certain type d'accès. Les permissions pour les répertoires peuvent avoir une signification différente que les mêmes paramètres de permissions sur un fichier.
Lecture:
Être capable de lire le contenu d'un fichier
Être capable de lire un répertoire
Écriture:
Être capable d'ajouter ou modifier un fichier
Être capable de supprimer ou de déplacer des fichiers d'un répertoire
Exécution:
Être capable de lancer un programme binaire ou un script shell
Être capable de chercher dans un répertoire, en accord avec la permission de lecture
Le « sticky bit » (bit de conservation) a aussi un comportement différent lorsqu'il est appliqué aux répertoires. Si le bit de conservation est mis sur un répertoire, alors un utilisateur pourra seulement supprimer les fichiers qu'il y possède, ou pour lesquels il a des droits explicites en écriture, même si il a les droits en écriture sur ce répertoire. Cela est conçu pour des répertoires tels que /tmp, qui sont world-writable (écriture par tout le monde), mais où il ne vaut mieux pas que les utilisateurs puissent effacer des fichiers à l'envie. Le sticky bit est vu comme un t dans un listing de répertoire détaillé.
Il s'agit de la permission « set-user-id » (utiliser ID utilisateur) sur le fichier. Quand le mode d'utilisation de l'ID utilisateur est mis dans les permissions du propriétaire, et si le fichier est exécutable, les processus qui l'utilisent obtiennent les ressources systèmes de l'utilisateur qui possède le fichier, et non plus de l'utilisateur qui a lancé le processus. Cela est la cause de beaucoup de violations de type « buffer overflow » (dépassement de mémoire tampon).
Si utilisé dans les permission du groupe, ce bit contrôle le statut « set group id » d'un fichier. Il se comporte comme pour suid, à part que c'est le groupe qui en est bénéficiaire. Le fichier doit être exécutable pour faire effet.
Si vous activez le bitSGID sur un répertoire (avec chmod g+s directory), les fichiers qui y seront créés auront leur groupe mis au groupe du répertoire.
Vous - Le propriétaire du fichier
Groupe - Le groupe auquel vous appartenez
Tous - Quiconque sur le système qui n'est ni propriétaire, ni membre du groupe
Exemple de fichier :
-rw-r--r-- 1 kevin users 114 Aug 28 1997 .zlogin
1st bit - répertoire? (non)
2nd bit - lecture propriétaire? (oui, par kevin)
3rd bit - écriture par propriétaire? (oui, par kevin)
4th bit - exécution propriétaire? (non)
5th bit - lecture groupe? (oui, par users)
6th bit - écriture groupe? (non)
7th bit - exécution groupe? (non)
8th bit - lecture tous? (oui, par tous)
9th bit - lecture tous? (non)
10th bit - exécution tous? (non) |
Les lignes suivantes sont des exemples d'ensembles de permissions qui sont nécessaires pour avoir l'accès décrit. Vous voudrez sans doute donner plus de permissions que celles données ici, mais on ne décrit ici que l'effet de ces permissions minimales :
-r-------- Autoriser l'accès en lecture au fichier par le propriétaire
--w------- Autoriser le propriétaire à modifier ou effacer le fichier
(Notez que quiconque ayant les droits d'écriture sur le répertoire
dans lequel se trouve le fichier peut l'écraser/effacer)
---x------ Le propriétaire peut exécuter ce programme, mais pas de script shell,
qui de plus nécessite un droit en lecture
---s------ Sera exécuté avec l'UID du propriétaire
--------s- Sera exécuté avec le GID du groupe
-rw------T Pas de mise à jour du "last modified time" (Heure de dernière modification).
Généralement utilisé pour le fichiers d'échange (swap)
---t------ Aucun effet. (anciennement bit de conservation) |
drwxr-xr-x 3 kevin users 512 Sep 19 13:47 .public_html/
1e bit - répertoire? (oui, il contient de nombreux fichiers)
2e bit - lecture propriétaire? (oui, par kevin)
3e bit - écriture propriétaire? (oui, par kevin)
4e bit - exécution propriétaire? (oui, par kevin)
5e bit - lecture groupe? (oui, par users)
6e bit - écriture groupe? (non)
7e bit - exécution groupe? (oui, par users)
8e bit - lecture par tous? (oui, par tous)
9e bit - écriture par tous? (non)
10e bit - exécution par tous? (oui, par tous) |
Les lignes qui suivent sont des exemples des ensembles de permissions minimums requis pour autoriser l'accès décrit. Vous voudrez sans doute donner plus de permissions que celles données ici, mais on ne décrit ici que l'effet de ces permissions minimales :
dr-------- Le contenu peut être listé, mais l'attribut des fichiers
ne peut être lu
d--x------ Le répertoire est accessible, et utilisé comme chemin en
exécution complète
dr-x------ Les attributs de fichiers peuvent être lus par le propriétaire
d-wx------ Les fichiers peuvent être créés/effacés, même si le répertoire
n'est pas le répertoire courant
d------x-t Empêche l'effacement de fichiers par « tous » ayant
un droit d'écriture. Utilisé pour /tmp
d---s--s-- Aucun effet |
Les fichiers de configuration système (généralement dans /etc) ont souvent un mode de 640 (-rw-r-----), et possédés par root. Selon les besoins en sécurité de votre site, vous pouvez les ajuster. Ne laissez jamais un fichier système en écriture pour un groupe ou tous. Certains fichiers de configuration, dont /etc/shadow, devraient n'être en lecture que par root, et les répertoires de /etc ne devraient pas être accessibles par tous, au moins.
les scripts shell suid représentent un sérieux risque de sécurité, et pour cette raison, le noyau n'en tiendra pas compte. Quel que soit le degré de sécurité que vous supposez pour ces scripts, ils peuvent être exploités par le cracker pour lui fournir un shell root.
Une autre très bonne manière de détecter des attaques locales (et réseau) sur votre système est de lancer un contrôleur d'intégrité comme Tripwire, Aide ou Osiris. Ces contrôleurs d'intégrité génèrent un certain nombre de sommes de contrôle sur tous vos binaires et fichiers systèmes importants et les comparent à une base de données précédemment générée de valeurs références bien connues. Ainsi, tout changement dans un fichier sera détecté.
C'est un bon réflexe d'installer ce genre de programmes sur une disquette, puis empêcher physiquement l'écriture sur celle-ci. De cette façon. les intrus ne pourront pas altérer le contrôleur d'intégrité lui-même ou modifier sa base de données. Une fois que vous avez une application de ce style configurée, il est conseillé de l'ajouter à vos devoirs d'administrateurs système pour vérifier que rien n'a changé.
Vous pouvez même ajouter un entrée crontab pour lancer le contrôleur depuis votre disquette toute les nuits et vous envoyer un message le matin. Quelque chose comme :
# set mailto MAILTO=kevin # run Tripwire 15 05 * * * root /usr/local/adm/tcheck/tripwire |
Les contrôleurs d'intégrité peuvent être une aubaine pour détecter des intrusions avant même que vous ne puissiez les remarquer. Comme beaucoup de fichiers changent sur un système moyen, vous devrez faire le discernement entre des activités de cracker et vos propres agissements.
Vous pouvez trouver une version libre et non prise en charge de Tripwire sur le site http://www.tripwire.org, gratuitement. Des manuels et de l'assistance technique peuvent être achetés.
Aide peut être trouvé à http://www.cs.tut.fi/~rammer/aide.html.
Osiris peut être trouvé à http://www.shmoo.com/osiris/.
Les « Chevaux de Troie » tirent leur nom du célèbre stratagème décrit dans l'Iliade d'Homère. L'idée est qu'un cracker distribue un programme ou binaire qui semble intéressant, et encourage d'autres personnes à le télécharger et le lancer en tant que root. Alors, le programme peut compromettre leur système pendant qu'ils n'y prêtent attention. Alors qu'ils pensent que le logiciel qu'ils viennent de charger ne fait qu'une seule chose (et parfois très bien), il transige aussi leur sécurité.
Vous devez prendre garde aux programmes que vous installez sur votre machine. MandrakeSoft fournit les sommes de contrôle MD5 et les signatures PGP de chacun des RPM qu'il fournit, de sorte que vous puissiez vérifier que vous installez la bonne chose. Vous ne devriez jamais lancer un binaire que vous ne connaissez pas, pour lequel vous n'avez pas les sources comme root! Peu d'attaquant souhaitent publier leur code source pour sondage public.
Bien que cela puisse être complexe, assurez vous que vous obtenez le code source d'un programme depuis son site réel de distribution. Si le programme doit être lancé par root, assurez vous que vous ou quelqu'un de confiance a regardé les sources et les a vérifiées.
| Page précédente | Début | Page suivante |
| Sécurité locale | Remonter | Sécurité des mots de passe et cryptage |