JavaScript is required to for searching.
Ignorer les liens de navigation
Quitter l'aperu
Administration d'Oracle Solaris 11.1 : Services de sécurité     Oracle Solaris 11.1 Information Library (Français)
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.  Service d'analyse antivirus (tâches)

5.  Contrôle de l'accès aux périphériques (tâches)

6.  Vérification de l'intégrité des fichiers à l'aide de BART (tâches)

7.  Contrôle de l'accès aux fichiers (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)

Utilisation de RBAC (tâches)

Affichage et utilisation des valeurs par défaut RBAC (tâches)

Affichage et utilisation des valeurs par défaut RBAC (liste des tâches)

Affichage de tous les attributs de sécurité définis

Affichage des droits qui vous sont affectés

Prise d'un rôle

Modification des attributs de sécurité d'un utilisateur

Utilisation de vos droits d'administration

Personnalisation RBAC pour votre site (tâches)

Configuration initiale RBAC (liste des tâches)

Planification de votre implémentation RBAC

Création d'un rôle

Attribution de rôle

Audit des rôles

Création d'un profil de droits

Clonage et modification d'un profil de droits système

Création d'une autorisation

Ajout de propriétés RBAC aux anciennes applications

Dépannage de RBAC et de l'affectation de privilèges

Gestion de RBAC (tâches)

Gestion de RBAC (liste des tâches)

Modification du mot de passe d'un rôle

Modification des attributs de sécurité d'un rôle

Réorganisation des attributs de sécurité affectés

Limitation d'un administrateur aux droits affectés de manière explicite

Octroi à un utilisateur de l'autorisation d'utiliser son propre mot de passe pour prendre un rôle

Modification du rôle root en utilisateur

Utilisation des privilèges (tâches)

Création d'une liste des privilèges sur le système

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 de privilèges sur un processus

Détermination des privilèges requis par un programme

Application d'une stratégie de privilège étendue à un port

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

10.  Attributs de sécurité dans Oracle Solaris (référence)

Partie IV Services cryptographiques

11.  Structure cryptographique (présentation)

12.  Structure cryptographique (tâches)

13.  Structure de gestion des clés

Partie V Services d'authentification et communication sécurisée

14.  Utilisation de modules d'authentification enfichables

15.  Utilisation de Secure Shell

16.  Secure Shell (référence)

17.  Utilisation de l'authentification simple et de la couche de sécurité

18.  Authentification des services réseau (tâches)

Partie VI Service Kerberos

19.  Introduction au service Kerberos

20.  Planification du service Kerberos

21.  Configuration du service Kerberos (tâches)

22.  Messages d'erreur et dépannage de Kerberos

23.  Administration des principaux et des stratégies Kerberos (tâches)

24.  Utilisation des applications Kerberos (tâches)

25.  Service Kerberos (référence)

Partie VII Audit dans Oracle Solaris

26.  Audit (présentation)

27.  Planification de l'audit

28.  Gestion de l'audit (tâches)

29.  Audit (référence)

Glossaire

Index

Utilisation des privilèges (tâches)

Les privilèges peuvent permettre aux utilisateurs d'effectuer des tâches spécifiques avec des droits d'administration. Les privilèges peuvent également être utilisés pour limiter les utilisateurs aux seules tâches qu'ils sont autorisés à effectuer.

La liste des tâches suivante renvoie à des instructions détaillées pour l'affichage, la gestion et l'utilisation des privilèges sur votre système.

Tâche
Description
Voir
Affichage des privilèges définis.
Répertorie les privilèges et leurs définitions dans Oracle Solaris.
Affichage de vos privilèges en tant qu'utilisateur dans n'importe quel shell.
Affichez les privilèges qui vous sont affectés directement. Tous les processus s'exécutent avec ces privilèges.
Affichage de vos commandes privilégiées dans un shell de profil.
Affichez les commandes privilégiées que vous pouvez exécuter par l'intermédiaire d'un profil de droits affectés.
Limite l'accès des pirates à un système en cas d'attaque réussie sur une application.
Protège un système contre les attaques en appliquant une stratégie de privilège étendue au port NTP.
Détermination des privilèges dans un processus.
Dresse la liste des jeux de privilèges effectifs, héritables, autorisés et limite pour un processus.
Détermination des privilèges manquants dans un processus.
Dresse la liste des privilèges requis par un processus ayant échoué pour s'exécuter correctement.
Limite l'accès des pirates à un système en cas d'attaque réussie sur une application.
Crée une stratégie étendue pour le service NTP.
Ajout de privilèges à une commande.
Ajoute des privilèges à une commande dans un profil de droits. Le profil de droits peut être attribué à des utilisateurs ou des rôles. Les utilisateurs peuvent ensuite exécuter la commande avec les privilèges attribués dans un shell de profil.
Affectation de privilèges à un utilisateur ou à un rôle.
Développe le jeu de privilèges héritables d'un utilisateur ou d'un rôle. Utilisez cette procédure avec précaution.
Limitation des privilèges d'un utilisateur.
Limite le jeu de privilèges de base d'un utilisateur. Utilisez cette procédure avec précaution.
Exécution d'un script shell privilégié.
Ajoute un privilège à un script shell et aux commandes du script shell. Exécute ensuite le script dans un shell de profil.

