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)

Contrôle d'accès basé sur les rôles (présentation)

RBAC : la solution de substitution au modèle superutilisateur

Eléments et concepts de base RBAC

Escalade des privilèges

Autorisations RBAC

Autorisations et privilèges

Applications privilégiées et RBAC

Applications vérifiant les UID et GID

Applications vérifiant les privilèges

Applications vérifiant les autorisations

Profils de droits RBAC

Rôles RBAC

Shells de profil et RBAC

Champ d'application du service de noms et RBAC

Considérations relatives à la sécurité lors de l'affectation directe d'attributs de sécurité

Considérations relatives à l'utilisation lors de l'affectation directe d'attributs de sécurité

Privilèges (présentation)

Protection des processus noyau par les privilèges

Descriptions des privilèges

Différences administratives sur un système disposant de privilèges

Privilèges et ressources du système

Mise en oeuvre des privilèges

Comment les processus obtiennent des privilèges

Affectation de privilèges

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

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

Affectation de privilèges à un script

Privilèges et périphériques

Privilèges et débogage

A propos de RBAC dans cette version

9.  Utilisation du contrôle d'accès basé sur les rôles (tâches)

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

Privilèges (présentation)

La gestion des droits de processus permet de restreindre les processus au niveau de la commande, du rôle, du système ou de l'utilisateur. Oracle Solaris met en oeuvre la gestion des droits de processus via des privilèges. En termes de sécurité, les privilèges diminuent le risque qu'un utilisateur ou un processus puisse disposer des capacités de superutilisateur complètes sur un système. Les privilèges et les contrôles RBAC offrent une solution de substitution intéressante au modèle superutilisateur traditionnel.

Protection des processus noyau par les privilèges

Un privilège est un droit discret dont a besoin un processus pour réaliser une opération. Le droit est appliqué dans le noyau. Un programme qui s'exécute dans les limites du jeu de base de privilèges fonctionne dans les limites de la stratégie de sécurité système. Les programmes setuid sont des exemples de programmes qui fonctionnent en dehors des limites de la stratégie de sécurité système. Les privilèges permettent aux programmes d'éliminer la nécessité d'appeler setuid.

Les privilèges énumèrent discrètement les types d'opérations possibles sur un système. Les programmes peuvent être exécutés avec les privilèges exacts nécessaires à leur réussite. Par exemple, un programme qui manipule des fichiers peut nécessiter les privilèges file_dac_write et file_flag_set. Ces privilèges sur le processus élimine la nécessité d'exécuter le programme en tant que root.

Historiquement, les systèmes n'ont pas suivi le modèle de privilège. Ils ont plutôt utilisé le modèle de superutilisateur. Dans le modèle de superutilisateur, les processus s'exécutaient en tant que root ou en tant qu'utilisateur. L'action des processus utilisateur était limitée au niveau des répertoires et fichiers de l'utilisateur. Les processus root pouvaient créer des répertoires et fichiers en tout point du système. Un processus qui devait créer un répertoire en dehors du répertoire de l'utilisateur devait s'exécuter avec UID=0, c'est-à-dire, en tant que root. La stratégie de sécurité s'appuyait sur le contrôle d'accès discrétionnaire (DAC, Discretionary Access Control) pour protéger les fichiers système. Les noeuds de périphérique étaient protégés par DAC. Par exemple, les périphériques appartenant au groupe sys ne pouvaient être ouverts que par les membres du groupe sys.

Cependant, les programmes setuid, les autorisations de fichier et les comptes d'administration sont vulnérables à une utilisation abusive. Les actions qu'un processus setuid est autorisé à réaliser sont plus nombreuses qu'il n'est nécessaire au processus pour terminer son opération. Un programme setuid peut être compromis par un intrus qui s'exécute ensuite en tant qu'utilisateur root disposant de tous les pouvoirs. De même, tout utilisateur ayant accès au mot de passe root peut compromettre l'ensemble du système.

En revanche, un système appliquant la stratégie avec des privilèges permet l'instauration d'une graduation entre les capacités utilisateur et les capacités root. Un utilisateur peut se voir accorder des privilèges nécessaires à la réalisation d'activités dépassant les capacités des utilisateurs standard et root peut voir le nombre de ses privilèges actuels réduit. Avec RBAC, une commande qui s'exécute avec les privilèges peut être isolée dans un profil de droits et assignée à un utilisateur ou à un rôle. Le Tableau 8-1 résume la graduation entre les capacités utilisateur et les capacités root que le modèle RBAC plus privilèges fournit.

