Ignorer les liens de navigation | |
Quitter l'aperu | |
Guide d'administration système : Services de sécurité |
Partie I Présentation de la sécurité
1. Services de sécurité (présentation)
Partie II Sécurité du système, des fichiers et des périphériques
2. Gestion de la sécurité de la machine (présentation)
3. Contrôle de l'accès aux systèmes (tâches)
4. Contrôle de l'accès aux périphériques (tâches)
5. Utilisation de l'outil de génération de rapports d'audit de base (tâches)
6. Contrôle de l'accès aux fichiers (tâches)
7. Utilisation d'Automated Security Enhancement Tool (Tâches)
Partie III Rôles, profils de droits et privilèges
8. Utilisation des rôles et des privilèges (présentation)
9. Utilisation du contrôle d'accès basé sur les rôles (tâches)
10. Contrôle d'accès basé sur les rôles (référence)
Gestion et utilisation des privilèges (liste des tâches)
Gestion des privilèges (liste des tâches)
Détermination de privilèges sur un processus
Détermination des privilèges requis par un programme
Ajout de privilèges à une commande
Attribution de privilèges à un utilisateur ou à un rôle
Détermination des privilèges (liste des tâches)
Détermination des privilèges qui vous sont attribués
Détermination des privilèges qui vous sont attribués directement
Détermination des commandes privilégiées que vous pouvez exécuter
Détermination des commandes privilégiées qu'un rôle peut exécuter
Partie IV Services cryptographiques
13. Structure cryptographique Oracle Solaris (présentation)
14. Structure cryptographique Oracle Solaris (tâches)
15. Structure de gestion des clés Oracle Solaris
Partie V Services d'authentification et communication sécurisée
16. Utilisation des services d'authentification (tâches)
19. Utilisation d'Oracle Solaris Secure Shell (tâches)
20. Oracle Solaris Secure Shell (référence)
21. Introduction au service Kerberos
22. Planification du service Kerberos
23. Configuration du service Kerberos (tâches)
24. Messages d'erreur et dépannage de Kerberos
25. Administration des principaux et des stratégies Kerberos (tâches)
26. Utilisation des applications Kerberos (tâches)
27. Service Kerberos (référence)
Partie VII Audit Oracle Solaris
28. Audit Oracle Solaris (présentation)
29. Planification de l'audit Oracle Solaris
30. Gestion de l'audit Oracle Solaris (tâches)
Le moyen le plus sûr de gérer les privilèges pour les utilisateurs et les rôles est de limiter leur utilisation aux commandes comprises dans un profil de droits. Le profil de droits est ensuite inclus dans un rôle. Le rôle est attribué à un utilisateur. Lorsque l'utilisateur endosse le rôle affecté, les commandes privilégiées peuvent être exécutées dans un shell de profil. Les procédures ci-dessous décrivent l'attribution des privilèges, la suppression des privilèges et le débogage de l'utilisation de privilèges.
Cette procédure présente la détermination des privilèges disponibles pour vos processus. La liste n'inclut pas les privilèges attribués à des commandes particulières.
% ppriv pid $ ppriv -v pid
Numéro du processus. Utilisez le symbole double dollar ($$) pour transmettre le numéro de processus du shell parent à la commande.
Fournit une liste détaillée des noms des privilèges.
Exemple 11-1 Détermination des privilèges dans votre shell actuel
Dans l'exemple ci-dessous, les privilèges dans le processus parent du processus de shell de l'utilisateur sont répertoriés. Dans le deuxième exemple, les noms complets des privilèges sont répertoriés. Les lettres dans la sortie font référence aux jeux de privilèges suivants :
Jeu de privilèges effectif.
Jeu de privilèges héritable.
Jeu de privilèges autorisé.
Jeu de privilèges de limite.
% ppriv $$ 1200: -csh flags = <none> E: basic I: basic P: basic L: all % ppriv -v $$ 1200: -csh flags = <none> E: file_link_any,net_access,proc_exec,proc_fork,proc_info,proc_session I: file_link_any,net_access,proc_exec,proc_fork,proc_info,proc_session P: file_link_any,net_access,proc_exec,proc_fork,proc_info,proc_session L: cpc_cpu,dtrace_kernel,dtrace_proc,dtrace_user,…,sys_time
Exemple 11-2 Détermination des privilèges d'un rôle que vous pouvez prendre
Les rôles utilisent un shell d'administration ou un shell de profil. Vous devez endosser un rôle et utiliser son shell pour répertorier les privilèges qui lui ont été directement attribués. Dans l'exemple suivant, le rôle sysadmin n'a pas de privilèges attribués directement.
% su - sysadmin Password: <Type sysadmin password> $ /usr/ucb/whoami sysadmin $ ppriv -v $$ 1400: pfksh flags = <none> E: file_link_any,net_access,proc_exec,proc_fork,proc_info,proc_session I: file_link_any,net_access,proc_exec,proc_fork,proc_info,proc_session P: file_link_any,net_access,proc_exec,proc_fork,proc_info,proc_session L: cpc_cpu,dtrace_kernel,dtrace_proc,dtrace_user,…,sys_time
Cette procédure détermine les privilèges nécessaires à l'exécution correcte d'une commande ou d'un processus.
Avant de commencer
Cette procédure fonctionne uniquement après l'échec de la commande ou du processus.
% ppriv -eD touch /etc/acct/yearly touch[11365]: missing privilege "file_dac_write" (euid = 130, syscall = 224) needed at ufs_direnter_cm+0x27c touch: /etc/acct/yearly cannot create
% grep 224 /etc/name_to_sysnum creat64 224
Exemple 11-3 Utilisation de la commande truss pour examiner l'utilisation des privilèges
La commande truss peut déboguer l'utilisation des privilèges dans un shell standard. Par exemple, la commande suivante débogue le processus touch défaillant :
% truss -t creat touch /etc/acct/yearly creat64("/etc/acct/yearly", 0666) Err#13 EACCES [file_dac_write] touch: /etc/acct/yearly cannot create
Les interfaces /proc étendues signalent les privilèges manquants après le code d'erreur dans la sortie truss.
Exemple 11-4 Utilisation de la commande ppriv pour l'examen de l'utilisation des privilèges dans un shell de profil
La commande ppriv peut déboguer l'utilisation des privilèges dans un shell de profil. Si vous attribuez un profil de droits à un utilisateur et que ce profil comprend des commandes avec des privilèges, les commandes doivent être saisies dans un shell de profil. Lorsque les commandes privilégiées sont saisies dans un shell standard, les commandes ne sont pas exécutées avec les privilèges.
Dans cet exemple, l'utilisateur jdoe peut endosser le rôle objadmin. Le rôle objadmin comprend le profil de droits de gestion de l'accès aux objets. Ce profil de droits permet au rôle objadmin de modifier les autorisations pour les fichiers dont objadmin n'est pas propriétaire.
Dans l'exemple ci-dessous, jdoe ne parvient pas à changer les autorisations pour le fichier useful.script :
jdoe% ls -l useful.script -rw-r--r-- 1 aloe staff 2303 Apr 10 10:10 useful.script jdoe% chown objadmin useful.script chown: useful.script: Not owner jdoe% ppriv -eD chown objadmin useful.script chown[11444]: missing privilege "file_chown" (euid = 130, syscall = 16) needed at ufs_setattr+0x258 chown: useful.script: Not owner
Lorsque jdoe endosse le rôle objadmin, les autorisations pour le fichier sont modifiées :
jdoe% su - objadmin Password: <Type objadmin password> $ ls -l useful.script -rw-r--r-- 1 aloe staff 2303 Apr 10 10:10 useful.script $ chown objadmin useful.script $ ls -l useful.script -rw-r--r-- 1 objadmin staff 2303 Apr 10 10:10 useful.script $ chgrp admin useful.script $ ls -l objadmin.script -rw-r--r-- 1 objadmin admin 2303 Apr 10 10:11 useful.script
Exemple 11-5 Modification d'un fichier appartenant à l'utilisateur root
Cet exemple illustre les protections contre l'escalade des privilèges. Pour plus de détails, reportez-vous à la section Prévention de l'escalade de privilèges . Le fichier appartient à l'utilisateur root. Le rôle le moins puissant, objadmin, a besoin de tous les privilèges pour modifier la propriété du fichier, de sorte que l'opération échoue.
jdoe% su - objadmin Password: <Type objadmin password> $ cd /etc; ls -l system -rw-r--r-- 1 root sys 1883 Oct 10 10:20 system $ chown objadmin system chown: system: Not owner $ ppriv -eD chown objadmin system chown[11481]: missing privilege "ALL" (euid = 101, syscall = 16) needed at ufs_setattr+0x258 chown: system: Not owner
Vous ajoutez des privilèges à une commande lorsque vous ajoutez la commande à un profil de droits. Les privilèges permettent au rôle incluant le profil de droits d'exécuter la commande d'administration, sans attribuer aucune autre capacité de superutilisateur.
Avant de commencer
La commande ou le programme doit être conscient des privilèges. Pour plus d'information, reportez-vous à la section Comment les processus obtiennent des privilèges .
Les rôles contiennent des autorisations et des commandes privilégiées. Pour plus d'informations sur les rôles, reportez-vous à la section Configuration de RBAC (liste des tâches).
Pour plus d'instructions, reportez-vous à la section Procédure d'endossement d'un rôle dans la console de gestion Solaris.
Sélectionnez la commande à inclure. Pour chaque commande incluse, ajoutez les privilèges requis par la commande.
Attention - Lorsque vous incluez des commandes dans un profil de droits et ajoutez des privilèges à ces commandes, les commandes s'exécutent avec ces privilèges lorsqu'elles sont exécutées dans un shell de profil. L'ordre des profils est important. Le shell de profil exécute une commande ou une action avec les attributs de sécurité spécifiés dans le profil apparaissant en premier dans la liste des profils du compte. Par exemple, si la commande chgrp se trouve dans le profil de droits de gestion de l'accès aux objets avec privilèges, et si la gestion de l'accès aux objets est le premier profil dans lequel la commande chgrp se trouvée, la commande chgrp s'exécute avec les privilèges indiqués dans le profil de gestion de l'accès aux objets. |
Vous pouvez affecter un privilège particulier à certains utilisateurs de façon permanente. Les privilèges très spécifiques ayant une incidence sur une petite partie du système peuvent être facilement concédés à un utilisateur. Pour obtenir plus de détails sur les implications des privilèges attribués directement, reportez-vous à la section Considérations relatives à la sécurité lors de l'affectation directe d'attributs de sécurité .
La procédure suivante permet à l'utilisateur jdoe d'utiliser des horloges haute résolution.
Le rôle d'administrateur principal inclut le profil d'administrateur principal. Pour plus d'informations sur la création d'un rôle et son assignation à un utilisateur, reportez-vous au Chapitre 2, Utilisation de la console de gestion Solaris (tâches) du Guide d’administration système : administration de base.
$ usermod -K defaultpriv=basic,proc_clock_highres jdoe
Les valeurs pour le mot-clé defaultpriv remplacent les valeurs existantes. Par conséquent, pour que l'utilisateur conserve les privilèges basic, la valeur basic doit être spécifiée. Dans la configuration par défaut, tous les utilisateurs disposent de privilèges de base.
$ grep jdoe /etc/user_attr jdoe::::type=normal;defaultpriv=basic,proc_clock_highres
Exemple 11-6 Création d'un rôle disposant des privilèges pour configurer le temps système
Dans cet exemple, le rôle créé a pour seule tâche de gérer l'heure du système.
$ /usr/sadm/bin/smrole -D nisplus:/examplehost/example.domain \ -r primaryadm -l <Type primaryadm password> \ add -- -n clockmgr \ -c "Role that sets system time" \ -F "Clock Manager" \ -s /bin/pfksh \ -u 108 \ -P <Type clockmgr password> \ -K defaultpriv=basic,proc_priocntl,sys_cpu_config, proc_clock_highres,sys_time
La ligne -K est renvoyée à des fins d'affichage.
Si le rôle a été créé en local, l'entrée user_attr pour le rôle se présente comme suit :
clockmgr:::Role that sets system time: type=role;defaultpriv=basic,proc_priocntl,sys_cpu_config, proc_clock_highres,sys_time
Vous pouvez limiter les privilèges à la disposition d'un utilisateur ou d'un rôle en réduisant le jeu de base ou le jeu limite. Vous devez avoir une bonne raison de limiter les privilèges de l'utilisateur de cette manière, car ces limitations peuvent avoir des effets secondaires involontaires.
Attention - Vous devez tester de manière approfondie toutes les capacités de l'utilisateur pour lesquelles le jeu de base ou de limite a été modifié.
|
Pour plus d'informations sur cette procédure, reportez-vous à la section Détermination de privilèges sur un processus.
$ usermod -K defaultpriv=basic,!priv-name username
En supprimant le privilège proc_session, vous empêchez l'utilisateur d'examiner les processus à l'extérieur de sa session en cours. En supprimant le privilège file_link_any, vous empêchez l'utilisateur de créer des liens physiques vers des fichiers n'appartenant pas à l'utilisateur.
Attention - Ne supprimez pas le privilège proc_fork ou proc_exec. Sans ces privilèges, l'utilisateur n'est pas en mesure d'utiliser le système. En fait, ces deux privilèges ne doivent être supprimés que sur des démons qui ne clonent (fork()) ni exécutent (exec()) d'autres processus. |
$ usermod -K limitpriv=all,!priv-name username
Connectez-vous en tant que username et essayez de réaliser les tâches que username doit exécuter sur le système.
Exemple 11-7 Suppression de privilèges du jeu limite d'un utilisateur
Dans l'exemple suivant, toutes les sessions dérivées de la connexion initiale de jdoe ne peuvent pas utiliser le privilège sys_linkdir. C'est-à-dire que l'utilisateur ne peut pas créer de liens physiques vers les répertoires, ni rompre un lien vers des répertoires et ce, même après avoir exécuté la commande su.
$ usermod -K limitpriv=all,!sys_linkdir jdoe $ grep jdoe /etc/user_attr jdoe::::type=normal;defaultpriv=basic;limitpriv=all,!sys_linkdir
Exemple 11-8 Suppression de privilèges du jeu de base d'un utilisateur
Dans l'exemple suivant, toutes les sessions qui proviennent de la connexion initiale de jdoe ne peuvent pas utiliser le privilège proc_session. C'est-à-dire que l'utilisateur ne peut pas examiner les processus à l'extérieur de sa session et ce, même après avoir exécuté la commande su.
$ usermod -K defaultpriv=basic,!proc_session jdoe
$ grep jdoe /etc/user_attr jdoe::::type=normal;defaultpriv=basic,!proc_session;limitpriv=all
Remarque - Lorsque vous créez un script shell exécutant des commandes avec des privilèges hérités, le profil de droits approprié doit contenir les commandes avec les privilèges qui leur sont attribués.
#!/bin/pfsh # Copyright (c) 2009, 2011 by Oracle Corporation
% ppriv -eD script-full-path
Pour plus d'instructions, reportez-vous à la section Procédure d'endossement d'un rôle dans la console de gestion Solaris. Choisissez un rôle, l'administrateur principal par exemple, qui peut créer un profil de droits.
Sélectionnez le script et incluez dans le profil de droits chacune des commandes du script shell dont l'exécution nécessite des privilèges. Pour chaque commande incluse, ajoutez les privilèges requis par la commande.
Attention - L'ordre des profils de droits est important. Le shell de profil exécute la première instance d'une commande dans la liste des profils. Par exemple, si la commande chgrp se trouve dans le profil de droits de gestion de l'accès aux objets, et si la gestion de l'accès aux objets est le premier profil dans lequel la commande chgrp se trouve, la commande chgrp s'exécute avec les privilèges indiqués dans le profil de gestion de l'accès aux objets. |
Pour exécuter le profil, l'utilisateur endosse le rôle et exécute le script dans le shell de profil du rôle.