JavaScript is required to for searching.
Ignorer les liens de navigation
Quitter l'aperu
Guide d'administration système : Services de sécurité
search filter icon
search icon

Informations document

Préface

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)

11.  Privilèges (tâches)

Gestion et utilisation des privilèges (liste des tâches)

Gestion des privilèges (liste des tâches)

Gestion des privilèges

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

Limitation des privilèges d'un utilisateur ou d'un rôle

Exécution d'un script shell avec des commandes privilégiées

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

12.  Privilèges (référence)

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)

17.  Utilisation de PAM

18.  Utilisation de SASL

19.  Utilisation d'Oracle Solaris Secure Shell (tâches)

20.  Oracle Solaris Secure Shell (référence)

Partie VI Service Kerberos

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)

31.  Audit Oracle Solaris (référence)

Glossaire

Index

Gestion des privilèges

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.

Détermination de privilèges sur un processus

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.

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 :

E

Jeu de privilèges effectif.

I

Jeu de privilèges héritable.

P

Jeu de privilèges autorisé.

L

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

Détermination des privilèges requis par un programme

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.

  1. Saisissez la commande ayant échoué en tant qu'argument de la commande de débogage ppriv.
    % 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
  2. Déterminez l'appel système défaillant en recherchant le numéro syscall dans le fichier /etc/name_to_sysnum.
    % 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

Ajout de privilèges à une commande

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 .

  1. Connectez-vous en tant que superutilisateur ou endossez un rôle équivalent.

    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).

  2. Ouvrez l'interface graphique de la console de gestion Solaris.

    Pour plus d'instructions, reportez-vous à la section Procédure d'endossement d'un rôle dans la console de gestion Solaris.

  3. Utilisez les outils de droits pour mettre à jour un profil approprié.

    Sélectionnez la commande à inclure. Pour chaque commande incluse, ajoutez les privilèges requis par la commande.


    Attention

    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.


Attribution de privilèges à un utilisateur ou à un rôle

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.

  1. Endossez le rôle de d'administrateur principal ou connectez-vous en tant que superutilisateur.

    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.

  2. Ajoutez le privilège attribuant des horloges haute résolution au jeu de privilèges héritable initial de l'utilisateur.
    $ 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.

  3. Lisez l'entrée user_attr obtenue.
    $ 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

Limitation des privilèges d'un utilisateur ou d'un rôle

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

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é.

  • Lorsque le jeu de base est plus limité que le jeu par défaut, les utilisateurs peuvent se voir empêchés d'utiliser le système.

  • Lorsque le jeu limite est inférieur à tous les privilèges, les processus devant s'exécuter avec un UID effectif UID=0 risquent d'échouer.


  1. Déterminez les privilèges dans le jeu de base ou de limite d'un utilisateur.

    Pour plus d'informations sur cette procédure, reportez-vous à la section Détermination de privilèges sur un processus.

  2. (Facultatif) Supprimez l'un des privilèges du jeu de base.
    $ 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

    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.


  3. (Facultatif) Retirez l'un des privilèges du jeu limite.
    $ usermod -K limitpriv=all,!priv-name username
  4. Testez les capacités de 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

Exécution d'un script shell avec des commandes privilégiées


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.


  1. Commencez le script avec /bin/pfsh, ou tout autre shell de profil, sur la première ligne.
    #!/bin/pfsh
    # Copyright (c) 2009, 2011 by Oracle Corporation
  2. Déterminez les privilèges requis pas les commandes du script.
    % ppriv -eD script-full-path
  3. Ouvrez l'interface graphique de la console de gestion Solaris.

    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.

  4. Utilisez les outils de droits pour créer un profil approprié.

    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

    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.


  5. Ajoutez le profil de droits à un rôle et attribuez le rôle à un utilisateur.

    Pour exécuter le profil, l'utilisateur endosse le rôle et exécute le script dans le shell de profil du rôle.