Le modèle de privilèges offre une plus grande sécurité que le modèle superutilisateur. Les privilèges supprimés d'un processus ne peuvent pas être exploités. Les privilèges de processus empêchent un programme ou compte d'administration d'accéder à toutes les capacités. Les privilèges de processus peuvent fournir une protection supplémentaire pour les fichiers sensibles, où les protections DAC seules peuvent être exploitées pour obtenir l'accès.

Les privilèges peuvent alors restreindre les programmes et processus aux capacités qu'ils nécessitent. Cette capacité s'appelle le principe du moindre privilège. Sur un système appliquant ce privilège, un intrus qui capture un processus ne peut accéder qu'aux privilèges dont dispose ce processus. Le reste du système ne peut pas être compromis.

Descriptions des privilèges

Les privilèges sont logiquement regroupés sur la base de la zone du privilège.

D'autres groupes logiques comprennent CONTRACT, CPC, DTRACE, GRAPHICS, VIRT et WIN.

Certains privilèges ont un effet limité sur le système, d'autres un effet important. La définition du privilège proc_taskid indique son effet limité :

proc_taskid
        Allows a process to assign a new task ID to the calling process.

La définition du privilège net_rawaccess indique son large effet :

net_rawaccess
        Allow a process to have direct access to the network layer.

La page de manuel privileges(5) contient la description de chaque privilège. La commande ppriv -lv imprime une description de chaque privilège à la sortie standard.

Différences administratives sur un système disposant de privilèges

Un système disposant de privilèges présente plusieurs différences visibles avec un système qui n'en possède pas. Le tableau suivant énumère certaines différences.

Tableau 8-2 Différences visibles entre un système avec des privilèges et un système sans privilèges

Fonction
Aucun privilège
Privilèges
Démons
Les démons s'exécutent en tant que root.
Les démons s'exécutent en tant que démon utilisateur.

Par exemple, les démons suivants ont reçu les privilèges appropriés et s'exécutent en tant que démons : lockd et rpcbind.

Propriété du fichier journal
Les fichiers journaux appartiennent à root.
Les fichiers journaux sont désormais la propriété du démon, qui a créé le fichier journal. L'utilisateur root ne détient pas la propriété du fichier.
Messages d'erreur
Les messages d'erreur se rapportent au superutilisateur.

Par exemple, chroot: not superuser.

Les messages d'erreur reflètent l'utilisation des privilèges.

Par exemple, le message d'erreur équivalent pour l'échec chroot est chroot: exec failed.

Programmes setuid
Les programmes utilisent setuid pour terminer les tâches que les utilisateurs standard ne sont pas autorisés à effectuer.
De nombreux programmes setuid ont été modifiés afin d'être exécutés avec des privilèges.

Par exemple, les commandes suivantes utilisent des privilèges : audit, ikeadm, ipadm, ipsecconf, ping, traceroute et newtask.

Autorisations de fichier
Les autorisations d'accès aux périphériques sont contrôlées par DAC. Par exemple, les membres du groupe sys peuvent ouvrir /dev/ip.
Les autorisations de fichier (DAC) ne prédisent pas qui peut ouvrir un périphérique. Les périphériques sont protégés par DAC et par la stratégie de périphériques.

Par exemple, le fichier /dev/ip a 666 autorisations, mais le périphérique ne peut être ouvert que par un processus disposant des privilèges appropriés. Les sockets bruts sont toujours protégés par CAD.

Evénements d'audit
L'audit de l'utilisation de la commande su couvre de nombreuses fonctions d'administration.
L'audit de l'utilisation des privilèges couvre la plupart des fonctions d'administration. Les classes d'audit pm, ps, ex, ua et as incluent des événements d'audit qui surveillent la stratégie de périphériques et l'utilisation des privilèges.
Processus
Les processus sont protégés par leur propriétaire.
Les processus sont protégés par des privilèges. Les privilèges de processus et les indicateurs de processus sont visibles sous la forme d'une nouvelle entrée dans le répertoire /proc/<pid>, priv.
Débogage
Aucune référence aux privilèges dans les dumps noyau.
La section de note ELF des dumps noyau comprend des informations sur les privilèges et les indicateurs de processus dans les notes NT_PRPRIV et NT_PRPRIVINFO.

La commande ppriv et d'autres commandes indiquent le nombre correct de jeux de taille adéquate. Les commandes font correspondre correctement les bits dans les jeux de bits avec les noms de privilège.