Création d'une liste des privilèges sur le système

La procédure suivante décrit la procédure d'affichage des noms et définitions de privilèges.

Détermination des privilèges qui vous sont attribués directement

La procédure suivante montre comment déterminer si des privilèges vous ont été directement attribués.


Attention

Attention - L'utilisation inappropriée de privilèges attribués directement peut entraîner des violations involontaires de sécurité. Pour plus de détails, reportez-vous à la section Considérations relatives à la sécurité lors de l'affectation directe d'attributs de sécurité.


  1. Répertoriez les privilèges pouvant être utilisés par vos processus.

    Reportez-vous à la section Détermination de privilèges sur un processus pour connaître la procédure.

  2. Appelez des actions et exécutez des commandes dans un shell.

    Les privilèges répertoriés dans le jeu effectif sont en vigueur dans l'ensemble de votre session. Si des privilèges vous ont été directement attribués en plus du jeu de base, ceux-ci sont répertoriés dans le jeu effectif.

Exemple 9-33 Détermination des privilèges qui vous sont directement attribués

Dans cet exemple, le privilège proc_clock_highres est directement affecté à l'utilisateur et est disponible dans tous les processus dont l'utilisateur est propriétaire.

% ppriv -v $$
1800:   pfksh
flags = <none>
        E: file_link_any,…,proc_clock_highres,proc_session
        I: file_link_any,…,proc_clock_highres,proc_session
        P: file_link_any,…,proc_clock_highres,proc_session
        L: cpc_cpu,dtrace_kernel,dtrace_proc,dtrace_user,…,sys_time
% ppriv -vl proc_clock_highres
        Allows a process to use high resolution timers.

Exemple 9-34 Détermination des privilèges qui sont directement attribués à un rôle

Dans l'exemple suivant, des privilèges ont été directement attribués au rôle realtime pour gérer les programmes de date et d'heure.

% su - realtime
Password: <Type realtime password>
$ ppriv -v $$
1600:   pfksh
flags = <none>
        E: file_link_any,…,proc_clock_highres,proc_session,sys_time
        I: file_link_any,…,proc_clock_highres,proc_session,sys_time
        P: file_link_any,…,proc_clock_highres,proc_session,sys_time
        L: cpc_cpu,dtrace_kernel,dtrace_proc,dtrace_user,…,sys_time

Détermination des commandes privilégiées que vous pouvez exécuter

