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) |
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)
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
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 profil de droits
Clonage et modification d'un profil de droits système
Ajout de propriétés RBAC aux anciennes applications
Dépannage de RBAC et de l'affectation de privilèges
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
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
17. Utilisation de l'authentification simple et de la couche de sécurité
18. Authentification des services réseau (tâches)
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
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.
|
La procédure suivante décrit la procédure d'affichage des noms et définitions de privilèges.
% man privileges Standards, Environments, and Macros privileges(5) NAME privileges - process privilege model ... The defined privileges are: PRIV_CONTRACT_EVENT Allow a process to request reliable delivery of events to an event endpoint. Allow a process to include events in the critical event set term of a template which could be generated in volume by the user. ...
Ce format de privilège est utilisé par les développeurs.
% ppriv -lv | more contract_event Allows a process to request critical events without limitation. Allows a process to request reliable delivery of all events on any event queue. ... win_upgrade_sl Allows a process to set the sensitivity label of a window resource to a sensitivity label that dominates the existing sensitivity label. This privilege is interpreted only if the system is configured with Trusted Extensions.
Ce format de privilège est utilisé pour affecter des privilèges à des utilisateurs et des rôles à l'aide des commandes useradd, roleadd, usermod et rolemod, et des profils de droits à l'aide de la commande profiles.
La procédure suivante montre comment déterminer si des privilèges vous ont été directement attribués.
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é. |
Reportez-vous à la section Détermination de privilèges sur un processus pour connaître la procédure.
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
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.
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
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
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 [-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 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 :
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 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
Avant de commencer
La commande ou le processus doit échouer pour que cette procédure de débogage fonctionne.
% 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
% 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
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.
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é.
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'
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.
#!/bin/pfsh # Copyright (c) 2012 by Oracle
% ppriv -eD script-full-path
Pour plus d'informations, reportez-vous à la section Utilisation de vos droits d'administration.
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.
Pour exécuter le script, l'utilisateur prend le rôle et exécute le script dans le shell de profil du rôle.
Pour ajouter un profil de droits à un rôle, reportez-vous à la section Modification des attributs de sécurité d'un rôle.
Pour savoir comment affecter le rôle à l'utilisateur, reportez-vous à la section Modification des attributs de sécurité d'un utilisateur.