Privilèges et ressources du système

Dans Oracle Solaris, les contrôles de ressources project.max-locked-memory et zone.max-locked-memory peuvent être utilisés pour limiter la consommation mémoire des processus auxquels le privilège PRIV_PROC_LOCK_MEMORY est affecté. Ce privilège permet à un processus de verrouiller des pages dans la mémoire physique.

Si vous affectez le privilège PRIV_PROC_LOCK_MEMORY à un profil de droits, vous pouvez attribuer aux processus qui disposent de ce privilège la capacité de verrouiller la totalité de la mémoire. A titre de protection, définissez un contrôle de ressources pour empêcher l'utilisateur de ce privilège de verrouiller toute la mémoire. Pour les processus privilégiés qui s'exécutent dans une zone non globale, définissez le contrôle de ressources zone.max-locked-memory. Pour les processus privilégiés qui s'exécutent sur un système, créez un projet et définissez le contrôle de ressources project.max-locked-memory . Pour plus d'informations sur ces contrôles de ressources, reportez-vous au Chapitre 6, Contrôles de ressources (présentation) du manuel Administration d’Oracle Solaris 11.1 : Oracle Solaris Zones, Oracle Solaris 10 Zones et gestion des ressources et au Chapitre 16, Configuration des zones non globales (présentation) du manuel Administration d’Oracle Solaris 11.1 : Oracle Solaris Zones, Oracle Solaris 10 Zones et gestion des ressources.

Mise en oeuvre des privilèges

Chaque processus dispose de quatre jeux de privilèges qui déterminent s'il peut utiliser un privilège particulier. Le noyau calcule automatiquement le jeu effectif de privilèges. Vous pouvez modifier le jeu héritable de privilèges. Un programme codé pour utiliser des privilèges peut réduire le jeu autorisé du programme. Vous pouvez réduire le jeu limite de privilèges.

Le noyau reconnaît un jeu de privilèges de base. Sur un système non modifié, le jeu héritable initial de chaque utilisateur correspond au jeu de base défini au moment de la connexion. Si vous ne pouvez pas modifier le jeu de base, vous pouvez modifier les privilèges dont un utilisateur hérite du jeu de base.

Sur un système non modifié, les jeux de privilèges de l'utilisateur à la connexion ressemble à ce qui suit :

E (Effective): basic
I (Inheritable): basic
P (Permitted): basic
L (Limit): all

Par conséquent, au moment de la connexion, tous les utilisateurs ont le jeu de base dans leur jeu hérité, leur jeu autorisé et leur jeu effectif. Le jeu limite d'un utilisateur est l'équivalent du jeu limite par défaut pour la zone globale ou non globale. Pour ajouter des privilèges au jeu effectif de l'utilisateur, vous devez affecter un profil de droits à ce dernier. Le profil de droits doit inclure les commandes pour lesquelles vous avez ajouté les privilèges. Vous pouvez également affecter des privilèges directement à l'utilisateur ou au rôle, bien que de telles affectations de privilèges puissent comporter un risque. Pour une description des risques, reportez-vous à la section Considérations relatives à la sécurité lors de l'affectation directe d'attributs de sécurité.

Comment les processus obtiennent des privilèges

Les processus peuvent hériter de privilèges. Des privilèges peuvent aussi leur être affectés. Un processus hérite des privilèges de son processus parent. Au moment de la connexion, le jeu de privilèges héritable initial détermine les privilèges disponibles pour les processus de l'utilisateur. Tous les processus fils de la connexion initiale de l'utilisateur héritent de ce jeu.

Vous pouvez également affecter directement des privilèges à des programmes, des utilisateurs et des rôles. Lorsqu'un programme requiert des privilèges, vous affectez les privilèges à l'exécutable du programme dans un profil de droits. Les utilisateurs et les rôles autorisés à exécuter le programme se voient affecter le profil qui comprend le programme. Au moment de la connexion ou lorsqu'un shell de profil est saisi, le programme s'exécute avec le privilège lorsque l'exécutable du programme est entré dans le shell de profil. Par exemple, un rôle qui inclut le profil Gestion de l'accès aux objets peut exécuter la commande chmod avec le privilège file_chown.

Lorsqu'un rôle ou un utilisateur exécute un programme auquel un privilège supplémentaire a été affecté directement, celui-ci est ajouté au jeu héritable du rôle ou de l'utilisateur. Les processus fils du programme auquel des privilèges ont été affectés héritent des privilèges de leur parent. Si le processus fils nécessite plus de privilèges que le processus parent, ces privilèges doivent lui être affectés directement.