En règle générale, les utilisateurs et les rôles obtiennent l'accès aux commandes privilégiées par l'intermédiaire d'un profil de droits. Les commandes d'un profil de droits doivent être exécutées dans un shell de profil.

  1. Déterminez les profils de droits qui vous ont été attribués.

    Dans l'exemple suivant, plusieurs profils de droits sont affectés à l'utilisateur. Le système lit les profils de droits et leur contenu dans l'ordre. Pour tous les attributs à l'exception des autorisations, la première valeur d'attribut définie de manière explicite est la valeur utilisée. Pour plus d'informations, reportez-vous à la section Ordre de recherche pour les attributs de sécurité affectés.

    % profiles
    Audit Review
    Console User
    Suspend To RAM
    Suspend To Disk
    Brightness
    CPU Power Management
    Network Autoconf
    Desktop Print Management
    Network Wifi Info
    Desktop Removable Media User
    Basic Solaris User
    All
  2. Déterminez vos droits à partir du profil Audit Review (vérification d'audit).
    profiles -l
    Audit Review
    
      solaris.audit.read
      
      /usr/sbin/auditreduce  euid=0
      /usr/sbin/auditstat    euid=0
      /usr/sbin/praudit      euid=0

    Le profil de droits Audit Review (vérification d'audit) vous permet d'exécuter les commandes auditreduce , auditstat et praudit avec l'ID utilisateur effectif de 0 et vous attribue l'autorisation solaris.audit.read.

Exemple 9-35 Détermination des commandes privilégiées d'un rôle

Dans cet exemple, un utilisateur prend un rôle affecté et répertorie les commandes comprises dans l'un des profils de droits.

% roles
devadmin
% su - devadmin
Password: Type devadmin password
$ profiles -l
Device Security
          /usr/bin/kbd        uid=0;gid=sys
          /usr/sbin/add_allocatable    euid=0
          /usr/sbin/add_drv        uid=0
          /usr/sbin/devfsadm        uid=0
          /usr/sbin/eeprom        uid=0
          /usr/sbin/list_devices        euid=0
          /usr/sbin/rem_drv        uid=0
          /usr/sbin/remove_allocatable    euid=0
          /usr/sbin/strace        euid=0
          /usr/sbin/update_drv        uid=0

Exemple 9-36 Exécution de commandes privilégiées dans votre rôle

Dans l'exemple suivant, le rôle admin peut modifier les autorisations pour le fichier useful.script.

% whoami
jdoe
% ls -l useful.script
-rwxr-xr-- 1 elsee eng 262 Apr 2 10:52 useful.script
% chgrp admin useful.script
chgrp: useful.script: Not owner
% su - admin
Password: <Type admin password>
$ chgrp admin useful.script
$ chown admin useful.script
$ ls -l useful.script
-rwxr-xr-- 1 admin admin 262 Apr 2 10:53 useful.script

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 9-37 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 9-38 Détermination des privilèges d'un rôle que vous pouvez prendre

Dans l'exemple suivant, le rôle sysadmin n'a pas de privilèges attribués directement.

% su - sysadmin
Password: <Type sysadmin password>
$ /usr/bin/whoami
sysadmin
$ ppriv -v $$
1400:   pfksh
flags = <none>
        E: file_link_any,file_read,file_write,net_access,proc_exec,proc_fork,
           proc_info,proc_session
        I: file_link_any,file_read,file_write,net_access,proc_exec,proc_fork,
           proc_info,proc_session
        P: file_link_any,file_read,file_write,net_access,proc_exec,proc_fork,
           proc_info,proc_session
        L: cpc_cpu,dtrace_kernel,dtrace_proc,dtrace_user,…,win_upgrade_sl

Détermination des privilèges requis par un programme

Avant de commencer

La commande ou le processus doit échouer pour que cette procédure de débogage fonctionne.

  1. Saisissez la commande ayant échoué en tant qu'argument de la commande de débogage ppriv.
    % ppriv -eD touch /etc/acct/yearly
    touch[5245]: missing privilege "file_dac_write"
         (euid = 130, syscall = 224) needed at zfs_zaccess+0x258
    touch: cannot create /etc/acct/yearly: Permission denied 
  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 9-39 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 9-40 Utilisation de la commande ppriv pour l'examen de l'utilisation des privilèges dans un shell de profil

Dans cet exemple, l'utilisateur jdoe peut prendre le rôle objadmin. Le rôle objadmin comprend le profil de droits Object Access Management (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 zfs_zaccess+0x258
chown: useful.script: Not owner

Lorsque jdoe prend 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 9-41 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 zfs_zaccess+0x258
chown: system: Not owner

Application d'une stratégie de privilège étendue à un port

Le service du protocole NTP (Network Time Protocol) utilise le port privilégié 123 pour le trafic udp. Cette procédure empêche l'accès à d'autres ports par un utilisateur malveillant susceptible d'obtenir les privilèges affectés aux ports en question.

  1. Reportez-vous à l'entrée de manifeste de service par défaut pour le port.

    A partir de l'entrée /lib/svc/manifest/network/ntp.xml, les privilèges net_privaddr, proc_lock_memory et sys_time peuvent être utilisés sur d'autres processus :

    privileges='basic,!file_link_any,!proc_info,!proc_session,
    net_privaddr,proc_lock_memory,sys_time'

    Les privilèges supprimés empêchent le service de signaler ou d'observer tout autre processus, ou de créer des liens physiques afin de renommer des fichiers.

    Par conséquent, le processus démarré par le service ne peut établir de liaison qu'avec le port 123, c'est-à-dire avec aucun autre port privilégié. Si un pirate peut exploiter le service afin de démarrer un autre processus, le processus enfant ne peut pas non plus établir de liaison avec un autre port privilégié.

  2. Limitez le privilège net_privaddr à ce seul port.

    La stratégie de privilège étendue mise en évidence dans l'extrait ci-dessous empêche l'accès à d'autres ports privilégiés à partir de ce service :

    privileges='basic,!file_link_any,!proc_info,!proc_session,
    {net_privaddr}:123/udp,proc_lock_memory,sys_time'

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

Lorsque vous créez un script shell exécutant des commandes requérant des privilèges, le profil de droits approprié doit contenir les commandes avec les privilèges qui leur sont attribués.

Avant de commencer

Vous devez prendre le rôle root. Pour plus d'informations, reportez-vous à la section Utilisation de vos droits d'administration.

  1. Commencez le script avec /bin/pfsh, ou tout autre shell de profil, sur la première ligne.
    #!/bin/pfsh
    # Copyright (c) 2012 by Oracle
  2. Déterminez les privilèges requis pas les commandes du script.
    % ppriv -eD script-full-path
  3. Prenez le rôle d'administrateur et dotez-vous des attributs de sécurité nécessaires.

    Pour plus d'informations, reportez-vous à la section Utilisation de vos droits d'administration.

  4. Créez ou modifiez un profil de droits pour le script.

    Ajoutez le script de shell et les commandes dans le script de shell, avec les attributs de sécurité requis au profil de droits. Pour connaître la procédure à suivre, reportez-vous à la section Création d'un profil de droits.

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

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