conscient des privilègesLes programmes codés pour utiliser des privilèges sont appelés des programmes conscients des privilèges. Un programme conscient des privilèges active l'utilisation des privilèges et désactive l'utilisation des privilèges lors de l'exécution du programme. Pour réussir dans un environnement de production, le programme doit se voir affecter les privilèges qu'il active et désactive.

Pour des exemples de code prenant en charge les privilèges, reportez-vous au Chapitre 2, Developing Privileged Applications du manuel Developer’s Guide to Oracle Solaris 11 Security. Pour affecter des privilèges à un programme qui requiert des privilèges, voir l'Exemple 9-18.

Affectation de privilèges

En votre qualité d'administrateur sécurité, vous êtes responsable de l'affectation des privilèges. La meilleure pratique consiste à affecter les privilèges à une commande dans un profil de droits. Le profil de droits est ensuite affecté à un rôle ou à un utilisateur.

Des privilèges peuvent également être directement affectés à un utilisateur, un rôle ou un profil de droits. Si vous estimez qu'un sous-ensemble d'utilisateurs est suffisamment responsable pour utiliser un privilège au cours de sessions, vous pouvez lui affecter directement ce privilège. Les bons candidats à l'affectation directe sont les privilèges ayant un effet limité, tels que proc_clock_highres. Les mauvais candidats à l'affectation directe sont les privilèges ayant des effets importants, tels que file_dac_write.

Les privilèges peuvent également être refusés à un utilisateur ou à un système. Procédez avec prudence lorsque vous supprimez des privilèges du jeu héritable initial ou du jeu limite d'un utilisateur ou d'un système.

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

Les utilisateurs et les rôles disposent d'un jeu héritable de privilèges. Le jeu limite ne peut pas être étendu, car il contient initialement tous les privilèges. Le jeu héritable initial peut être étendu pour les utilisateurs, les rôles et les systèmes. Un privilège qui ne figure pas dans le jeu héritable peut également être affecté à un processus.

Vous pouvez étendre les privilèges qui sont disponibles de plusieurs manières.

L'affectation des privilèges par processus est le moyen le plus précis pour ajouter des privilèges. Vous pouvez augmenter le nombre des opérations privilégiées qu'un utilisateur est autorisé à effectuer en affectant un rôle à l'utilisateur. Le rôle se voit affecter des profils de droits qui comprennent des commandes avec des privilèges ajoutés. Lorsque l'utilisateur prend le rôle, il reçoit le shell de profil du rôle. Lorsque les commandes du profil de droits sont saisies dans le shell du rôle, les commandes s'exécutent avec les privilèges ajoutés.

Vous pouvez également affecter un profil de droits à l'utilisateur plutôt qu'à un rôle que l'utilisateur prend. Lorsque l'utilisateur ouvre un shell de profil, tel que pfksh, il peut exécuter les commandes dans son profil de droits avec privilège. Dans un shell standard, les commandes ne s'exécutent pas avec des privilèges. Le processus privilégié peut s'exécuter uniquement dans un shell privilégié.

Développer le jeu héritable initial de privilèges pour des utilisateurs, des rôles ou des systèmes est une manière d'affecter des privilèges plus risquée. Tous les privilèges dans le jeu héritable figurent dans le jeu autorisé et le jeu effectif. Toutes les commandes que l'utilisateur ou le rôle tape dans un shell peuvent utiliser les privilèges affectés directement. Les privilèges affectés directement permettent à un utilisateur ou à un rôle d'effectuer facilement des opérations qui peuvent figurer en dehors des limites de leurs responsabilités administratives.

Afin d'atténuer ce risque, vous pouvez affecter des privilèges à des utilisateurs ou des rôles afin qu'ils fonctionnent sur un objet à la fois. Les objets possibles sont les ports réseau, les ID utilisateur et les objets de fichier. Par exemple, vous pouvez affecter le privilège file_dac_read à un utilisateur pour les fichiers du répertoire /var/core . Le privilège file_dac_read doit se trouver dans le jeu effectif du processus de l'utilisateur lors de l'application de cette stratégie étendue. Dans ce cas, l'utilisateur peut lire tous les fichiers du répertoire /var/core lorsque la stratégie étendue est affectée à cet utilisateur pour cet objet de répertoire.

Lorsque vous ajoutez des privilèges au jeu héritable initial sur un système, tous les utilisateurs qui se connectent au système disposent d'un jeu de privilèges de base plus grand. Cette affectation directe permet à tous les utilisateurs du système d'effectuer facilement des opérations qui figurent probablement en dehors des limites des utilisateurs standard.


Remarque - Le jeu limite ne peut pas être étendu, car il contient initialement tous les privilèges.


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

La suppression de privilèges permet d'empêcher les utilisateurs et les rôles d'exécuter certaines tâches. Vous pouvez supprimer des privilèges du jeu héritable initial et du jeu limite. Vous devez soigneusement tester la suppression de privilèges avant de distribuer un jeu héritable initial ou un jeu limite, plus petit que le jeu par défaut. En supprimant des privilèges du jeu héritable initial, vous risquez d'empêcher les utilisateurs de se connecter. Lorsque des privilèges sont supprimés du jeu limite, un ancien programme setuid peut échouer, car il nécessite un privilège qui a été supprimé.

Affectation de privilèges à un script

Les scripts sont exécutables, tout comme les commandes. Par conséquent, dans un profil de droits, vous pouvez ajouter des privilèges à un script de la même façon que vous pouvez ajouter des privilèges à une commande. Le script s'exécute avec les privilèges ajoutés lorsqu'un utilisateur ou un rôle à qui le profil de droits a été affecté exécute le script dans un shell de profil. Si le script contient des commandes qui nécessitent des privilèges, les commandes avec les privilèges ajoutés doivent également figurer dans un profil de droits affecté.

Les programmes conscients des privilèges peuvent restreindre les privilèges par processus. Votre tâche en ce qui concerne un programme conscient des privilèges consiste à affecter à l'exécutable seulement les privilèges dont le programme a besoin. Vous devez ensuite tester le programme pour vérifier qu'il accomplit ses tâches correctement. Vous devez également vérifier que le programme ne fait pas une utilisation abusive des privilèges.

Privilèges et périphériques

Le modèle de privilège utilise des privilèges pour protéger les interfaces système qui, dans le modèle de superutilisateur, ne sont protégées par des autorisations de fichier. Dans un système doté de privilèges, les autorisations de fichier sont trop faibles pour protéger les interfaces. Un privilège comme proc_owner peut remplacer les autorisations de fichier et donner ensuite l'accès complet au système.

Par conséquent, dans Oracle Solaris la propriété du répertoire de périphérique n'est pas suffisante pour ouvrir un périphérique. Par exemple, les membres du groupe sys ne sont plus automatiquement autorisés à accéder au périphérique /dev/ip. Les autorisations de fichier sur /dev/ip sont 0666, mais le privilège net_rawaccess est requis pour ouvrir le périphérique.

La stratégie de périphériques est contrôlée par des privilèges. La commande getdevpolicy affiche la stratégie pour chaque périphérique. La commande de configuration de périphérique devfsadm installe la stratégie de périphérique. La commande devfsadm lie les jeux de privilèges avec open pour la lecture ou l'écriture de périphériques. Pour plus d'informations, reportez-vous aux pages de manuel getdevpolicy(1M) et devfsadm(1M).

La stratégie de périphériques offre une plus grande souplesse dans l'octroi d'autorisations pour ouvrir des périphériques. Vous pouvez nécessiter d'autres privilèges ou plus de privilèges que ceux prévus par la stratégie de périphérique par défaut. Les exigences en matière de privilèges peuvent être modifiées pour la stratégie de périphérique et les propriétés du pilote. Vous pouvez modifier les privilèges lors de l'installation, de l'ajout ou de la mise à jour d'un pilote de périphérique.

Les commandes add_drv et update_drv servent à modifier les entrées de stratégie de périphérique et les privilèges spécifiques au pilote. Vous devez exécuter un processus avec le jeu complet de privilèges pour modifier la stratégie de périphérique. Pour plus d'informations, reportez-vous aux pages de manuel add_drv(1M) et update_drv(1M).

Privilèges et débogage

Oracle Solaris fournit des outils pour déboguer les défaillances des privilèges. Les commandes ppriv et truss fournissent le résultat du débogage. Pour consulter des exemples, reportez-vous à la page de manuel ppriv(1). Pour connaître la procédure, reportez-vous à la section Détermination des privilèges requis par un programme. Vous pouvez également exécuter la commande dtrace. Pour plus d'informations, reportez-vous à la page de manuel dtrace(1M).